Pemilihan Proyek

Penentuan bentuk proyek akhir dan lingkup mesin konfigurasi tersemat.

Daftar isi

Topik ini menetapkan bentuk proyek akhir modul Pengerjaan Proyek beserta lingkup fungsionalnya. Dua kandidat proyek dibandingkan menurut kriteria yang sama, satu kandidat dipilih beserta alasannya, dan komposisi berkas proyek ditetapkan. Setelah topik ini dibaca, batas lingkup proyek dan peran setiap berkasnya sudah pasti, yaitu data konfigurasi, inti validasi, demonstrasi pemakaian, dan pengujian.

Dua kandidat proyek#

Kandidat pertama adalah mesin konfigurasi tersemat untuk aplikasi host Pencatat, yaitu aplikasi induk catatan teks yang membawa penerjemah Lua di dalam prosesnya. Host menyediakan penyimpanan catatan dan jendela aplikasi, sedangkan lapisan skrip menyediakan aturan yang mengatur perilaku tampilan dan penyimpanan, misalnya nama tema, warna, dan batas panjang catatan. Tugas proyek adalah membangun lapisan skrip tersebut beserta seluruh penopangnya, mulai dari data konfigurasi, mesin validasi, demonstrasi pemakaian, sampai pengujian.

Kandidat kedua adalah gim kecil tebak angka yang berjalan pada terminal, yaitu permainan dengan beberapa ronde tebakan, skor, dan aturan yang berulang setiap rondenya. Gim semacam ini menyentuh pengelolaan masukan dan keadaan permainan, tetapi sebagian besar fungsinya berupa alur kendali sederhana. Kedua kandidat sama-sama dapat dijalankan tanpa pustaka tambahan, sehingga pemilihan memerlukan kriteria yang lebih rinci. Perbandingan menurut kriteria yang sama diperlihatkan pada tabel berikut.

KriteriaMesin konfigurasi tersematGim tebak angka
Lingkungan eksekusipenerjemah Lua dan terminal sajapenerjemah Lua dan terminal saja
Cakupan siklus perangkat lunakdata, validasi, error, pengujian, dan dokumentasi menyatu pada satu komponen intisebagian besar fokusnya pada alur permainan
Bentuk hasil yang dapat diperiksatable konfigurasi final beserta daftar pelanggaranskor dan riwayat ronde
Kaitan dengan tema jalurmemperagakan penyematan Lua pada aplikasi hosttidak menyentuh penyematan

Kriteria pemilihan#

Kriteria pertama menuntut agar seluruh proyek dapat dieksekusi pada lingkungan latihan murni Lua, yaitu penerjemah Lua dan terminal tanpa pustaka tambahan apa pun. Proyek yang memenuhi kriteria ini dapat dijalankan ulang di mana saja, dan setiap potongan kode pada modul ini dieksekusi sungguhan dengan keluaran aslinya. Sisi host C dalam proyek cukup dijelaskan pada level model dan antarmuka, karena membangun host C lengkap memerlukan kepala pustaka Lua yang tidak tersedia di lingkungan latihan.

Kriteria kedua menuntut lingkup yang kecil tetapi menutup seluruh siklus perangkat lunak, yaitu penyusunan data, validasi, penanganan error, pengujian, dan dokumentasi. Lingkup kecil menjaga perhatian tetap pada mekanisme, sedangkan cakupan penuh membuat setiap tahap siklus benar-benar dikerjakan dan bukan hanya dibicarakan. Proyek yang terlalu besar menyisakan tahap akhir yang dikerjakan asal selesai, sedangkan proyek yang terlalu kecil tidak sempat menyentuh penanganan error dan pengujian. Dua kandidat diuji terhadap kedua kriteria ini, dan kandidat gim tebak angka mulai terpaut pada cakupan siklusnya karena validasi dan dokumentasinya berdiri terpisah dari inti permainan.

Keputusan dan lingkup fungsional#

Kandidat yang dipilih adalah mesin konfigurasi tersemat. Keputusan ini mengikuti kedua kriteria secara langsung, karena mesin konfigurasi berjalan sepenuhnya dengan penerjemah Lua dan siklusnya menutup data hingga dokumentasi. Lingkup fungsional yang dijanjikan terdiri atas empat kelompok aturan berikut.

  • tema tampilan, yaitu nama tema, warna, dan ukuran teks antarmuka
  • batas panjang catatan, yaitu jumlah karakter maksimum untuk satu catatan
  • pola nama berkas, yaitu pola pencocokan Lua yang menentukan nama berkas catatan yang sah
  • label antarmuka, yaitu teks label yang ditampilkan aplikasi pada elemen antarmukanya

Bentuk data kandidat yang menjadi sasaran validasi mesin diperlihatkan pada potongan berikut. Kandidat berbentuk table bersarang yang mengikuti kelompok aturan di atas, dan mesin membandingkan setiap kuncinya terhadap skema. Data semacam ini menjadi sasaran seluruh pengolahan pada modul ini.

lua Contoh: bentuk data kandidat konfigurasi
-- bentuk data kandidat yang menjadi sasaran validasi mesin
local kandidat = {
  tema = {
    nama = "terang",
    warna = "#fafafa",
    ukuran_teks = 16,
  },
  aturan = {
    batas_panjang = 2500,
    pola_berkas = "catatan%d+",
  },
  konten = {
    label = "Catatan pribadi",
  },
}

-- pencetakan dilakukan satu per satu agar urutannya deterministik
print("tema.nama = " .. kandidat.tema.nama)
print("tema.warna = " .. kandidat.tema.warna)
print("tema.ukuran_teks = " .. tostring(kandidat.tema.ukuran_teks))
print("aturan.batas_panjang = " .. tostring(kandidat.aturan.batas_panjang))
print("aturan.pola_berkas = " .. kandidat.aturan.pola_berkas)
print("konten.label = " .. kandidat.konten.label)
text Keluaran
tema.nama = terang
tema.warna = #fafafa
tema.ukuran_teks = 16
aturan.batas_panjang = 2500
aturan.pola_berkas = catatan%d+
konten.label = Catatan pribadi

Pola catatan%d+ menerima nama berkas yang diawali kata catatan dan diakhiri deret angka, misalnya catatan1 dan catatan42. Host Pencatat menggunakan pola ini setiap kali menyimpan catatan baru, sehingga nama berkas yang tidak cocok dapat ditolak sebelum berkasnya ditulis. Nilai kandidat yang melanggar aturan, misalnya ukuran teks di bawah 8, diganti nilai bawaannya oleh mesin, sehingga host selalu menerima konfigurasi final yang lengkap. Keempat kelompok aturan di atas menjadi batas lingkup untuk seluruh modul.

Komposisi komponen proyek#

Proyek terdiri atas empat berkas Lua dengan peran sebagai berikut.

  • konfigurasi.lua menyimpan data konfigurasi dan konten berbentuk table, yaitu tema, aturan, dan label antarmuka
  • mesin.lua memuat validasi berbasis skema, penerapan nilai bawaan, dan resolusi konfigurasi final
  • demo.lua memperagakan pemakaian mesin pada kandidat konfigurasi
  • uji-mesin.lua berisi test harness, yaitu kerangka pengujian beserta kasus ujinya

Pembagian peran ini menjaga pemisahan data, inti mesin, demonstrasi, dan pengujian. Mesin dibangun secara bertahap, sehingga berkas yang sama dapat muncul di beberapa topik dengan kemampuan yang bertambah, dan setiap topik menyertakan salinan berkas pada versi yang sedang dibahasnya.

Peran lapisan skrip pada aplikasi tersemat layak ditegaskan di sini. Lapisan skrip adalah tempat pengguna menyesuaikan perilaku aplikasi tanpa mengubah kode host, karena host membaca hasil pengolahan skrip pada saat aplikasi berjalan. Mesin konfigurasi memperagakan peran tersebut dengan cara yang paling sederhana, yaitu mengubah table data menjadi konfigurasi final yang sah. Komponen lain pada proyek, mulai dari berkas data sampai pengujian, hanyalah penopang bagi peran itu.

Ringkasan#

  • Mesin konfigurasi tersemat dipilih karena memenuhi kedua kriteria, yaitu eksekusi murni Lua dan cakupan siklus perangkat lunak dalam lingkup kecil.
  • Lingkup fungsional mencakup empat kelompok aturan, yaitu tema tampilan, batas panjang catatan, pola nama berkas, dan label antarmuka.
  • Proyek terdiri atas empat berkas, yaitu konfigurasi.lua, mesin.lua, demo.lua, dan uji-mesin.lua.
  • Nilai kandidat yang melanggar aturan diganti nilai bawaannya, sehingga host selalu menerima konfigurasi final yang lengkap.

Referensi#