Jika ada satu hal yang dapat diambil dari karir TI saya selama 50 tahun, hal itu adalah selalu menggunakan alat yang tepat untuk setiap skenario

Ayah saya adalah seorang tukang kayu/pembangun dan orang Australia mempunyai ungkapan kuno yang menghina palu — palu disebut ‘obeng yankee’, yang bahkan sekrup pun diperlakukan seperti paku.

Ini adalah kasus klasik dalam menggunakan satu alat untuk setiap pekerjaan meskipun ada alat yang lebih baik. (Alat merek 'Yankee' berasal dari masa Perang Dunia I, biasanya berupa alat jenis obeng dengan mata bor yang dapat diganti dan biasanya dengan aksi ratchet dorong-tarik).

Beberapa Retrospeksi

Pertama kali mempelajari pemrograman FORTAN2 di perkemahan siswa sains sekolah pada tahun 1966, saya melanjutkan ke gelar sains umum termasuk pemrograman metode numerik analisis data pada tahun pertama. Mata pelajaran utama tahun ketiga saya adalah Ilmu Komputer (1969) termasuk 5 atau 6 berbeda bahasa, mulai dari assembler, hingga fungsional hingga berorientasi objek ("SIMULA67" — pra-prosesor ekstensi simulasi hingga ALGOL60). Tugas/proyek berkisar dari pemodelan biasa hingga 3D dengan plot perspektif, hingga simulasi sirkuit digital. Sub mata pelajarannya adalah Fisika dan Matematika Murni.

Saya kemudian mengambil satu tahun GAP untuk mengerjakan sistem otomasi laboratorium biokimia.

Saya kembali ke universitas untuk penelitian pascasarjana di bidang Manajemen Basis Data pada komputer mini, kemudian menggunakannya untuk penelitian pemrosesan logika deduktif.

Meskipun orientasi komputasi saya bersifat teknis, saya dapat melihat bahwa masa depan terbaik saya adalah di dunia komersial, jadi saya mengambil kursus sekolah musim panas di bidang Pengantar Akuntansi (yang saya tingkatkan dengan menjadi bendahara di sebuah organisasi amal tempat saya terlibat, kemudian kemudian bendahara gerejaku).

Menjinakkan Harimau — Persyaratan yang Tidak Jelas atau Fleksibilitas Pengguna Akhir?

Proyek yang ingin saya fokuskan adalah pembangunan kembali saluran pembuangan limbah kota pada tahun 1980. Kontraktor Utama menangani teknik sipil, sub-kontraktor elektronik membangun sistem kontrol — meskipun mereka memiliki pengalaman mikroprosesor, mereka melakukan sub-kontrak sistem sistem manajemen komputer untuk majikan saya.

Dari Real-time hingga Pemrosesan Data

Ketika saya tiba, saya menemukan beberapa insinyur sedang mengutak-atik proyek. Namun saya dapat segera melihat bahwa desain proyek memerlukan Dekomposisi Fungsional Kronologis (alat yang tepat untuk pekerjaan pada tahap tersebut). Ya, terdapat akuisisi data waktu nyata dan kontrol proses serta tampilan status grafik waktu nyata. Namun selain itu, waktu nyata (real-time) bukanlah sebuah faktor – terdapat log alarm, laporan shift (8 jam), laporan harian dan bulanan yang dilengkapi dengan entri data manual (biasanya hasil analisis kimia). Jadi saya membuat Diagram Aliran Data berikut.

Kamus Data yang Dapat Dikonfigurasi Secara Fleksibel

Sistem pembangkit memiliki 700 sinyal alarm biner dan 150 input nilai digital (konversi analog-ke-digital). Tak satu pun dari ini teridentifikasi, namun dapat dikonfigurasi sepenuhnya melalui panel saklar elektronik. Entri data manual diperlukan, namun sekali lagi tidak ada ketentuan spesifik yang ditetapkan. Waktu pelaporan juga ditentukan, namun tidak ada spesifikasi mengenai berapa banyak laporan atau data apa yang harus dilaporkan. Isi dan tata letak laporan harus 'dapat dikonfigurasi oleh pengguna akhir'.

Manajemen Data Fleksibel — Meta-Data yang Menggambarkan Sendiri

Perusahaan saya baru saja melakukan pelatihan metodologi kamus data PRIDE (sudah lama berlalu dan saya tidak dapat menemukan jejaknya di internet). Jadi saya memutuskan untuk membangun sub-sistem pengelolaan data yang dibangun berdasarkan kamus data. Elemen data ditentukan berdasarkan sumbernya (jenis dan nomor masukan, atau entri manual), label untuk layar dan laporan (pendek dan panjang), jenis data penyimpanan, dan format keluaran. Catatan file didefinisikan sebagai sekumpulan elemen data, dan laporan juga didefinisikan sebagai sekumpulan elemen bersama dengan indeks ke salah satu algoritma manipulasi data yang telah ditentukan sebelumnya (rata-rata, mean, dll).

Program entri data berbasis tabel generik dikembangkan yang memetakan definisi file/catatan ke layar. Jadi ini menyediakan fungsionalitas untuk entri data manual dari jenis data hasil pengujian dan parameter kontrol proses. Demikian pula, pembuat laporan umum mengambil item data dari tabel dasarnya, menerapkan algoritme peringkasan apa pun, dan membuat baris laporan. Langkah yang jelas(?) adalah mendefinisikan tabel metadata yang menggambarkan catatan kamus data aplikasi. Jadi konfigurasi tabel dan laporan sistem dibangun dari 'bootstraps'.

Demikian pula, pengendalian proses digerakkan oleh tabel. 32 sinyal keluaran berasal dari sinyal masukan sebagaimana dikodekan dalam catatan kendali prosesnya, bersama dengan nilai kendali parameter manual, dimasukkan dan dipelihara melalui program pemeliharaan data umum. Algoritme umpan balik kontrol proses yang umum dan berdasarkan parameter digunakan — terdapat 4 output kontrol proses untuk masing-masing dari 8 pencerna lumpur, misalnya. suhu dalam pencerna lumpur harus dijaga dalam kisaran yang sempit untuk menjaga bakteri anaerob tetap hidup, dan suhu pertukaran panas dikontrol. Demikian pula, aliran pompa daur ulang disesuaikan dengan tingkat lumpur di tangki pencerna.

Bahasa Markup Tampilan Grafis (Dasbor).

Ada tiga tampilan grafis real-time yang diminta secara detail, namun persyaratannya juga menginginkan 'desain tampilan yang dapat dikonfigurasi pengguna untuk penggunaan di masa mendatang'. Perusahaan teknik telah memilih terminal tampilan grafis RAMTEK yang menggunakan bahasa 'mark-up' untuk menggambar desain grafis (ini terjadi 13 tahun sebelum HTML). Mark-up dikirim ke terminal sebagai aliran data ASCII. Misalnya:-

[COLOR RED][RECT <x-value>,<y-value>,<width value>,<height value>]

Semua <values> dalam piksel. (Maafkan saya RAMTEK jika saya tidak mengingat sintaks Anda dengan benar). Jadi sebenarnya cukup masuk akal untuk membuat tata letak yang diperlukan pada kertas grafik dan mengkodekan urutan gambar yang diperlukan. Namun grafik yang kami perlukan harus menampilkan data dinamis secara “real-time”. Akan ada pembacaan meter, sinyal merah/kuning/hijau, sakelar/katup penghenti yang menunjukkan “buka/tertutup”, panah dengan arah yang dapat diubah, dll. — pikirkan “Dasbor”.

Solusi saya adalah memperluas bahasa RAMTEK dengan tiga konstruksi sederhana.

  • Pertama, nilai dapat diganti dengan variabel bernama yang mengacu pada nilai dalam aliran data dalam memori. Ada dua jenis variabel, boolean (ON/OFF) dan bilangan bulat, yang direpresentasikan sebagai “Bnnn” dan “Innn”.
  • Kedua, label dapat diberikan pada pernyataan apa pun — misalnya. Lnn:.
  • Ketiga, konstruksi pengujian variabel sederhana didefinisikan dengan operator boolean dan logika sederhana, yang jika pengujian “benar” mengarahkan “eksekusi” ke label tertentu (mis. [IF B123 ON L456].

Dalam bahasa sekarang, ini dikenal sebagai “templating” (misalnya PHP c.1995). Implementasinya adalah program penerjemah kami sendiri yang memproses file template, mengganti variabel dengan nilai real-time, melakukan pengujian dan percabangan, dan terus mengeluarkan aliran perintah gambar ke terminal. Akhir dari file templat hanya diulang kembali ke awal. Jadi penyegaran layar “waktu nyata” ditentukan oleh seberapa cepat putaran interpretasi ini dijalankan.

Tiga tampilan tersebut adalah: -

  1. Aliran hidrolik — aliran, level tangki, status pompa;
  2. Pemantauan pencerna lumpur — aliran, suhu, pengoperasian pompa daur ulang, dan ketinggian tangki;

3. Pemantauan pembangkitan listrik (ditenagai oleh metana dari pencerna lumpur) yang disalurkan kembali ke jaringan listrik kota — status pemutus arus, voltase, penggunaan daya di dalam pembangkit, kondisi saklar.

Standar, Kebijakan, Prosedur, Templat, Pustaka, Kamus Data, dan Alat

Saya memandang semua ini sebagai 'alat' untuk berbagai tahapan dalam SDLC. Banyak di antaranya kini dapat ditemukan dalam metodologi manajemen terstruktur seperti PRINCE2. Lainnya yang lebih bersifat teknis kini tersedia dalam IDE dan arsitektur perangkat lunak khusus.

Namun keterampilan utama Insinyur Perangkat Lunak terbaik adalah penciptaan alat dan bahasa khusus aplikasi dengan tata bahasanya sendiri. Kamus data dan alat entri dan pelaporan data umum, serta templat bahasa mark-up, dalam proyek ini memberikan contoh pengembangan alat yang diperlukan pada tahun-tahun awal sebelum alat tersebut tersedia secara komersial.

Catatan Kaki Teknis

Sistem ini dikembangkan pada PDP-11 di bawah sistem operasi real-time RSX11M. Partisi memori bersama RSX11 digunakan sebagai wadah inti untuk data masukan pabrik, sebelum membuat rata-rata dan menulis pada interval ke log per jam.

Bahasa pemrograman Pascal dengan beberapa ekstensi pemrograman sistem digunakan. Hanya file akses serial dan langsung yang didukung.

Dengan proyek yang dilaksanakan pada tahun 1980, sebelum adanya Komputer Pribadi dan pengolah kata, maka semua dokumentasi berupa diagram yang digambar tangan dan panjang.

Saya keluar setelah 6 bulan menyelesaikan pengembangan perangkat lunak. Rancangan sistem memerlukan konfigurasi ekstensif oleh sub-kontraktor elektronik Sistem Kontrol yang bekerja sama dengan personel pabrik. Saya yakin Kontraktor Utama mengalami kesulitan keuangan, sehingga pelaksanaan akhirnya mengalami penundaan yang lama.

Want to Connect?
I have a blog, “A Software Engineering Retrospective” which recounts some more interesting projects in my career.