Sabtu, 25 November 2017

Model Pengembangan Perangkat Lunak



MODEL PENGEMBANGAN PERANGKAT LUNAK

            Pernah tahu atau dengar kata “Software” kan? Itu sudah pasti karena zaman sekarang kata itu pasti sudah tidak asing bagi kita sebagai pengguna perangkat digital. Namun tahukah kamu bahwa software(perangkat lunak) ini bisa dikembangkan lagi. Ya, biasanya itu dapat dilakukan melalui tahapan – tahapan tertentu. Lalu, apa sih Pengembangan Perangkat Lunak itu?
            Pengembangan Perangkat Lunak (Software Development) adalah salah satu tipe proyek IT yang berfokus pada menciptakan ataupun mengembangkan sebuah perangkat lunak.
            Pada postingan kali ini, saya akan membahas beberapa model pengembangan perangkat lunak (Software Development) dan apa saja perbedaannya? Silahkan dibaca postingan saya kali ini.

Agile Software Development Methodology


h
Gambar Agile Development
Agile Development Methods adalah sekelompok metodologi pengembangan perangkat lunak yang didasarkan pada prinsip-prinsip yang sama atau pengembangan sistem jangka pendek yang memerlukan adaptasi cepat dari pengembang terhadap perubahan dalam bentuk apapun. 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.

Agile development methods terdefinisi dalam empat nilai, yang di sebut Agile Alliance’s Manifesto, diantaranya :

  1. Interaksi dan personel lebih penting dari pada proses dan alat.
  2. Perangkat lunak yang berfungsi lebih penting daripada dokumentasi yang lengkap.
  3. Kolaborasi dengan klien lebih penting dari pada negosiasi kontrak.
  4. Respon terhadap perubahan lebih penting daripada mengikuti rencana.

Pengertian dari Agile Alliance's Manifesto dijelaskan di bawah ini:

  • Interaksi dan personel lebih penting dari pada proses dan alat, di dalam agile interaksi antar anggota tim sangatlah penting, karena tanpa adanya interaksi yang baik maka proses pembuatan perangkat lunak tidak akan berjalan sesuai rencana.

  • Perangkat lunak yang berfungsi lebih penting daripada dokumentasi yang lengkap, saat melakukan proses demonstrasi kepada klien, perangkat lunak yang berfungsi dengan baik akan lebih berguna daripada dokumentasi yang lengkap.

  • Kolaborasi dengan klien lebih penting dari pada negosiasi kontrak, salah satu ciri dari agile adalah klien menjadi bagian dari tim pengembangan perangkat lunak. Kolaborasi yang baik dengan klien saat proses pembuatan perangkat lunak sangatlah penting ketika menggunakan agile. Karena fungsi-fungsi dari perangkat lunak yang dikembangkan harus terus menerus dibicarakan dan diimprovisasi disesuaikan dengan keinginan klien.
Respon terhadap perubahan lebih penting daripada mengikuti rencana, agile development methods berfokus terhadap kecepatan respon tim ketika klien menginginkan perubahan saat proses pembuatan perangkat lunak.
 

·         Kelebihan :
  •   Meningkatkan kepuasan kepada klien.
  •   Pembangunan system dibuat lebih cepat.
  •   Mengurangi resiko kegagalan implementasi software dari segi non-teknis.
  •   Jika pada saat pembangunan system terjadi kegagalan,kerugian dar segi materi relative kecil.
·         Kekurangan :
  • Agile tidak akan berjalan dengan baik jika komitmen tim kurang.
  • Tidak cocok dalam skala tim yang besar (>20 orang).
  • Perkiraan waktu release dan harga perangkat lunak sulit ditentukan.

Rapid Application Development




Gambar RAD
           Rapid Application Development (RAD) model proses pembangunan perangkat lunak yang tergolong dalam teknik incremental (bertingkat). RAD menekankan pada siklus pembangunan pendek, singkat, dan cepat. Waktu yang singkat adalah batasan yang penting untuk model ini. Rapid application development menggunakan metode iteratif (berulang) dalam mengembangkan sistem di mana working model (model bekerja) sistem dikonstruksikan di awal tahap pengembangan dengan tujuan menetapkan kebutuhan (requirement) user dan selanjutnya disingkirkan. Working model digunakan kadang-kadang saja sebagai basis desain dan implementasi sistem final.

 

Kelebihan:

  • Mudah mengakomodasi perubahan sistem
  • Mempermudah feedback customer
  • Cocok untuk proyek yang membutuhkan waktu pengembangan yang lebih pendek.
  • Cocok untuk sistem yang berbasis komponen dan terukur.
  • Mudah dalam menentukan dasar sistem

Kekurangan :

  •  Ketergantungan pada anggota bisnis tim untuk mengidentifikasi persyaratan bisnis
  • Hanya sistem yang bisa di modularized yang bisa dibangun menggunakan RAD
  • Membutuhkan developer / designer yang berpengalaman
  • Ketergantungan pada keterampilan model
  • Tidak dapat diterapkan pada proyek yang kecil / murah

Dynamic System Development Model Methodology

Hasil gambar untuk Dynamic System Development Model Methodology
Gambar DSDM


            Dynamic System Development Methodology (DSDM) adalah suatu kerangka dalam pengembangan suatu project, terutama digunakan untuk metode pengembangan perangkat lunak. DSDM merupakan iteratif dan incremental pendekatan yang mencakup prinsip-prinsip pembangunan Agile, termasuk keterlibatan pengguna atau pelanggan secara terus-menerus, intinya DSDM suatu metode yang mendekati Incremental dan Agile Alliance.

            Beberapa karakteristik DSDM yaitu sebagai berikut :

  1. Menyajikan kerangka kerja (Framework) untuk membangun dan memelihara sistem dalam waktu yang terbatas melalui penggunaan prototyping yang incremental dalam lingkungan yang terkondisikan.
  2. Membangun software dengan cepat yaitu 80% dari proyek diserahkan dalam 20% dari waktu total untuk menyerahkan proyek secara utuh.
  3. Aktifitas Feasibility Study yaitu dengan requirement, lalu uji apakah sesuai gunakan proses DSDM.
  4. Aktifitas Business Study yaitu susunam kebutuhan fungsional dan informasi, menentukan arsitektur aplikasi dan identifikasi kebutuhan pemeliharaan untuk aplikasi
  5. Aktifitas Functional model iteration yaitu menghasilkan incremental prototype yang perlihatkan fungsi software ke client untuk dapatkan kebutuhan lebih jelas dan konfirmasi.
  6. Aktifitas Design and Build Iteration yaitu melakukan cek ulang prototype yang di bangun untuk memastikan bahwa prototype yang di bangun dengan cara tersebut memungkinkan semua fungsi benar-benar bekerja.
  7. Aktifitas Implementation yaitu menempatkan software pada lingkungan sebenarnya sekalipun belum lengkap atau masih ada perubahan.
  8. DSDM dapat dikombinasikan dengan XP yang menghasilkan kombinasi model proses mengikuti metode DSDM dan praktek yang sejalan dengan XP.
Kelebihan :
  • Membangun software dengan cepat.
  • Menyajikan kerangka kerja (framework) untuk membangun dan memelihara sistem dalam waktu yang terbatas melalui penggunaan prototyping yang incremental dalam lingkungan yang terkondisikan.
  • DSDM dapat dikombinasikan dengan XP menghasilkan kombinasi model proses yang mengikuti DSDM dan praktek yang sejalan dengan XP.


Kekurangan :

  • Setiap iterasi bergantung pada prototype sebelumya.
  • Dokumentasi sering kali tidak lengkap fokus pada pembuatan prototype.
  • Menentukan scope dari suatu prototype proyek tidak pernah selesai.
  • Isu-isu mengenai system backup and recovery, system performance dan system security kurang/tidak diperhatikan dan sering terlupakan. 

Extreme Programing Methodology




Hasil gambar untuk extreme programing
Gambar Extreme Programing
            Extreme Programing (XP) adalah model pengembangan perangkat lunak yang mencoba menyederhanakan berbagai tahapan dalam proses pengembangan tersebut sehingga menjadi lebih adaktif dan fleksibel. Pendekatan tidak hanya berfokus pada coding tetapi meliputi seluruh area pengembangan perangkat lunak.
            Berikut merupakan proses Extreme Programming :
  1. Planning
Tahap planning dimulai dengan membuat user stories yang menggambarkan output, fitur, dan fungsi-fungsi dari software yang akan dibuat. User stories tersebut kemudian diberikan bobot seperti prioritas dan dikelompokkan untuk selanjutnya dilakukan proses delivery secara incremental. 
  1. Design.
Design di Extreme Programming mengikuti prinsip Keep It Simple (KIS). Untuk design yang sulit, Extreme Programming akan menggunaan Spike Solution dimana pembuatan design dibuat langsung ke tujuannya. Extreme Programming juga mendukung adanya refactoring dimana software system diubah sedemikian rupa dengan cara mengubah stuktur kode dan menyederhanakannya namun hasil dari kode tidak berubah. 
  1. Coding.
Proses coding pada XP diawali dengan membangun serangkaian unit test. Setelah itu pengembang akan berfokus untuk mengimplementasikannya. Dalam Extreme Programming diperkenalkan istilah Pair Programming dimana proses penulisan program dilakukan secara berpasangan. Dua orang programmer saling bekerjasama di satu komputer untuk menulis program. Dengan melakukan ini akan didapat real-time problem solving dan real-time quality assurance. 
  1. Testing.
Tahap ini dilakukan pengujian kode pada unit test. Dalam Extreme Programming, diperkenalkan XP acceptance test atau biasa disebut customer test. Tes ini dilakukan oleh customer yang berfokus kepada fitur dan fungsi sistem secara keseluruhan. Acceptance test ini berasal dari user stories yang telah diimplementasikan.
 
 
Kelebihan :

  • Meningkatkan kepuasan kepada client.
  • Pembangunan system dibuat lebih cepat.
  • Menjalin komunikasi yang baik dengan client.
  • Meningkatkan komunikasi dan sifat saling menghargai antar developer.  


Kekurangan :

  • Cerita-cerita yang menunjukkan requirements dari pelanggan kemungkinan besar tidak lengkap sehingga Developer harus selalu siap dengan perubahan karena perubahan akan selalu diterima.
  • Tidak bisa membuat kode yang detail di awal (prinsip simplicity dan juga anjuran untuk melakukan apa yang diperlukan hari itu juga).
  • XP tidak memiliki dokumentasi formal yang dibuat selama pengembangan. Satu-satunya dokumentasi adalah dokumentasi awal yang dilakukan oleh user.

Scrum Development Methodology

Hasil gambar untuk scrum development methodology
Gambar Scrum Methodollogy
            Pertama kali diperkenalkan oleh Jeff Sutherland tahun awal tahun 1990an, dan dikembangkan selanjutnya dilakukan oleh Schwaber dan Beedle. Pada dasarnya Scrum merupakan salah satu komponen dari metodologi pengembangan Agile mengenai pertemuan harian untuk membahas kemajuan sedangkan XP adalah menekankan metodologi yang berbeda yaitu ujian, pemrograman dan pembangunan. Scrum menguraikan proses untuk mengidentifikasi dan katalogisasi pekerjaan yang perlu dilakukan, memprioritaskan yang bekerja dengan berkomunikasi dengan pelanggan atau wakil pelanggan, dan pelaksanaan yang bekerja menggunakan rilis iterative dan memiliki tujuan utama untuk mendapatkan perkiraan berapa lama akan pembangunan. XP lebih lanjut tentang pengembang membantu menyelesaikan pekerjaan secepat dan maintainably mungkin.
                Scrum merupakan suatu kerangka kerja. Jadi, bukannya menyediakan deskripsi rinci tentang bagaimana segala sesuatu yang harus dilakukan pada proyek seperti diserahkan kepada tim pengembangan perangkat lunak pada umumnya. Hal ini dilakukan supaya tim akan tahu bagaimana cara terbaik untuk memecahkan masalah yang mereka disajikan. Ada 3 elemen organisasi utama pada scrum yaitu product owner, Scrum master, dan the Scrum team. Scrum Master dapat dianggap sebagai pelatih bagi tim, membantu anggota tim menggunakan kerangka Scrum untuk tampil di tingkat tertinggi. Product Owner mewakili bisnis, pelanggan atau pengguna dan memandu tim ke arah pegembangan produk yang tepat. Sedangkan The Scrum Team merupakan grup pengembang kecil biasanya terdiri dari 5-9 orang. Untuk projek yang sangat besar, pekerjaan biasanya dibagi dan didelegasikan ke grup-grup kecil. Jika sangat dibutuhkan the scrum master juga dapat ikut membantu dalam koordinasi team.

Kelebihan :
  • Keperluan berubah dengan cepat.
  • Tim berjumlah kecil sehingga melancarkan komunikasi, mengurangi biaya, dan memberdayakan satu sama lain.
  • Pekerjaan terbagi – bagi sehingga dapat diselesaikan dengan cepat.
  • Dokumentasi dan pengujian terus – menerus dilakukan setelah software dibangun.
  • Proses Crum dapat menyatakan bahwa pdroduk selesai kapanpun diperlukan.

Kekurangan :
  • Developer harus selalu siap dengan perubahan karena perubahan akan selalu diterima.
 
Demikian postingan ini saya buat, semua model - model yang ada jika ditempatkan pada proyek yang tepat pasti akan sebuah produk yang berkualitas dan bersaing. Sebaliknya jika ditempatkan pada proyek yang salah karena kesalahan analisa proyek, maka bisa jadi akan memaakan waktu dan uang jauh lebih besar dari perkiraan.

TERIMA KASIH SUDAH MENGUNJUNGI BLOG INI ^-^
   

 


 

 

 
 





·       

Tidak ada komentar:

Posting Komentar