Pemilihan proyek

Memilih di antara alat CLI, pipeline data, atau layanan web JSON sebagai proyek penutup.

Daftar isi

Modul penutup ini memandu pengerjaan satu proyek utuh, dan keputusan pertamanya bersifat teknis sekaligus menentukan: proyek apa yang dibangun. Topik ini membandingkan tiga kandidat, yaitu alat command line rekap nilai ujian, pipeline data sensor, dan layanan web JSON untuk catatan, berdasarkan tiga kriteria yang dapat dinilai secara objektif. Selanjutnya ditetapkan proyek terpilih beserta alasannya, cakupan minimum yang mengunci masukan, keluaran, dan batasan, serta toolchain yang digunakan hingga proyek selesai. Setelah topik ini selesai, keputusan yang sudah terkunci tidak perlu dipersoalkan lagi, sehingga energi pengerjaan habis untuk implementasi, bukan untuk berpindah-pindah ide.

Tiga kandidat proyek#

Kandidat pertama adalah alat command line pengolah rekap nilai ujian. Program ini menyimpan data kelas di dalam kodenya sendiri, yaitu daftar siswa beserta nilai untuk setiap jenis evaluasi, kemudian menghitung rata-rata per evaluasi dan rata-rata keseluruhan, lalu mencetak rekap berupa laporan teks ke terminal. Tidak ada berkas data, jaringan, atau perangkat lain yang terlibat, sehingga seluruh perilaku program terletak pada fungsi-fungsi murni yang mudah diperiksa.

Kandidat kedua adalah pipeline data sensor, yaitu rangkaian tahap pengolahan yang mengalirkan data dari masukan ke keluaran. Contohnya berupa rangkaian hasil bacaan sensor suhu yang disaring untuk menghapus nilai yang janggal, dihitung rata-ratanya per periode, lalu diringkas menjadi laporan singkat. Data juga ditanam di dalam program sehingga tidak ada persiapan infrastruktur, tetapi bentuk datanya cenderung seragam, misalnya daftar pasangan waktu dan suhu.

Kandidat ketiga adalah layanan web JSON untuk mengelola catatan. Program ini menjalankan server HTTP, menyediakan beberapa endpoint untuk melihat, menambah, dan menghapus catatan, serta mengirim dan menerima data dalam bentuk JSON. Kandidat ini paling dekat dengan aplikasi nyata, tetapi melibatkan server, penguraian JSON, dan perilaku jaringan yang tidak sepenuhnya deterministik, misalnya nomor port dan catatan log.

Kriteria pemilihan#

Kriteria pertama adalah terukur, artinya kemajuan pengerjaan dapat dibagi menjadi titik-titik kecil yang masing-masing dapat diverifikasi dengan bukti nyata, misalnya program yang lolos kompilasi atau keluaran teks yang tetap. Proyek yang terukur memudahkan pemeriksaan pada setiap tahap, karena setiap titik pemeriksaan memiliki keluaran yang dapat dibandingkan antara kondisi sebelum dan sesudah perubahan. Proyek yang kemajuannya hanya terasa, misalnya “server sudah berjalan”, menyulitkan penilaian apakah sebuah tahap benar-benar selesai.

Kriteria kedua adalah bermakna, artinya hasil akhirnya berupa sesuatu yang dapat dibaca dan digunakan, bukan sekadar demonstrasi mekanisme. Rekap nilai ujian berupa teks di terminal dapat dibaca manusia dan angkanya dapat dihitung ulang, sehingga kebenaran program dapat diuji tanpa alat bantu. Kriteria ketiga adalah sesuai isi jalur, artinya proyek memanfaatkan bahan yang sudah dipelajari, yaitu koleksi dan transformasinya, fungsi tingkat tinggi, ADT, pencocokan pola, serta penanganan kegagalan dengan Option dan Either. Proyek penutup yang baik melatih bahan tersebut secara terpadu dan hanya menambah sedikit hal baru.

Perbandingan dan keputusan#

Ketiga kandidat dinilai terhadap ketiga kriteria pada tabel berikut.

KriteriaAlat CLI rekap nilaiPipeline data sensorLayanan web JSON
Terukurkeluaran teks yang tetap pada setiap tahapagregasi per periode dapat diperiksaperlu server dan klien uji terlebih dahulu
Bermaknalaporan teks yang dapat dibaca dan dihitung ulangringkasan suhu yang dapat dibacaAPI nyata, tetapi buktinya memerlukan permintaan eksternal
Sesuai isi jalurkoleksi, ADT, Option, Either, pencocokan polaterutama transformasi koleksitambahan besar: server, JSON, pemrograman asinkron
Kebutuhan infrastruktursatu berkas, tanpa dependensisatu berkas, tanpa dependensidependensi server dan penguraian JSON

Keputusannya jatuh pada alat command line pengolah rekap nilai ujian. Alasannya bersumber dari tabel di atas: keluaran teks yang deterministik membuat setiap titik pemeriksaan dapat diverifikasi tanpa peralatan tambahan, laporan yang dihasilkan benar-benar dapat dibaca dan dihitung ulang, dan bentuk datanya cukup berstruktur untuk menggunakan ADT serta penanganan kegagalan secara wajar. Pipeline data sensor layak sebagai cadangan karena memenuhi dua kriteria pertama, tetapi bentuk datanya yang sederhana memberikan latihan pemodelan yang lebih sedikit. Layanan web JSON sudah dibahas pada modul tersendiri dan menuntut infrastruktur yang mengaburkan titik pemeriksaan, sehingga kurang cocok sebagai proyek penutup yang fokusnya pada kualitas pengerjaan.

Cakupan minimum#

Cakupan minimum menegaskan apa yang dikerjakan dan, sama pentingnya, apa yang tidak. Batas ini ditetapkan sebelum baris pertama ditulis agar setiap keputusan selanjutnya dapat diuji dengan satu pertanyaan, yaitu apakah keputusan itu masih berada di dalam cakupan.

  • Masukan: data kelas yang tertanam dalam program, yaitu tiga siswa dengan nilai untuk tiga jenis evaluasi, misalnya kuis, tengah semester, dan akhir semester.
  • Pengolahan: pemeriksaan bahwa setiap nilai berada pada jangkauan 0 sampai 100, perhitungan rata-rata per jenis evaluasi, dan perhitungan rata-rata keseluruhan kelas.
  • Keluaran: laporan rekap berupa teks yang dicetak ke terminal, mencantumkan data kelas dan hasil pengolahannya.
  • Batasan: satu berkas Scala, tanpa dependensi eksternal, tanpa berkas data, dan tanpa jaringan, sehingga keluarannya deterministik.

Toolchain proyek#

Toolchain proyek sama dengan yang digunakan sepanjang jalur ini, yaitu scala-cli dengan satu berkas sumber dan tanpa berkas proyek tambahan. Program dijalankan dengan satu perintah scala-cli run nama.scala, dan tidak ada direktif dependensi pada berkasnya. Versi alat dapat diperiksa sebagai bagian dari persiapan proyek.

bash
# memeriksa versi scala-cli dan versi Scala bawaannya
scala-cli version
text Keluaran
Scala CLI version: 1.18.0
Scala version (default): 3.9.0

Keluaran di atas menunjukkan scala-cli 1.18.0 dengan Scala 3.9.0 sebagai versi bawaan, dan kedua nilai itu digunakan sampai proyek selesai. Kombinasi ini tidak memerlukan unduhan tambahan karena compiler sudah tersedia, sehingga setiap perintah scala-cli run hanya berfokus pada berkas yang sedang dikerjakan.

Ringkasan#

  • Proyek penutup jalur ini adalah alat command line pengolah rekap nilai ujian, dipilih daripada pipeline data sensor dan layanan web JSON.
  • Kriteria pemilihannya adalah terukur, bermakna, dan sesuai isi jalur, dan ketiganya dipenuhi oleh keluaran teks yang deterministik serta bentuk data yang menggunakan ADT dan Either.
  • Cakupan minimumnya memuat data tertanam tiga siswa, pemeriksaan jangkauan nilai 0 sampai 100, rata-rata per evaluasi dan keseluruhan, serta laporan teks ke terminal.
  • Toolchain proyek adalah scala-cli 1.18.0 dengan Scala 3.9.0, satu berkas sumber, dan tanpa dependensi eksternal.

Referensi#