Paradigma OO

Kata paradigma yang dimaksud dalam topik ini memiliki arti metodologi pengembangan perangkat lunak. Paradigma OO berarti metodologi pengembangan perangkat lunak dengan OO.


Sebelum lebih jauh membahas OO, akan dikupas sedikit tentang paradigma. Kenapa perlu paradigma atau metodologi untuk membuat perangkat lunak? Apa sih sebenarnya paradigm?

Saya akan mencoba menjelaskan bukan dengan definisi-definisi tetapi dengan sebuah ilustrasi. Perangkat lunak adalah suatu benda tak berwujud (intangible) yang berpasangan dengan perangkat keras yang dibuat untuk memenuhi suatu maksud atau tujuan tertentu. Tujuan atau maksud ini bisa jadi bagian dari sebuah sistem atau bahkan sistem itu sendiri. Manusia berperan dalam membangun atau membuat kedua perangkat tersebut, dan berperan untuk menggunakan atau menerima hasilnya. Misalnya perangkat lunak personalia, perangkat lunak tersebut dijalankan pada suatu komputer (perangkat keras) untuk menangani masalah-masalah yang terkait dengan pengelolaan sumber daya manusia sebuah perusahaan. Ada orang-orang yang terlibat dalam mengembangkan perangkat lunak dan ada orang-orang yang menjalankan atau memakainya.


Dari penjelasan di atas dapat dilihat ada beberapa hal atau elemen yang terlibat, yaitu perangkat lunak, perangkat keras, pembuat perangkat lunak, pemakai perangkat lunak dan masalah. Gambar 1 mengilustrasikan hubungan antara elemen tersebut.




Perangkat lunak merupakan perwujudan dari masalah dunia nyata. Perangkat lunak merupakan masalah dalam bentuk yang lain, dalam bentuk yang tak terlihat berupa kumpulan perintah yang dijalankan oleh perangkat keras. Pengubahan bentuk atau wujud ini dilakukan oleh manusia, yang kita kenal dengan istilah pengembangan perangkat lunak (software development) dan orangnya disebut juga pengembang (developer). Perangkat keras (komputer) adalah seonggok mesin yang pasif yang tak berguna tanpa adanya perangkat lunak. Demikian pula perangkat lunak tidak akan memenuhi tujuannya tanpa keberadaan perangkat keras. Sedangkan pemakai adalah manusia yang menerima manfaat dari perangkat lunak. Sebuah perangkat lunak seharusnya memberikan manfaat atau nilai tambah kepada pemakai, bukan sebaliknya.
Ada ungkapan seseorang mengenai perbedaan antara manusia dan komputer: Manusia adalah pintar, lambat dan khilaf, sedangkan komputer adalah bodoh, cepat dan akurat. Jadi komputer digunakan sebagai alat bantu untuk menutupi kekurangan manusia dan bukan menjadi tujuan.
Pengubahan masalah menjadi perangkat lunak saya istilahkan mapping (pemetaan). Pemetaan membuat representasi masalah dalam dunia nyata menjadi bentuk yang dapat ‘dipahami’ oleh mesin (komputer). Pemetaan ini merupakan proses-proses yang ada dalam pengembangan perangkat lunak. Setiap manusia memiliki pemikiran dan pemahaman yang berbeda, sehingga mempunyai ide yang berbeda pula dalam hal memandang sesuatu. Demikian pula ketika melihat masalah dan bagaimana cara pemetaan, setiap pengembang memiliki cara pandang yang berbeda. Hal inilah memunculkan keilmuan dalam bidang pengembangan perangkat lunak atau yang kita kenal dengan ilmu rekayasa perangkat lunak (software engineering).


Mainstream dari cara pandang tersebut saat ini ada beberapa, dua yang telah banyak dikenal adalah functional decomposition (penguraian fungsional) dan OO (object oriented). Kalau saya gambarkan, cara pandang penguraian fungsional melihat masalah dunia nyata sebagai serentetan fungsi-fungsi yang saling terkait. Jika sebuah fungsi masih dianggap besar atau kompleks maka fungsi tersebut dapat diuraikan (decompose) untuk menjadi beberapa fungsi yang lebih rinci atau kecil. Sebagai contoh dalam sebuah pengelolaan sumber daya manusia terdapat masalah mencetak slip gaji karyawan. Masalah tersebut dapat dipecahkan dengan langkah-langkah berikut:
  1. mencari data karyawan
  2. mencari data kehadiran
  3. menghitung gaji
  4. mencetak ke printer
Pada langkah ke-3, kita dapat menguraikan lebih rinci menjadi:
    3.a. mencari nilai gaji pokok
    3.b. menghitung upah lembur
    3.d. menjumlahkan nilai gaji pokok dan upah lembur
Cara pandang masalah seperti di ataslah yang dimaksud dengan penguraian fungsional.
Pada OO, masalah dipandang sebagai kumpulan objek-objek yang saling berinteraksi dan masing-masing memiliki tanggung jawab. Objek, ada yang mengatakan adalah sebuah entitas yang memiliki atribut atau kelakukan, atau sesuatu yang memiliki data dan method. Saya, mengilustrasikan objek sebagai sesuatu yang nyata (tangible) ataupun tidak (intangible) yang memiliki tanggung jawab (responsibility). Sebagai contoh, dalam sebuah pengelolaan sumber daya manusia dapat ditemukan obje-objek, antara lain:
  1. karyawan
  2. daftar hadir
  3. slip gaji
Objek karyawan memiliki tanggung jawab untuk bekerja sesuai aturan. Objek daftar hadir bertanggung jawab mencatat kehadiran dan ketidakhadiran karyawan. Objek slip gaji bertanggung jawab menampilkan gaji karyawan.
Letak perbedaan antara keduanya adalah dalam hal menangani perubahan kebutuhan (requirement change).
Paradigma OO vs Paradigma lainnya: Apakah OO lebih unggul?
Tidak ada obat mujarab buatan manusia yang menyembuhkan segala penyakit. Demikian pula tidak ada suatu paradigma pengembangan perangkat lunak yang dapat menyelesaian semua masalah. Paradigma OO bisa saja dipakai untuk semua masalah tapi, tetapi pengembangan perangkat lunak tidak hanya terletak pada hasil tetapi juga pada prosesnya. Ada beberapa aspek yang dipertimbangkan ketika memilih paradigma pada sebuah pengembangan perangkat lunak. Pertimbangan tersebut tentu harus terukur, bukankah pengembangan perangkat lunak termasuk dalam kategori ‘engineering’? Penerapan membabi buta sebuah paradigma tanpa pertimbangan melepas makna ‘engineering’ tersebut. Sama halnya ketika kita ingin memotong benang dengan kapak, atau menumbangkan pohon dengan pisau dapur (ungkapan ini saya dapat dari dosen saya ketika kuliah).

Komentar

Postingan populer dari blog ini

ANUGERAH KEBAIKAN (HARTA) UNTUK KEBAIKAN

WHAT'S LEFT BEHIND?