Proses pengembangan perangkat lunak

**Proses pengembangan perangkat lunak** () adalah suatu struktur yang diterapkan pada pengembangan suatu produk perangkat lunak yang bertujuan untuk mengembangkan sistem dan memberikan panduan yang bertujuan untuk memberhasilkan 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. Contoh model proses pengembangan perangkat lunak antara lain adalah proses iteratif, pemrograman ekstrem, serta proses air terjun ().

## Metode SDLC
*SDLC (System Development Life Cycle)* adalah metode yang populer dikalangan analisis maupun programmer. Berikut merupakan tahapannya:
# Analisis dan definisi kebutuhan. Layanan, batasan, dan tujuan sistem ditentukan melalui konsultasi dengan user atau pemakai
# Perancangan sistem dan perangkat lunak. Proses perancangan sistem membagi persyaratan dalam sistem perangkat keras atau perangkat lunak. Kegiatan ini menentukan arsitektur sistem secara umum maupun secara keseluruhan. Perancangan melibatkan identifikasi dan deskripsi abstraksi sistem perangkat lunak yang mendasar serta memasukan dalam bahasa pemrograman
# Implementasi dan pengujian unit. Pada tahap ini, perancangan perangkat lunak direalisasikan dengan program atau unit program. Pengujian ini melibatkan verifikasi bahwa setiap unit telah memenuhi spesifikasinya.
# Integrasi dan pengujian sistem. Unit program atau program individual diintegrasikan dan diuji sebagai sistem yang lengkap untuk menjamin bahwa kebutuhan sistem telah dipenuhi.
# Operasi dan pemeliharaan, yaitu mengoperasikan program di lingkungannya dan melakukan pemeliharaan. Biasanya ini merupakan fase siklus hidup yang paling lama. Pemeliharaan mencakup koreksi dari berbagai error yang tidak ditemukan pada tahap-tahap sebelumnya, melakukan perbaikan atas implementasi unit sistem dan pengembangan layanan sistem, dan persyaratan-persyaratan baru ditambahkan.

## ''Prototyping''
Model *prototyping* merupakan model pengembangan sistem yang kompleks pihak pengembang akan melakukan identifikasi kebutuhan pemakai dan pengembang akan mengerjakan bersama-sama dengan pengguna dan hanya mendefinisikan objektif umum dari perangkat lunak tanpa merinci kebutuhan input, pemrosesan dan outputnya. Berikut adalah tahapan pengembangannya:
# Tahap pengumpulan kebutuhan, yaitu pelanggan dan pengembang saling berinteraksi dalam mendefinisikan kebutuhan sistem garis besar dari sistem yang akan dirancang.
# Tahap quick design, yaitu membangun rancangan umum contoh acuan atau contoh yang diberikan kepada user.
# Tahap pembangunan prototype, yaitu proses perancangan sementara difokuskan kepada user atau pelanggan termasuk pengujian dan penyempurnaan.
# Tahap evaluasi pelanggan (user), yaitu pemakai atau user melakukan pengujian terhadap prototipe yang sudah dibuat sehingga pengembang dapat menganalisis kembali kebutuhan user atau pemakai.

## Metodologi
### ''Waterfall''

Model waterfall adalah model klasik yang bersifat sistematis, berurutan dalam membangun software. Nama model ini sebenarnya adalah “Linear Sequential Model”. Model ini sering disebut juga dengan “classic life cycle” atau metode waterfall. Model ini termasuk ke dalam model generic pada rekayasa perangkat lunak dan pertama kali diperkenalkan oleh Winston Royce sekitar tahun 1970 sehingga sering dianggap kuno, tetapi merupakan model yang paling banyak dipakai dalam Perangkat lunak Engineering (SE). Model ini melakukan pendekatan secara sistematis dan berurutan. Disebut dengan waterfall karena tahap demi tahap yang dilalui harus menunggu selesainya tahap sebelumnya dan berjalan berurutan
# Communication (project initiation & requirements gathering): sebelum memulai pekerjaan yang bersifat teknis, sangat diperlukan adanya komunikasi dengan customer demi memahami dan mencapai tujuan yang ingin dicapai. Hasil dari komunikasi tersebut adalah inisialisasi proyek, seperti menganalisis permasalahan yang dihadapi dan mengumpulkan data-data yang diperlukan, serta membantu mendefinisikan fitur dan fungsi Perangkat lunak. Pengumpulan data-data tambahan bisa juga diambil dari jurnal, artikel, dan internet.
# Planning (estimating, scheduling, tracking): tahap berikutnya adalah tahapan perencanaan yang menjelaskan tentang estimasi tugas-tugas teknis yang akan dilakukan, risiko-risiko yang dapat terjadi, sumber daya yang diperlukan dalam membuat sistem, produk kerja yang ingin dihasilkan, penjadwalan kerja yang akan dilaksanakan, dan tracking proses pengerjaan sistem
# Modeling (analysis & design): tahapan ini adalah tahap perancangan dan permodelan arsitektur sistem yang berfokus pada perancangan struktur data, arsitektur software, tampilan interface, dan algoritma program. Tujuannya untuk lebih memahami gambaran besar dari apa yang akan dikerjakan
# Construction (code & test): tahapan construction ini merupakan proses penerjemahan bentuk desain menjadi kode atau bentuk/bahasa yang dapat dibaca oleh mesin. Setelah pengkodean selesai, dilakukan pengujian terhadap sistem dan juga kode yang sudah dibuat. Tujuannya untuk menemukan kesalahan yang mungkin terjadi untuk nantinya diperbaiki
# Deployment (delivery, support, feedback): tahapan deployment merupakan tahapan implementasi software ke customer, pemeliharaan software secara berkala, perbaikan software, evaluasi software, dan pengembangan software berdasarkan umpan balik yang diberikan agar sistem dapat tetap berjalan dan berkembang sesuai dengan fungsinya.

### ''Rapid Aplication Development'' (''RAD'')

Rapid Application Development (RAD) merupakan gabungan dari bermacam-macam teknik terstruktur dengan teknik prototyping dan teknik pengembangan joint application untuk mempercepat pengembangan sistem/aplikasi. Model pengembangan RAD juga disebut model pendekatan berbasis object, pengembangan aplikasi dengan menggunakan metode RAD ini dapat dilakukan dalam waktu yang relatif lebih cepat. hanya membutuhkan waktu 30-90 hari untuk menyelesaikan sistem perangkat lunak tersebut, sangat mementingkan keterlibatan pengguna dalam proses analisis dan perancangannya.

Metode RAD (Rapid Application Development) menggunakan metode iteratif (berulang) dalam mengembangkan sistem dimana model bekerja sistem dikonstruksikan di awal tahap pengembangan dengan tujuan menetapkan kebutuhan pengguna. Metode RAD menekankan cakupan pemodelan bisnis (bussiness modelling), pemodelan data (data modelling), pemodelan proses (process modelling), pembuatan aplikasi (application generation) dan pengujian (testing).
Metode ini juga sering digunakan oleh developer aplikasi agar project dapat dikerjakan dalam waktu yang singkat sebagai acuan yang dipakai dalam metode pengembangan sistem. Berikut merupakan tahapan RAD pada model pengembangan sistem:
# Rencana Kebutuhan (Requirement Planning): User dan analyst melakukan pertemuan untuk mengidentifikasi tujuan dari sistem dan kebutuhan informasi untuk mencapai tujuan. Pada tahap ini merupakan hal terpenting yaitu adanya keterlibatan dari kedua belah pihak.
# Proses Desain Sistem (Design System): Pada tahap ini keaktifan user yang terlibat menentukan untuk mencapai tujuan karena pada proses ini melakukan proses desain dan melakukan perbaikan-perbaikan apabila masih terdapat ketidaksesuaian desain antara user dan analyst. Seorang user dapat langsung memberikan komentar apabila terdapat ketidaksesuaian pada desain, merancang sistem dengan mengacu pada dokumentasi kebutuhan user yang dibuat pada tahap sebelumnya. Keluaran dari tahapan ini adalah spesifikasi Perangkat lunak yang meliputi organisasi sistem secara umum, struktur data dan yang lain.
# Implementasi (Implementation): Tahapan ini adalah tahapan programmer yang mengembangkan desain suatu program yang telah disetujui oleh user dan analyst. Sebelum diaplikasikan pada suatu organisasi terlebih dahulu dilakukan proses pengujian terhadap program tersebut apakah ada kesalahan atau tidak. Pada tahap ini user biasa memberikan tanggapan akan sistem yang sudah dibuat serta mendapat persetujuan mengenai sistem tersebut.

### Pengembangan agile

### Integrasi berkelanjutan

## Referensi