Jumat, 16 Maret 2018

Rekayasa Perangkat Lunak Software engineering

Software Engineering: The Process, Process Model, and Agile View


Kembali lagi dengan tulisan Software Engineering Series saya. Jika pada tulisan sebelumnya saya membahas tentang hasil dari proses rekayasa perangkat lunak, sekarang saya akan membahas tentang konsep “proses” dari rekayasa perangkat lunak itu sendiri. Kali ini, akan dibahas tentang definisi dan mekanisme proses dalam RPL, berbagai macam model yang merepresentasikan proses tersebut, dan pendekatan baru dalam pendefinisian proses tersebut yang biasa disebut Agile View of Process.
Sebelum berbicara tentang proses, mari kita tinjau definisi dari Software Engineering atau Rekayasa Perangkat Lunak. Saya akan mengambil definisinya sebagai berikut:
“Software Engineering: (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1).” — IEEE
Definisi tersebut menyatakan bahwa RPL merupakan pendekatan yang sistematis, terstruktur dan terukur dalam pengembangan, pengoperasian, dan pemeliharaan P/L. Selain itu, RPL juga membahas pendekatan-pendekatan apa saja yang dapat digunakan dalam pembangunan P/L ini. Dalam hal ini, RPL memiliki arti sebagai proses dan studi tentang proses dalam pembangunan P/L. Sebagai studi tentang proses, RPL ditinjau ke dalam 4 lapis teknologi seperti yang terlihat pada gambar berikut:
Software Engineering - 4 Layered Technology
Software Engineering – 4 Layered Technology
Keempat lapis ini merupakan concern yang dibahas dalam konteks keilmuan RPL. Lapisan-lapisan ini melambangkan urutan yang perlu menjadi fokus pembahasan dalam RPL. Dalam hal ini, urutannya dimulai dari bawah ke atas.
Prinsip dasar RPL adalah membangun P/L yang memiliki kualitas baik, sehingga diperlukan quality focus. Untuk merealisasikan quality focus ini, fondasi yang perlu dibangun adalah pendefinisian process yang baik. Pendefinisian proses berarti akan menjadi basis manajemen pada pembangunan P/L termasuk metode teknis, produk kerja (model, dokumen, data, laporan, form, dll.), milestone, kualitas, dan manajemen perubahan.
Setelah proses telah terdefinisi, methods yang menentukan cara teknis membangun P/L juga perlu didefinisikan. Terakhir, tools ditentukan untuk mempermudah proses pembangunan P/L. Pembangunan P/L menggunakan tools otomatis ini biasa disebut CASE (Computer-Aided Software Engineering).
Generic View of Process
Secara umum, proses dalam RPL wajib memiliki tiga fase, yaitu:
  1. Definition Phase, yakni berfokus pada “what” (informasi yang perlu diproses, fungsi yang diperlukan, system behavior yang diharapkan, dll.). Hal ini berkaitan dengan penentuan kebutuhan dari P/L.
  2. Development Phase, yakni berfokus pada “how” (struktur data yang merepresentasikan informasi, implementasi fungsi, dll.). Hal ini akan berkaitan dengan pembangunan solusi dari problem yang didefinisikan pada fase sebelumnya.
  3. Support Phase, yakni berfokus pada “change” yang berkorelasi dengan perbaikan kesalahan, adaptasi, dan perbaikan sesuai perubahan kebutuhan customer.
Process Model
Model proses merupakan gambaran (kerangka kerja) yang merepresentasikan proses dalam RPL agar mudah dipahami dan proses dapat dilakukan sesuai dengan aturannya. Berbagai macam model telah diajukan menyesuaikan dengan berbagai macam kondisi yang mungkin dalam pembangunan perangkat lunak. Beberapa model proses dalam RPL adalah sebagai berikut:
1. Prescriptive Models
  • Waterfall Model; basis dari model lain dalam bentuk linier.
The Waterfall Model
The Waterfall Model
  • Incremental Process Models (Incremental Models, Rapid Application Development (RAD)); adanya tahapan-tahapan dalam pengembangan P/L.
Incremental Model
Incremental Model
Rapid Application Development
Rapid Application Development
  • Evolutionary Process Models (Prototyping, Spiral Model, Concurrent Development Model); adanya perputaran yang berulang dalam pengembangan P/L.
Prototyping
Prototyping
The Spiral Model
The Spiral Model
The Concurrent Development Model
The Concurrent Development Model
2. Specialized Process Models
  • Component Based Development; mengedepankan konsep reusability (dalam bentuk komponen)
  • Formal Method; menggunakan model matematis untuk menghilangkan ambiguitas dan inkonsistensi
  • Aspect Oriented Development; mengedepankan separation of concern untuk fungsi yang tersebar.
3. The Unified Process; tiga karakteristik: use-case driven, architecture-centric, iterative dan incremental
Agile View of Process
Jika pada model proses yang diajukan sebelumnya berfokus pada pengembangan yang mengikuti kerangka kerja (framework) yang terdefinisi pada model prosesnya, beberapa ilmuwan berpendapat bahwa perlunya Agile View dalam pendefinisian proses dalam RPL. Ide dasar dari Agile View adalah fleksibilitas proses terhadap perubahan. Dalam hal ini, model proses yang ditawarkan dari Agile View berasumsi bahwa selama proses pengembangan P/L akan terjadi banyak perubahan yang terjadi karena perubahan kebutuhan customer.
Beberapa model proses yang memenuhi karakteristik Agile adalah sebagai berikut:
  1. Extreme Programming (XP)
  2. Adaptive Software Development (ASD)
  3. Dynamic Systems Development Method (DSDM)
  4. Scrum
  5. Crystal
  6. Feature Driven Development (FDD)
  7. Agile Modeling (AM)
Summary
Secara umum, dapat disimpulkan bahwa setiap model proses dalam RPL akan memiliki kelebihan dan kekurangannya masing-masing. Pemilihan model proses dalam pengembangan P/L akan mempertimbangkan berbagai hal terkait kondisi lingkungan pengembangan P/L tersebut. Saya yakin, ini berkaitan dengan banyaknya pengalaman dalam pembangunan P/L.

Tidak ada komentar:

Posting Komentar