Thursday, November 26, 2015

Metode - Metode yang Dipakai dalam Perangkat Lunak

1.        Metode Waterfall                                                                                                                               
Waterfall Model adalah sebuah metode pengembangan software yang bersifat sekuensial. Metode ini dikenalkan oleh Royce pada tahun 1970 dan pada saat itu disebut sebaga isi klus klasik dan sekarang ini lebih dikenal dengan sekuensial linier. Selain itu Model ini merupakan model yang paling banyak dipakai oleh para pengembang software. Inti dari metodewaterfall adalah pengerjaan dari suatu system dilakukan secara berurutan atau secara linear. Jadi jika langkah satu belum dikerjakan maka tidak akan bisa melanjutkan kelangkah 2, 3 dan seterusnya.  Secara otomatis tahapan ke-3 akan bisa dilakukan jika tahap ke-1 dan ke-2 sudah dilakukan. Ada dua gambaran dari Waterfall Model, biarpun berbeda dalam menggunakan fase tapi intinya sama.
Kelebihan :
§   Kualitas dari sistem yang dihasilkan akan baik. Ini dikarenakan oleh pelaksanaannya secara bertahap. Sehingga tidak terfokus pada tahapan tertentu.
§   Document pengembangan system sangat terorganisir, karena setiap fase harus terselesaikan dengan lengkap sebelum melangkah ke fase berikutnya. Jadi  setiap fase atau tahapan akan mempunyai dokumen tertentu.
§   Metode ini masih lebih baik digunakan walaupun sudah tergolong kuno, daripada menggunakan pendekatan asal-asalan. Selain itu, metode ini juga masih masuk akal jika kebutuhan sudah diketahui dengan baik.
Kekurangan :
§   Diperlukan majemen yang baik, karena proses pengembangan tidak dapat dilakukan secara berulang sebelum terjadinya suatu produk.
§   Kesalahan kecil akan menjadi masalah besar jika tidak diketahui sejak awal pengembangan yang berakibat pada tahapan selanjutnya.
§   Pelanggan sulit menyatakan kebutuhan secara eksplisit sehingga tidak dapat mengakomodasi ketidak pastian pada saat awal pengembangan.
§   Pelanggan harus sabar, karena pembuatan perangkat lunak akan dimulai ketika tahap desain sudah selesai. Sedangkan pada tahap sebelum desain bisa memakan waktu yang lama.
§   Pada kenyataannya, jarang mengikuti urutan sekuensial seperti pada teori. Iterasi sering terjadi menyebabkan masalah baru.

2.        Prototipe
Protoyping Model adalah model yang dapat diterapkan pada model apapun. Model ini tidak memerlukan data yang lengkap dari sisi client dan banyaknya keraguan dari pembuat software karena kondisi yang belum diketahui (seberapa besar software, bagaimana sistem penerapannya). Model ini tepat digunakan jika pihak client menginginkan prototype dari software dalam waktu yang singkat. Dan prototype inilah yang akan menjadi acuan dari client untuk memberikan data kebutuhan yang lebih lengkap pada pembuat software (developer).
Kelebihan: 
o      Menghemat waktu pengembangan.
o      Adanya komunikasi yang baik antara pengembang dan pelanggan.
o      Pengembang dapat bekerja lebih baik dalam menentukan kebutuhan pelanggan.
o      Penerapan menjadi lebih mudah karena pemakai mengetahui apa yang diharapkannya.
o      User dapat berpartisipasi aktif dalam pengembangan sistem.
o      Punya kemampuan menangkap requirement secara konkret daripada secara abstrak.
o      Untuk digunakan secara standalone.
o      Digunakan untuk memperluas SDLC.
 
Kekurangan:
Ø   Pada prototype tentu saja banyak kebutuhan yang tidak di tampilkan seluruhnya karena data yang dikumpulkan hanya sebagian.
Ø   Prototype yang di setujui oleh client harus dikembangkan oleh developer tanpa ada data tambahan dari client dan software dari prototype harus memiliki fungsi yang lengkap.
Ø   Banyak ketidak sesuaian pada bentuk prototype.
Ø   Proses analisis dan perancangan terlalu singkat.
Ø   Walaupun pemakai melihat berbagai perbaikan dari setiap versi prototype, tetapi pemakai mungkin tidak menyadari bahwa versi tersebut dibuat tanpa memperhatikan kualitas dan pemeliharaan jangka panjang.
Ø   Pengembang kadang-kadang membuat kompromi implementasi dengan menggunakan sistem operasi yang tidak relevan dan algoritma yang tidak efisien.
Ø   Mengesampingkan alternatif pemecahan masalah.
Ø   Bisanya kurang fleksible dalam mengahadapi perubahan.
Ø   Prototype yang dihasilkan tidak selamanya mudah dirubah 
Ø   Pelanggan kadang tidak melihat atau menyadari bahwa perangkat lunak yang ada belum mencantumkan kualitas perangkat lunak secara keseluruhan dan juga belum memikirkan kemampuan pemeliharaan untuk jangja waktu lama.
Ø   Pengembang biasanya ingin cepat menyelesaikan proyek. Sehingga menggunakan algoritma dan bahasa pemrograman yang sederhana untuk membuat prototyping lebih cepat selesai tanpa memikirkan lebih lanjut bahwa program tersebut hanya merupakan cetak biru sistem. 
Ø   Hubungan pelanggan dengan komputer yang disediakan mungkin tidak mencerminkan teknik perancangan yang baik.

3.        Model Spiral
Spiral model adalah model proses yang pendekatannya bersifat realistis pada software besar karena proses dari awal sampai proses pengiriman dan perbaikan dapat dipahami dnegan baik oleh clieent dan developer. Model ini mempunyai rangkaian kerja yang iterasi (peningkatan pada model) awal yang berbentuk prototype dan kemudian iterasi selanjutnya akan menjadi perkembangan dari model sebelumnya. Model ini dapat terus digunakan meskipun software sudah dikirimkan karena proses (siklus)dapat berputar lagi jika ada perubahan pada software sampai tidak ada permintaan perupbahan pada software oleh client.
Kelebihan :
Ø   Setiap tahap pengerjaan dibuat prototyping sehingga kekurangan dan apa yang diharapkan oleh client dapat diperjelas dan juga dapat menjadi acuan untuk client dalam mencari kekurangan kebutuhan.
Ø   Lebih cocok untuk pengembangan sistem dan perangkat lunak skala besar.
Ø   Dapat disesuaikan agar perangkat lunak bisa dipakai selama hidup perangkat lunak komputer. 
Ø   Pengembang dan pemakai dapat lebih mudah memahami dan bereaksi terhadap resiko setiap tingkat evolusi karena perangkat lunak terus bekerja selama proses.
Ø   Menggunakan prototipe sebagai mekanisme pengurangan resiko dan pada setiap keadaan di dalam evolusi produk.
Ø   Tetap mengikuti langkah-langkah dalam siklus kehidupan klasik dan memasukkannya ke dalam kerangka kerja iteratif.
Ø   Membutuhkan pertimbangan langsung terhadp resiko teknis sehingga mengurangi resiko sebelum menjadi permasalahan yang serius.
    
Kekurangan :
Ø         konsumen (Client) tidak percaya bahwa pendekatan secara evolusioner dapat dikontrol oleh kedua pihak. Model spiral mempunyai resiko yang harus dipertimbangkan ulang oleh konsumen dan developer.
Ø        Memerlukan tenaga ahli untuk memperkirakan resiko, dan harus mengandalkannya supaya sukses.
Ø         Belum terbukti apakah metode ini cukup efisien karena usianya yang relatif baru.
Ø      Memerlukan penaksiran resiko yang masuk akal dan akan menjadi masalah yang serius jika   resiko mayor tidak ditemukan dan diatur.
Ø         Butuh waktu lama untuk menerapkan paradigma ini menuju kepastian yang absolute.

4.        Model RAD (Rapid Application Development)
Model RAD merupakan model proses pengembangan perangkat lunak secara linear sequential yang menekankan pada siklus pengembangan yang sangat singkat.
Kelebihan :
Ø        Lebih efektif dari pendekatan waterfall/sequential linear dalam menghasilkan system yang memenuhi kebutuhan langsung dari pelanggan.
Ø          Cocok untuk proyek yang memerlukan waktu yang singkat.
Kekurangan :
Ø       RAD tidak cocok digunakan untuk sistem yang mempunyai resiko teknik yang tinggi.
Ø        Membutuhkan orang yang banyak untuk menyelesaikan sebuah proyek berskala besar.
Ø       Pengembang dan customer harus punya komitmen yang kuat untuk menyelesaikan sebuah software.
Ø    Jika sistem tidak di bangun dengan benar maka RAD akan bermasalah.
Ø   Jika ada perubahan di tengah-tengah pengerjaan maka harus membuat kontrak baru antara pengembang dan customer.

5.        Model V
Bisa dikatakan model ini merupakan perluasan dari model waterfall. Disebut sebagai perluasan karena tahap-tahapnya mirip dengan yang terdapat dalam model waterfall. Jika dalam model waterfall proses dijalankan secara linear, maka dalam model V proses dilakukan bercabang. Dalam model V ini digambarkan hubungan antara tahap pengembangan software dengan tahap pengujiannya.

Kelebihan :
Ø   V Model sangat fleksibel. V Model mendukung project tailoring dan penambahan dan pengurangan method dantool secara dinamik. Akibatnya sangat mudah untuk melakukan tailoring pada V Model agar sesuai dengan suatu proyek tertentu dan sangat mudah untuk menambahkan method dan tool baru atau menghilangkan method dan tool yang dianggap sudah obsolete.
Ø      V Model dikembangkan dan di-maintain oleh publik. Userdari V Model berpartisipasi dalam  change control boardyang memproses semua change request terhadap V Model.
    
Kekurangan
:
Ø   V Model adalah model yang project oriented sehingga hanya bisa digunakan sekali dalam suatu proyek.
Ø   V Model terlalu fleksibel dalam arti ada beberapa activitydalam V Model yang digambarkan terlalu abstrak sehingga tidak bisa diketahui dengan jelas apa yang termasuk dalamactivity tersebut dan apa yang tidak.
    

6.        Incremental Model

Dalam model Incremental ini proses pengerjaan perangkat lunak akan dilakukan perbagian sehingga bagian selanjutnya akan dikerjakan setelah bagian awal telah selesai dan selanjutnya sampai menghasilkan perangkat lunak yang lengkap dengan semua fungsi yang diperlukan dan pengerjaan perangkat lunak berakhir. Sebelum pengerjaan perangkat lunak akan dilakukan perancangan arsitektur software sebagai kerangka dalam pengerjaan perbagian. 

Kelebihan :
Ø    Resiko yang rendah pada pengembangan sistem.
Ø    Mengutamakan fungsi-fungsi pada sistem perangkat lunak sehingga kemudahan pemakaian sistem yang paling di utamakan. 
Ø    Tahap awal adalan dasar dari pembuatan tahap berikutnya (dikerjakan secara terurut).
Ø    Cocok digunakan bila pembuat software tidak banyak/kekurangan pembuat
Ø    Mampu mengakomodasi perubahan kebutuhan customer. 
Ø    Mengurangi trauma karena perubahan sistem. Klien dibiasakan perlahan-lahan menggunakan produknya bagian per bagian.
Ø    Memaksimalkan pengembalian modal investasi konsumen.
    
Kekurangan
:
Ø    Hanya akan berhasil jika tidak ada staffing untuk penerapan secara menyeluruh.
Ø    Penambahan staf dilakukan jika hasil incremental akan dikembangkan lebih lanjut.
Ø    Hanya cocok untuk proyek dengan skala kecil.
Ø    kemungkinan tiap bagian tidak dapat diintegrasikan.

7.        Metode Agile Software development 
Agile Software development adalah salah satu metodelogi dalam pengembangan sebuah perangkat lunak (software). Kata Agile berarti bersifat cepat, ringan, bebas bergerak, waspada. Kata ini digunakan sebagai kata yang menggambarkan konsep model proses yang berbeda dari konsep model-model proses yang sudah ada. Konsep Agile software development dicetuskan oleh Kent Beck dan 16 rekannya dengan menyatakan bahwa Agile Software Development adalah cara membangun software dengan melakukannya dan membantu orang lain membangunnya sekaligus.
Dalam Agile Software Development interaksi dan personel lebih penting dari pada proses dan alat, software yang berfungsi lebih penting daripada dokumentasi yang lengkap, kolaborasi dengan klient lebih penting daripada negosiasi kontrak, dan sikap tanggap terhadap perubahan lebih penting daripada mengikuti rencana. Namun demikian, sama seperti model proses yang lain, agile software development memiliki kelebihan dan tidak cocok untuk semua jenis proyek, produk, orang dan situasi. Agile Software Development memungkinkan model proses yang toleransi terhadap perubahan kebutuhan sehingga perubahan dapat cepat ditanggapi. Namun di sisi lain menyebabkan produktiitas menurun.
Kelebihan :
·                  Meningkatkan kepuasan kepada klien.
·                  Dapat melakukan review pelanggan mengenai software yang dibuat lebih awal.
·                  Pembangunan system dibuat lebih cepat.
·                  Mengurangi resiko kegagalan implementasi software dari segi non-teknis.
·                  Jika pada saat pembangunan system terjadi kegagalan kerugian dari segi materi relatif kecil.
Kekurangan :
o       Developer harus selalu siap dengan perubahan karena perubahan akan selalu diterima.
o       Agile tidak akan berjalan dengan baik jika komitmen tim kurang.
o       Tidak cocok dalam skala tim yang besar (>20 orang).
o       Perkiraan waktu release dan harga perangkat lunak sulit ditentukan.