Alat desain program
| English | Bahasa Indonesia |
|---|---|
| structure chart/ˈstrʌktʃə tʃɑːt/ | bagan struktur |
| state-transition diagram/steɪt trænˈsɪʃn ˈdaɪəɡræm/ | diagram transisi keadaan |
| pseudocode/ˈsuːdəʊkəʊd/ | pseudocode |
| decomposition/ˌdiːkɒmpəˈzɪʃn/ | dekomposisi |
| subroutines/ˈsʌbruːtiːnz/ | subrutin |
| parameters/pəˈræmɪtəz/ | parameter |
| top-down design/tɒp daʊn dɪˈzaɪn/ | desain dari atas ke bawah |
| states/steɪts/ | menyatakan |
Tahun ketika perangkat lunak menjadi rekayasa
- Pada bulan Oktober 1968, lima puluh programmer terkemuka dari seluruh dunia bertemu di Garmisch, Jerman, untuk mendiskusikan mengapa program besar sering gagal: terlambat, melebihi anggaran, dan tidak andal. Mereka menciptakan istilah untuk apa yang hilang: rekayasa perangkat lunak.
- Keluhannya sederhana. Bangunan digambar sebelum dibangun. Insinyur menghitung sebelum memotong. Programmer mengetik kode sebelum siapa pun menggambar rancangan program.
- Gambar-gambar yang lahir dari dekade tersebut adalah yang akan Anda gunakan pada tahap desain: bagan struktur, yang menunjukkan bagaimana program dibagi menjadi bagian-bagian, dan diagram transisi keadaan, yang menunjukkan perilakunya.
- Pelajaran ini mengajarkan cara membacanya, cara membuatnya, dan cara mengubah bagan struktur menjadi pseudocode.
Apa yang diputuskan oleh desain
- Analisis menyatakan apa yang harus dilakukan program. Desain memutuskan bagaimana: struktur data, algoritma, modul, dan antarmuka.
- Tahap desain menghasilkan gambar yang dapat digunakan programmer untuk membuat kode: flowchart untuk logika satu algoritma, pseudocode untuk hal yang sama dalam bentuk teks, bagan struktur untuk modul-modul, dan diagram transisi keadaan untuk perilaku.
- Setiap alat menjawab pertanyaan yang berbeda, dan ujian menanyakan mana yang paling sesuai.
Logika satu algoritma, digambar sebelum dikodekan
Lab proses perangkat lunak
Klasifikasikan contoh pengembangan berdasarkan tahap atau alat yang dimilikinya.
Bagan struktur
- Bagan struktur menunjukkan dekomposisi hierarkis program ke dalam modul, subrutin-nya, dan parameter yang dilewatkan di antaranya. Desain top-down ini memecah satu masalah besar menjadi sub-masalah yang lebih kecil, yang masing-masing menjadi sebuah modul.
- Setiap modul berupa persegi panjang. Garis menghubungkan pemanggil di atas ke modul yang dipanggilnya di bawah. Modul pada level yang sama dipanggil dari kiri ke kanan.
- Panah kecil di samping garis membawa data: parameter yang dikirim turun ke dalam modul, atau hasil yang dikembalikan naik ke pemanggil. Belah ketupat menandai pemilihan, panah melengkung menandai perulangan (loop).

Hierarki pada garis, data pada panah
Bagan struktur menunjukkan:
Bagan struktur adalah penguraian hierarkis ke dalam modul, dengan parameter ke bawah dan hasil ke atas.
Memecahkan masalah menjadi modul dari atas ke bawah disebut:
Desain atas-bawah menghasilkan solusi modular.
Contoh terpecahkan: baca tanda tangan dari bagan
CalculatePay
/ | \
GetEmployee CalculateBonus CalculateTax
returns: takes: sales takes: gross
employeeID returns: bonus returns: tax
GetEmployeemenerima apa-apa dan mengembalikan ID karyawan:FUNCTION GetEmployee() RETURNS INTEGER.CalculateBonusmenerima angka penjualan secara turun dan mengirim bonus kembali:FUNCTION CalculateBonus(Sales : REAL) RETURNS REAL.CalculateTaxmenerima upah bruto dan mengembalikan pajak. Setiap panah pada bagan adalah parameter atau nilai kembalian dalam header; header dengan parameter yang tidak ditunjukkan bagan adalah salah.
Pada bagan struktur, panah kecil yang menunjuk ke bawah dari Caller ke modul menunjukkan ____ yang dilewatkan ke dalamnya.
Panah ke bawah adalah parameter masuk; panah ke atas adalah hasil dikembalikan. Bersama-sama mereka memberikan header modul.
Contoh terpecahkan: buatlah bagan struktur
- Sebuah program membaca nilai siswa, menghitung rata-rata, dan mengeluarkan nilai huruf. Buatlah bagan struktur.
- Modul teratas:
ProcessStudent. Di bawahnya, dari kiri ke kanan:ReadMarks, yang mengembalikan array nilai;CalculateAverage, yang menerima array nilai secara turun dan mengembalikan rata-rata;OutputGrade, yang menerima rata-rata secara turun dan mengembalikan apa-apa. - Tiga hal memberikan nilai: hierarki dengan tugas utama di puncak, sub-tugas dalam urutan jalannya, dan parameter bernama pada panah dengan arah yang benar. Panah tanpa label maksimal bernilai setengah poin.
Dari bagan struktur menjadi pseudocode
- Modul teratas menjadi program utama; setiap persegi panjang di bawahnya menjadi prosedur atau fungsi whose header dibaca dari panah; program utama memanggilnya dari kiri ke kanan.
PROCEDURE ProcessStudent()
DECLARE Marks : ARRAY[1:10] OF INTEGER
DECLARE Average : REAL
Marks ← ReadMarks()
Average ← CalculateAverage(Marks)
CALL OutputGrade(Average)
ENDPROCEDURE
- Nilai kembalian berarti menggunakan
FUNCTION … RETURNS; modul yang tidak mengembalikan apa-apa adalahPROCEDURE. Daftar parameternya persis sama dengan panah yang mengarah ke bawah.
Urutkan langkah-langkah merancang program dengan bagan struktur.
Atas-bawah: tugas, sub-tugas, aliran data, header, panggilan. Bagan selesai sebelum baris kode pertama.
Modul yang panah bagan strukturnya menunjukkan nilai dikembalikan ke atas harus ditulis sebagai PROCEDURE.
Nilai yang dikembalikan menjadikannya FUNCTION … RETURNS. A PROCEDURE mengembalikan apa pun.
Diagram transisi keadaan
- Diagram transisi keadaan mendokumentasikan perilaku sistem: keadaan yang bisa dimilikinya dan kejadian yang memindahkannya dari satu keadaan ke keadaan lain.
- Setiap keadaan berbentuk lingkaran atau kotak membulat; setiap transisi berupa panah yang diberi label dengan kejadian yang menyebabkannya, kadang-kadang disertai tindakan yang diambil. Penanda menunjukkan keadaan awal.
- Ini cocok untuk sistem yang menunggu kejadian dan bereaksi: mesin penjual otomatis, lampu lalu lintas, kunci pintu, antarmuka pengguna.

Setiap keadaan, setiap kejadian, setiap panah
Diagram transisi keadaan menunjukkan:
Keadaan adalah lingkaran; transisi adalah panah berlabel peristiwa. Ideal untuk mesin penjual otomatis, kunci, lampu lalu lintas.
Apa yang ditunjukkan diagram transisi keadaan? Pilih semua yang berlaku.
Keadaan, transisi berlabel dan penanda awal. Waktu bukan bagian dari diagram.
Contoh terpecahkan: baca diagram kunci pintu
- Kunci terbuka pada kode 2, 5, 9. Mulai dari Terkunci. Menekan 2 berpindah ke Satu digit benar; menekan 5 dari sana berpindah ke Dua digit benar; menekan 9 dari sana berpindah ke Terbuka.
- Tombol lain dari setiap keadaan tunggu akan kembali ke Terkunci: diagram menunjukkan panah-panah itu juga, dan diagram yang mengabaikannya memiliki celah. Apa yang terjadi jika 2 ditekan saat Terbuka? Jika tidak ada panah yang menyatakan, desain belum memutuskan.
- Itulah fungsi diagram: setiap keadaan harus menyatakan apa yang terjadi pada setiap peristiwa, sehingga transisi yang hilang ditemukan di atas kertas dan bukan oleh pelanggan.
Diagram transisi keadaan membuat transisi yang hilang atau tidak ditangani mudah dikenali, karena setiap keadaan dan peristiwa di antaranya tersaji.
Melihat setiap keadaan dan peristiwa mengungkap kasus yang belum ditangani — mis., koin kedua tak terduga pada mesin penjual otomatis.
Memilih alat
- Untuk menunjukkan bagaimana program dibagi menjadi modul dan apa yang dilintaskan di antaranya: sebuah diagram struktur.
- Untuk menunjukkan bagaimana sistem berperilaku seiring waktu sebagai respons terhadap peristiwa, terutama mesin atau antarmuka dengan mode: sebuah diagram transisi keadaan.
- Untuk menunjukkan logika bertahap dari satu algoritma: flowchart atau pseudocode. Sebutkan mana dan mengapa.
Pasangkan setiap alat desain dengan apa yang ditunjukkannya.
Setiap alat melihat desain dengan cara berbeda — struktur (modul), perilaku (keadaan), aliran (flowchart) atau langkah-langkah (pseudocode).
Pengontrol lampu lalu lintas harus merespons timer dan tombol pejalan kaki. Alat desain mana yang mendokumentasikan perilakunya dengan terbaik?
Merah, merah-kuning, hijau, kuning adalah keadaan; timer dan tombol adalah peristiwa. Bagan struktur akan menunjukkan modul, bukan perilaku.
⟦⟧ Nilai yang sering terlewat
- Diagram struktur bukan flowchart. Diagram ini menunjukkan hierarki dan parameter, bukan urutan keputusan di dalam modul.
- Beri label setiap panah dengan nama parameter atau hasil dan arahkan ke arah yang tepat. Panah tanpa label tidak bermakna apa-apa.
- Keadaan adalah kondisi yang sedang dijalani sistem, menunggu; peristiwa adalah apa yang terjadi padanya. "Tekan 5" adalah peristiwa, bukan keadaan.
- Header pseudocode harus sesuai dengan diagram: parameter yang sama, nilai kembalian yang sama, urutan pemanggilan yang sama.
Anda telah memahaminya
- a diagram struktur menunjukkan dekomposisi top-down ke dalam modul, dengan parameter yang turun dan hasil yang naik melalui panah berlabel
- baca header pseudocode darinya: panah ke bawah adalah daftar parameter, panah ke atas menjadikannya
FUNCTION … RETURNS, dan modul utama memanggil dari kiri ke kanan - a diagram transisi keadaan menunjukkan keadaan dan peristiwa yang memindahkan antar keadaan, dan menampakkan transisi yang belum diputuskan
- dekomposisi → diagram struktur; perilaku → diagram transisi keadaan; logika satu algoritma → flowchart atau pseudocode