Langsung ke konten utama

Macam-Macam Model Proses Pembangunan Perangkat Lunak


Proses pengembangan perangkat lunak (Software development process) adalah suatu struktur yang diterapkan pada pengembangan suatu produk perangkat lunak yang bertujuan untuk mengembangkan sistem dan memberikan panduan yang bertujuan untuk menyukseskan proyek pengembangan sistem melalui tahap demi tahap. Proses ini memiliki beberapa model yang masing-masing menjelaskan pendekatan terhadap berbagai tugas atau aktivitas yang terjadi selama proses.
Berikut ini penjelasan dari beberapa model proses.


1. Incremental Model

    Incremental model adalah perbaikan dari model waterfall yang pengembangannya dilakukan secara bertahap, untuk mengulang proses tidak harus mengunggu satu siklus selesai. Satu siklus dianggap sebagai satu increment. Berikut merupakan proses tahapan dari Incremental Model :
  1. Requirement , Proses penentuan kebutuhan / analisis kebutuhan.
  2. Specification, Proses spesifikasi atau penyesuaian kebutuhan menggunakan analisis kebutuhan.
  3. Architecture Design, Proses perancangan software yang terbuka agar dapat diterapkan sistem pembangunan per-bagian pada tahapan selanjutnya.
  4. Code, Proses pengkodean.
  5. Test, Tahap pengujian.



      Kelebihan dari Incremental model antara lain :

  1. Risiko yang rendah pada pengembangan sistem.
  2. Pemakaian sistem yang mudah.
  3. Tahap awal adalah dasar dari pembuatan tahap berikutnya (dikerjakan secara terurut).
  4. Cocok untuk proyek skala kecil.
  5. Client dapat menggunakan increment pertama sebagai prototype.
  6. Mengurangi trauma karena perubahan sistem. Client dibiasakan perlahan-lahan menggunakan produknya bagian per bagian.
  7. Memaksimalkan pengembalian modal investasi client.


      Kelemahan dari Incremental Model antara lain :
  1. Hanya berlaku pada proyek skala kecil.
  2. Kemampuannya untuk selalu mendapat perubahan selama proses rekayasa berlangsung, sehingga susah untuk diintegrasikan (dan dapat menjadi build and fix model).
  3. Membutuhkan waktu yang lama untuk menghasilkan produk lengkap.






2. Concurrent Development Model
   
    Concurrent Developement Model, atau biasa disebut Concurrent Engineering merupakan serangkaian kegiatan framework, software. Tindakan rekayasa, tugas dan kondisi terkait. 
Berikut merupakan gambar proses Concurrent Engineering :



      Kelebihan dari Concurrent Engineering antara lain :
  1. Semua kegiatan dijalankan secara bersamaan tetapi berbeda kondisi.
  2. Berlaku untuk semua jenis perangkat lunak.
  3. Hasil yang di dapat akan menghasilkan suatu sistem yang sangat baik karena terdapat perancangan yang terjadi secara besar dan terencana secara matang. 
      Kekurangan dari Concurrent Engineering antara lain : 
  1. Memungkinkan terjadinya perubahan besar-besaran, maka akan membuat biaya dan waktu yang diperlukan membengkak.





3. V-Model
   
    Bisa dikatakan sebagai perluasan dari Waterfall Model karena tahap prosesnya yang mirip.
Berikut merupakan gambar proses dari V-Model :


      Kelebihan dari V-Model antara lain : 
  1. Model yang fleksibel.
  2. User dapat memberikan masukkan untuk perkembangan V-Model

      Kekurangan dari V-Model antara lain :
  1. Hanya dapat digunakan sekali dalam suatu proyek.
  2. Terlalu fleksibel sehingga jadwal kegiatan terlihat abstrak.





4. RAD Model

    Merupakan teknik Incremental bertingkat yang memungkinkan software untuk dibangun dalam waktu yang cepat.
Berikut merupakan gambar proses dari RAD Model :


      Kelebihan dari RAD Model antara lain : 
  1. Mempunyai kemampuan "menggunakan kembali" komponen yang ada (reusable object).
  2. Setiap fungsi utama dimodulkan dalam waktu tertentu kurang dari 3 bulan dan dapat didiskusikan oleh tim RAD yang terpisah dan kemudian diintegrasikan sehingga lebih efisien waktu.

      Kekurangan dari RAD Model antara lain : 
  1. Butuh orang yang banyak untuk menyelesaikan proyek skala besar.
  2. Tidak cocok untuk proyek yang berisiko tinggi.
  3. Tidak cocok bagi sistem perangkat lunak yang tak bisa dimodulkan.





5. Spiral Model

    Model ini merupakan penggabungan dari fitur waterfall model dan prototype. Setiap tahapan selalu dilakukan risk analis dan testing dan diproses secara realistis pada software karena proses dari awal sampai proses pengiriman dan perbaikan dapat dipahami oleh client 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.
Berikut merupakan gambar proses dari Spiral Mode :


      Kelebihan dari Spiral Model antara lain :
  1. Setiap tahap pengerjaan dibuat prototyping untuk mempermudah dalam pencarian kelemahan.
  2. Cocok untuk pengembangan proyek skala besar.
  3. Masa pakainya dapat disesuaikan agar perangkat lunak selama hidup perangkat lunak komputer.
  4. Pengembang dan user dapat lebih memahami setiap risiko dalam setiap tingkat evolusinya karena perangkat lunak terus bekerja selana proyek. 
  5. Menggunakan prototipe sebagai mekanisme pengurangan resiko dan pada setiap keadaan di dalam evolusi produk.
  6. Tetap mengikuti langkah-langkah dalam siklus kehidupan klasik dan memasukkannya ke dalam kerangka kerja iteratif.
  7. Membutuhkan pertimbangan langsung terhadp resiko teknis sehingga mengurangi resiko sebelum menjadi permaslahan yang serius.
      Kekurangan dari Spiral Model antara lain :
  1. Banyak 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.
  2. Memerlukan tenaga ahli untuk memperkirakan resiko, dan harus mengandalkannya supaya sukses.
  3. Belum terbukti apakah metode ini cukup efisien karena usianya yang relatif baru.
  4. Memerlukan penaksiran resiko yang masuk akal dan akan menjadi masalah yang serius jika resiko mayor tidak ditemukan dan diatur.
  5. Butuh waktu lama untuk menerapkan paradigma ini menuju kepastian yang absolute.





6. Agile Development Methods
 
    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 development methods merupakan salah satu dari metodologi pengembangan perangkat lunak yang digunakan dalam pengembangan perangkat lunak.

Ada beberapa langkah dalam Agile Development Methods, yaitu :
  1. Perencanaan, pada langkah ini pengembang dan klien membuat rencana tentang kebutuhan dari perangkat lunak yang akan dibuat.
  2. Implementasi, bagian dari proses dimana programmer melakukan pengkodean perangkat lunak.
  3. Tes perangkat lunak, disini perangkat lunak yang telah dibuat di tes oleh bagian kontrol kualitas agar bug yang ditemukan bisa segera diperbaiki dan kualitas perangkat lunak terjaga.
  4. Dokumentasi, setelah dilakukan tes perangkat lunak langkah selanjutnya yaitu proses dokumentasi perangkat lunak untuk mempermudah proses maintenanance kedepannya.
  5. Deployment, yaitu proses yang dilakukan oleh penjamin kualitas untuk menguji kualitas sistem. Setelah sistem memenuhi syarat maka perangkat lunak siap dideployment.
  6. Pemeliharaan, langkah terakhir yaitu pemeliharaan. Tidak ada perangkat lunak yang 100% bebas dari bug, oleh karena itu sangatlah penting agar perangkat lunak dipelihara secara berkala.

Ada juga beberapa model dalam Agile Development Methods, seperti: Acceptance Test Driven Development (ATDD), Agile Modeling, Adaptive Software Development (ASD), Agile Unified Process (AUP), Continuous integration (CI), Crystal Clear, Crystal Methods, Dynamic Systems Development Method (DSDM), Extreme Programming (XP), Feature Driven Development (FDD), Graphical System Design (GSD), Kanban, Lean software development, Rational Unified Process (RUP), Scrum, Scrum-ban, Story-driven modeling,Test-driven development (TDD), Velocity tracking, dan Software Development Rhythms.

Beberapa keuntungan dari Agile Development Methods :
  1. Menambah produktivitas tim.
  2. Menambah kualitas dari perangkat lunak.
  3. Menambah kepuasan dari client.
  4. Menghemat biaya.



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 klien lebih penting dari pada negosiasi kontrak, dan sikap tanggap terhadap perubahan lebih penting daripada mengikuti rencana.

Pada intinya, Agile Development Methods sangat membantu para pengembang perangkat lunak dalam melakukan penyerahan produk secara tepat waktu dari suatu tahap operasional perangkat lunak yaitu pada bagian analisa dan desain.

      Kelebihan Metode Agile antara lain :
  1. Pembangunan sistem dibuat lebih cepat.
  2. Meningkatkan kepuasan kepada klien.
  3. Mengurangi resiko kegagalan implementasi software dari segi non-teknis.
  4. Jika pada saat pembangunan sistem terjadi kegagalan,kerugian dar segi materi relatif kecil.

      Kekurangan Metode Agile antara lain :
  1. Siap menghadapi beberapa perubahan.
  2. Bekerja dengan cepat, jika tim tidak dapat menyesuaikan tidak akan maksimal.
  3. Rencana awal dapat berubah se waktu-waktu.
  4. Jadwal tidak menentu.
  5. Jika tim tidak bisa komunikasi dengan baik maka akan terjadi kemunduran.



7. Scrum Model

Scrum, pada dasarnya merupakan salah satu komponen dari Agile development methods. Akhir-akhir ini scrum mulai marak di implementasikan di perusahaan IT di Indonesia, dikarenakan maraknya perusahaan IT mengimplementasikan agile development. 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 development akan dilakukan.

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.




Element-Element dalam Scrum

Ada 3 elemen organisasi utama pada scrum yaitu Product Owner, Scrum Master, dan The Scrum Team.

  1. Product Owner mewakili bisnis, pelanggan atau pengguna dan memandu tim ke arah pegembangan produk yang tepat.
  2. Scrum Master dapat dianggap sebagai pemersatu bagi product owner dan scrum team (developer, QA, technical wirter dll), membantu anggota tim menggunakan kerangka Scrum untuk menyelesaikan suatu project berdasarkan timeline yang ditentukan di awal.
  3. 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.

Scrum tepat digunakan saat kondisi :
  1. Keperluan berubah dengan cepat.
  2. Tim programmer sedikit, yaitu 5-9 orang.
  3. Pelanggan tidak terlalu paham dengan apa yang diinginkan.

Scrum memiliki prinsip yaitu:
  1. Ukuran tim yang kecil melancarkan komunikasi, mengurangi biaya, dan memberdayakan satu sama lain.
  2. Proses dapat beradaptasi terhadap perubahan teknis dan bisnis.
  3. Proses menghasilkan beberapa software increment.
  4. Pembangunan dan orang yang membangun dibagi dalam tim yang kecil.
  5. Dokumentasi dan pengujian terus menerus dilakukan setelah software dibangun.
  6. Proses scrum mampu menyatakan bahwa produk selesai kapanpun diperlukan.

     Kelebihan Scrum antara lain:
  1. Keperluan berubah dengan cepat
  2. Tim berukuran kecil sehingga melancarkan komunikasi, mengurangi biaya dan memberdayakan satu sama lain
  3. Pekerjaan terbagi-bagi sehingga dapat diselesaikan dengan cepat
  4. Dokumentasi dan pengujian terus menerus dilakukan setelah software dibangun
  5. Proses Scrum mampu menyatakan bahwa produk selesai kapanpun diperlukan

     Kekurangan Metode Scrum antara lain:
  1. Developer harus selalu siap dengan perubahan karena perubahan akan selalu diterima.





8. Specialized Process Model

    Terdiri dari 3 jenis, yaitu : Component Based Development, Formal Method, dan Aspect Oriented Model.

     a. Component Based Development
         Model konsep yang digunakan ketika konsep "reuse" menjadi tujuan utama dalam  pembangunan perangkat lunak. Arsitekturnya dibentuk dalam komponen-komponen.

     b. Formal Method
         Model proses yang menggunakan model matematika dalam setiap spesifikasi kebutuhannya.

     c. Aspect Oriented Model
         Paradigma yang menekankan pendefinisian, penspesifikasian, dan pembangunan aspek  (function, fitur, dan konten informasi).

Berikut merupakan gambar proses dari Specialized Process Model :

     a. Component Based Development


     b. Formal Method



     c. Aspect Oriented Model 



     Kelebihan dari Specialized Process Model antara lain :

  1. Pelanggan dapat mengakses kefungsian yang telah diuji terlebih dahulu daripada model waterfall.
  2. Feedback lebih awal dapat meningkatkan kemungkinan untuk menghasilkan produk yang memuaskan pelanggan.
  3. Hasil produk lebih berkualitas dibandingkan dengan metode lain. Karena :
a.       Bagian kefungsian inti yang krusial dikembangkan lebih awal dan diuji berulang kali pada tiap perilisan.
b.      Hanya sebagian kecil dari kefungsian yang ditambahkan dalam tiap perilisan agar lebih mudah dalam tahap pengujian.
c.       Dapat mengatasi kesalahan desain lebih awal dan memperbaikinya bahkan bisa mendesain ulang.

     Kekurangan dari Specialized Process Model antara lain :
  1. Harus menunggu tahap sebelumnya untuk selesai sebelum lanjut ke tahap berikutnya.
  2. Tidak berlaku bagi proyek yang persyaratannya terus berubah.
  3. Tidak ada perilisan prototype dalam model ini.





Referensi :

Komentar

Postingan populer dari blog ini

Flowmap dan Contoh Permasalahnya

FLOWMAP Pengertian Flowmap Flowmap adalah campuran peta dan flow chart,yang menunjukan pergerakan benda dari satu lokasi ke lokasi lain, seperti jumlah orang dalam migrasi, jumlah barang yang diperdagangkan, atau jumlah paket dalam jaringan. Flowmap membantu analis dan programmer untuk memecahkan masalah ke dalam segmen-segmen yang lebih kecil dan membantu dalam menganalisis alternaitf-alternatif lain dalam pengoprasian. Pedoman-pedoman dalam membuat FlowMap Bila seorang analis dan programmer akan membuat flowmap, ada beberapa petunjuk yang harus diperhatikan, seperti : Flowmap digambarkan dari halaman atas ke bawah dan kiri ke kanan. Aktivitas yang digambarkan harus didefinisikan secara hati-hati dan definisi ini harus dapat di mengerti oleh pembacanya. Kapan aktivitas dimulai dan berakhir harus di tentukan secara jelas. Setiap langkah dari aktivitas harus berada pada urutan yang benar. Lingkup dan range dari aktifitas yang sedang di gambarkan harus di telusuri dengan ...

Arsitektur Perangkat Lunak

ARSITEKTUR PERANGKAT LUNAK 1. Pengertian Arsitektur Perangkat Lunak Apa yang dimaksud dengan "Arsitektur Perangkat Lunak"? Definisinya menurut para ahli, antara lain:   1. IEEE: "Arsitektur adalah organisasi mendasar pada sebuah system yang mewujudkan komponen-komponen, hubungan antara satu dengan yang lainnya, dan dengan lingkungan, dan prinsip yang mengarahkan rancangan dan evolusi. " 2. Grady Booch, Philip Krutchen, Kurt Bittner, dan Rich Reitman: "Arsitektur perangkat lunak mencakup serangkaian keputusan-keputusan penting tentang organisasi sistem perangkat lunak, yaitu: pemilihan elemen struktural dan interface yang menyusun sistem; perilaku seperti spesifikasi dalam kolaborasi antar unsur-unsur; komposisi struktural dan perilaku elemen-elemen dalam membentuk subsistem yang lebih besar; dan gaya arsitektur yang memandu organisasi."    - Booch, P. Krutchen, K. Bittner and R. Reitman. The Rational Unified Process - An Introduction. 1999. Defini...