Aspek Rekayasa Perangkat Lunak dalam Media Pembelajaran

“Waduh kok softwarenya nggak mau jalan …”
“Lho kok proses instalasinya sulit sekali …”

Itu mungkin keluhan yang sering kita dengar ketika kita menggunakan sebuah software atau perangkat lunak di komputer kita. Dan bukan sesuatu yang mustahil, kemungkinan besar terjadi juga di perangkat lunak media pembelajaran yang kita kembangkan. Jangan dilupakan bahwa media pembelajaran yang terdiri dari media presentasi pembelajaran (alat batu guru untuk mengajar) dan software pembelajaran mandiri (alat bantu siswa belajar mandiri) adalah juga suatu perangkat lunak. Baik tidaknya sebuah perangkat lunak, biasanya menunjukkan bagaimana kualitas perangkat lunak tersebut, hal ini sudah kita kupas tuntas di artikel tentang pengukuran perangkat lunak. Nah, media pembelajaran yang baik adalah yang memenuhi parameter-parameter berdasarkan disiplin ilmu rekayasa perangkat lunak, seperti pada contoh diatas (efisiensi, reliabilitas, usabilitas, dsb).

Setelah aspek dan penilaian media pembelajaran kita bahas, artikel ini akan fokus di satu sisi penilaian yaitu aspek rekayasa perangkat lunak. Bagaimanapun juga saya tetap bersandar ke standard pengukuran perangkat lunak (baik ISO standard maupun best practice) pada saat menyusun kriteria-kriteria penilaian. Saya modifikasi sesuai dengan kebutuhan dan supaya lebih mudah dipahami oleh peserta lomba. Kriteria penilaian dalam aspek rekayasa perangkat lunak yang akhirnya disetujui dalam diskusi di tim penyusun (LIPI, Pustekkom, IlmuKomputer.Com) adalah seperti di bawah:

1. Efektif dan Efisien dalam Pengembangan Maupun Penggunaan Media Pembelajaran

“Kok lambat yach?”
“Petunjuk Pemakaian: matikan seluruh program lain, karena program ini perlu memory 1GB untuk dapat dijalankan”
“Program besar sekali, menghabiskan space di komputer!”

Seringkali sebuah program yang sepertinya berukuran kecil dan memiliki fitur yang tidak terlalu rumit, tetapi berjalan sangat lamban. Kalau seandainya saja setiap komputer memiliki kecepatan yang tidak terbatas dan memory (RAM) yang bebas tidak terbatas, maka tentu tidak akan menjadi masalah. Tetapi setiap komputer memiliki kecepatan terbatas, memory (RAM) terbatas dan kapasitas penyimpanan tetap (hardisk) terbatas. Oleh karena itu, penting untuk mengatur pemakaian resource (CPU, RAM dan hardisk) tersebut secara efektif dan efisien. Kelambatan, rendahnya respon dan throughput biasanya terjadi karena pembuat tidak memikirkan efesiensi sumber daya yang terserap oleh program. Misalnya untuk pemakaian gambar-gambar yang ditampilkan dalam ukuran kecil, pembuat tetap menggunakan gambar asli yang beresolusi tinggi, tidak melakukan usaha-usaha kompresi dan pemotongan yang tepat. Sebaliknya, ada pula gambar yang seharusnya memakai resolusi tinggi, tetapi digunakan gambar yang beresolusi rendah.

Hal lain yang memungkinkan tidak efisiennya pemakaian resource adalah penggunaan algoritma yang kurang tepat Misalnya untuk pekerjaan pengurutan (sorting) sebuah kumpulan data, pembuat tidak memanfaatkan algoritma-algoritma sorting yang terkenal efektif seperti: insertion-sort, merge-sort dan lain-lain. Misalnya ada komputer A dengan kecepatan 100 kali lebih cepat dari komputer B, yang menjalankan algoritma  yang berbeda untuk masalah yang sama. Kalau kita dapat memilih algoritma yang lebih tepat dan efisien di komputer B, maka program dapat saja berjalan lebih cepat 10 kali lipat di komputer B.

Salah satu kasus yang sering muncul adalah, karena terlalu bersemangat, pembuat media pembelajaran, menampilkan semua pustaka gambar yang ia miliki dan efek-efek animasi dan simulasi yang ia kuasai ke dalam media pembelajaran, meskipun mereka tidak terlalu penting dan efektif dalam membantu proses pembelajaran.

2. Reliabilitas (Kehandalan)

Murid: Pak, program ini kok sering hang ya?
Guru: Kenapa? Kapan errornya?
Murid: Gak tahu, tidak ada pesan error tuh.

Program dikatakan reliable atau handal bila program dapat berjalan dengan baik, tidak mudah hang, crash atau berhenti pada saat pengoperasian. Kehandalan program juga dinilai dari seberapa jauh dapat tetap berjalan meskipun terjadi kesalahan pada pengoperasian (error tolerance). Pengguna memerlukan feedback sesuai dengan  kondisi system (termasuk berapa lama pengguna harus menunggu, dll).

3. Maintainabilitas (Dapat Dipelihara/Dikelola dengan Mudah)

“Good software is maintainable” (Reinhard Miller)
“It looks obvious until you try it” (IEEE Software)
“Programming is like poetry. It conveys a message, not only to the computer, but to those who modife and use your program” (Jonathan Bartlett)

Struktur program disusun dengan algoritma, alur penyajian, pengorganisasian, dan keterkaitan antar bagian sehingga mudah dalam modifikasi. Kode atau script tetap sederhana dan mudah dipahami meskipun menjalankan fungsi yang kompleks. Kode bersifat modular dengan dokumentasi pada tiap bagian yang memudahkan dalam modifikasi dan perubahan (maintenance). Sehingga siapa saja yang ingin merubah/memperbaiki/menambah fitur program dapat dengan mudah melakukannya. Selain penambahan fitur, hal yang sering dilakukan oleh programer adalah menemukan bug dalam programnya. Justru ada pernyataan bahwa membersihkan bug adalah 60% dari pekerjaan seorang programer.

Semakin sedikit code program yang Anda tuliskan, semakin kecil keperluan agar code atau program maintainable. Semakin banyak code program yang Anda tuliskan, semakin perlu Anda memikirkan maintainabilitas program Anda.

4. Usabilitas (Mudah Digunakan dan Sederhana dalam Pengoperasiannya)

Layaknya seoseorang yang bingung ketika baru pertama kali datang ke Jakarta dan ingin mencari alamat Jl. Jend. Gatot Subroto 10. Orang tersebut pasti merasa bingung untuk mencari alamat tersebut. Dalam kondisi bingung, orang tersebut tentu akan memanfaatkan marka jalan sebagai penunjuk arah. Dapat dibayangkan apabila di jalan raya tidak disediakan rambu-rambu lalu lintas dan marka jalan, tentu orang akan tersesat dan tidak tahu ke mana arah yang akan dituju. Begitu pula dengan media pembelajaran, ketersediaan  tooltip, help, icon, logo, tombol, dsb akan sangat membantu pengguna yang baru pertama kali menggunakan media tersebut. Desain dan tata letak navigasi sangat membantu pengguna untuk memanfaatkan media tersebut. Apabila terjadi kesalahan pada program (error) maka ditampilkan pesan dengan bahasa yang mudah dipahami oleh pengguna.

Konsistensi bentuk dan letak navigasi juga mempengaruhi kenyamanan pengguna ketika menghayati informasi yang tersirat dalam media pembelajaran. Dengan hanya melihat tampilan awal, pengguna dapat mengetahui kondisi program dan dapat menentukan aksi-aksi alternatif. Semua pilihan dan bahan tampak sehingga mudah dicari bilamana diperlukan tanpa mengganggu pengguna dengan informasi yang berlebihan. Pengguna juga dapat dengan sangat mudah menebak, memperkirakan bahkan menentukan relasi antara aksi dan hasil, antara kontrol-kontrol dan efek yang ditimbulkannya, antara status software dan apa yang tampak.

5. Ketepatan Pemilihan Jenis Aplikasi/Software/Tool untuk Pengembangan

Karya media pembelajaran dikembangkan dengan aplikasi dan perangkat yang tepat sesuai dengan kebutuhan pengembang. Contohnya adalah untuk membuat desain grafis, tentu harus menggunakan perangkat lunak pengolah grafis, dan bukan perangkat lunak (aplikasi) yang diciptakan untuk mengolah kata. Contoh lain, untuk membuat presentasi, akan lebih mudah dikembangkan dengan perangkat lunak untuk membuat presentasi. Demikian juga tentang pemanfaatan tool yang tepat dan lebih mudah dalam pembuatan animasi, simulasi, test, dan fitur-fitur yang lain.

6. Kompatibilitas (Media Pembelajaran Dapat Diinstalasi/Dijalankan di Berbagai Hardware dan Software yang Ada)

Perkembangan software dan hardware sudah cukup banyak bervariasi, semakin tinggi spesifikasinya, semakin tinggi kecepatan prosesnya. Bila dulu kecepatan akses RAM paling tinggi 8 MB, saat ini kecepatannya berkali lipat hingga 1 GB, CD ROM yang dulu kecepatan bacanya paling tinggi 4X saat ini CD ROM sudah umum dan memiliki banyak fungsi dengan kapasitas kecepatan yang tinggi, seperti CD-RW dengan speed hingga 52X bahkan ada yang mampu membaca DVD, demikian juga dengan Software Aplikasi, bila dulu aplikasinya sederhana dan cukup panjang proses menjalankan berbagai aplikasi didalamnya, saat ini aplikasi sudah sangat indah dengan tampilan grafis yang baik dan animatif, dengan navigasi yang mudah dan cepat dalam proses menjalankan aplikasinya.

Belajar akan lebih baik, jika setiap orang bisa bekerja dimanapun tanpa ada hambatan spesifikasi komputer dan software yang dipersyaratkan untuk menjalankannya, oleh karenanya hasil karya yang baik kendaknya dapat dijalankan diberbagai kondisi hardware dan sofware yang beragam, artinya bisa dijalankan didalam spesifikasi komputer yang paling rendah sekalipun, bisa dijalankan dengan Operating System dengan platform apapun dan versi manapun, mulai dari yang awal hingga yang terbaru, dan software yang tidak dibatasi oleh versi keluaran baik versi awal maupun versi yang terbaru.

7. Pemaketan Program Media Pembelajaran Terpadu dan Mudah dalam Eksekusi

Media pembelajaran terpaket dengan baik. Proses instalasi berjalan secara otomatis dengan menggunakan Autorun. Dengan sekali install, program langsung dapat digunakan tanpa perlu melakukan instalasi lain satu persatu (plugin, dsb) atau proses rebooting komputer. Shorcut/icon secara otomatis muncul setelah proses instalasi dengan nama yang mudah diidentifikasi. Fitur untuk uninstall program disediakan untuk membantu pengguna apabila sudah tidak memerlukan program tersebut. Program dapat juga dikembangkan tanpa proses instalasi, artinya dengan satu klik semua berjalan dengan sendiri. Hal ini semakin memudahkan pengguna terutama untuk siswa-siswa yang kurang dalam mengenal komputer.

8. Dokumentasi Program Media Pembelajaran yang Lengkap

“Gimana nih cara instalasinya? Kok nggak panduannya?”

Pertanyaan ini muncul ketika media pembelajaran yang telah kita buat ternyata tidak dilengkapi dengan dokumentasi tentang cara instalasi dan cara penggunaan. Definisi rekayasa perangkat lunak menurut Ian Sommerville adalah:

“Program komputer dan dokumentasi yang berhubungan”

Jadi tidak boleh dilupakan bahwa sebutan perangkat lunak itu tidak hanya untuk program komputer, tetapi juga termasuk dokumentasi dan konfigurasi data yang berhubungan yang diperlukan untuk membuat program beroperasi dengan benar. Dengan definisi ini otomatis keluaran (output) produksi perangkat lunak disamping program komputer juga dokumentasi lengkap berhubungan dengannya. Ini yang kadang kurang dipahami oleh pengembang, sehingga menganggap cukup memberikan program yang jalan (running program) ke pengguna.

Dokumentasi media pembelajaran yang dibuat harus meliputi: petunjuk instalasi (jelas, singkat, lengkap), trouble shooting (jelas, terstruktur, dan antisipatif), desain program (jelas, menggambarkan alur kerja program). Dokumentasi, selain berorientasi ke kemudahan pengguna dengan adanya help, readme, panduan penggunaan, dsb,  juga berorientasi pada pengembang yang diimplikasikan pada lengkapnya dokumentasi dan penjelasan pada kode program sehingga memudahkan dalam modifikasi.

9. Reusabilitas (Sebagian atau Seluruh Program Media Pembelajaran dapat Dimanfaatkan Kembali untuk Mengembangkan Media Pembelajaran Lain)

Eric S. Raymond, seorang tokoh programmer opensource mengatakan “Good programmers know what to write. Great ones know what to rewrite and reuse”. Setelah level membuat terlewati, seorang pengembang harus meningkatkan kemampuan diri untuk tidak hanya berorientasi membuat, tapi juga berorientasi ke bagaimana fitur dan fungsi program kita supaya dapat digunakan lagi di program lain dengan mudah. Bagaimana kita mendesain sebuah source code (kode sumber), icon, logo, tombol dan sebagainya sehingga dengan mudah dapat digunakan kembali (reuse) pada program media pembelajaran lain, itulah arti dari reusabilitas.

Template menu, icon, logo, tombol, dsb yang telah dibuat dapat dengan mudah digunakan untuk program lain. Library (DLL, API, dsb) juga dikemas dengan baik sehingga dapat dimanfaatkan oleh program lain. Program tersusun secara modular, hal ini mempermudah penggunaan kembali (reusabilitas).

REFERENSI

[1] J.A. McCall, P.K. Richards, and G.F. Walters, Factors in Software Quality, Tehnical Report RADC-TR-77-369, US Department of Commerce, 1977.
[2] T.P. Bowen, G.B Wigle, and J.T. Tsai, Specification of Software Quality Attributes: Software Quality Evaluation Guidebook, Technical Report RADC-TR-85-37, Rome Air Development Center, Griffiss Air Force Base, 1985.
[3] IEEE Standard Glossary of Software Engineering Technology, IEEE Std 610.12-1990, Institute of Electrical and Electronics Engineers, New York, 1990.
[4] Hans Van Vliet, Software Engineering – Principles and Practice, John Wiley & Sons, 2000.
[5] James F. Peters and Witold Pedrycz, Software Engineering: An Engineering Approach, John Wiley & Sons, 2000.
[6] Roger S. Pressman, Software Engineering: A Practitioner’s Approach Fifth Edition, McGraw-Hill, 2004.
[7] Ian Sommerville, Software Engineering 7th Edition, Addison-Wesley, 2004.
[8] Thomas H. Corment et.al., Introduction to Algorithms, Second Edition, MIT Press, 2002.
[9] CodeZar.Com, Increase Maintainability
[10] Reinhard Müller, Programmer’s Style Guide

ttd-small.jpg