Laporan Devnet Modul 3.1 – Software Development
Laporan Devnet Modul 3.1 – Software Development
3.1.1 – Introduction to Software Development
Pengembangan perangkat lunak adalah proses sistematis untuk menciptakan, menguji, dan memelihara aplikasi komputer. Software bisa berupa sistem operasi, aplikasi desktop, website, hingga aplikasi mobile. Proses pengembangannya tidak sederhana — dibutuhkan perencanaan yang matang, pemahaman akan kebutuhan pengguna, serta penggunaan metodologi dan alat yang tepat.
Pengembangan ini tidak hanya dilakukan oleh satu orang, tetapi melibatkan tim: analis sistem, programmer, penguji (tester), hingga pengguna akhir. Kolaborasi dan komunikasi sangat penting agar perangkat lunak yang dihasilkan benar-benar bermanfaat dan berkualitas.
3.1.2 – Software Development Life Cycle (SDLC)
SDLC atau Siklus Hidup Pengembangan Perangkat Lunak adalah kerangka kerja yang digunakan untuk mengelola proses pembuatan perangkat lunak. Tujuannya adalah menghasilkan software berkualitas tinggi yang sesuai dengan kebutuhan pengguna dan selesai tepat waktu. Berikut tahapannya:
1. Planning (Perencanaan):
Menentukan ruang lingkup proyek, sumber daya yang dibutuhkan, dan jadwal kerja.
2. Requirements Analysis (Analisis Kebutuhan):
Menggali informasi dari pengguna atau klien tentang fitur dan fungsi yang diharapkan.
3. Design (Perancangan):
Membuat rancangan teknis dan visual (diagram alur, struktur data, antarmuka pengguna).
4. Implementation (Implementasi / Coding):
Menulis kode program sesuai desain dengan bahasa pemrograman yang dipilih.
5. Testing (Pengujian):
Menjalankan pengujian untuk memastikan aplikasi berjalan tanpa error dan sesuai kebutuhan.
6. Deployment (Penerapan):
Meluncurkan perangkat lunak untuk digunakan secara resmi.
7. Maintenance (Pemeliharaan):
Menangani perbaikan bug, penyesuaian sistem, atau pembaruan fitur secara berkala.
Dengan mengikuti siklus ini, proyek software dapat berjalan lebih tertata dan mengurangi risiko kegagalan.
3.1.3 – Requirements and Analysis Phase
Pada tahap ini, tim pengembang melakukan komunikasi aktif dengan pengguna atau stakeholder untuk memahami apa saja kebutuhan yang harus dipenuhi oleh perangkat lunak.
Beberapa aktivitas penting dalam fase ini:
- Melakukan wawancara dengan pengguna.
- Menyusun dokumen kebutuhan (requirement documentation).
- Mengidentifikasi batasan sistem dan ruang lingkup.
Kesalahan dalam tahap ini bisa berakibat fatal di tahap selanjutnya, karena software yang dikembangkan bisa saja tidak sesuai harapan pengguna.
3.1.4 – Design and Implementation Phases
Setelah mengetahui kebutuhan, tahap selanjutnya adalah mendesain sistem. Tujuan utama desain adalah memberikan solusi teknis terbaik dan efisien untuk memenuhi kebutuhan pengguna.
Desain dapat dibagi dua:
- Desain tingkat tinggi (High-Level Design): mencakup arsitektur sistem, pemilihan database, server, bahasa pemrograman.
- Desain tingkat rendah (Low-Level Design): mencakup desain fungsi, algoritma, dan struktur data.
Tahap implementasi adalah menerjemahkan desain menjadi kode program. Ini adalah aktivitas inti dalam software development. Tim developer akan membangun fitur demi fitur, mengintegrasikannya, dan memastikan program bisa dijalankan sesuai spesifikasi.
3.1.5 – Testing, Deployment, and Maintenance Phases
Testing sangat penting untuk memastikan bahwa aplikasi:
- Berjalan dengan benar (fungsi sesuai).
- Bebas dari bug/error.
- Stabil dan aman.
Jenis testing yang dilakukan:
- Unit testing (pengujian bagian kecil program).
- Integration testing (pengujian modul yang saling terhubung).
- System testing (pengujian sistem secara keseluruhan).
- User Acceptance Testing (UAT) oleh pengguna.
Deployment adalah tahap di mana software diluncurkan ke server atau didistribusikan ke pengguna. Biasanya dilakukan bertahap untuk memantau kemungkinan bug.
Maintenance adalah tahap pasca peluncuran yang berisi:
- Perbaikan bug
- Penambahan fitur
- Pembaruan keamanan
- Penyesuaian sistem sesuai kebutuhan baru
3.1.6 – Software Development Methodologies
Metodologi pengembangan adalah cara kerja tim software developer dalam menyelesaikan proyek. Cisco mengenalkan bahwa tidak ada satu metode yang cocok untuk semua proyek. Metodologi dipilih berdasarkan:
- Ukuran proyek
- Tingkat perubahan
- Kebutuhan tim dan pengguna
Tiga metodologi utama yang dibahas:
-Waterfall
-Agile
-Lean
Setiap metode punya kelebihan dan kekurangan. Pemahaman terhadap metodologi akan membantu tim memilih pendekatan terbaik sesuai konteks proyek.
3.1.7 – Waterfall Software Development
Waterfall adalah metode tradisional dan paling sederhana dalam pengembangan perangkat lunak. Disebut "Waterfall" karena prosesnya mengalir ke bawah seperti air terjun.
Ciri-cirinya:
* Setiap tahap harus selesai sebelum lanjut ke tahap berikutnya.
* Perencanaan dan dokumentasi dilakukan secara menyeluruh di awal.
* Cocok untuk proyek dengan kebutuhan tetap (tidak berubah-ubah).
Kelemahan:
* Sulit menyesuaikan perubahan setelah proyek berjalan.
* Tidak fleksibel dalam merespons umpan balik pengguna yang terlambat.
3.1.8 – Agile Software Development
Agile adalah pendekatan modern yang menekankan fleksibilitas dan kecepatan. Agile memecah proyek besar menjadi iterasi kecil (sprint), sehingga pengembang bisa cepat merespons perubahan.
Ciri utama Agile:
* Iteratif dan inkremental (dilakukan berulang dalam siklus pendek).
* Kolaborasi tim dan klien sangat tinggi.
* Umpan balik pengguna langsung diterapkan ke iterasi selanjutnya.
* Tim Agile melakukan evaluasi dan perbaikan di setiap sprint (retrospective).
Agile sangat cocok untuk proyek startup atau aplikasi modern yang sering berubah sesuai tren pasar.
3.1.9 – Agile Methods
Cisco mengajarkan bahwa Agile bukan satu metode tunggal, tetapi mencakup berbagai pendekatan seperti:
* Scrum – Menggunakan peran Scrum Master, Product Owner, dan sprint backlog. Proyek dibagi dalam sprint 1–2 minggu.
* Kanban – Mengandalkan papan visual untuk memantau alur kerja.
* Extreme Programming (XP) – Fokus pada kualitas kode dan praktik seperti pair programming dan test-driven development.
Agile Methods menekankan pada:
* Keterlibatan pengguna sejak awal.
* Pengiriman produk kecil yang cepat dan berkelanjutan.
* Adaptasi terhadap perubahan kebutuhan.
3.1.10 – Lean Software Development
Lean berfokus pada mengurangi pemborosan (waste) dalam proses pengembangan dan meningkatkan nilai kepada pelanggan.
Prinsip utama Lean:
* Eliminasi waste: Jangan membangun fitur yang tidak dibutuhkan.
* Build Quality In: Kualitas dibangun dari awal, bukan ditambahkan belakangan.
* Deliver Fast: Rilis cepat dengan versi minimal (MVP).
* Respect for People: Percaya pada kemampuan tim.
* Optimize the Whole: Fokus pada efisiensi keseluruhan proses, bukan hanya satu bagian.
Lean mendorong tim untuk terus belajar dari data dan pengalaman, bukan hanya mengandalkan perencanaan awal.
3.1.11 – Lean Software Development (Cont.)
Dalam bagian lanjutan ini, dijelaskan implementasi praktis dari Lean seperti:
* Decision Delay: Menunda keputusan sampai data cukup tersedia.
* Empower Teams: Memberikan otonomi kepada tim dalam mengambil keputusan teknis.
* Continuous Learning: Menggunakan data dan feedback untuk meningkatkan produk.
Lean juga sering dikombinasikan dengan Agile karena keduanya mendukung pengembangan berkelanjutan dan efisien.
Komentar
Posting Komentar