Bab 4 : Software Construction

Nama : Mutia Ardelia Rokhima

NIM    : 240605110075

Bab 4 : Software Construction

Bagian 1 : Dasar Dasar Software Construction

A.    Konsep dan Prinsip Konstruksi Perangkat Lunak

1.           Software construction adalah proses dalam pengembangan perangkat lunak yang berfokus pada penerjemahan desain menjadi kode program yang dapat dijalankan, termasuk aktivitas coding, debugging, integrasi, dan pengujian awal. Tahap ini memiliki peran penting dalam siklus pengembangan perangkat lunak karena menjadi proses implementasi utama yang menentukan kualitas sistem yang dihasilkan, baik dari segi keandalan, kemudahan pemeliharaan, maupun kemampuan untuk dikembangkan di masa depan.

2.     Lima prinsip utama dalam konstruksi perangkat lunak adalah sebagai berikut:

1.     Minimizing Complexity → mengurangi kompleksitas kode agar lebih mudah dipahami, diuji, dan dipelihara.

2.     Anticipating Change → merancang sistem agar fleksibel dan mudah diubah sesuai kebutuhan yang berkembang.

3.     Constructing for Verification → membuat kode yang mudah diuji sehingga kesalahan dapat dideteksi lebih awal.

4.     Reusing Existing Code → memanfaatkan kembali kode atau komponen yang sudah ada untuk meningkatkan efisiensi.

5.   Applying Standards → menerapkan standar pemrograman agar kode konsisten, rapi, dan mudah dipahami oleh tim.

3.     Tabel Prinsip Konstruksi

Prinsip Konstruksi

Deskripsi

Contoh Penerapan

Minimizing Complexity

Mengurangi kerumitan kode agar mudah dipahami dan dikelola

Membagi fitur aplikasi (login, dashboard, profil) menjadi modul terpisah pada aplikasi web/mobile

Anticipating Change

Mendesain sistem agar mudah diubah sesuai kebutuhan

Menggunakan API untuk mengambil data sehingga jika backend berubah, aplikasi tetap bisa menyesuaikan

Constructing for Verification

Membuat kode yang mudah diuji untuk memastikan kebenaran program

Menambahkan unit test pada fitur seperti login atau input data pengguna

Reusing Existing Code

Menggunakan kembali kode atau library yang sudah tersedia

Menggunakan Firebase untuk autentikasi atau library UI seperti Bootstrap/Material UI

Applying Standards

Mengikuti standar coding agar konsisten dan mudah dipahami

Menggunakan aturan penamaan variabel, format kode, dan tools seperti ESLint atau PEP8

 

4.           Pelanggaran prinsip konstruksi perangkat lunak dapat menyebabkan berbagai masalah serius dalam pengembangan sistem. Jika kompleksitas tidak dikendalikan, kode menjadi sulit dipahami dan rentan terhadap kesalahan. Tanpa mengantisipasi perubahan, sistem menjadi kaku dan sulit dikembangkan ketika kebutuhan baru muncul. Kurangnya perhatian pada aspek verifikasi membuat bug sulit dideteksi sejak awal, sehingga meningkatkan risiko kegagalan sistem. Selain itu, tidak memanfaatkan kode yang sudah ada dapat menyebabkan duplikasi dan pemborosan waktu, sedangkan tidak menerapkan standar coding mengakibatkan kode tidak konsisten dan menyulitkan kerja tim. Akibatnya, proses pengembangan menjadi tidak efisien, biaya meningkat, dan kualitas perangkat lunak menurun.

Bagian 2 : Teknik dan Metode Konstruksi Perangkat Lunak

A.    Teknik Pengkodean yang Efektif

1.     Pentingnya standar pemrograman dalam konstruksi perangkat lunak

Standar pemrograman penting dalam konstruksi perangkat lunak karena membantu menghasilkan kode yang rapi, konsisten, mudah dibaca, dan mudah dipelihara. Dengan adanya standar, setiap programmer dalam tim memiliki pedoman yang sama dalam menulis kode, seperti penamaan variabel, struktur program, penulisan komentar, dan format penulisan. Hal ini memudahkan kolaborasi, mempercepat proses debugging, mengurangi kemungkinan kesalahan, serta membuat pengembangan perangkat lunak menjadi lebih efisien dan berkualitas.

2.     Tiga contoh standar pemrograman

1.     Java: menggunakan camelCase untuk nama variabel dan metode, sedangkan nama kelas menggunakan PascalCase.

2.     Python: mengikuti PEP 8, misalnya nama variabel dan fungsi ditulis dengan snake_case.

3.     JavaScript: menggunakan camelCase untuk variabel dan fungsi, serta biasanya dibantu dengan aturan dari ESLint agar kode tetap konsisten.

3.     Contoh kode sederhana yang menerapkan prinsip Clean Code

4.     Analisis penggunaan naming conventions, modular programming, dan error handling

Penggunaan naming conventions meningkatkan kualitas kode karena nama variabel, fungsi, dan kelas menjadi lebih jelas sehingga memudahkan programmer memahami tujuan setiap bagian program. Modular programming membuat program dibagi menjadi bagian-bagian kecil yang memiliki tugas tertentu, sehingga kode lebih terstruktur, mudah diuji, dan lebih mudah dikembangkan kembali. Sementara itu, error handling membantu program menangani kesalahan dengan baik tanpa langsung mengalami crash, sehingga aplikasi menjadi lebih stabil dan ramah bagi pengguna. Jika ketiga hal ini diterapkan bersama, maka kualitas kode akan meningkat dari segi keterbacaan, pemeliharaan, pengujian, dan keandalan sistem.

B.    Manajemen Kompleksitas dalam Konstruksi

1.     Tiga Teknik utama

1.     Modularization

Modularization adalah teknik membagi sistem perangkat lunak menjadi beberapa bagian kecil yang disebut modul, di mana setiap modul memiliki tanggung jawab atau fungsi tertentu. Dengan cara ini, sistem yang besar dan kompleks menjadi lebih terstruktur dan mudah dipahami. Selain itu, setiap modul dapat dikembangkan, diuji, dan diperbaiki secara terpisah tanpa memengaruhi bagian lain secara langsung. Teknik ini juga sangat membantu dalam kerja tim karena setiap anggota dapat mengerjakan modul yang berbeda secara bersamaan.

2.     Encapsulation

Encapsulation adalah teknik menyembunyikan data atau proses internal suatu komponen agar tidak bisa diakses secara langsung dari luar. Akses terhadap data hanya dapat dilakukan melalui metode atau fungsi tertentu yang sudah disediakan. Tujuannya adalah untuk menjaga keamanan data, mencegah perubahan yang tidak diinginkan, dan mengurangi ketergantungan antar bagian sistem. Dengan encapsulation, struktur program menjadi lebih rapi dan lebih mudah dikontrol.

3.     Code Refactoring

Code refactoring adalah proses memperbaiki dan menyusun ulang kode program agar lebih rapi, efisien, dan mudah dipahami tanpa mengubah fungsi utamanya. Refactoring biasanya dilakukan dengan cara menghapus kode yang berulang, menyederhanakan logika program, memperbaiki penamaan variabel atau fungsi, serta memecah fungsi yang terlalu panjang menjadi bagian yang lebih kecil. Dengan refactoring, kualitas kode meningkat sehingga lebih mudah dipelihara dan dikembangkan di masa depan.

2.     Tabel Analisis Studi Kasus

Teknik Manajemen Kompleksitas

Deskripsi

Penerapan dalam Studi Kasus

Modularization

Membagi sistem menjadi modul-modul kecil agar lebih terstruktur dan mudah dikelola

Pada aplikasi manajemen tugas, fitur seperti login, manajemen tugas, notifikasi, dan laporan dibuat sebagai modul terpisah

Encapsulation

Menyembunyikan detail internal dan hanya menampilkan fungsi yang diperlukan

Data tugas (judul, deadline, status) dibungkus dalam class sehingga hanya bisa diakses melalui method tertentu

Code Refactoring

Memperbaiki struktur kode tanpa mengubah fungsi utama

Menghapus kode yang duplikat, menyederhanakan fungsi yang terlalu panjang, dan memperbaiki penamaan variabel agar lebih jelas

 

Bagian 3:  Pengujian dan Debugging dalam Konstruksi Perangkat Lunak

A.    Teknik Pengujian dalam Konstruksi

1.     Pentingnya pengujian selama tahap konstruksi perangkat lunak

Pengujian selama tahap konstruksi perangkat lunak sangat penting karena membantu memastikan bahwa kode yang dibuat sudah berjalan sesuai fungsi yang diharapkan. Melalui pengujian, kesalahan dapat ditemukan lebih awal sebelum sistem digunakan secara luas, sehingga biaya perbaikan menjadi lebih kecil. Selain itu, pengujian juga membantu meningkatkan kualitas perangkat lunak, menjaga kestabilan program, dan memastikan bahwa setiap bagian sistem dapat bekerja dengan benar baik secara individu maupun ketika digabungkan dengan bagian lain.

2.     Tiga metode pengujian utama

a.     Unit Testing

Unit Testing adalah metode pengujian yang dilakukan pada bagian terkecil dari program, seperti fungsi, prosedur, atau method. Tujuannya adalah memastikan bahwa setiap unit kode bekerja dengan benar secara mandiri. Pengujian ini biasanya dilakukan oleh programmer selama proses coding agar kesalahan logika dapat segera diketahui.

b.     Integration Testing

Integration Testing adalah pengujian yang dilakukan setelah beberapa unit program digabungkan. Tujuannya adalah memastikan bahwa antar modul atau komponen dapat saling berinteraksi dengan baik. Metode ini penting karena walaupun setiap unit sudah benar, bisa saja muncul masalah ketika unit-unit tersebut dihubungkan.

c.     Regression Testing

Regression Testing adalah pengujian ulang yang dilakukan setelah ada perubahan, perbaikan, atau penambahan fitur pada program. Tujuannya adalah memastikan bahwa perubahan yang dilakukan tidak merusak fungsi yang sebelumnya sudah berjalan dengan baik. Metode ini penting untuk menjaga kestabilan sistem selama pengembangan berlanjut.

3.     Contoh pengujian unit menggunakan PyTest (Python)

Penjelasan:
Pada contoh di atas, fungsi tambah(a, b) diuji menggunakan test_tambah(). Pengujian dilakukan untuk memastikan bahwa fungsi penjumlahan memberikan hasil yang benar pada beberapa kondisi input yang berbeda.

4.     Tabel kelebihan dan kekurangan metode pengujian

Metode Pengujian

Kelebihan

Kekurangan

Unit Testing

Cepat dilakukan, mudah menemukan kesalahan pada fungsi kecil, membantu debugging lebih awal

Hanya menguji bagian kecil, tidak menunjukkan masalah antar modul

Integration Testing

Dapat memastikan modul-modul bekerja bersama dengan baik, membantu menemukan kesalahan interaksi

Lebih kompleks, membutuhkan lebih banyak persiapan dibanding unit testing

Regression Testing

Menjaga agar perubahan tidak merusak fungsi lama, meningkatkan kestabilan sistem

Memerlukan waktu dan sumber daya lebih banyak, terutama pada sistem besar

 

B.    Debugging dan Penanganan Kesalahan

1.     Konsep debugging dan pentingnya

Debugging adalah proses mencari, menganalisis, dan memperbaiki kesalahan (bug) yang terjadi dalam program. Kesalahan ini bisa berupa error logika, error sintaks, atau error saat program dijalankan. Debugging sangat penting dalam konstruksi perangkat lunak karena membantu memastikan program berjalan dengan benar, meningkatkan kualitas software, serta mencegah kegagalan sistem saat digunakan oleh pengguna. Dengan debugging yang baik, pengembang dapat menemukan sumber masalah secara lebih cepat dan memperbaikinya sebelum berdampak lebih luas.

2.     Tiga teknik debugging

a.     Print Debugging

Teknik ini dilakukan dengan menambahkan perintah print atau output di dalam kode untuk melihat nilai variabel atau alur program saat dijalankan. Cara ini sederhana dan mudah digunakan, tetapi kurang efektif untuk sistem yang kompleks.

b.     Logging

Logging adalah teknik mencatat aktivitas program ke dalam file atau console secara sistematis. Dengan logging, developer dapat melacak kejadian selama program berjalan tanpa harus menghentikan prosesnya, sehingga sangat berguna untuk aplikasi besar atau yang berjalan terus-menerus.

c.     Breakpoints

Breakpoints digunakan dalam tools debugging untuk menghentikan sementara eksekusi program pada titik tertentu. Dengan cara ini, developer dapat memeriksa nilai variabel, alur program, dan kondisi sistem secara lebih detail.

3.     Contoh script Logging (Python)

Penjelasan:
Kode di atas mencatat proses program menggunakan logging, sehingga jika terjadi kesalahan dapat diketahui dari log yang muncul.

4.     Studi kasus: Aplikasi mobile crash saat memuat data

Jika sebuah aplikasi mobile mengalami crash saat memuat data dari server, maka pendekatan debugging yang dapat dilakukan adalah:

·       Menggunakan logging untuk melihat apakah terjadi kesalahan saat mengambil data dari server

·       Memeriksa response API (apakah data kosong atau error)

·       Menambahkan error handling (try-catch) agar aplikasi tidak langsung crash

·       Menggunakan breakpoints untuk mengecek nilai variabel saat proses berjalan

·       Menguji koneksi internet atau endpoint API

Dengan pendekatan tersebut, penyebab crash dapat ditemukan, misalnya karena data null, koneksi gagal, atau kesalahan parsing data, sehingga dapat segera diperbaiki.

 

Bagian 4 : Penggunaan Alat Bantu dalam Konstruksi Perangkat Lunak.

A.    Alat Bantu Pengembangan Perangkat Lunak

1.     Tiga alat bantu dalam konstruksi perangkat lunak

Tiga alat bantu yang umum digunakan dalam konstruksi perangkat lunak adalah Integrated Development Environment (IDE), Version Control System (VCS), dan Static Code Analysis Tools. IDE digunakan untuk menulis, menjalankan, dan mengelola kode dalam satu lingkungan yang terintegrasi. Version Control System berfungsi untuk mengelola perubahan kode serta mendukung kolaborasi tim dalam pengembangan. Sedangkan Static Code Analysis Tools digunakan untuk menganalisis kualitas kode secara otomatis guna menemukan potensi kesalahan dan memastikan kode sesuai dengan standar yang ditetapkan.

2.     Tabel fitur dan kegunaan

Alat Bantu

Fitur Utama

Kegunaan

IDE (VS Code, IntelliJ IDEA)

Code editor, debugging, auto-complete, integrasi plugin

Mempermudah proses penulisan, pengujian, dan debugging kode

Version Control (Git)

Tracking perubahan, branching, merging, repository

Mengelola versi kode dan mendukung kolaborasi tim

Static Code Analysis (SonarQube)

Analisis kualitas kode, deteksi bug, code smell, security check

Menjaga kualitas kode dan mendeteksi kesalahan sejak awal

 

3.     Alat bantu untuk Agile Development

Dalam proyek berbasis Agile Development, alat yang paling penting digunakan adalah kombinasi Git (Version Control), IDE, dan Static Code Analysis Tools seperti SonarQube.

Alasannya:

·       Git memungkinkan kolaborasi tim secara fleksibel melalui branching dan merging, sehingga banyak developer bisa bekerja secara paralel.

·       IDE membantu meningkatkan produktivitas developer dengan fitur otomatis seperti auto-complete dan debugging.

·       Static Code Analysis Tools memastikan kualitas kode tetap terjaga meskipun perubahan dilakukan secara cepat dalam setiap sprint.

Dengan kombinasi alat tersebut, proses pengembangan menjadi lebih cepat, terstruktur, dan tetap menjaga kualitas perangkat lunak.

 

Kesimpulan dan Refleksi

1.    Kesimpulan

Software construction merupakan tahap penting dalam pengembangan perangkat lunak yang berfokus pada pembuatan kode, pengujian, dan perbaikan program. Dalam proses ini, penerapan prinsip seperti mengurangi kompleksitas, mengantisipasi perubahan, serta menggunakan standar coding sangat membantu dalam menghasilkan perangkat lunak yang berkualitas. Dengan pemahaman yang baik tentang software construction, developer dapat membuat sistem yang lebih terstruktur, mudah dipelihara, serta lebih tahan terhadap perubahan di masa depan.

2.    Refleksi Pribadi

Tantangan terbesar dalam memahami dan menerapkan konstruksi perangkat lunak adalah bagaimana menulis kode yang tidak hanya berfungsi, tetapi juga rapi, efisien, dan mudah dikembangkan. Selain itu, memahami berbagai teknik seperti modularisasi, pengujian, dan debugging juga membutuhkan latihan yang cukup. Namun, konsep yang dipelajari sangat bermanfaat dan dapat diterapkan dalam proyek nyata, terutama dalam pengembangan aplikasi yang membutuhkan kerja tim, kualitas kode yang baik, serta kemampuan untuk terus berkembang sesuai kebutuhan pengguna.

Komentar

Postingan populer dari blog ini

Bab 1 : Software Requirements

Bab 9 : Software Engineering Management