II-1
BAB II
DASAR TEORI
Bab ini berisi uraian mengenai framework yang diawali dengan pengertian framework kemudian dilanjutkan dengan penjelasan mengenai karakteristik dan klasifikasi
framework, proses pengembangan framework, pemodelan framework dengan UML-F
dan cara mendokumentasikannya. Sistem informasi sekolah akan dijelaskan pada bagian akhir bab.
2.1. Pengertian Framework
Framework telah menjadi isu yang penting dewasa ini bagi industri perangkat lunak
ketika perkembangan perangkat lunak semakin kompleks. Teknik guna ulang perangkat lunak merupakan salah satu tujuan yang hendak dicapai dalam rekayasa perangkat lunak beberapa dekade belakangan ini. Tujuannya adalah penghematan dalam hal waktu dan biaya pengembangan. Framework merupakan teknologi yang menjanjikan dalam memperbaiki proses perancangan dan implementasi perangkat lunak dengan meningkatkan kualitas dari perangkat lunak yang dihasilkan.
Framework adalah sebuah aplikasi yang “tidak lengkap” yang dapat diguna ulang
untuk membuat bermacam-macam aplikasi [JOH88]. “Tidak lengkap” yang dimaksud adalah bahwa framework hanya berupa kumpulan beberapa kelas abstrak pada domain tertentu sehingga pengembang yang mengunakan framework harus melengkapi kelas abstrak tersebut menjadi perangkat lunak yang diinginkan.
Framework merupakan sebuah rancangan sistem yang dapat diguna ulang dan
mendeskripsikan bagaimana sistem tersebut didekomposisi ke dalam kumpulan objek yang saling berinteraksi. Sistem yang dimaksud dapat berupa keseluruhan aplikasi atau hanya merupakan sebuah subsistem. Framework mendeskripsikan baik itu komponen dari objek-objek maupun bagaimana objek-objek tersebut berinteraksi. Selain itu framework juga mendeskripsikan antarmuka tiap objek dan aliran kendali antar objek.
Framework mengambil keuntungan dari tiga karakteristik utama dalam pemrograman
berorientasi objek yaitu abstraksi data (data abstraction), polymorphism, dan pewarisan (inheritance). Seperti sebuah tipe data abstrak (abstract data type), sebuah kelas abstrak merepresentasikan antarmuka yang implementasinya dapat berubah. Polimorfisme adalah kemampuan yang dimiliki sebuah peubah (variable) atau parameter dari prosedur untuk menyimpan nilai dengan tipe yang bermacam-macam. Sedangkan pewarisan mempermudah dalam pembuatan komponen yang baru.
Framework dapat diibaratkan sebagai sebuah mesin yang membutuhkan tenaga
(power) agar dapat hidup. Gambar 2.1 mengilustrasikan bagaimana framework dapat bekerja. Tidak seperti mesin pada umumnya, mesin framework ini memiliki banyak
plug. Tiap plug tersebut merupakan hot spot dari framework, yaitu bagian yang dapat
diubah berupa kelas-kelas abstrak. Tiap Hot spot harus diberi tenaga agar mesin dapat bekerja. Sumber tenaga tersebut adalah kode dari aplikasi yang akan dibuat yang harus dihubungkan dengan hot spot. Kode aplikasi yang ditambahkan tersebut akan digunakan oleh kernel framework, yaitu bagian framework yang tidak berubah.
Gambar 2.1 – Framework Sebagai Sebuah Mesin [MAR01]
2.2. Karakteristik Framework
Keuntungan utama framework terlihat dari aspek pemodulan, guna ulang, perluasan, dan inversion of control yang merupakan karakteristik dari framework.
2.2.1. Pemodulan (Modularity)
Framework terdiri dari beberapa kelas abstrak dengan antarmuka tertentu. Detail
implementasi dapat dienkapsulasi dan efek perubahan implementasi dapat dilokalisasi. Lokalisasi juga dapat membantu memahami dan melakukan perawatan terhadap perangkat lunak.
2.2.2. Guna ulang (Reuse)
Framework merupakan satu dari beberapa teknik guna ulang [KRU92]. Framework
mengguna ulang analisis, rancangan dan juga kode implementasi. 1. Analisis
Guna ulang analisis medeskripsikan berbagai jenis objek yang penting dan menyediakan kosakata yang membahas domain masalah yang dihadapi.
2. Rancangan.
Guna ulang rancangan (design) dapat dilihat dalam bentuk pola (pattern). Pola (pattern) merepresentasikan kumpulan solusi yang sama yang digunakan untuk menyelesaikan permasalahan dalam pengembangan perangkat lunak dalam konteks tertentu.
3. Kode implementasi.
Framework mengguna ulang kode karena akan mempermudah membangun
sebuah aplikasi dari komponen-komponen pustaka yang tersedia. Alasan lain
framework mengguna ulang kode karena sebuah komponen baru dapat dengan
mudah diturunkan dari superclass yang abstrak.
Guna ulang analisis dan rancangan lebih penting dari guna ulang terhadap kode karena inti dari guna ulang sebuah perangkat lunak adalah rancangan tingkat tinggi (high-level design) berupa solusi intelektual yang diberikan bukan kode implementasi.
2.2.3. Perluasan (Extensibility)
Aspek perluasan diperlukan untuk mengubah fitur dan layanan pada aplikasi baru yang dibuat sesuai dengan kebutuhan. Untuk aspek perluasan, ada lokasi pada sebuah
framework di mana fitur aplikasi yang dibuat dihubungkan dengan framework. Lokasi
Hook pada sebuah framework berada pada hot spot, yaitu bagian framework yang
dapat berubah. Hot spot merupakan kelas-kelas abstrak atau metode-metode yang harus diimplementasikan. Framework bukanlah program yang dapat dieksekusi (executable). Untuk menghasilkan program yang dapat dieksekusi, developer harus menginstansiasi framework dengan mengimplementasikan kode-kode untuk aplikasi pada setiap hot spot. Setelah setiap hot spot diinstansiasi barulah framework dapat menggunakan kelas-kelas tersebut.
Tetapi ada juga bagian-bagian tertentu dari framework yang tidak dapat diubah. Bagian tersebut merupakan kernel dari framework, atau dapat juga diebut frozen spot
framework. Tidak seperti hot spot, frozen spot merupakan kumpulan kode yang telah
diimplementasikan pada framework yang kemudian akan memanggil satu atau lebih
hot spot yang telah diimplementasikan oleh pengembang aplikasi yang menggunakan framework. Kernel tidak akan berubah, konstan dan merupakan bagian yang selalu
ada pada setiap instansiasi framework. 2.2.4. Inversion of Control
Pada umumnya, developer yang mengembangkan aplikasi menggunakan pustaka (library) dengan menulis program utama yang memanggil komponen-komponen tersebut ketika dibutuhkan. Developer memutuskan kapan memanggil komponen tersebut dan bertanggung jawab terhadap struktur dan kendali program secara keseluruhan. Hal tersebut berbeda dengan framework di mana yang diguna ulang adalah program utamanya. Developer memutuskan apa saja yang ditambahkan pada program utama tersebut. Yang terpenting dalam hal ini adalah bahwa kode yang dibuat oleh developer dipanggil oleh kode framework yang digunakan. Framework menentukan struktur dan kendali program secara keseluruhan. Perbedaan tersebut dapat dilihat pada Tabel 2.1 dan Gambar 2.2.
Tabel 2.1 – Perbedaan Framework dengan Library
Aspek Library Framework
Bagian aplikasi yang dikembangkan
program utama (main
program)
subkelas dan komponen
Alur kendali ditentukan pengembang aplikasi
ditentukan framework (pengembang framework) kode buatan pengembang
aplikasi (custom code)
custom code memanggil library code
framework code memanggil custom code
2.3. Klasifikasi Framework
Framework dapat diklasifikasikan berdasarkan beberapa aspek seperti lingkup, teknik
yang digunakan dalam pengembangan [JOH88], dan tingkat generalitas framework. 2.3.1. Lingkup
Berdasarkan lingkupnya, framework dapat dibagi menjadi tiga yaitu:
1. System infrastructure framework
Framework ini menyederhanakan pengembangan infrastruktur untuk sistem
yang portable dan efisien seperti untuk sistem operasi [CAM93] dan
framework untuk sistem komunikasi [SCI97] dan juga pengembangan
antarmuka pengguna dan kakas pemroses bahasa. System infrastructure
framework digunakan dalam lingkungan internal organisasi dan tidak dijual
secara langsung ke konsumen.
2. Middleware integration framework
Framework jenis ini umumnya digunakan dalam proses integrasi aplikasi dan
komponen yang terdistribusi. Middleware integration framework dirancang untuk meningkatkan kemampuan pengembang perangkat lunak dalam memodulkan, mengguna ulang, dan memperluas infrastruktur perangkat lunak agar dapat bekerja pada lingkungan terdistribusi.
Framework
Custom Code Custom Code
Custom Code Custom Code
Component Component
Library Component Component
Custom Code
3. Enterprise application framework
Framework ini ditujukan pada domain aplikasi yang luas dan merupakan dasar
aktivitas bisnis perusahaan [FAH99]. Dibandingkan system infrastructure dan
middleware integration framework, enterprise application framework
membutuhkan biaya yang besar untuk mengembangkannya ataupun membelinya dari vendor. Namun enterprise application framework dapat memberikan pengembalian investasi (return on investment) karena framework ini mendukung pengembangan aplikasi untuk pengguna akhir (end user) dan produk secara langsung. Sedangkan system infrasturcture dan middleware
integration framework fokus pada proses pengembangan perangkat lunak
untuk keperluan internal perusahaan. 2.3.2. Teknik Pengembangan
Ralph E. Johnson mengklasifikasikan framework menjadi dua berdasarkan teknik pengembangnya yaitu white-box framework atau dikenal dengan architecture-driven
framework dan black-box framework yang dikenal dengan data-driven framework
[JOH88].
1. White-box framework
Instansiasi framework ini hanya dapat dilakukan dengan menciptakan kelas-kelas baru. Kelas-kelas-kelas tersebut beserta kode implementasinya dapat ditambahkan dengan pewarisan atau komposisi. Arsitektur white-box
framework harus terdokumentasi dengan baik karena pengetahuan yang
mendalam mengenai detail arsitektur framework sangat diperlukan untuk mengembangkan aplikasi sesuai dengan keinginan pengembang. Gambar 2.3 memperlihatkan white-box framework.
2. Black-box framework
Black-box framework menyembunyikan struktur internalnya. Pengguna hanya
mengetahui deskripsi umum penggunaan framework dan hot spot yang disediakan. Mekanisme yang disediakan untuk instansiasi framework ini hanya dengan komposisi sehingga pengguna tidak harus mempelajari detail internal
framework. Gambar 2.4 memperlihatkan black-box framework.
Gambar 2.4 – Black Box Framework [CHE04]
2.3.3. Tingkat Generalitas
Berdasarkan tingkat generalitasnya, framework dibagi menjadi dua yaitu horizontal
framework dan vertikal framework.
1. Horizontal framework
Framework ini bersifat lebih umum sehingga dapat digunakan untuk
membangun berbagai tipe aplikasi. Namun pengembang biasanya dihadapkan pada fitur-fitur yang tidak diinginkan sehingga banyak fitur framework yang tidak digunakan. Horizontal framework dapat digunakan untuk mengembangkan antarmuka pengguna sebuah aplikasi pada area yang cukup luas di industri perangkat lunak. Contoh framework ini adalah GUI toolkit. Ilustrasi horizontal framework dapat dilihat pada Gambar 2.5.
2. Vertikal framework
Vertikal framework atau dikenal juga dengan application framewok ditujukan untuk pembangunan aplikasi yang spesifik pada domain masalah tertentu. Contohnya adalah framework untuk analisis statistik data ekonomi di mana
framework ini digunakan khusus untuk aplikasi keuangan. Vertical framework
kurang umum, tetapi memiliki utilitas yang lebih baik serta memberikan solusi yang lebih lengkap. Oleh karena itu, framework ini lebih banyak digunakan dalam mengembangkan aplikasi. Gambar 2.6 mengilustrasikan vertikal
framework.
portion of framework used
generality portion of application
portion of framework used
generality portion of application
Gambar 2.5 – Horizontal Framework [ROG97]
2.4. Proses Pengembangan Framework
Sebelum membahas mengenai bagaimana proses pengembangan framework, ada beberapa hal yang harus diperhatikan seperti usaha pengembangan, proses belajar, kemampuan integritas, kemampuan perawatan, dan kurangnya standar.
1. Usaha pengembangan.
Mengembangkan perangkat lunak yang kompleks cukup sulit, terlebih lagi mengembangkan framework yang dapat diguna ulang untuk domain aplikasi yang kompleks. Oleh karena itu, dibutuhkan kemampuan dan pengalaman yang baik dari pengembang untuk menghasilkan framework yang baik.
2. Proses belajar.
Mempelajari penggunaan framework secara efektif tidak mudah. Sebagai contoh, dibutuhkan waktu 6-12 bulan untuk dapat menggunakan framework antar muka pengguna (GUI framework), seperti MFCs atau MacApp [FAM99]. Umumnya, mentoring dan pelatihan dibutuhkan untuk mengajarkan pada pengembang aplikasi bagaimana cara menggunakan framework dengan efektif.
3. Kemampuan integritas.
Masalah integrasi muncul pada beberapa tingkatan, mulai dari abstraksi, sampai masalah dokumentasi, konkurensi, dan arsitektur pendistribusian. Sebagai contoh, karena inversion of control merupakan fitur yang penting dalam framework, akan sangat sulit untuk mengintegrasikan sebuah
framework dengan framework lain agar dapat bekerja sama.
4. Kemampuan perawatan.
Aplikasi akan terus berubah dari waktu ke waktu. Oleh karena itu framework pun harus berubah. Diperlukan perawatan yang rutin terhadap framework. Ada beberapa aktivitas dalam perawatan framework seperti penambahan fungsionalitas, pengurangan fungsionalitas, dan generalitas. Untuk melakukan hal tersebut, diperlukan pemahaman yang mendalam terhadap komponen-komponen framework dan hubungan antar komponen-komponen tersebut.
5. Kurangnya standar.
Sampai saat ini tidak ada standar yang diterima secara luas dalam perancangan, implementasi, dan pendokumentasian framework.
Pengembangan framework berbeda dengan pengembangan perangkat lunak pada umumnya. Perbedaan yang paling mendasar adalah framework harus mencakup semua permasalahan pada domain tertentu, di mana aplikasi hanya menfokuskan pada permasalahan yang ditentukan pada aktifitas pengumpulan kebutuhan (requirement
gathering). Selain itu, metodologi-metodologi pengembangan perangkat lunak yang
digunakan untuk mengembangkan aplikasi belum cukup untuk digunakan dalam membangun framework karena metodologi-metodologi tersebut tidak menyertakan perancangan hook framework yang menyediakan aspek fleksibilitas dan perluasan
framework.
Beberapa metodologi telah diusulkan untuk pembangunan framework. Akan tetapi, sampai sekarang belum ada metodologi yang diterima sebagai standar pembangunan
framework. Metodologi-metodologi tersebut pada intinya dapat dikelompokkan
menjadi aktivitas-aktivitas yang meliputi analisis (analysis), perancangan (design), implementasi (implementation), dan pengujian (testing) [FRO98]. Aktivitas-aktivitas tersebut seperti metodologi pengembangan perangkat lunak, tetapi tiap aktivitas disesuaikan untuk pengembangan framework.
2.4.1. Analisis
Tujuan aktivitas ini adalah mendeskripsikan domain yang harus dilingkupi oleh
framework. Untuk mendapatkan kebutuhan framework dan identifikasi permasalahan,
pengembang framework dapat mengacu pada aplikasi yang telah dikembangkan, pada pakar-pakar di domain permasalahan tersebut, atau standar yang telah ada pada domain tersebut. Untuk menggambarkan kebutuhan fungsional framework, digunakan
use case model yang berisi diagram use case, definisi tiap use case, skenario use case,
dan definisi aktor.
Identifikasi terhadap hot spot mulai dilakukan pada tahap ini. Eksplorasi terhadap aplikasi-aplikasi yang telah ada membantu dalam mengidentifikasi bagian-bagian mana yang berubah dari satu aplikasi ke aplikasi lainnya dan bagian mana yang tetap. Hasil dari aktivitas ini adalah model analisis domain yang berisi kebutuhan
2.4.2. Perancangan
Model analisis merupakan masukan yang penting dari tahap ini. Framework yang akan dibangun dibentuk sedemikian sehingga memenuhi semua kebutuhan yang telah terdefinisi, termasuk di dalamnya kebutuhan non fungsional dan berbagai constraints lain.
Proses perancangan menentukan struktur dari abstraksi, hot spot dan frozen spot
framework. Hooks pada framework juga harus ditentukan dan dirancang. Hook
memperlihatkan cara framework diadaptasi menjadi sebuah aplikasi dan merupakan bagian yang penting dalam framework.
Hasil dari aktivitas ini adalah model perancangan yang mencakup perancangan kelas dan realisasi use case tahap perancangan.
2.4.3. Implementasi
Tahap ini memfokuskan pada implementasi kode (coding) kelas-kelas abstrak dan konkret framework dari hasil perancangan yang telah dilakukan. Tujuan utama dari implementasi adalah untuk merealisasikan arsitektur dan sistem secara keseluruhan. Pembuatan dokumentasi framework juga mulai dilakukan pada tahap ini.
2.4.4. Pengujian
Ada dua tipe pengujian yang dilakukan terhadap framework. Pertama, framework harus diuji secara terpisah tanpa aplikasi yang menyertainya. Hal ini bertujuan untuk mengidentifikasi error yang masih terjadi pada framework dan mencegah terjadinya
error yang disebabkan oleh aplikasi. Kerusakan pada framework akan diteruskan pada
aplikasi yang dibangun. Oleh karena itu, pengujian framework secara terpisah perlu dilakukan.
Kedua, pengujian yang sesungguhnya yaitu ketika framework telah digunakan untuk membangun aplikasi. Pada proses ini diuji hook dari framework yang merupakan lokasi di mana interaksi antara framework dengan aplikasi yang dibangun terjadi. Penggunaan framework juga membantu mengetahui bagian mana saja dari framework yang belum lengkap dan memperlihatkan bagian-bagian pada framework yang harus lebih fleksibel atau yang seharusnya mudah digunakan.
2.5. UML-F
Penggunaan notasi UML standar yang digunakan pada pembangunan aplikasi tidak memadai untuk memodelkan framework. Diagram yang ada pada UML saat ini tidak dapat menjelaskan bagian mana dari framework yang dapat berubah dan apa
constraint pada saat instansiasi. Untungnya, UML menyediakan mekanisme untuk
menambahkan dan mendefinisikan label atau tanda yang dibutuhkan pada elemen model UML. Penambahan-penambahan tersebut menghasilkan sebuah UML baru yang disebut UML-F [FON00]. UML-F mendukung pembangunan framework.
UML menyediakan mekanisme ekstensi pada stereotype, tagged value, dan
constraint. UML-F menggunakan tagged value sebagai mekanisme ekstensi pada
UML. UML diagram diperluas dengan menambahkan tag {variable}, {extensible},
{app-class}, {static}, dan {dynamic}. OCL (Object Constraint Language)
ditambahkan tag {for all new method} dan tag {optional} ditambahkan pada sequence
diagram. Penjelasan mengenai tag tersebut dapat dilihat pada Tabel 2.2. Tabel 2.2 – Ekstensi UML-F
No. Nama Ekstensi Jenis Ekstensi Bagian UML yang diterapkan
Deskripsi
1. {app-class} boolean Class Kelas yang hanya ada pada
instansiasi framework. Kelas-kelas pada aplikasi baru didefinisikan selama proses instansiasi
framewrok.
2. {variable} boolean Method Method harus diimplementasikan
ketika proses instansiasi
framework.
3. {extensible} boolean Class Antarmuka kelas bergantung pada
instansiasi framework. Method baru bisa ditambahkan untuk menambah fungsionalitas kelas.
4. {static} boolean Extensible interface,
Variable method, dan Extensible Class
Informasi yang belum lengkap ditambahkan saat kompilasi aplikasi.
5. {dynamic} boolean Extensible interface,
Variable method, dan Extensible Class
Informasi yang belum lengkap ditambahkan saat aplikasi berjalan.
No. Nama Ekstensi Jenis Ekstensi Bagian UML yang diterapkan
Deskripsi
6. {incomplete} boolean Generalization dan
Realization
Sub kelas baru harus ditambahkan pada relasi generalisasi atau realisasi.
7. {for all new methods}
boolean OCL Constrain Menandakan bahwa OCL
constraint ditujukan pada semua method baru.
8. {optional} boolean Events Menandakan bahwa event yang
ada bersifat opsional.
2.6. Dokumentasi Framework
Salah satu aktivitas yang paling penting dalam pengembangan framework yaitu pembuatan dokumentasi. Tanpa dokumentasi yang jelas, lengkap dan benar,
framework tidak akan dapat digunakan oleh pengembang aplikasi yang tidak terlibat
dalam perancangan framework tersebut. Dokumentasi framework memiliki tiga tujuan utama yang menjelaskan [JOH92]:
1. Tujuan pembuatan framework
2. Bagaimana menggunakan framework 3. Detail rancangan framework
Ada banyak metode yang diusulkan untuk mendokumentasikan framework akan tetapi sampai sekarang belum ada standar yang digunakan dalam pembuatan dokumentasi. Beberapa metode yang diusulkan antara lain cookbook dan recipe, example, design
patterns, framework overview, reference manual, dan design notebook.
2.5.1. Cookbook dan Recipe
Recipe mendeskripsikan bagaimana menyelesaikan masalah-masalah yang khas dan
sering muncul selama mengembangkan aplikasi. Informasi direpresentasikan dalam bahasan yang tidak formal dan mudah dimengerti serta dilengkapi dengan gambar dan kode sumber. Walaupun tidak formal, recipe biasanya memiliki struktur seperti
bagian yang menjelaskan tujuan, langkah-langkah menggunakan recipe, referensi ke
recipe yang lain, dan contoh-contoh kode sumber.
Cookbook merupakan kumpulan dari recipe. Panduan untuk mencari recipe yang
dibutuhkan disediakan oleh cookbook baik itu berupa daftar isi maupun dengan menjadikan recipe yang pertama sebagai gambaran (overview) dari keseluruhan
cookbook. Cookbook digunakan pada framework seperti MVC (Model-View-Controller), MacApp, HotDraw, ET++, MET++, dan CommonPoint. Banyak
pengembang aplikasi berhasil mempelajari framework dari cookbook dan kode sumber framework tersebut.
2.5.2. Examples
Kode sumber dari beberapa contoh aplikasi yang dikembangkan menggunakan
framework sering digunakan sebagai dokumentasi yang disediakan untuk
pengembang aplikasi. Biasanya dokumentasi jenis ini dibuat selama pengembangan
framework yaitu pada saat inisiasi framework. Akan tetapi dokumentasi ini terlalu
sulit untuk pengembang aplikasi pemula [SPA96], pengenalan pada hot spot dari
framework harus ditambahkan dari mulai bentuk guna ulang yang paling sederhana
hingga bentuk yang lebih rumit. 2.5.3. Design Pattern
Design pattern memberikan solusi untuk permasalahan-permasalahan yang muncul
dalam perancangan. Design patterns merupakan meta knowledge tentang bagaimana menggabungkan fleksibilitas dalam sebuah framework.
Deskripsi sebuah design pattern menjelaskan masalah dan hubungannya, solusi dari masalah tersebut, dan diskusi mengenai konsekuensi ketika menggunakan solusi yang disediakan. Permasalahan biasanya diilustrasikan dalam contoh yang konkret. Solusi menjelaskan objek-objek dan kelas-kelas yang berpartisipasi dalam sebuah rancangan (design) beserta tanggung jawab dan kerjasama antara kelas dan objek tersebut. Sebuah diagram kolaborasi dapat juga digunakan untuk merepresentasikan masalah yang serupa. Contoh penggunaan solusi yang digunakan pada situasi yang nyata juga biasanya disertakan dalam design pattern. Selain itu, analisis keuntungan dan kerugian ketika menggunakan pola (pattern) merupakan bagian penting yang harus ada dalam deskripsi design pattern.
2.5.4. Framework Overview
Penjelasan mengenai gambaran umum dari framework merupakan langkah awal membantu pengembang aplikasi dalam mengguna ulang framework. Framework
overview berisi batasan framework yang dibuat, apa saja yang dicakup oleh framework dan apa saja yang tidak, serta memberikan informasi mengenai bagian
mana yang tidak dapat diubah dan bagian yang fleksibel dalam framework.
Overview bisa juga menjadi recipe pertama pada sebuah cookbook. Jika framework
dikembangkan secara in-house, overview framework disajikan dalam bentuk presentasi oleh pengembang framework pada pengembang aplikasi.
2.5.5. Reference Manual
Reference manual untuk sebuah sistem berorientasi objek terdiri dari deskripsi tiap
kelas, serta deskripsi dari peubah-peubah global, konstanta-konstanta, dan tipe-tipe. Secara umum, deskripsi sebuah kelas menjelaskan tujuan dan tanggung jawab kelas, peran (role) dari tiap data member, dan informasi tiap metode. Deskripsi metode menjelaskan fungsi, status awal dan status akhir metode tersebut.
Untuk dokumentasi framework, deskripsi-deskripsi tersebut dapat ditambahkan informasi mengenai peranan kelas atau metode dalam menyediakan fleksibilitas untuk
hot spot, apakah kelas tersebut dapat dibuat subkelasnya atau sebuah metode dapat di-override. Akan tetapi reference manual bukan merupakan sumber yang baik untuk
mempelajari sebuah framework. 2.5.6. Design Notebook
Design notebook berisi kumpulan informasi yang berkaitan dengan rancangan
perangkat keras. Informasi berisi latar belakang teori, analisis dari situasi, dan diskusi mengenai engineering trade-off.