LAPORAN MODUL 3 : SOFTWARE DEVELOPMENT AND DESIGN 3.1 SOFTWARE DEVELOPMENT
Modul 3.1 – Software Development (Cisco DevNet Associate)
3.1.1 Introduction
Software development adalah
proses pengembangan perangkat lunak secara menyeluruh. Dalam konteks DevNet,
dikenal sebagai Software Development Life Cycle (SDLC)—meliputi analisis
kebutuhan, desain, pengkodean, pengujian, deployment, serta pemeliharaan sistem
setelah rilis.
3.1.2 Software Development Life Cycle (SDLC)
SDLC (Software Development
Life Cycle) adalah kerangka kerja yang digunakan untuk mengatur proses
pengembangan perangkat lunak dari awal hingga akhir. SDLC membantu tim
pengembang agar bekerja lebih terstruktur, efisien, dan menghasilkan produk
yang sesuai kebutuhan.
Fase-fase dalam SDLC meliputi:
- Perencanaan
(Planning):
Mengidentifikasi ruang lingkup proyek, tujuan, kebutuhan sumber daya, jadwal waktu, dan risiko. - Analisis
Kebutuhan (Requirement Analysis):
Menggali dan mencatat kebutuhan pengguna secara rinci, baik kebutuhan fungsional maupun non-fungsional. - Desain
Sistem (Design):
Menyusun arsitektur sistem, model data, struktur database, antarmuka, dan skema komunikasi antar komponen. - Implementasi
(Implementation):
Proses pengkodean berdasarkan desain yang sudah disepakati. Biasanya dilakukan oleh tim programmer. - Pengujian
(Testing):
Menemukan dan memperbaiki kesalahan atau bug. Termasuk unit testing, integration testing, dan system testing. - Penyebaran
(Deployment):
Setelah lulus uji, perangkat lunak diluncurkan untuk digunakan oleh pengguna akhir. - Pemeliharaan
(Maintenance):
Melibatkan pembaruan sistem, perbaikan bug pasca-peluncuran, dan pengembangan fitur tambahan sesuai kebutuhan pengguna.
SDLC dapat digunakan dalam berbagai pendekatan atau
metodologi, seperti Waterfall, Agile, atau Lean.
3.1.3 Requirements and Analysis Phase
Tahapan ini sangat krusial karena
menjadi pondasi bagi keseluruhan proyek. Tujuan utama dari fase ini adalah
memahami secara menyeluruh apa yang dibutuhkan oleh pengguna dan sistem.
Beberapa aktivitas penting meliputi:
- Pengumpulan
Data: Melalui wawancara, kuesioner, observasi, atau studi dokumen.
- Analisis
Kebutuhan Fungsional: Apa yang bisa dilakukan sistem? Misalnya: user
bisa login, input data, cetak laporan, dll.
- Analisis
Kebutuhan Non-Fungsional: Seperti keamanan, performa, skalabilitas,
dan keandalan.
- Dokumentasi:
Semua kebutuhan yang telah dikumpulkan didokumentasikan secara rinci agar
menjadi acuan dalam desain dan pengembangan.
Kesalahan dalam fase ini bisa menyebabkan kesalahan besar
dalam tahap-tahap berikutnya, karena sistem bisa jadi tidak sesuai dengan
harapan pengguna.
3.1.4 Design and Implementation Phases
Fase desain dan implementasi adalah saat di mana semua ide
dan kebutuhan yang telah dikumpulkan diubah menjadi bentuk teknis dan nyata.
Desain (Design):
- Merupakan
cetak biru dari sistem yang akan dibangun.
- Desain
bisa bersifat tingkat tinggi (high-level) maupun rinci (low-level).
- Digunakan
tools seperti diagram alur, Entity Relationship Diagram (ERD), dan UML
(Unified Modeling Language).
- Desain
juga mencakup antarmuka pengguna (UI), arsitektur sistem, desain basis
data, serta keamanan sistem.
Implementasi (Implementation):
- Disebut
juga coding atau development phase.
- Programmer
mulai menulis kode sesuai dengan spesifikasi desain.
- Bahasa
pemrograman, framework, dan tools dipilih berdasarkan kebutuhan dan
kemampuan tim.
- Best
practices seperti penggunaan version control (Git), dokumentasi kode, dan
coding standard sangat penting untuk menjaga kualitas dan keterbacaan
kode.
Kolaborasi tim, komunikasi yang baik, serta pengujian
kecil-kecilan (unit testing) dilakukan selama fase ini agar hasil akhirnya siap
masuk ke tahap pengujian yang lebih besar.
3.1.5 Testing, Deployment, and Maintenance Phases
Setelah perangkat lunak selesai dikembangkan, tahap
selanjutnya adalah pengujian, penyebaran, dan pemeliharaan.
Testing (Pengujian):
- Bertujuan
memastikan bahwa perangkat lunak bebas dari bug dan bekerja sesuai
spesifikasi.
- Beberapa
jenis pengujian:
- Unit
Testing: Menguji bagian terkecil dari kode (fungsi, modul).
- Integration
Testing: Menguji interaksi antar modul.
- System
Testing: Menguji seluruh sistem secara menyeluruh.
- Acceptance
Testing: Pengujian oleh pengguna untuk memastikan perangkat lunak
sesuai kebutuhan.
Deployment (Penyebaran):
- Perangkat
lunak diinstal dan dikonfigurasi di lingkungan produksi.
- Bisa
dilakukan secara bertahap (phased deployment) atau langsung penuh (big
bang deployment).
- Mungkin
juga mencakup pelatihan pengguna.
Maintenance (Pemeliharaan):
- Setelah
perangkat lunak digunakan, akan ada kebutuhan untuk memperbaiki bug yang
muncul, mengoptimalkan performa, atau menambahkan fitur baru.
- Maintenance
bisa berlangsung selama bertahun-tahun, terutama untuk sistem besar atau
kritis.
3.1.6 Software Development Methodologies
Metodologi pengembangan perangkat lunak adalah cara atau
pendekatan sistematis yang digunakan oleh tim untuk mengelola proses
pengembangan.
Metodologi ini membantu mengorganisasi kerja tim, mengatur tahapan proyek,
serta meningkatkan efisiensi.
Ada dua kategori besar:
- Metodologi
Tradisional: Linear dan berurutan (misalnya: Waterfall).
- Metodologi
Modern: Iteratif, fleksibel, dan kolaboratif (misalnya: Agile, Lean).
Setiap metode memiliki kelebihan dan kekurangan
masing-masing, dan pemilihannya disesuaikan dengan jenis proyek, tim, serta
kebutuhan pengguna.
3.1.7 Waterfall Software Development
Metode Waterfall adalah pendekatan konvensional yang
menggunakan alur satu arah dari atas ke bawah, seperti air terjun.
Setiap tahap harus diselesaikan secara penuh sebelum melanjutkan ke tahap
berikutnya.
Karakteristik utama:
- Cocok
untuk proyek dengan kebutuhan yang sudah jelas sejak awal.
- Sulit
untuk kembali ke tahap sebelumnya jika terjadi kesalahan.
- Dokumentasi
sangat penting.
- Mudah
dikelola karena strukturnya yang terprediksi.
Kelemahan utamanya adalah kurang fleksibel, terutama jika di
tengah proyek terjadi perubahan kebutuhan.
3.1.8 Agile Software Development
Agile dikembangkan sebagai respons atas kekakuan metode
Waterfall. Agile menekankan iterasi cepat, kolaborasi, dan fleksibilitas
tinggi.
Prinsip utama Agile (dari Manifesto Agile):
- Individu
dan interaksi lebih penting daripada proses dan alat.
- Perangkat
lunak yang bekerja lebih penting daripada dokumentasi lengkap.
- Kolaborasi
dengan pelanggan lebih penting daripada negosiasi kontrak.
- Merespons
perubahan lebih penting daripada mengikuti rencana kaku.
Ciri-ciri Agile:
- Proyek
dibagi dalam sprint (iterasi 1–4 minggu).
- Setiap
sprint menghasilkan bagian dari perangkat lunak yang bisa digunakan.
- Tim
lintas fungsi bekerja sama secara intensif.
- Review
dan feedback dilakukan secara rutin.
Agile sangat cocok untuk proyek yang kebutuhan atau
solusinya belum sepenuhnya diketahui sejak awal.
3.1.9 Agile Methods
Agile bukan hanya satu metode, melainkan payung dari
berbagai pendekatan yang mengikuti prinsip-prinsip Agile.
Beberapa metode populer dalam Agile:
- Scrum:
- Mempunyai
peran penting seperti Scrum Master, Product Owner, dan Development Team.
- Sprint
review, retrospective, dan daily standup dilakukan secara rutin.
- Kanban:
- Fokus
pada visualisasi pekerjaan menggunakan papan Kanban.
- Membatasi
jumlah pekerjaan dalam proses (Work in Progress).
- Cocok
untuk tim yang ingin meningkatkan alur kerja secara berkelanjutan.
- Extreme
Programming (XP):
- Fokus
pada teknik pengkodean seperti pair programming, refactoring, dan
test-driven development (TDD).
- Mendorong
pengujian berkelanjutan dan komunikasi intensif.
Setiap metode bisa digunakan secara mandiri atau
dikombinasikan sesuai kebutuhan tim dan proyek.
3.1.10 Lean Software Development
Lean berasal dari filosofi
produksi Toyota, yang kemudian diadaptasi ke dunia software development. Tujuan
utamanya adalah mengurangi pemborosan, meningkatkan efisiensi, dan fokus
pada nilai tambah bagi pengguna.
Prinsip-prinsip utama Lean:
- Eliminate
Waste (Hilangkan Pemborosan):
Buang proses, fitur, atau dokumentasi yang tidak memberi nilai nyata. - Amplify
Learning (Tingkatkan Pembelajaran):
Dorong eksperimen, prototipe, dan review berulang. - Decide
as Late as Possible:
Ambil keputusan berdasarkan data dan fakta yang cukup, jangan terburu-buru. - Deliver
as Fast as Possible:
Berikan hasil awal kepada pengguna untuk mendapatkan feedback lebih cepat.
3.1.11 Lean Software Development (Cont.)
Kelanjutan prinsip Lean:
- Empower
the Team:
Percayakan pengambilan keputusan kepada tim yang mengerjakan langsung proyeknya. Ini menciptakan rasa tanggung jawab dan semangat inovasi. - Build
Quality In:
Kualitas tidak ditambahkan di akhir, tapi dibangun sejak awal proses melalui coding standar, testing otomatis, dan peer review. - Optimize
the Whole:
Fokus pada pengoptimalan proses secara keseluruhan, bukan hanya sebagian kecil sistem. Kolaborasi antar tim sangat penting di sini.
Komentar
Posting Komentar