Framework Design Guidelines: Bagian 01 – Pengantar 5 Mei 2008
Posted by firstyuyu in Prinsip Dasar.trackback
Jika kita bisa mendampingi semua developer yang menggunakan framework yang kita buat dan menjelaskan kepada mereka tentang bagaimana menggunakan framework tersebut, maka panduan untuk mendesain framework tidak lagi dibutuhkan. Panduan untuk mendesain framework dibuat agar ada semacam bahasa yang umum (common language) antara kita, sebagai pembuat framework dengan developer yang akan menggunakan framework yang kita buat.
Pada era awal kemunculan PC, seorang developer hanya dibekali dengan sebuah tool yaitu compiler. Selain untuk melakukan kompilasi, compiler ini biasanya juga dilengkapi dengan library yang sangat terbatas dan kebanyakan merupakan library untuk operasi low level.
Seiring dengan makin berkembangnya komputer, maka proses serta teknik development juga semakin berkembang dengan sangat pesat. Sering kali seorang developer menemukan bahwa sebenarnya di dalam rutinitasnya untuk mengembangkan sebuah aplikasi, terdapat bagian-bagian yang sama yang dilakukan berulang-ulang. Bagian-bagian ini merupkan operasi yang umum yang sebenarnya bisa digunakan oleh beberapa aplikasi.
Dari sini kemudian semakin berkembanglah konsep dari library. Para developer menemukan bahwa mereka bisa mengabstraksikan operasi-operasi low level ke dalam level yang lebih tinggi sehingga akan mempermudah orang yang menggunakannya. Dari sini para developer semakin sadar akan pentingnya library. Library bisa sangat meningkatkan produktivitas karena kita bisa membangun aplikasi di atas library yang sudah ada sehingga kita cukup menambahkan hal yang baru tanpa perlu mengulang apa yang telah dibuat sebelumnya.
Kemunculan OOP juga sangat berperan. Dengan konsep OOP, kita semakin mudah membuatmembuat reusable library. Dari sini kemudian lahirlah konsep framework, yaitu reusable library yang berorientasi obyek. Sadar akan potensi yang bisa ditawarkan oleh sebuah framework, vendorpun tak mau ketinggalan. Vendor operating system misalnya, mereka berlomba-lomba menciptakan OS yang menyediakan API untuk mengabstraksikan operasi low level dari OS tersebut sehingga pihak ketiga akan semakin mudah mengembangkan aplikasi di atasnya. Dengan semakin mudahnya pihak ketiga mengembangkan aplikasi di atas sebuah OS, maka OS tersebut tentu akan semakin semakin sering digunakan (setidaknya orang yang menggunakan aplikasi pihak ketiga tersebut harus membeli OS dimanan aplikasi tersebut dibuat).
Sering kita lihat bahwa konsep layering (membangun sesuatu di atas framework yang sudah ada) bisa menghasilkan aplikasi yang sama sekali baru yang tidak terbayangkan sebelumnya ketika framework yang paling dasar dibuat. Misalnya ketika dulu para engineer mengembangkan framework untuk TCP/IP, mungkin mereka tidak pernah membayangkan bahwa dengan framework tersebut bisa lahir situs semacam friendster atau situs-situs blog yang efeknya tidak hanya sekedar dari sisi teknis tapi sudah bisa ikut mempengaruhi budaya yang ada di masyarakat.
Seiring dengan semakin banyaknya framework yang dibuat, mulai muncul keluhan dari para developer. Mereka merasa sekarang harus mempelajari beberapa bahasa sekaligus, yaitu bahasa pemrograman yang mereka gunakan dan beberapa “bahasa” untuk masing-masing framework yang mereka gunakan. “bahasa” di sini berkaitan dengan programming model, konsistensi, dll yang sering kali berbeda atau bahkan bertolak belakang antara framework yang satu dengan yang lainnya.
Panduan di sini dimaksudkan agar framework yang kita buat bisa konsisten sehingga apa yang sudah kita ketahui tentang bagian tertentu dari sebuah framework bisa kita gunakan ketika mempelajari bagian lainnya dari framework tersebut. Selain itu framework kita juga harus sederhana dari sisi programming model sehingga mudah digunakan oleh developer.
Tulisan ini diambil dari buku Framework Design Guidelines yang ditulis oleh Brad Abrams dan Krzysztof Cwalina. Keduanya merupakan program manager di .net framework team di Microsoft. Buku tersebut memang ditulis untuk .net tapi banyak konsep-konsep bagus di dalamnya yang bisa kita aplikasikan di framework selain .net.

yang pertama kasi koment!!!!
tulisan yang bermutu Yud
bantuin TA aku ya Yud… hehehe