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:

  1. Perencanaan (Planning):
    Mengidentifikasi ruang lingkup proyek, tujuan, kebutuhan sumber daya, jadwal waktu, dan risiko.
  2. Analisis Kebutuhan (Requirement Analysis):
    Menggali dan mencatat kebutuhan pengguna secara rinci, baik kebutuhan fungsional maupun non-fungsional.
  3. Desain Sistem (Design):
    Menyusun arsitektur sistem, model data, struktur database, antarmuka, dan skema komunikasi antar komponen.
  4. Implementasi (Implementation):
    Proses pengkodean berdasarkan desain yang sudah disepakati. Biasanya dilakukan oleh tim programmer.
  5. Pengujian (Testing):
    Menemukan dan memperbaiki kesalahan atau bug. Termasuk unit testing, integration testing, dan system testing.
  6. Penyebaran (Deployment):
    Setelah lulus uji, perangkat lunak diluncurkan untuk digunakan oleh pengguna akhir.
  7. 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:

  1. Scrum:
    • Mempunyai peran penting seperti Scrum Master, Product Owner, dan Development Team.
    • Sprint review, retrospective, dan daily standup dilakukan secara rutin.
  2. 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.
  3. 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:

  1. Eliminate Waste (Hilangkan Pemborosan):
    Buang proses, fitur, atau dokumentasi yang tidak memberi nilai nyata.
  2. Amplify Learning (Tingkatkan Pembelajaran):
    Dorong eksperimen, prototipe, dan review berulang.
  3. Decide as Late as Possible:
    Ambil keputusan berdasarkan data dan fakta yang cukup, jangan terburu-buru.
  4. 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:

  1. Empower the Team:
    Percayakan pengambilan keputusan kepada tim yang mengerjakan langsung proyeknya. Ini menciptakan rasa tanggung jawab dan semangat inovasi.
  2. Build Quality In:
    Kualitas tidak ditambahkan di akhir, tapi dibangun sejak awal proses melalui coding standar, testing otomatis, dan peer review.
  3. Optimize the Whole:
    Fokus pada pengoptimalan proses secara keseluruhan, bukan hanya sebagian kecil sistem. Kolaborasi antar tim sangat penting di sini.

 

Komentar

Postingan populer dari blog ini

Laporan Install & Konfigurasi Scripting Language (PHP) Red Hat Enterprise Linux (RHEL) Pada Virtual Box

Laporan Install & Konfigurasi Web Server (Apache) Red Hat Enterprise Linux (RHEL) Pada Virtual Box

Laporan Install & Konfigurasi DNS Server Red Hat Enterprise Linux (RHEL) Pada Virtual Box