yyudhanto on Teknologi
10 Sep 2023 21:16 - 12 minutes reading

Model Pengembangan Software dengan SDLC

Metode SDLC (Software Development Life Cycle) adalah proses pembuatan dan pengubahan sistem serta model dan metodologi yang digunakan untuk mengembangkan sistem rekayasa perangkat lunak. Metode SDLC hadir untuk membantu kita dalam pengembangan produk. Metode ini memiliki banyak jenisnya, tapi di sini kita fokus membahas 5 metode saja.

Berikut adalah 5 metode SDLC dalam pengembangan software.

(1) Waterfall

Metode SDLC Waterfall

Metode SDLC yang pertama adalah waterfall. Metode waterfall adalah metode kerja yang menekankan fase-fase yang berurutan dan sistematis. Disebut waterfall karena proses mengalir satu arah “ke bawah” seperti air terjun. Metode waterfall ini harus dilakukan secara berurutan sesuai dengan tahap yang ada.

Berikut adalah tahap-tahap pengembangan dalam metode waterfall.

  • Requirement gathering and analysis
    Mengumpulkan kebutuhan secara lengkap untuk dianalisis dan mendefinisikan kebutuhan apa saja yang harus dicapai oleh program. Informasi dapat diperoleh melalui wawancara, diskusi, atau survey.
  • Design
    Melakukan perancangan desain perangkat lunak sebagai perkiraan sebelum dibuatnya kode. Desain sistem dapat dibuat menggunakan Flowchart, Mind Map, atau Entity Relationship Diagram (ERD).
  • Implementasi
    Implementasi ini adalah tahap dimana seluruh desain yang sebelumnya sudah dibuat diubah menjadi kode-kode program. Kode yang dihasilkan masih berbentuk modul-modul yang harus digabungkan di tahap selanjutnya.
  • Integration & testing
    Di tahap ini dilakukan penggabungan modul-modul yang sudah dibuat sebelumnya dan melakukan pengujian untuk mengetahui apakah perangkat lunak yang dibuat telah sesuai dengan desain dan fungsinya atau tidak.
  • Verification
    Di tahap ini, pengguna atau klien yang langsung melakukan pengujian pada sistem, apakah sistem telah sesuai dengan tang disetujui atau belum sesuai.
  • Operation & maintenance
    Tahap ini merupakan tahap terakhir dari model waterfall. Sistem yang sudah selesai dijalankan serta dilakukan pemeliharaan. Pemeliharaan berupa memperbaiki kesalahan yang tidak ditemukan pada langkah sebelumnya.

Setiap metode yang digunakan pasti memiliki kelebihan serta kekurangannya tersendiri.

Berikut adalah kelebihan dari metode waterfall:

  1. Memiliki proses yang terurut, sehingga pengerjaan dapat terjadwal dengan baik dan mudah.
  2. Cocok untuk sistem dengan kompleksitas rendah (predictable).
  3. Setiap proses yang dilakukan tidak dapat saling tumpah tindih.

Berikut adalah kekurangan dari metode waterfall:

  1. Waktu pengerjaan relatif lebih lama, karena harus menunggu tahap sebelumnya selesai.
  2. Biaya yang dibutuhkan lebih mahal karena waktu pengembangan yang dibutuhkan lebih lama.
  3. Model waterfall ini kurang cocok untuk pengembangan proyek yang memiliki kompleksitas tinggi.

(2) Prototype

Metode SDLC Prototype

Metode SDLC selanjutnya adalah prototype. Metode prototype adalah metode yang memungkinkan pengguna atau user memiliki gambaran awal tentang perangkat lunak yang akan dikembangkan, serta pengguna dapat melakukan pengujian di awal sebelum perangkat lunak dirilis.

Metode ini bertujuan untuk mengembangkan model menjadi perangkat lunak yang final. Artinya sistem akan dikembangkan lebih cepat dan biaya yang dikeluarkan lebih rendah. Metode prototype ini memiliki tahap-tahap yang harus dilakukan dalam pengembangan perangkat lunak.

Berikut adalah tahap-tahap pengembangan perangkat lunak menggunakan metode prototype.

  • Analisa kebutuhan
    Pada tahap ini pengembang melakukan identifikasi perangkat lunak dan semua kebutuhan sistem yang akan dibuat.
  • Membuat prototype
    Membuat rancangan sementara yang berfokus pada alur program kepada pengguna.
  • Evaluasi prototype
    Evaluasi dilakukan untuk mengetahui apakah model prototype sudah sesuai dengan harapan.
  • Mengkodekan sistem
    Jika prototype disetujui maka akan diterjemahkan ke dalam bahasa pemrograman yang sesuai.
  • Pengujian sistem
    Setelah perangkat lunak sudah siap, perangkat lunak harus melewati pengujian. Pengujian ini biasanya dilakukan dengan White Box Testing, Black Box Testing, dan lain-lain.
  • Evaluasi sistem
    Pengguna melakukan evaluasi apakah perangkat lunak sudah sesuai dengan apa yang diharapkan atau tidak. Jika ya, lakukan tahap selanjutnya. Jika tidak, ulangi tahap mengkodekan sistem dan pengujian sistem.
  • Menggunakan sistem
    Perangkat lunak yang telah diuji dan disetujui siap untuk digunakan.

Sebagai suatu metode yang sering digunakan, metode prototype pasti memiliki kelebihan dan kekurangan. 

Berikut adalah kelebihan dari metode prototype:

  1. Mempersingkat waktu pengembangan perangkat lunak
  2. Penerapan fitur menjadi lebih mudah, karena pengembang mengetahui apa yang diharapkan

Berikut adalah kekurangan dari metode prototype:

  1. Proses yang dilakukan untuk analisis dan perancangan terlalu singkat
  2. Kurang fleksibel jika terjadi perubahan

(3) Agile

Metode SDLC Agile

Metode SDLC ketiga adalah agile. Metode agile adalah metode yang fleksibel di mana pengembangan dilakukan dalam jangka pendek. Namun diperlukan adaptasi yang cepat dari developer terhadap perubahan dalam bentuk apa pun.

Tujuan Agile

Berikut merupakan tujuan dari agile, antara lain:

  • High – value & working app system
    Menghasilkan produk dengan kualitas yang baik, dan memiliki nilai jual yang tinggi.
  • Iterative, incremental, evolutionary
    Pengembangan dapat dilakukan secara iteratif, berulang-ulang, dan dapat mengalami perubahan jika diperlukan.
  • Cost control & value – driven development
    Pengembangan perangkat lunak dapat sesuai dengan kebutuhan pengguna dan tim dapat dengan cepat merespon kebutuhan, sehingga waktu dan biaya pembuatan dari perangkat lunak dapat dikendalikan.
  • High – quality production
    Kualitas dari perangkat lunak tetap terjaga, meskipun waktu dan biaya lebih sedikit.
  • Flexible & risk management
    Meminimalisir terjadinya kesalahan pada program ataupun produk sebelum dilakukannya proses deploy aplikasi.
  • Collaboration
    Kolaborasi ini dilakukan oleh setiap tim pengembang untuk mendiskusikan feedback yang diberikan oleh klien.
  • Self – organizing, self – managing teams
    Pengembang diberikan akses untuk memanajemen sendiri urusan software development. Seorang manajer hanya bertugas sebagai penghubung antara pengembang dengan klien sehingga dapat mengurangi terjadinya miss communication.

Metode agile ini memiliki kelebihan dan kekurangan tersendiri.

Berikut adalah kelebihan dari metode agile:

  1. Perubahan dapat dengan cepat ditangani.
  2. Proses pengembangan perangkat lunak membutuhkan waktu yang relatif cepat dan tidak memerlukan sumber daya yang besar.
  3. Klien dapat memberikan feedback kepada pengembang dalam proses pembuatan program.

Berikut adalah kekurangan dari metode agile:

  1. Metode ini kurang sesuai dengan tim yang besar (lebih dari 20 orang).
  2. Tim harus selalu siap, karena perubahan dapat terjadi kapan saja.
  3. Metode ini kurang cocok untuk tim yang berkomitmen untuk menyelesaikan proyek bersama-sama.

(4) Fountain

System Development Life Cycle Fountain

Metode SDLC yang terakhir adalah fountain. Metode fountain adalah perbaikan dari metode waterfall, di mana jenis tahapan masih sama. Namun beberapa jenis tahapan boleh didahulukan atau dilewati, tetapi ada tahapan yang tidak bisa dilewati, contohnya seperti memerlukan design sebelum melakukan implementasi, jika hal tersebut dilewati maka akan ada tumpang tindih.

Berikut adalah tahap-tahap pengembangan perangkat lunak menggunakan metode fountain.

  • User requirement specification
    Mencari tahu apa saja yang dibutuhkan oleh pengguna dalam perangkat lunak yang sedang dikembangkan.
  • Software requirement specification
    Penyesuaian perangkat lunak dari sisi pengguna.
  • System design
    Pembuatan desain sistem yang akan dibuat sebelum diimplementasikan.
  • Program design
    Pembuatan desain yang lebih sempurna dan hampir mendekati hasil akhir dari perangkat lunak.
  • Implementation
    Di tahap ini dilakukan implementasi sesuai dengan desain yang sudah dibuat di tahap sebelumnya.
  • Program testing: unit
    Dalam tahap ini dilakukan uji coba terhadap unit-unit yang dibutuhkan dalam perangkat lunak yang dikembangkan.
  • Program testing: system
    Di tahap ini dilakukan uji coba terhadap sistem dari perangkat lunak seutuhnya sebelum perangkat lunak digunakan.
  • Program use
    Dalam tahap ini dilakukan pengajaran kepada pengguna untuk menggunakan perangkat lunak yang telah dibuat.
  • Software maintenance
    Biasanya dalam tahap ini dilakukan perawatan terhadap perangkat lunak yang sudah dibuat, perawatan dapat berupa update sistem atau perbaikan kesalahan atau bugs yang ada.

Karena metode fountain ini adalah perbaikan dari metode waterfall, maka metode ini memiliki kelebihan dan kekurangan yang mirip dengan metode waterfall. 

Berikut adalah kelebihan dari metode fountain:

  1. Memiliki proses yang terurut, sehingga pengerjaan dapat terjadwal dengan baik dan mudah.
  2. Cocok untuk sistem dengan kompleksitas rendah (predictable).
  3. Dapat melewati atau mendahulukan beberapa tahapan .
  4. Setiap proses yang dilakukan tidak dapat saling tumpah tindih.

Berikut adalah kekurangan dari metode waterfall:

  1. Waktu pengerjaan relatif lebih lama, karena harus menunggu tahap sebelumnya selesai.
  2. Biaya yang dibutuhkan lebih mahal karena waktu pengembangan yang dibutuhkan lebih lama.
  3. Model fountain ini kurang cocok untuk pengembangan proyek yang memiliki kompleksitas tinggi.


(5) Extreme (XP) Programming

Extreme Programming (XP) adalah metode pengembangan perangkat lunak atau manajemen proyek bersifat agile yang bertujuan untuk menghasilkan software yang lebih berkualitas. XP memiliki siklus pengembangan pendek, sehingga sangat responsif terhadap perubahan keinginan user yang berganti. Extreme Programming berfokus dalam hal praktek rekayasa yang sesuai untuk pengembangan perangkat lunak. Sifat dari metode XP adalah cepat dan simpel.

XP Programming and Software Testing Services. Blending in Testing with  Development - SPEC QA
Tahapan XP

Kerangka kerja Extreme Programming melibatkan 5 tahapan proses pengembangan, yaitu Planning, Designing, Coding, Testing, dan Listening:

(1) Planning

Tahap pertama adalah pertemuan antara client dengan tim developer guna presentasi gambaran hasil yang diinginkan oleh client.

Tim kemudian memperkirakan gambaran yang diinginkan oleh client dan membuat rencana pengembangan yang dibagi menjadi beberapa tahapan yang diperlukan untuk memenuhi fungsionalitas yang dibutuhkan. Jika satu atau lebih dari gambaran client tidak dapat diperkirakan, atau biasa disebut dengan spike, maka diperlukan penelitian yang lebih lanjut.

Untuk lebih lanjutnya, berikut penjelasan mengenai dua kunci yang ada utama dalam tahap planning. Biasanya tim developer mengajukan pertanyaan seputar dua hal ini ke client:

1. Release Planning

Pada tahap ini, pelanggan mempresentasikan fitur yang diinginkan kepada programmer atau tim developer, dan tim developer memperkirakan tingkat kesulitan beserta biayanya.

2. Iteration Planning

Pada tahap ini, tim diberi arahan rutin setiap beberapa minggu. Tim XP membangun software dalam iterasi selama dua minggu dan memberikan progress software yang sedang dibuat pada akhir setiap iterasi. Selama perencanaan iterasi, pelanggan menyampaikan fitur-fitur yang diinginkan untuk dua minggu ke depan.

(2) Designing

Tahap designing sebenarnya merupakan bagian dari proses planning tetapi dapat dipisahkan untuk mengoptimalkan kedua proses ini. Hal ini terkait dengan salah satu nilai utama XP yaitu kesederhanaan. Desain yang baik membawa logika dan struktur ke dalam sistem sehingga dapat menghindari kompleksitas dan redundansi yang tidak diperlukan.

1. Simple Design

Pada fase perancangan desain, XP berkonsentrasi untuk memastikan desain tepat sederhana dan lengkap. Tidak ada fungsionalitas tambahan yang ditambahkan, fungsionalitas yang ditambahkan sesuai dengan yang diinginkan client.

2. Metafora Sistem

Metafora sistem membuat tim pengembangan tetap terorganisir dengan menyediakan konvensi penamaan. Konvensi penamaan sangatlah penting karena digunakan untuk membantu memahami desain sistem secara keseluruhan juga penggunaan ulang kode.

Hal ini dapat menghemat waktu karena memudahkan proses dalam menemukan fungsionalitas yang dicari dan dapat mendeteksi di mana harus meletakkan fungsionalitas tertentu.

3. Refactoring

Refactoring adalah proses peningkatan desain yang berkelanjutan untuk menjaga desain sesederhana mungkin serta digunakan untuk menghindari kekacauan dan kerumitan yang sebetulnya tidak perlu.

Refactoring cenderung menghilangkan redudansi dan duplikasi serta meningkatkan kohesi kode Refactoring di seluruh proyek akan menghemat waktu, meningkatkan kualitas, dan meningkatkan pemahaman. Hal ini harus didukung oleh pengujian yang komprehensif untuk memastikan tidak ada yang rusak.

(3) Coding

Tahapan ini merupakan fase di mana kode dibuat dengan menerapkan praktik-praktik Extreme Programming tertentu seperti standar pengkodean, pemrograman berpasangan, integrasi berkelanjutan, dan kepemilikan kode kolektif. Dilansir dari situs Apimhub, berikut beberapa elemen dalam coding yang wajib diketahui:

1. Pair Programming

Pair programming adalah salah satu hal yang membedakan metodologi XP dengan metode pemrograman lainnya. Setiap pasangan pemrogram bekerja bersama untuk mengembangkan fungsionalitas tertentu guna meningkatkan kualitas perangkat lunak.

Selain kualitas kode yang lebih baik, pair programming membantu dalam mengkomunikasikan ide dan menghindari hambatan dalam proses pengembangan.

2. Collective Code Ownership

Tim pengembangan memiliki kepemilikan kode secara kolektif sehingga memungkinkan anggota tim untuk memodifikasi kode secara kolektif. Hal ini juga memungkinkan programmer untuk menggunakan kembali fungsionalitas apa pun yang mungkin diperlukan untuk menyesuaikan dengan gambaran pengguna.

3. Continuous Integration

Tim XP harus mempertahankan proyek yang terintegrasi penuh. Proses integrasi harus dilanjutkan dan dikontrol dengan hati-hati. Pengembang harus mengintegrasikan kode yang telah diuji setidaknya setiap hari. Integrasi berkelanjutan memastikan bahwa setiap memiliki progres  terbaru dari proyek.

Hal ini juga menghindari atau mendeteksi masalah kompatibilitas lebih awal.

4. 40-Hour Work per Week

Tim pengembang tidak boleh bekerja lebih dari 40 jam per minggu dan juga tanpa lembur. Hal ini dianggap bisa memberikan lingkungan kerja yang nyaman bagi para pengembang tanpa tekanan. Namun, ketika ada hal yang mengharuskan untuk bekerja secara lembur, masih bisa ditoleransi hingga satu minggu.

Tetapi tidak dengan lembur selama beberapa minggu karena akan melelahkan para pengembang serta mengurangi produktivitas mereka.

(4) Testing

Tahap ini adalah inti dari extreme programming. Fase testing adalah aktivitas rutin yang melibatkan pengujian unit (pengujian otomatis untuk menentukan apakah fitur yang dikembangkan berfungsi dengan baik) dan pengujian penerimaan (pengujian pelanggan untuk memverifikasi bahwa keseluruhan sistem dibuat sesuai dengan persyaratan awal).

(5) Listening

Pada tahap ini, komunikasi antara pelanggan dan manajer proyek dilakukan untuk menjelaskan logika bisnis dan nilai yang diharapkan.

Kelebihan Extreme Programing

Berikut beberapa kelebihan Extreme Programming:

1. Efisiensi Waktu dan Biaya

Dengan penggunaan Extreme Programming memunginkan perusahaan untuk menekan biaya pengembangan software serta waktu untuk realisasi proyek. Extreme Programming menghilangkan kegiatan yang tidak produktif untuk mengurangi biaya dan beban semua orang yang terlibat. Hal ini memungkinkan tim pengembang untuk fokus pada pengkodean. 

2. Minim Resiko

Salah satu keuntungan utama dari Extreme Programming adalah minim resiko yang berkaitan dengan kegagalan pemrograman atau proyek. XP memastikan bahwa klien mendapatkan hasil seperti apa yang diinginkannya.

3. Sederhana

Metode Extreme Programming memungkinkan tim pengembang untuk membuat kode yang sederhana sehingga dapat diperbaiki setiap saat.

4. Prosesnya Transparan dan Dapat Dipertanggungjawabkan

Keuntungan dasar dari Extreme Programming adalah seluruh proses transparan dan dapat dipertanggungjawabkan. Para pengembang membuat komitmen konkret tentang apa yang akan mereka capai, dengan menunjukkan proses pengembangan yang riil.

5. Konstan Feedback

Adanya feedback yang konstan dapat mempermudah tim melakukan perbaikan. XP membantu tim untuk stay on track.

6. Hasil yang Berfungsi Lebih Cepat

Dengan metode Extreme Programming dapat menghasilkan software yang memiliki kecepatan tinggi dikarenakan pengujian rutin yang dilakukan saat proses pengembangan dapat mendeteksi semua bug juga tes validasi yang disetujui oleh pengguna dapat menentukan keberhasilan penyelesaian coding block untuk memastikan bahwa implementasi gambaran hasil sudah seperti yang diinginkan pelanggan.

7. Teamwork

Setiap orang adalah bagian dari tim. Anggota tim bekerja bersama dalam segala hal mulai dari requirements hingga kode. 

8. Meningkatkan Kepuasan Tim

Xp merupakan pendekatan berbasis nilai yang menetapkan waktu kerja tetap, dengan sedikit peluang untuk lembur. Pemecahan ruang lingkup proyek menjadi sub komponen dan umpan balik pelanggan yang konstan mencegah penumpukan banyak pekerjaan yang harus diselesaikan sebelum tenggat waktu.

Sehingga dengan adanya XP, dapat membantu meningkatkan kepuasan serta retensi tim.

Kekurangan Extreme Programming

Berikut beberapa kekurangan Extreme Programming:

1. Kurangnya Dokumentasi

Perubahan yang konstan tidak dapat didokumentasikan dengan baik. Dengan demikian, ada risiko tinggi akan kegagalan tak terduga yang tidak dapat ditelusuri. Bahkan ketika bug telah diperbaiki, tanpa dokumentasi yang akurat, ada kemungkinan kesalahan yang sama dapat terulang kembali.

2. Minim Desain

Extreme Programming lebih berfokus kepada pengkodean dibanding dengan desain. Namun, desain juga merupakan aspek penting dalam sebuah software sehingga desain tidak boleh diabaikan. Dengan minimnya desain, ada kemungkinan client merasa kurang puas.

3. Tidak Cocok Dikerjakan Secara Remote

Proyek Extreme Programming sulit untuk diimplementasikan apabila tim tidak berada di tempat yang sama. Biasanya proses komunikasi Extreme Programming dapat dilakukan dengan lancar ketika anggota tim bertemu tatap muka. Dengan tim yang bekerja secara on-site, proses pengembangan Extreme Programming dapat dilakukan dengan cepat. 

Demikian penjelasan mengenai apa itu Extreme Programming, tahapan, kelebihan serta kekurangannya. XP dapat menjadi opsi apabila ingin memilih metode pemrograman yang sederhana.

Semoga dengan mengetahui kelebihan dan kekurangan dari masing-masing metode maka kita dapat menggunakan metode yang sesuai untuk mengembangkan suatu program.