GBZaKb4mDsf2d4pb32XNiDrx6XCCRy6EKLbcOCE9
Bookmark

Mengenal Lebih Dalam Proses Pembangunan Perangkat Lunak

 

Mengenal Lebih Dalam Proses Pembangunan Perangkat Lunak

Apa itu Software Development Lifecycle (SDLC)?

SDLC adalah proses yang dilakukan dalam proyek perangkat lunak dengan menggunakan model-model dan metodologi. Siklus ini dilakukani untuk meningkatkan kualitas perangkat lunak dan proses pengembangan secara keseluruhan.

Gambar berikut adalah representasi grafis dari berbagai tahap SDLC.

Software Development Life Cycle

Tahap 1: Analisis Perencanaan dan Kebutuhan

Analisis kebutuhan adalah tahap terpenting dan fundamental dalam SDLC. Ini dilakukan oleh anggota senior tim dengan masukan dari client, departemen penjualan, survei pasar, dan pakar domain di industri. Informasi ini kemudian digunakan untuk merencanakan pendekatan proyek dasar dan untuk melakukan studi kelayakan produk di bidang ekonomi, operasional dan teknis.

Perencanaan persyaratan jaminan kualitas dan identifikasi risiko yang terkait dengan proyek juga dilakukan pada tahap perencanaan. Hasil dari studi kelayakan teknis adalah untuk menentukan berbagai pendekatan teknis yang dapat diikuti untuk melaksanakan proyek dengan sukses dengan risiko minimum.

Tahap 2: Menentukan Kebutuhan

Setelah analisis kebuthan dilakukan, langkah selanjutnya adalah mendefinisikan dan mendokumentasikan kebutuhan produk dan membuatnya disetujui dari client atau analis pasar. Ini dilakukan melalui dokumen SRS (Software Requirement Specification) yang terdiri dari semua persyaratan produk yang akan dirancang dan dikembangkan selama siklus hidup proyek.

Tahap 3: Mendesain Arsitektur Produk

SRS menjadi acuan bagi designer produk untuk menghasilkan desain terbaik produk.

Tahap 4: Mengembangkan Produk

Dalam tahap produk akan dikembangkan menggunakan kode pemrograman sesuai dengan apa yang telah didesain sebelumnya. Biasanya bahasa pemrograman yang digunakan seperti C, C++, Pascal, Java, dan PHP, tergantung akan mengembangkan produk dengan platform seperti apa.

Tahap 5: Menguji Produk

Dalam tahap ini produk yang sudah dikembangkan sebelumnya akan diuji, jika di dalamnya terdapat beberapa masalah, maka pengembang dapat memperbaiki produk tersebut sebelum diluncurkan.

Tahap 6: Deployment

Setelah produk diuji dan siap digunakan, maka produk tersebut dapat dipasarkan.


Jenis-Jenis SDLC Process Model

Waterfall Process Model

Waterfall Process Model

Waterfall Model adalah sebuah proses model yang cara kerjanya secara berurutan, Waterfall merupakan dasar dari metode-metode baru yang muncul kemudian.

Kelebihan Waterfall Model

  • Simpel dan mudah digunakan
  • Mudah untuk mengatur tugas
  • Proses dan hasil didokumentasikan dengan baik
  • Tahapan didefinisikan dengan jelas
  • Tahapan diproses dan diselesaikan satu per satu.

Kekurangan Waterfall Model

  • Risiko yang tinggi
  • Model yang buruk untuk proyek berkelanjutan
  • Sulit untuk mengukur kemajuan dalam beberapa tahap
  • Tidak cocok untuk proyek yang memiliki risiko tinggi
  • Buruk untuk proyek yang kompleks


Incremental Process Model

Incremental Process Model

Incremental Model adalah proses pengembangan perangkat lunak di mana kebutuhan dipecah menjadi beberapa modul dari siklus pengembangan perangkat lunak. Pengembangan bertahap dilakukan dalam langkah-langkah mulai dari desain analisis, implementasi, pengujian / verifikasi, dan pemeliharaan.

Kelebihan Incremental Model

  • Perangkat lunak dapat dibuat dengan cepat selama satu siklus
  • Lebih fleksibel dan mudah dalam mengubah kebutuhan
  • Sepanjang tahapan pengembangan, perubahan bisa dilakukan
  • Lebih murah dibandingkan model lainnya
  • Eror lebih mudah untuk dideteksi

Kekurangan Incremental Model

  • Membutuhkan perancangan perencanaan yang baik 
  • Setiap fase iterasi bersifat kaku dan tidak tumpang tindih satu sama lain
  • Jika ada kesalahan di satu unit, maka perlu diperbaiki di semua unit
  • Menghabiskan banyak waktu

 

Concurrent Development Model

Concurrent Development Model

Concurrent Development Model adalah sebuah proses pengembangan yang pada dasarnya merupakan rangkaian dari kegiatan teknis, tugas, dan hubungan saling terkait dengan kegiatan seperti analisis desain atau komunikasi. Dalam proses ini, aktivitas pengembangan perangkat lunak dilakukan secara simultan dan saling terkait dengan aktivitas lainnya.

Kelebihan Concurrent Development Model

  • Model ini dapat diterapkan pada semua jenis pengembangan perangkat lunak dan memberikan gambaran yang detail tentang keadaan suatu proyek
  • Perangkat lunak yang dihasilkan oleh model ini lebih kokoh dan teratur
  • Masing-masing kegiatan dalam model ini ada kesamaan dengan kegiatan lain sehingga lebih mudah untuk memperbarui semua langkah yang dikembangkan
  • Fitur baru dapat dengan mudah ditambahkan di akhir proyek
  • Concurrent Development Model mudah menyesuaikan dengan perkembangan yang ada

Kekurangan Concurrent Development Model

  • Penerapan awal desain yang cukup sulit, dan membutuhkan komunikasi yang baik antar teknisi dan tim
  • Membutuhkan banyak waktu untuk menyelesaikan permasalahan karena kegiatannya berbentuk paralel
  • Statenya cukup banyak sehingga memakan waktu lebih banyak


V-Model

V-Model

V-Shaped atau V-Model merupakan model pengembangan perangkat lunak yang memiliki fase atau ketigatan yang saling berhubungan. Model ini hampir mirip dengan model Waterfall atau bahkan bisa disebut perluasan dari model tersebut. Namun, jika model Waterfall dijalankan secara linier, maka V-Model dijalankan secara paralel.

Kelebihan V-Model

  • V-Model sangat mudah disesuaikan
  • V-Model dapat dikembangkan dan dimaintain oleh client, mereka dapat berpartisipasi dalam change board yang berisi request terhadap V-Model
  • Kemudahan penggunaan
  • Setiap output dapat dites pada tahap awal

Kekurangan V-Model

  • V-Model hanya dapat digunakan sekali dalam suatu proyek, karena V-Model merupakan project oriented
  • V-Model bersifat sangat fleksibel sehingga terkadang aktivitas-aktivitas yang digambarkan dalam V-Model menjadi tidak efisien

 

RAD Model

Pengertian Rapid Application Development (RAD) Model

Rapid Application Development (RAD) atau Rapid Prototyping adalah model proses pengembangan perangkat lunak yang tergolong teknik Incremental (bertingkat). Sesuai namanya, RAD berfokus pada siklus pengembangan yang pendek, singkat, dan cepat.

Kelebihan RAD Model

  • Waktu lebih singkat
  • Kepuasan client lebih besar
  • Mudah untuk diamati karena menggunakan prototype
  • Menghemat biaya pengembangan
  • Mengurangi risiko dari banyaknya perubahan pada produk akhir

Kekurangan RAD Model

  • Tidak cocok untuk pengembangan perangkat lunak yang memiliki risiko teknis tinggi
  • Besarnya proyek memerlukan sumber daya manusia yang memadai
  • Tidak cocok dengan sistem yang tidak bisa membuat modularisasi
  • Tidak efektif untuk proyek-proyek besar


Spiral Model

Spiral Model

Spiral Model merupakan salah satu bentuk dari metode pengembangan perangkat. Model ini adalah gabungan dari Prototyping Model dan Waterfall Model dengan fokus yang tinggi pada analisis risiko tiap fasenya. Model ini bersifat iteratif dengan mengontrol aspek yang teratur dari sekuens linier.

Kelebihan Spiral Model

  • Perubahan yang terjadi dapat diselesaikan secara sistematis
  • Pengelolaan dan analisis risiko yang baik
  • Pengembangan yang cepat dan mudah
  • Pengelolaan waktu lebih baik
  • Produksi perangkat lunak lebih cepat

Kekurangan Model Spiral

  • Tidak cocok untuk proyek pengembangan perangkat lunak kecil
  • Tidak efisien dengan proyek kecil
  • Sulit dalam mengikuti strategi proyek yang kecil
  • Membutuhkan pengalaman yang tinggi
  • Jika menggunakan Spiral Model pada proyek kecil kemungkinan estimasi biaya sangat tinggi
  • Jika terjadi perbedaan jadwal pengembangan dari yang seharusnya akan berdampak cukup serius


Specialized Process Model

Specialized Process Model memiliki banyak karakteristik dari satu atau lebih model konvensional yang ada saat ini, namun model tersebut biasanya diterapkan ketika pendekatan rekayasa perangkat lunak yang ditentukan secara sempit dipilih. Terdiri dari 3 model yaitu Component-Based Development, Formal Methods Model, dan Aspect-Oriented Programming

1. Component-Based Development

Improved Model Component Based Development

Component-Based Development adalah variasi dari model proses Spiral dimana pengembangan perangkat lunak dibangun dari komponen yang sudah ada sebelumnya.

Kelebihan Component-Based Development

  • Biaya proyek menjadi lebih terjangkau
  • Siklus waktu pengembangan menjadi cepat
  • Produktivitas pengembangan dan pengujian meningkat

Kekurangan Component-Based Development

  • Paradigma orientasi objek tidak cukup untuk pengembangan perangkat lunak

2. Formal Methods Model

Software Development Menggunakan Formal Methods

Formal Methods Model merupakan metode formal yang mengarah ke notasi matematika yang cukup ketat yang digunakan untuk mendesain, mengembangkan, dan memverifikasi sistem berbasis komputer.

Kelebihan Formal Methods Model

  • Kekurangan dalam pengembangan dapat ditemukan dan diperbaiki dengan mudah melalui analisis matematika
  • Dapat menemukan dan mengkoreksi masalah yang mungkin akan terjadi atau tidak dapat terdeteksi

Kekurangan Formal Methods model

  • Memakan banyak waktu
  • Sulit untuk menggunakan metode ini sebagai mekanisme komunikasi dengan client
  • Butuh pelatihan tambahan dalam menggunakan model ini mengingat yang mengimplementasikan model ini hanya sedikit

3. Aspect-Oriented Programming

Aspect Oriented Programming
Aspect-Oriented Programming adalah model yang menghadirkan sebuah proses untuk dapat mendefinisikan, menentukan, merancang, dan membangun aspek perangkat lunak seperti User Interface, keamanan, dan pengelolaan memori.

Kelebihan Aspect-Oriented Programming

  • Melengkapi orientasi pada objek terkait
  • Pemeliharaan kode dan pemahaman meningkat

Kekurangan Aspect-Oriented Programming

  • Sulit untuk dipahami


Agile Method

Agile Software Development Method
Agile Method adalah suatu metode untuk mengelola proyek yang membuat proses pengembangan perangkat lunak menjadi cepat. Tujuan utama Agile Method adalah mempersingkat jangka waktu proyek pengembangan perangkat lunak, dan metode ini juga dikembangkan untuk menghadapi situasi jika Waterfall Method gagal.

Proses-Proses dalam Agile Method

  • Extreme Programming (XP)
  • Adaptive Software Development (ASD)
  • Dynamic Systems Development Method (DSDM)
  • Scrum
  • Crystal
  • Feature Driven Development (FDD)
  • Agile Modeling (AM)

Kelebihan Agile Method

  • Perubahan dalam proses dapat lebih cepat ditangani
  • Jangka waktu dalam proses cukup singkat
  • Aturan minimal, dokumentasi mudah digunakan
  • Memungkinkan Concurrent Development dan pengiriman bersamaan dalam konteks yang direncanakan secara keseluruhan

Kekurangan Agile Method

  • Lebih banyak risiko keberlanjutan, daya tahan, dan ekstensibilitas
  • Desain dan dokumentasi kurang memadai
  • Minimnya sumber daya yang mumpuni dalam membimbing sumber daya baru pada Agile Method

 

Scrum Model

Scrum Method
Scrum adalah proses pengembangan perangkat lunak bagian dari Agile. Scrum diperkenalkan pertama kali oleh Jeff Sutherland. Scrum memiliki workflow seperti Backlog, Sprint Backlog, Sprint, dan lain-lain. Scrum dapat digunakan untuk mengembangkan dan mempertahankan produk yang kompleks.

Scrum dapat membantu tim bekerja sama. Sama seperti tim Rugby (sesuai dengan namanya) pelatihan untuk pertandingan besar, Scrum mendorong tim untuk belajar melalui pengalaman, mengatur diri sendiri saat bekerja pada masalah, dan memikirkan keberhasilan dan kerugian mereka untuk terus ditingkatkan.

Kelebihan Scrum

  • Metode yang cukup fleksibel
  • Dapat mempersingkat waktu pengembangan

Kekurangan

  • Sulit untuk merencanakan, menyusun, dan mengelola proyek jika kurang berpengalaman
  • Pengembangan harus tepat waktu dengan yang sudah ditentukan dan tidak ada penambahan waktu

 

Note: Artikel ini akan terus diupdate seiring dengan perkembangan Software Development Life Cycle.

Referensi:

  • www.tutorialspoint.com/sdlc/sdlc_overview.htm
  • www.atlassian.com/agile/scrum
  • productschool.com/product-glossary/agile-definition
  • www.academia.edu/5166405/Model_Model_Pengembangan_Rekayasa_Perangkat_Lunak
  • article.sapub.org/10.5923.j.se.20120204.07.html

Posting Komentar

Posting Komentar