Pemilihan Proyek

Memilih di antara batch statement, aging piutang, atau rekonsiliasi, beserta kriteria pemilihannya.

Daftar isi

Modul ini menutup jalur dengan proyek terpandu yang dimulai bukan dari menulis kode, melainkan dari memilih proyek yang akan dikerjakan sampai selesai. Topik ini membandingkan tiga kandidat proyek batch, yaitu pencetakan statement pelanggan, laporan aging piutang, dan rekonsiliasi dua berkas, kemudian menetapkan kriteria pemilihan yang berpijak pada kemampuan yang telah dipelajari sepanjang jalur. Pada akhir topik, satu kandidat dinyatakan terpilih beserta alasannya, sehingga rancangan dan pembangunan pada modul ini memiliki sasaran yang pasti.

Tiga kandidat proyek batch#

Program batch mengolah sekumpulan rekaman dari awal sampai akhir berkas tanpa interaksi pengguna, dan hampir setiap sistem bisnis memuat pekerjaan semacam itu. Ketiga kandidat berikut dipilih karena sama-sama berukuran satu program, menggunakan berkas sekuensial, dan menghasilkan laporan yang dapat dibaca langsung. Perbandingannya dirangkum pada tabel berikut.

AspekPencetakan statementAging piutangRekonsiliasi
TujuanMencetak laporan periodik per pelanggan dari berkas transaksi terurutMengelompokkan nilai piutang menurut umur fakturMencocokkan dua berkas dan melaporkan selisihnya
Berkas masukanTransaksi terurut menurut kode pelangganFaktur piutang berisi tanggal dan nilaiMaster dan transaksi terurut berkunci sama
KeluaranSatu blok laporan per pelanggan dengan subtotalRekap nilai per bucket umur dan total kontrolDaftar rekaman tak berpasangan dan selisih nilai
Keterampilan yang dilatihPemisah kontrol bertingkat dan pencetakan headerAritmetika tanggal, tabel, picture hasil edit, total kontrolPencocokan dua berkas dan penanganan rekaman tak berpasangan
Risiko utamaTata letak halaman menuntut ketelitian tinggiSelisih kalender keliru bila umur dihitung secara manualBanyak percabangan kecil yang rawan keliru

Kandidat pertama, pencetakan statement, menghasilkan laporan periodik untuk setiap pelanggan dari berkas transaksi yang terurut menurut kode pelanggan. Setiap pergantian kode memicu pemisah kontrol, yaitu pencetakan subtotal dan pembuka blok laporan baru. Kandidat ini melatih pemisah kontrol bertingkat secara intensif, tetapi aritmetikanya terbatas pada penjumlahan, sedangkan tata letak per pelanggan menuntut ketelitian tinggi.

Aging piutang mengelompokkan nilai piutang menurut umur faktur. Umur dihitung dari selisih tanggal proses dan tanggal faktur, kemudian setiap faktur diakumulasikan ke bucket umur yang sesuai, yaitu kelompok rentang umur seperti 0 sampai 30 hari. Kandidat ini menggunakan aritmetika tanggal, percabangan dengan banyak cabang, tabel akumulasi, dan picture hasil edit sekaligus, sehingga hampir seluruh kemampuan jalur ini terpakai pada satu program.

Rekonsiliasi mencocokkan berkas master dengan berkas transaksi yang sama-sama terurut menurut kunci, lalu melaporkan rekaman yang tidak berpasangan atau bernilai berbeda. Kandidat ini kaya logika pencocokan, tetapi aritmetikanya tipis. Teknik intinya juga telah dipraktikkan pada modul Pemrograman Batch, sehingga nilainya lebih tepat dianggap penguatan daripada proyek baru.

Kriteria pemilihan#

Kriteria pemilihan harus dapat diuji terhadap setiap kandidat tanpa penilaian yang subjektif. Empat kriteria berikut digunakan sebagai tolok ukur.

  • Data masukannya realistis tetapi netral, yaitu berisi tanggal, nama singkat, dan nilai desimal tanpa menyentuh ranah komersial tertentu.
  • Aritmetika desimal muncul secara alami dari masalahnya, bukan ditempelkan, sehingga verb ADD dan COMPUTE dilatih pada konteks yang wajar.
  • Keluarannya dapat diperiksa secara visual, artinya setiap angka laporan dapat dihitung ulang dari berkas masukan tanpa alat tambahan.
  • Lingkupnya satu program berukuran 150 sampai 300 baris, cukup besar untuk menyatukan banyak kemampuan tetapi masih selesai dalam satu modul.

Ketiga kandidat memenuhi kriteria data netral dan keluaran yang dapat diperiksa secara visual, sehingga pembedanya terletak pada dua kriteria lain. Pencetakan statement kaya pemisah kontrol tetapi miskin aritmetika desimal, sedangkan rekonsiliasi kaya pencocokan tetapi juga miskin aritmetika. Aging piutang memenuhi kriteria aritmetika secara paling lengkap karena umur faktur wajib dihitung dari selisih tanggal, dan nilai piutang wajib dijumlahkan sampai tingkat sen.

Keputusan dan alasannya#

Kandidat yang terpilih adalah laporan aging piutang. Pilihan itu bertumpu pada tiga alasan. Pertama, selisih tanggal memaksa penggunaan fungsi tanggal dan aritmetika yang eksak sampai tingkat hari. Kedua, empat bucket umur menimbulkan kebutuhan tabel akumulasi dan percabangan EVALUATE yang sungguh-sungguh, bukan sekadar tempelan. Ketiga, laporannya berisi angka yang dapat dihitung ulang langsung dari berkas masukan, sehingga setiap titik pemeriksaan pada tahap pembangunan memiliki pembanding yang pasti.

Dua kandidat lain tetap layak dipilih pada kondisi tertentu. Pencetakan statement lebih tepat apabila sasaran latihan adalah pemisah kontrol bertingkat dan tata letak laporan per kelompok, sedangkan rekonsiliasi lebih tepat apabila sasaran latihannya adalah ketahanan logika terhadap data yang tidak berpasangan. Bagi modul ini, aging piutang memenuhi keempat kriteria secara paling lengkap.

Rancangan dimulai dari rekaman masukannya. Bentuk awal rekaman faktur piutang ditetapkan sebagai berikut, yaitu field berlebar tetap dengan dua digit sen pada nilai pokoknya.

cobol Desain awal rekaman faktur piutang
      * tidak-dijalankan
       01  REK-PIUTANG.
           05  RP-FAKTUR        PIC X(6).
           05  FILLER           PIC X.
           05  RP-NAMA          PIC X(8).
           05  FILLER           PIC X.
           05  RP-TGL           PIC 9(8).
           05  FILLER           PIC X.
           05  RP-NILAI         PIC 9(7)V99.

Potongan di atas menetapkan enam karakter untuk nomor faktur, delapan karakter untuk nama pelanggan singkat, delapan digit untuk tanggal faktur, dan sembilan digit untuk nilai pokok. Klausa V99 menyatakan dua digit terakhir sebagai bagian sen, sedangkan tiga field FILLER menampung spasi pemisah agar posisi field tetap terbaca. Desain ini menjadi dasar definisi lengkap pada tahap perancangan.

Kesalahan umum#

  • Memilih kandidat karena kelihatannya mengesankan. Lingkup membengkak melampaui 300 baris dan proyek tidak selesai. Potong lingkupnya sampai satu berkas masukan dan satu laporan sebelum rancangan dimulai.
  • Menggunakan data contoh yang terlalu rapi. Nilai yang selalu bulat menyembunyikan kesalahan pembulatan sen. Sertakan nilai dengan digit sen nonnol pada berkas uji.
  • Menetapkan keluaran yang tidak dapat dibandingkan. Laporan dengan tanggal berjalan menghasilkan angka berbeda pada setiap hari eksekusi. Tetapkan tanggal proses konstan sejak kriteria disusun.

Ringkasan#

  • Tiga kandidat proyek dibandingkan dari tujuan, berkas masukan, keluaran, keterampilan yang dilatih, dan risikonya.
  • Kriteria pemilihannya mencakup data netral, aritmetika desimal alami, keluaran yang dapat diperiksa secara visual, dan lingkup satu program 150 sampai 300 baris.
  • Laporan aging piutang terpilih karena menggunakan aritmetika tanggal, tabel, EVALUATE, picture hasil edit, dan total kontrol sekaligus.
  • Pencetakan statement dan rekonsiliasi tetap menjadi pilihan tepat apabila sasaran latihannya adalah pemisah kontrol atau pencocokan berkas.

Referensi#