Wednesday, October 24, 2012

Software Process Model~


Haii ^^ 
Pada pelajaran RPL kali ini, saya belajar tentang Model Proses Perangkat Lunak (Software Process). Software Process yang saya pelajari terbagi menjadi 5 model, yaitu :
  • Linear Sequential Model / Waterfall Model
  • Prototyping Model
  • Rapid Application Development (RAD) Model
  • Incremental Model
  • Ireactive-Incremental (Spiral) Model
Untuk lebih jelasnya, silakan baca ulasan singkat berikut ini :D

Software Process Model (Model Proses Perangkat Lunak) merupakan suatu representasi proses perangkat lunak yang disederhanakan, dipresentasikan, dan perspektif secara khusus.

Fungsi utama model proses pengembangan perangkat lunak :
  • Menentukan tahap-tahap yang diperlukan untuk pengembangan perangkat lunak.
  • Menentukan urutan pelaksanaan dari tahap-tahap tersebut dalam rangka pengembangan perangkat lunak.
  • Menentukan kriteria transisi / perpindahan dari satu tahap ke tahap berikutnya.
Terdapat beberapa model proses perangkat lunak (Software Process Model) antara lain sebagai berikut :
  • Linear Sequential Model / Waterfall Model
    Model ini adalah model klasik yang bersifat sistematis, berurutan dalam membangun software. Waterfall Model juga dikenal dengan Model Air Terjun. Proses dalam Waterfall Model akan berlanjut jika proses sebelumnya telah selesai dilakukan, jika tidak maka proses selanjutnya juga tidak dapat berjalan (prosesnya berjalan secara berurutan). Berikut ini ada dua gambaran dari Waterfall Model.
    Fase-fase dalam Waterfall Model menurut referensi Pressman :

          Fase-fase dalam Waterfall Model menurut referensi                 Sommerville :

1. Requirements analysis and definition
Mengumpulkan kebutuhan secara lengkap kemudian kemudian dianalisis dan didefinisikan kebutuhan yang harus dipenuhi oleh program yang akan dibangun. Fase ini harus dikerjakan secara lengkap untuk bisa menghasilkan desain yang lengkap.

2. System and software design
Desain dikerjakan setelah kebutuhan selesai dikumpulkan secara lengkap.

3. Implementation and unit testing
Desain program diterjemahkan ke dalam kode-kode dengan menggunakan bahasa pemrograman yang sudah ditentukan. Program yang dibangun langsung diuji baik secara unit.

4. Integration and system testing
Penyatuan unit-unit program kemudian diuji secara keseluruhan (system testing).

5. Operation and maintenance
Mengoperasikan program dilingkungannya dan melakukan pemeliharaan, seperti penyesuaian atau perubahan karena adaptasi dengan situasi sebenarnya. Kekurangan yang utama dari model ini adalah kesulitan dalam mengakomodasi perubahan setelah proses dijalani. Fase sebelumnya harus lengkap dan selesai sebelum mengerjakan fase berikutnya.
  
Masalah dengan Waterfall Model :
  
1. Perubahan sulit dilakukan karena sifatnya yang kaku.

2. Karena sifat kakunya, model ini cocok ketika kebutuhan dikumpulkan secara lengkap sehingga perubahan bisa ditekan sekecil mungkin. Tapi pada kenyataannya jarang sekali konsumen / pengguna yang bisa memberikan kebutuhan secara lengkap, perubahan kebutuhan adalah sesuatu yang wajar terjadi.

3. Waterfall pada umumnya digunakan untuk rekayasa sistem yang besardimana proyek dikerjakan di beberapa tempat berbeda, dan dibagi menjadibeberapa bagian sub-proyek.

Kelebihan dan Kekurangan Waterfall Model :

Kelebihan :
-   Merupakan model pengembangan paling handal dan paling lama digunakan.
-   Cocok untuk system software berskala besar.
-   Cocok untuk system software yang bersifat generic.
-   Pengerjaan project system akan terjadwal dengan baik dan mudah dikontrol.

Kekurangan :
-   Persyaratan system harus digambarkan dengan jelas.
-   Rincian proses harus benar-benar jelas dan tidak boleh berubah-ubah.
-  Sulit untuk mengadaptasi jika terjadi perubahan spesifikasi pada suatu tahapan pengembangan.

Referensi : 

  • Prototyping Model
Model prototipe (prototyping model) merupakan suatu teknik untuk mengumpulkan informasi tertentu mengenai kebutuhan-kebutuhan informasi pengguna secara cepat. Berfokus pada penyajian dari aspek–aspek software tersebut yang akan nampak bagi pelanggan atau pemakai (contohnya pendekatan input dan format output). Prototipe tersebut dievaluasi oleh pelanggan / pemakai dan dipakai untuk menyaring kebutuhan pengembangan software.

Proses (aktivitas) pada model prototyping bisa dijelaskan sebagai berikut :

1. Mengidentifikasi kebutuhan : Analisa terhadap kebutuhan calon user.
2. Quick design : Pembuatan desain global untuk membentuk contoh software.
3. Build prototype : Pembuatan software prototype termasuk pengujian dan penyempurnaan.
4. Evaluasi pelanggan : Mengevaluasi prototype dan memperhalus analisa kebutuhan calon pemakai.
5. Pembuatan dan Implementasi : Pembuatan sebenarnya termasuk design, coding, dan testing

Perulangan ketiga proses ini terus berlangsung hingga semua kebutuhan customer terpenuhi. Prototype-prototype dibuat untuk memuaskan kebutuhan klien dan untuk memahami kebutuhaklien lebih baik. 

Prototype yang dibuat dapat dimanfaatkan kembali untuk membangun software lebih cepat, namun tidak semua prototype bisa dimanfaatkan. Agar model ini bisa berjalan dengan baik, perlu disepakati bersama oleh klien dan developer bahwa prototype yang dibangun merupakan alat untuk mendefinisikan kebutuhan software.

Kelebihan dan Kekurangan Prototyping Model :

Kelebihan :
o Memudahkan user untuk memetakan pikirannya dengan prototipe.
o Lebih tampak realistis bagi user.
o Membangun komunikasi yang baik dengan user.
o Bermanfaat untuk menyatakan objek yang abstrak.
o Membantu mengidentifikasi kebingungan spesifikasi.
o Dapat menggenerasi spesifikasi aplikasi.
o Mendorong adanya inovasi dan desain yang fleksibel.
o Waktu pengembangan cepat jika tidak terjadi banyak iterasi.
o Prototype melibatkan user dalam analisa dan desain.
Punya kemampuan menangkap requirement secara konkret daripada secara abstrak.
Untuk digunakan secara stand alone.
Digunakan untuk memperluas SDLC.
Mempersingkat waktu pengembangan Sistem Informasi.

Kekurangan :
Ketidaksadaran user bahwa ini hanya suatu model awal bukan model akhir.
o Pengembang kadang-kadang membuat implementasi yang sembarangan.
o Teknik dan tools yang tidak optimal pada prototype yang akan tetap digunakan pada software sesungguhnya.
o Kebutuhan mempunyai kemungkinan sering berubah, sedangkan protitype yang dihasilkan tidak selamanya mudah dirubah.
o Sulit dalam hal dokumentasi.
o Banyaknya perulangan proses dapat membuat pembengkakan biaya dan jadwal.
o Proses analisis dan perancangan terlalu singkat.
o Mengesampingkan alternatif pemecahan masalah.
o Bisanya kurang fleksibel dalam menghadapi perubahan.

Referensi : 


  • Rapid Application Development (RAD) Model
RAD adalah model proses pembangunan PL yang incremental. RAD menekankan pada siklus pembangunan yang pendek/singkat. RAD mengadopsi model waterfall dan pembangunan dalam waktu singkat dicapai dengan menerapkan component based construction. Waktu yang singkat adalah batasan yang penting untuk model ini. Jika kebutuhan lengkap dan jelas maka waktu yang dibutuhkan untuk menyelesaikan secara komplit software yang dibuat adalah misalnya 60 sampai 90 hari.

Fase-fase di atas menggambarkan proses dalam model RAD. Sistem dibagi-bagi menjadi beberapa modul dan dikerjakan dalam waktu yang hampir bersamaan dalam batasan waktu yang sudah ditentukan.

1. Bussiness Modelling 
Menjawab pertanyaan-pertanyaan : 
 - Informasi apa yang mengendalikan proses bisnis? 
- Informasi apa yang dihasilkan? 
- Siapa yang menghasilkan informasi? 
- Kemana informasi itu diberikan? 
- Siapa yang mengolah informasi?
- Kebutuhan dari sistem

2. Data Modelling
Aliran informasi yang sudah didefinisikan, disusun menjadi sekumpulan objek data. Ditentukan karakteristik/atribut dan hubungan antar objek-objek tersebut analisis kebutuhan dan data.

3. Process Modelling 
Objek data yang sudah didefinisikan diubah menjadi aliran informasi yang diperlukan untukmenjalankan fungsi-fungsi bisnis.

4. Application Generation
RAD menggunakan component program yang sudah ada atau membuat component yang bisa digunakan lagi, selama diperlukan.

5. Testing and Turnover
Karena menggunakan component yang sudah ada, maka kebanyakan component sudah melalui uji atau testing. Namun component baru dan interface harus tetap diuji.

Kelebihan dan Kekurangan RAD Model :

Kelebihan :
- RAD mengikuti tahapan pengembangan sistem sepeti umumnya, tetapi mempunyai kemampuan untuk menggunakan kembali komponen yang ada (reusable object).
- Setiap fungsi dapat dimodulkan dalam waktu tertentu dan dapat dibicarakan oleh tim RAD yang terpisah dan kemudian diintegrasikan sehingga waktunya lebih efesien.

Kekurangan :
- Tidak cocok untuk proyek skala besar.
- Proyek bisa gagal karena waktu yang disepakati tidak dipenuhi.
- Sistem yang tidak bisa dimodularisasi tidak cocok untuk model ini.
- Resiko teknis yang tinggi juga kurang cocok untuk model ini.

Referensi : 


  • Incremental Model
Model incremental menggabungkan elemen-elemen model sekuensial linier (diimplementasikan secara berulang) dengan filosofi prototype interatif. Model ini memakai urutan-urutan linier di dalam model yang membingungkan, seiring dengan laju waktu kalender. Setiap urutan linier menghasilkan pertambahan perangkat lunak yang kemudian dapat disampaikan kepada pengguna. Model ini juga merupakan perbaikan dari model waterfall dan sebagai standar pendekatan top-down. Ide dasar dari model ini adalah membangun software secara meningkat (increment) berdasarkan kemampuan fungsional.

Pada saat model incremental (pertambahan) ini digunakan, pertambahan pertama sering merupakan produk inti (core product), yaitu sebuah model pertambahan yang dipergunakan, tetapi beberapa muka tambahan (beberapa diketahui dan beberapa tidak) tetap tidak disampaikan. Produk inti tersebut dipergunakan oleh pelanggan (atau mengalami pengkajian detail). Sebagai hasil dari pemakaian dan / atau evaluasi maka dikembangkan rencana bagi pertambahan selanjutnya. Rencana tersebut menekankan modifikasi produk inti untuk secara lebih baik memenuhi kebutuhan para pelanggan dan penyampaian fitur serta fungsional tambahan. Proses ini mengikuti penyampaian setiap pertambahan sampai bisa menghasilkan produk yang lengkap.

Model proses incremental tersebut, seperti model prototype dan pendekatan-pendekatan evolusioner yang lain, bersifat iterative. Tetapi tidak seperti model prototype, model pertambahan berfokus pada penyampaian produk operasional dalam setiap pertambahannya. Pertambahan awal ada di versi stripped down dari produk akhir, tetapi memberikan kemampuan untuk melayani pemakai dan juga menyediakan platform untuk evaluasi oleh pemakai.

Perkembangan pertambahan, khususnya berguna pada saat staffing, tidak bisa dilakukan dengan menggunakan implementasi lengkap oleh batasan waktu bisnis yang sudah disepakati untuk proyek tersebut. Jika produk inti diterima dengan baik, maka staf tambahan (bila dibutuhkan) bisa ditambahkan untuk mengimplementasi pertambahan selanjutnya. Sebagai tambahan, system mayor yang sedang pada masa perkembangan serta waktu penyampaiannya belum pasti, mungkin membutuhkan keberadaan perangkat keras yang baru. Bisa juga rencana tertentu dibuat untuk menghindari pemakaian perangkat lunak ini, sehingga memungkinkan fungsionalitas partial disampaikan kepada pemakai tanpa harus banyak tertunda. 

Contoh Penggunaan Incremental Model :
Misalnya, perangkat lunak pengolah kata yang dikembangkan dengan menggunakan paradigma penambahan akan menyampaikan manajemen file dasar, editing serta fungsi penghasilan dokumen pada penambahan pertama; kemudian editing dan kemampuan penghasilan dokumen yang lebih canggih pada pertambahan kedua; pengecekan spelling dan tata bahasa pada pertambahan ketiga; serta kemampuan pengaturan halaman tingkat lanjut pada tahap pertambahan keempat. Harus dicatat bahwa aliran proses untuk berbagai pertambahan tersebut dapat menggabungkan paradigma prototype.

Kelebihan dan Kekurangan Incremental Model :

Kelebihan :
  • Merupakan model dengan manajemen yang sederhana.
  • Pelanggan tidak perlu menunggu sampai seluruh system dikirim untuk mengambil keuntungan dari system tersebut. Inkremen yang pertama sudah memenuhi persyaratan mereka yang paling kritis, sehingga perangkat lunak dapat segera digunakan.
  • Pelanggan dapat memakai inkremen yang pertama sebagai bentuk prototype dan mendapatkan pengalaman yang dapat menginformasikan persyaratan untuk inkremen system berikutnya.
  • Resiko untuk kegagalan proyek secara keseluruhan lebih rendah. Walaupun masalah dapat ditemukan pada beberapa inkremen, bisa saja beberapa inkremen diserahkan dengan sukses kepada pelanggan.
  • Karena layanan dengan prioritas tertinggi diserahkan pertama dan inkremen berikutnya diintegrasikan dengannya, sangatlah penting bahwa layanan system yang paling penting mengalami pengujian yang paling ketat. Ini berarti bahwa pelanggan akan memiliki kemungkinan kecil untuk memenuhi kegagalan      perangkat lunak pada inkremen system yang paling kecil.
Kekurangan :
  • Inkremen harus relative lebih kecil (tidak lebih dari 20.000 baris kode) dan setiap inkremen harus menyediakan sebagian dari fungsional system.
  • Adanya kesulitan untuk memetakan persyaratan pelanggan pada inkremen dengan ukuran yang benar.
  • Tiap bagian tidak dapat diintegrasikan.
Referensi : 

  • Ireactive-Incremental (Spiral) Model
Proses digambarkan sebagai spiral. Setiap loop mewakili satu fase dari software process. Loop paling dalam berfokus pada kelayakan dari sistem, loop selanjutnya tentang definisi dari kebutuhan, loop berikutnya berkaitan dengan desain sistem dan seterusnya. Setiap Loop dibagi menjadi beberapa sektor, yaitu :

1. Objective settings (menentukan tujuan)
Menentukan tujuan dari fase yang ditentukan. Batasan-batasan pada proses dan produk sudah diketahui. Perencanaan sudah disiapkan. Resiko dari proyek sudah diketahui. Alternatif strategi sudah disiapkan berdasarkan resiko-resiko yang diketahui, dan sudah direncanakan.

2. Risk assessment and reduction (Penanganan dan pengurangan resiko)
Setiap resiko dianalisis secara detil pada sektor ini. Langkahlangkah penanganan dilakukan, misalnya membuat prototype untuk mengetahui ketidakcocokan kebutuhan.

3. Development and Validation (Pembangunan dan pengujian)
Setelah evaluasi resiko, maka model pengembangan sistem dipilih. Misalnya jika resiko user interface dominan, maka membuat prototype User Interface. Jika bagian keamanan yang bermasalah, maka

4. Planning
Proyek dievaluasi atau ditinjau-ulang dan diputuskan untuk terus ke fase loop selanjutnya atau tidak. Jika melanjutkan ke fase berikutnya rencana untuk loop selanjutnya.

5. Menggunakan model formal dengan perhitungan matematis, dan jika masalahnya adalah integrasi sistem model waterfall lebih cocok.

Pembagian sektor tidak bisa saja dikembangkan seperti pada pembagian sektor berikut pada model variasi spiral di bawah ini :
1. Customer communication : membangun komunikasi yang baik dengan pengguna / customer.
2. Planning : mendefinisikan sesumber, batas waktu, informasi-informasi lain seputar proyek.
3. Risk analysis : identifikasi resiko managemen dan teknis
4. Engineering : pembangunan contoh-contoh aplikasi, misalnya prototype
5. Construction and release : pembangunan, test, install dan support.
6. Customer evaluation : mendapatkan feedback dari pengguna berdasarkan evaluasi PL pada fase engineering dan fase instalasi. Pada model spiral, resiko sangat dipertimbangkan. Resiko adalah sesuatu yang mungkin mengakibatkan kesalahan. Model spiral merupakan pendekatan yang realistik untuk PL berskala besar. Pengguna dan pembangun bisa memahami dengan baik software yang dibangun karena setiap kemajuan yang dicapai selama proses dapat diamati dengan baik. Namun demikian, waktu yang cukup panjang mungkin bukan pilihan bagi pengguna, karena waktu yang lama sama dengan biaya yang lebih besar.

Kelebihan dan Kekurangan Spiral Model :

Kelebihan :
   1. Dapat disesuaikan agar perangkat lunak bisa dipakai selama hidup perangkat lunak
       komputer.
   2. Lebih cocok untuk pengembangan sistem dan perangkat lunak skala besar
   3. Pengembang dan pemakai dapat lebih mudah memahami dan bereaksi terhadap
       resiko setiap tingkat evolusi karena perangkat lunak terus bekerja selama proses .
   4. Menggunakan prototipe sebagai mekanisme pengurangan resiko dan pada setiap
       keadaan di dalam evolusi produk.
   5. Tetap mengikuti langkah-langkah dalam siklus kehidupan klasik dan memasukkannya
       ke dalam kerangka kerja iteratif .
   6. Membutuhkan pertimbangan langsung terhadp resiko teknis sehingga mengurangi
       resiko sebelum menjadi permaslahan yang serius.

Kekurangan :
   1. Sulit untuk menyakinkan pelanggan bahwa pendekatan evolusioner ini bisa dikontrol.
   2. Memerlukan penaksiran resiko yang masuk akal dan akan menjadi masalah yang
       serius jika resiko mayor tidak ditemukan dan diatur.
   3. Butuh waktu lama untuk menerapkan paradigma ini menuju kepastian yang absolut.

Referensi :


Demikianlah ulasan singkat saya mengenai Software Process Model... 
Semoga dapat bermanfaat bagi pembaca sekalian \(-^o^-)/ thank you !

3 comments: