REKAYASA PERANGKAT LUNAK Content Umi Rosyidah Software Engineering Methodologies Tools Quality Assurance Rekayasa Perangkat Lunak (RPL) = software engineering (SE) Software Engineering Rekayasa Perangkat Lunak merupakan Disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal spesifikasi, desain, konstruksi, testing sampai pemeliharaan setelah digunakan Software engineering adalah cabang computer science dengan prinsip pengembangan system software yang besar dan kompleks Pengembangan sistem membutuhkan upaya banyak orang Software engineering terdiri dari personel dan project management yang berkaitan dengan business management Problem selama pengembangan sistem : - How can you estimate the cost in time, money and other resource to complete the project? - How can you divide the project into manageable pieces? - How can you ensure that the pieces produced are compatible? - How can those working on the various pieces communicate? - How can you measure progress? 1
Penelitian dalam software engineering saat ini terdiri dari dua level : practitioners dan theoreticians Practitioners bekerja ke arah pengembangan teknik untuk aplikasi Theoreticians bekerja berdasarkan prinsip dan teori dimana teknik lebih stabil dapat dibangun nantinya Perjalanan Software Engineering 1. Peter J Dennings yang memimpin satuan tugas disiplin ilmu computing memasukkan software engineering sebagai satu disiplin ilmu (Dennings, 1999) 2. IEEE Computer Society membentuk tim khusus untuk menyusun pohon ilmu Software Engineering (Software Engineering Body of Knowledge, SWEBOK) http://swebok.org 3. Software Engineering termasuk nama jurusan atau fakultas yang diakui menurut IEEE Computing Curricula 2005 Matriks Dennings 1999 Algoritma dan Struktur Data Bahasa Pemrograman Arsitektur Komputer Sistem Operasi dan Jaringan Software Engineering Database dan Sistim Retrieval Informasi Artificial Intelligence dan Robotik Grafik Human Computer Interaction Ilmu Komputasi Organizational Informatics BioInformatik SWEBOK 2004 Software Requirement Software Design Software Construction Software Requirements Fundamentals Software Design Fundamentals Software Construction Fundamentals Requirement Process Key Issues in Software Design Managing Construction Requirements Elicitation Software Structure and Architecture Practical Considerations Requirements Analysis Software Design Quality Analysis and Evaluation Requirements Validation Software Design Noations Practical Considerations Software Design Strategies and Methods Software Testing Software Maintenance Software Configuration Management Software Testing Fundamentals Software Maintenance Fundamentals Management of the SCM Process Test Levels Key Issues in Software Maintenance Software Configuration Identification Test Techniques Maintenance Process Software Configuration Control Test Related Measures Techniques for Maintenance Software Configuration Status Accounting Test Process Software Configuration Auditing Software Release Management and Delivery Software Engineering Management Software Engineering Process Software Quality Initiation and Scope Definition Process Implementation and Change Software Quality Management Software Project Planning Process Definition Software Quality Management Process Software Project Enactment Process Assesment Practical Considerations Review and Evaluation Process and Product Measurement Closure Software Engineering Measurement Software Engineering Tools and Methods Knowledge Areas of the Related Disciplines Software Tools: Computer Engineering Software Requirements Tools Computer Science Software Design Tools Management Software Construction Tools Mathematics Software Testing Tools Project Management Software Maintenance Tools Quality Management Software Configuration Management Tools Software Ergonomic Software Engineering Management Tools Systems Engineering Software Engineering Process Tools Software Quality Tools Miscellaneous Tool Issues Software Engineering Methods: Heuristic Methods Formal Methods Prototyping Methods IEEE Computing Curricula 2005 1. Computer Engineering (CE, Teknik Komputer) 2. Computer Science (CS, Ilmu Komputer) 3. Information Systems (IS, Sistem Informasi) 4. Information Technology (IT, Teknologi Informasi) 5. Software Engineering (SE, Rekayasa Perangkat Lunak) 2
Konsep dalam software engineering adalah software life cycle Software life cycle menggambarkan bahwa dalam pengembangan software masuk ke dalam sebuah cycle yang digunakan (development, use, maintenance) Software Engineering Perangkat lunak memiliki siklus hidup yang dikenal dengan siklus hidup perangkat lunak (Software Life Cycle) Siklus hidup perangkat lunak (Software Life Cycle) adalah urutan dari kegiatan yang ada di dalam sebuah pengembangan perangkat lunak (Gustafson, 2002) Software Development Process Software Development Process, juga dikenal sebagai Software Development Life-Cycle / siklus hidup pengembangan perangkat lunak, adalah struktur yang dikenakan pada pengembangan produk perangkat lunak. Software Life Cycle dan Software Process merupakan bagian dari siklus hidup pengembangan sistem (System Development Life Cycle) System Development Life Cycle (SDLC) System Development life cycle (SDLC) / Siklus Hidup Pengembangan Sistem adalah proses memahami bagaimana sistem informasi (IS) dapat mendukung kebutuhan bisnis, perancangan sistem, membangunnya dan memberikannya kepada pengguna (Dennis, 2005). Kelebihan dan Kekurangan SDLC Penerapan SDLC memiliki kekurangan dan kelebihan. Kelebihan dari SDLC adalah menyediakan tahapan yang dapat digunakan sebagai pedoman pengembangan sistem, sedangkan Kekurangannya: hasil dari SDLC tergantung pada hasil analisis, sehingga jika terdapat kesalahan di tahap analisis akan terbawa terus ke hasil sistem 3
Tahap Requirement Analysis : - Menganalisa kebutuhan user - Negoisasi dengan stakeholder mengenai kebutuhan, harga dan kemungkinan yang terjadi pada sistem - Membangun seperangkat kebutuhan untuk identifikasi apa saja fitur yang ada dalam sistem software Tujuan Requirement Analysis : - Menentukan apa saja kebutuhan sistem yang diusulkan - Identifikasi kebutuhan sistem yang diusulkan - Mendefinisikan bagaimana user berinteraksi dengan sistem Tahap Design : - Membuat rancangan untuk system yang diusulkan - Fokus pada pengembangan solusi - Fokus pada Bagaimana sistem akan melakukannya? - Hasil dari design adalah tahapan struktur sistem secara detail yang akan dikonversikan ke program - Diagram dan pemodelan penting dalam tahapan desain Tahap Implementasi : - Implementasi melibatkan penulisan program, pembuatan file, dan database - Programmer memiliki beban pada penulisan program dimana sebelumnya telah didesain oleh software analyst - Programmer menerjemahkan hasil dari design menjadi suatu program (aplikasi) Tahap Testing : - Proses debug program dan konfirmasi apakah software sesuai dengan spesifikasi kebutuhan software - Testing digunakan untuk mengetahui kualitas dari software - Beberapa kesalahan mungkin tidak terdeteksi pada saat tahap implementasi 4
Software Engineering Methodologies Software Engineering Methodologies Waterfall Model Prototyping RAD Extreme Programming (XP) Software Engineering Waterfall Mengidentifikasi kebutuhan jauh sebelum pemrograman dimulai Meminimalkan perubahan kebutuhan selama project Waterfall Tahap Planning : - Dalam form permintaan sistem, menjelaskan ringkasan dari kebutuhan bisnis - Analisa kemungkinan aspek dari project yang diusulkan - Bagaimana tim project berjalan selama pengembangan sistem - Tahap Analysis - Tahap Design - Tahap Implementation Parrarel Development Mengatasi masalah penundaan yang lama antara tahap analisis dan pengiriman sistem. Membagi proyek menjadi serangkaian sub proyek yang berbeda yang dapat dirancang dan implementasi secara paralel RAD (Rapid Application Development) Pemahaman yang lebih baik terhadap sistem dan revisi langsung dengan membawa sistem lebih cepat apa yang diinginkan user Problem dari RAD adalah mengelola keinginan pengguna terhadap kemungkinan perubahan yang terjadi 1. Phased development (a series of versions) 2. Prototyping (system prototyping) 3. Throw-away prototyping (design prototyping) 5
Prototyping Sangat cepat untuk mendefinisikan kebutuhan Sangat cepat menyediakan sistem User dapat langsung berinteraksi dengan prototype untuk mengetahui apa yang dapat dan tidak dilakukan oleh sistem Throw-away Prototyping Masalah yang muncul diujicobakan/diselesaikan dengan menganalisa, mendesign, & membangun sebuah prototype (yang dinamakan design prototype) Membangun fitur yang belum dipahami dengan jelas Membuat design prototype untuk memahami kebutuhan Phased Development Mendapatkan sistem yang berguna untuk pengguna dengan cepat Sistem awal sengaja tidak lengkap System requirements berkembang tergantung pandangan dari versi user Extreme Programming (XP) XP terdiri dari empat nilai inti : komunikasi, kesederhanaan, umpan balik, dan keberanian Pengembang harus menyediakan umpan balik secara cepat Pengembang harus membuat perubahan tambahan untuk perkembangan sistem Criteria for Selecting a Methodology 6