Wednesday, April 13, 2005

Softare Engineering Methodology: An Overview

SE Methodology
· Metodologi berat (monumental atau heavy-weight)
- Code / Build and Fix
- Software life Cycle Model
- Metodologi pengembangan aplikasi
- Kerangka Capability Mature Model
· Metodologi tangkas (Light Weight)
- Agile Process Model
- Extreme Programming (XP)
· Best Practices

Code / Build and Fix
· Pengembangan perangkat lunak adalah merupakan chaotic activities
· Ketika ukuran software atau program yang dikembangkan kecil, pendekatan code and fix tidak bermasalah
· Ketika software yang dibangun cukup kompleks diperlukan suatu metodologi pengembangan supaya tidak terjadi chaos
· Tujuannya agar proses pengembangan dapat diprediksi dan dapat dilakukan secara efisien dan optimal

Software Life Cycle Model (Pressman, 2001)
· Build and fix model
· Waterfall model
· Prototyping model
· Incremental model
· Spiral model
· Digunakan sesuai dengan kondisi
· Sering digunakan untuk pendekatan hibrida
· Bertujuan untuk mengelola tahapan-tahapan proses pengembangan perangkat lunak

Metodologi Pengembangan Aplikasi (Whitten et al., 2001)
· Suatu perangkat lunak yang dikembangkan bisa terdiri dari lebih dari satu aplikasi
· Setiap aplikasi mempunyai spesifikasi kebutuhan yang berbeda sesuai dengan fungsinya
· Pada system perangkat lunak yang besar, setiap aplikasi merupakan suatu sub-sistem

Framework for Application System Techniques (FAST) Terdiri dari 7 tahapan
· Preliminary Investiation Phase : Perencanaan dan Survey
· Problem Analysis Phase : Analisis domain masalah
· Requirement Analysis Phase : Menentukan kebutuhan dan prioritas penyelesaiannya
· Decision Analysis Phase : Mengidentifikasi dan menganalisis kandidat-kandidat kebutuhan
· Design Phase : Mengubah kebutuhan menjadi model-model rancangan termasuk rancangan basis data, user interface dan tampilan-tampilan
· Implementation Phase : Mengubah bentuk rancangan menjadi bentuk pemrograman dalam bahasa tertentu
· Operation and Support : Mengkoreksi program dan membuat prosedur pemakaian serta membantu user dalam mengoperasikan aplikasi

Pemodelan Model Driven Development (MDD – ada 3 ) pada metodologi FAST
· Structured Analysis and Design : Menggunakan pendekatan modular dan biasanya juga menggunakan pemrograman terstruktur
· Information Engineering : Menggunakan Entity Relationship Diagram (ERD) dalam pemodelan kebutuhan system dan Data Flow Diagram (DFD) dalam pemodelan proses-proses
· Object-Oriented Analysis and Design : Menggunakan orientasi kelas-kelas obyek dan pemrograman dengan bahasa object-oriented

Kerangka Capability Maturity Model (CMM)
(Software Engineering Institute Carnegia Mellon University, 1984)
· Organisasi ditandai dengan Software Process Maturity Level
· Ada 5 level :
- Initial Level
- Repeatable Level
- Defined Level
- Managed Level
- Optimized Level
· Dirumuskan Key Process Area (KPA) dengan masing-masing key practice, infrastructure dan aktivitasnya yang harus diterapkan untuk setiap level
· Bertujuan untuk mendisiplikan manajemen software process – CMM assists an organization in providing the infrastructure for a disciplined and mature software process

Kendala Metodologi Berat
· Metodologi yang berkembang :
- Terlalu birokratis (dokumentasi dan banyak tahapan)
- Pengembangan menjadi lambat
- Karena itu disebut heavy-weight atau monumental methodology atau metodologi (ditandai dengan banyak berat dengan banyak urutan proses)
· Muncul light-weight atau agile methodology atau metodologi tangkas:
- Merupakan jembatan antara code and fix dan metodologi berat

Agile Process Model (Fowler, 2000)
· XP (Extreme Programming)
· Crystal Family
· Scrum
· Feature Driven Development (FDD)
· Dynamic System Development Method (DSDM)
· Highsmith Adaptive Software Development
· Open Source

Extreme Programming
· Pada tahap implementasi dari suatu disain system ada beberapa kendala:
- Implementasi suatu rancangan perangkat lunak dilakukan oleh programmer – dibutuhkan programmer dengan kualitas tertentu
- Human is to err – programmer cenderung untuk melakukan kesalahan
- Manusia sering membenarkan diri sendiri – sulit untuk melihat kesalahan yang dibuatnya, karena itu perlu reviewer, inspector, dan tester (tim Software Quality Assurance – SQA)
- Pada “extreme programming – programming tangkas” pasangan programmer melakukan programming secara bersama-sama

Prinsip Agile Methodology
· Fokus pada hasil : Penilaian adalah menurut pelanggan, jika pelanggan mengatakan baik, berarti hasilnya adalah merupakan software yang bagus
· Fokus pada skil individu : tidak mudah diganti di tengah jalan, tidak seperti pekerja pabrik
· Fokus pada kolaborasi : Inovasi melalui interaksi dalam group
· Fokus pada umpan balik dengan memanfaatkan kemampuan adaptasi : Kebutuhan selalu bisa berubah selama masa pengembangan
· Fokus pada kesederhanaan : minimalis (setiap saat hanya menerapkan kebutuhan yang sudah jelas dibutuhkan)

Best Practices
· Text Books, Jurnal dan institusi SE banyak mengusulkan berbagai metodologi yang dianggap sebagai best practice dalam Software Engineering
· Apakah tujuannya ?
- Menghasilkan produk software yang berkualitas
- Melakukan proses pengembangan yang efisien dan optimal (tepat waktu, tepat budget dan tepat hasil)
- Menghindari terjadinya software crisis
· Bagaimana memilih metodologi pengembangan perangkat lunak ?
- Dalam hal ini, dilakukan evaluasi atau studi gap analysis antara metodologi yang diusulkan dan metodologi yang dikenal sebagai best practice pada suatu kasus spesifik

No comments: