BAB II DASAR TEORI Di dalam Bab 2 ini akan dikaji teori-teori dasar yang melandasi dengan restrukturisasi data, mulai dari lingkup global sampai dengan teori bagaimana melakukan restrukturisasi data. Secara global restrukturisasi data itu sendiri merupakan bagian dari Rekayasa Perangkat Lunak (Software Engineering). Dengan melakukan tahap-tahap proses rekayasa PL diperoleh sebuah sistem yang dapat merepresentasikan dunia nyata. Sistem itu sendiri terdiri dari program, basis data dan dokumentasinya. Seiring berkembangnya teknologi dan peningkatan kebutuhan pengguna, maka perlu dilakukan rekayasa ulang terhadap sistem tersebut (Software Reengineering) yang memungkinkan adanya perubahan terhadap program, basis data maupun dokumentasinya. Dengan demikian peningkatan
kebutuhan
pengguna
memungkinkan
peningkatan
terhadap
fungsionalitas sistemnya dan mengakibatkan perubahan terhadap basis datanya pula. Salah satu cara untuk melakukan perubahan basis data itu dengan melakukan restrukturisasi data. Restrukturisasi data ini akan berisikan beberapa strategi dan tahapan sehingga dapat diperoleh hasil perubahan yang sesuai kebutuhan dan layak untuk digunakan.
II.1
Perangkat Lunak
Perangkat Lunak (Software) adalah instruksi (program komputer) yang ketika dijalankan menyediakan fungsi dan tampilan yang diinginkan, struktur data yang memberikan kesempatan program untuk memanipulasi informasi dan dokumen yang mendeskripsikan operasi dan penggunaan program[4]. Perlu diketahui bahwa software tidak hanya sekedar program, karena software terdiri dari program, dokumen dan data serta merepresentasikan masalah dunia nyata. Di dalam perangkat lunak, dokumentasi menjadi sangat penting. Hal ini dikarenakan dokumentasi tersebut merupakan acuan utama dalam pengembangan perangkat lunak serta dasar pertimbangan dalam perawatan perangkat lunak.
5
II.1.1 Rekayasa Perangkat Lunak (Software Engineering) Munculnya paradigma Rekayasa Perangkat Lunak sejak software crisis (19651985) dimana pada saat itu terjadi berbagai masalah dalam pembangunan perangkat lunak. Pembangunan perangkat lunak selalu terlambat, over budget dan tidak berkualitas. Untuk membangun perangkat lunak yang baik, maka harus dilakukan
secara
sistematis,
sehingga
dibuatlah
paradigma-paradigma
pembangunan perangkat lunak. Paradigma muncul disebabkan karena kondisi lingkungan ataupun keterbatasan sumber daya saat pengembangan perangkat lunak. Deskripsi Rekayasa Perangkat Lunak (Software Engineering) menurut Fritz Bauer, merupakan penetapan dan penggunaan prinsip rekayasa dalam rangka memperoleh perangkat lunak yang dapat dipercaya dan dapat bekerja secara efisien pada mesin nyata.
Ada beberapa tujuan dilakukan rekayasa perangkat lunak, antara lain: 1. Untuk membangun software yang benar dan benar sebuah software (Right Software and Software Right) 2. Untuk membangun perangkat lunak yang benar (correct). 3. Dikelola dengan baik untuk pemeliharaan kebenarannya (correctness). II.1.2 Model Proses Rekayasa Perangkat Lunak Permodelan dalam suatu rekayasa perangkat lunak merupakan suatu hal yang dilakukan di tahapan awal, dan akan mempengaruhi pekerjaan-pekerjaan dalam rekayasa perangkat lunak tersebut. Di dalam rekayasa perangkat lunak dikenal berbagai macam proses. Perbedaan proses yang digunakan akan menguraikan aktivitas-aktivitas proses dalam cara-cara yang berlainan. Perusahaan yang berbeda akan bisa menggunakan proses yang berbeda untuk menghasilkan produk yang sama. Namun
beberapa proses lebih cocok dari yang lainnya untuk
beberapa tipe aplikasi.
Seperti produk lainnya, proses juga memiliki atribut dan karakteristik seperti: 1. Understandability, yaitu sejauh mana proses secara eksplisit ditentukan dan bagaimana kemudahan definisi proses itu dimengerti.
6
2. Visibility, yaitu apakah aktivitas-aktivitas proses mencapai titik akhir dalam hasil yang jelas sehingga kemajuan dari proses tersebut dapat terlihat jelas/nyata. 3. Supportability, yaitu sejauh mana aktivitas proses dapat didukung oleh CASE. 4. Acceptability, yaitu apakah proses yang telah ditentukan dapat diterima dan digunakan serta mampu bertanggung jawab selama pembuatan produk perangkat lunak. 5. Reliability, yaitu apakah proses dirancang
sedemikian rupa sehingga
kesalahan proses dapat dihindari, sebelum terjadi kesalahan pada produk. 6. Rebustness, dapatkah proses berjalan walaupun terjadi masalah yang tak terduga. 7. Maintanainability, yaitu dapatkah proses berkembang untuk mengikuti kebutuhan dan perbaikan. 8. Rapidity, yaitu bagaimana kecepatan proses pengiriman sistem dapat secara lengkap memenuhi spesifikasi. 2.1.2.1 Model Waterfall Model Waterfall pertama kali diperkenalkan oleh Winston Royce tahun 1970. Model ini dikatakan model life cycle klasik yang sederhana dengan aliran sistem linier (sequential approach). Output dari setiap tahap merupakan input bagi tahap berikutnya. Pengembangan perangkat lunak dimulai dari customer specification of requirements dan berlanjut terus hingga menuju proses perencanaan (planning), modeling (designing), construction (coding) dan deployment. Seperti terlihat pada Gambar II-1.
Gambar II-1 Waterfall Model [7]
7
Setiap tahap dari model ini menggunakan Document Driven, yaitu tahap selanjutnya selalu bekerja berdasarkan dokumen yang diberikan tahap sebelumnya.
Modifikasi
tahap
tertentu
akan
dilakukan
apabila
terjadi
ketidaksesuaian pada tahap sebelumnya. Model ini mengizinkan untuk kembali ke tahap sebelumnya jika terjadi hal demikian. 2.1.2.2 Model Incremental Model Incremental menerapkan rekayasa perangkat lunak per bagian tahapan, hingga menghasilkan perangkat lunak yang lengkap. Proses membangun berhenti jika produk telah mencapai seluruh fungsi yang diharapkan. Pada tahapan awal dilakukan penentuan kebutuhan dan spesifikasi. Kemudian dilakukan perancangan arsitektur software yang terbuka agar dapat diterapkan pembangunan perbagian pada tahapan selanjutnya. Pada model ini, tiga tahapan awal harus diselesaikan terlebih dahulu sebelum membangun tahap modul, seperti terlihat pada Gambar II-2.
Gambar II-2 Incremental Model [7]
2.1.2.3 Model Spiral Model Spiral diperkenalkan oleh Boehm (1998) sebagai pendekatan alternatif untuk memenuhi kebutuhan-kebutuhan customer. Model ini berbentuk spiral dan merupakan kombinasi dari Model Prototyping dengan Model Waterfall. Setiap
8
tahapannya selalu dilakukan Risk Analysis dan Testing. Model ini banyak dipakai tetapi biasanya dikombinasikan dengan model lain. Ilustrasi Model ini dapat terlihat di Gambar II-3.
Garis tengah pada gambar tersebut merupakan indikasi biaya yang diperlukan. Garis spiral merupakan indikasi proses yang dilalui. Bila tahapan Risk Analisys tidak dapat dilewati, maka proses dihentikan, tidak mengizinkan proses kembali ke tahapan sebelumnya.
Gambar II-3 Full Spiral Model [7]
II.1.3 Prototyping Prototyping merupakan salah satu metode cepat pengembangan sebuah sistem. Di masa lalu sistem yang berkembang dianggap lebih rendah daripada kebutuhan sistem yang sesungguhnya sehingga diperlukan pengembangan yang lebih lanjut. Sekarang, batas antara prototyping dan pengembangan sistem secara normal menjadi kabur dan banyak sistem dikembangkan menggunakan pendekatan evolusioner. Keuntungan menggunakan metode prototyping antara lain: 1. Salah pengertian antara pengguna dan pengembang software menjadi terlihat jelas.
9
2. Layanan
yang
hilang
akan
dapat
dideteksi
dan
layanan
yang
membingungkan dapat teridentifikasi. 3. Sistem yang berkerja tersedia di awal di dalam proses. 4. prototipe dapat melayani sebagai sebuah basis pembagi spesifikasi sistem
Gambar II-4 Proses Prototyping
Terdapat dua pendekatan proses perangkat lunak di dalam prototyping, yaitu: 1. Evolutionary prototyping •
Sebuah pendekatan ke pengembangan sistem dimana sebuah inisialisasi prototipe dihasilkan dan diperhalus melalui sejumlah tahapan menuju sistem akhir.
2. Throw-away prototyping •
Sebuah prototipe yang biasanya merupakan implementasi dari sebuah sistem yang dihasilkan untuk membantu menemukan masalah kebutuhan dan memperbaikinya. Sistem tersebut kemudian dikembangkan menggunakan beberapa proses pengembangan lainnya.
II.2
Sistem Basis Data (Database System)
Sistem Basis Data adalah suatu sistem penyusunan dan pengelolaan record-record dengan menggunakan komputer, dengan tujuan untuk menyimpan atau merekam serta memelihara data operasional lengkap sebuah organisasi/perusahaan, sehingga mampu menyediakan informasi yang optimal yang diperlukan pemakai untuk kepentingan proses pengambilan keputusan[8]. Terdapat 4 (empat) komponen utama di dalam sistem basis data yaitu: a) Data, dengan ciri-ciri: -
disimpan secara terintegrasi (integrated), merupakan kumpulan dari berbagai macam file dari aplikasi-aplikasi yang berbeda, disusun dengan cara menghilangkan bagian-bagian yang rangkap (redundant). 10
-
dapat dipakai secara bersama-sama dalam waktu yang bersamaan di aplikasi yang berbeda.
b) Hardware, terdiri dari semua peralatan keras komputer yang digunakan untuk pengelolaan sistem basis data berupa: -
peralatan penyimpanan (disk, drum, dll)
-
peralatan input dan output
-
peralatan komunikasi data, dll.
c) Software: database management system (DBMS) -
berada di antara physical database dan pengguna
-
memungkinkan pengguna untuk menciptakan dan memelihara basis data.
d) Pengguna (user(s)) -
application programmers, end users, database administrator
-
aplikasi lainnya.
Gambar II-5 Sistem Basisdata [6]
Terdapat 3 level bagaimana melihat data dalam sebuah basis data, yaitu: 1. Level Fisik (Phyisical Level) – internal level Level
ini
merupakan
terendah
yang
menunjukkan
bagaimana
sesungguhnya suatu data disimpan. Pada level ini pemakai melihat data sebagai gabungan dari struktur dan datanya sendiri. 2. Level Lojik/Konseptual (Conceptual Level)
11
Level ini menggambarkan data sebenarnya disimpan dalam basis data dan hubungannya dengan data yang lain. 3. Level Penampakan (View Level) – eksternal level. Level ini merupakan level tertinggi yang menunjukkan sebagian besar dari basis data sesuai dengan kebutuhan pengguna, bagi pengguna terasa sebagai suatu kesatuan yang kompak. Pada prinsipnya sistem basis data dibangun dengan beberapa tahapan, yaitu: 1. Requirements Elicitation 2. Conceptual Modeling 3. Logical Modeling 4. Physical Modeling 5. Documentation
Gambar II-6 Database System Development [6]
Basis data memiliki bahasa (database language) yang terdiri dari 2 jenis, yaitu: a) Data Definition Language (DDL) Bahasa ini bertujuan untuk membuat tabel baru, membuat indeks, mengubah tabel, menentukan struktur penyimpanan tabel dll. Hasil kompilasi dari perintah DDL adalah kumpulan tabel yang disimpan di dalam file khusus yang disebut dengan kamus data (data dictionary). Kamus data adalah suatu metadata (superdata) yang mendeskripsikan data
12
sesungguhnya. Kamus data ini selalu diakses dalam suatu operasi basis data sebelum file data yang sesungguhnya diakses. b) Data Manipulation Language (DML) Bahasa ini bertujuan untuk melakukan manipulasi dan pengambilan data pada suatu basis data. Manipulasi dapat berupa penyisipan/penambahan data baru, penghapusan data dan perubahan data. Bahasa ini juga bertujuan memudahkan pengguna dalam mengakses data sebagaimana yang telah direpresentasikan oleh model data. Terdapat 2 jenis DML, yaitu: -
Prosedural, mensyaratkan agar pengguna menentukan data apa yang diinginkan serta bagaimana cara mendapatkannya.
-
Non-Prosedural, membuat pengguna dapat menentukan data apa yang diinginkan tanpa menyebutkan bagaimana cara mendapatkannya.
Adapun keuntungan penggunaan sistem basis data antara lain: 1. Terkontrolnya perangkapan dan inkonsistensi data. 2. Terpeliharanya keselarasan data. 3. Data dapat dipakai secara bersama-sama. 4. Memudahkan penerapan standarisasi. 5. Memudahkan penerapan batasan-batasan pengamanan. 6. Terpeliharanya integritas data. 7. Terpeliharanya keseimbangan atas perbedaan kebutuhan data dari setiap aplikasi. 8. Program / data independen. II.2.1 Basisdata (Database) Basisdata (Database) dapat didefinisikan sebagai kumpulan data lojik yang saling terhubung dan deskripsi data yang sama, didesain untuk memenuhi kebutuhan informasi di dalam suatu organisasi[7]. Properti dari basisdata meliputi: 1. kumpulan data yang terstruktur 2. logically coherent — mempunyai makna 3. inherent meaning — information vs data 4. tujuan yang spesifik — intended user group(s) 5. merepresentasikan dunia nyata.
13
Beberapa model basisdata yang telah dibangun di masa sekarang yaitu: 1. Relational Model, dikenalkan oleh Codd pada tahun 1970 yang merupakan DBMS yang ada sekarang ini. 2. The Entity Relationship Model (ER-Model), dikenalkan oleh Chen pada tahun
1976,
mengandung
pendekatan
secara
umum
untuk
merepresentasikan data dan sangat membantu dalam perancangan sistem basis data relasional. 3. The Object Oriented Model, merupakan pengembangan model basisdata yang menerapkan konsep berorientasi objek. Model ini belum banyak digunakan karena masih terdapat kesulitan dalam penerapannya di dunia nyata. 2.2.1.1 Basis Data Relasional Basis Data relasional adalah kumpulan relasi lojik (entitas atau tabel) yang saling terhubung. Model relasional terdiri dari: 1. data structures 2. data constraints 3. relational operators Adapun tujuan utama dari model relasional yaitu: 1. untuk mendapatkan derajat yang tinggi dari data yang independen 2. mengontrol tingkat redundansi 3. menjalankan beberapa bahasa manipulasi yang akan digunakan. Konsep dasar dari basis data relasional adalah konsep matematika/logika, tiap-tiap abstraksi atau konsep harus direpresentasikan sebagai sebuah relasi. Sebuah relasi (tabel) merepresentasikan sebuah entitas yang memiliki nama yang unik (tidak sama dengan relasi lain), mempunyai properti atribut atau tuple yang tidak sama pula. Setiap tuple (baris) merepresentasikan individual instances atau entitas, harus diidentifikasikan oleh satu atribut yang unik, misalkan primary key, dimana primary key tidak boleh bernilai null. Setiap atribut (kolom) di sebuah relasi mempunyai nama yang jelas dan saling terpisah dan bernilai atomic. Di dalam basis data relasional, sebuah atribut dapat dinyatakan sebagai: 1. Candidate key, yaitu sebuah kumpulan minimal atribut yang unik yang mengidentifikasikan setiap tuple.
14
2. Primary key, yaitu candidate key yang dipilih untuk mengidentifikasikan setiap tuple secara unik. 3. Alternate key, yaitu jika terdapat lebih dari satu candidate key di dalam R dan satu di antaranya dipilih sebagai primary key, candidate key yang tersisa dirujuk sebagai alternate key. 4. Composite key, merujuk ke key yang mengandung lebih dari satu atribut. 5. Foreign key, yaitu sebuah atribut atau kumpulan atribut dari relasi yang cocok untuk candidate key dari relasi yang terhubung. Biasanya merepresentasikan relasi antara dua relasi atau tuple. II.2.2 Sistem Manajemen Basisdata (DBMS) Database Management System (DBMS) adalah perangkat lunak yang menangani semua pengaksesan basis data dan memiliki fasilitas membuat, mengakses, memanipulasi dan memelihara basis data. Sebuah DBMS umumnya memiliki sejumlah komponen fungsional (modul) seperti: a)
File Manager, yang mengelola ruang dalam disk dan struktur data yang dipakai untuk merepresentasikan informasi yang tersimpan dalam disk.
b)
Database Manager, yang menyediakan interface antara data low-level yang ada di basis data dengan program aplikasi dan query yang diberikan ke sistem.
c)
Query Processor, yang menerjemahkan perintah-perintah dalam query language ke perintah low-level yang dapat dimengerti oleh database manager.
d)
DML Precompiler, yang mengkonversi perintah DML yang ditambahkan dalam sebuah program aplikasi ke pemanggil prosedur normal dalam bahasa induk.
e)
DDL Compiler, yang mengkonversi perintah-perintah DDL ke dalam sekumpulan tabel yang mengandung meta data. Tabel-tabel ini kemudian disimpan dalam kamus data.
Adapun fungsi DBMS antara lain, yaitu: a)
Data Definition, DBMS harus dapat mengolah pendefinisian data.
b)
Data Manipulation, DBMS harus dapat menangani permintaan dari pemakai untuk mengakses data.
15
c)
Data Security & Integrity, DBMS harus dapat memeriksa security dan integrity data yang didefinisikan oleh DBA.
d)
Data Recovery & Concurency, DBMS harus dapat menangani kegagalan–kegagalan pengaksesan basis data yang dapat disebabkan oleh kesalahan sistem, kerusakan disk, dsb.
e)
Data Dictionary, DBMS harus menyediakan kamus data.
f)
Performance, DBMS harus menangani unjuk kerja dari semua fungsi seefisien mungkin.
Adapun keuntungan menggunakan DBMS yaitu: a)
Controlled Redudancy.
b)
Mengandung storage untuk efisiensi pemrosesan query.
c)
Backup and Recovery; perbaikan dari kegagalan software maupun hardware.
d)
Access Control; sub sistem keamanan dan autorisasi pengguna.
e)
Multiple User Interfaces
f)
Merepresentasikan hubungan yang kompleks (complex relationship).
g)
Memaksa berbagai integritas constraints, semantic data, primary key dan foreign key.
h)
Enforcing Standard; data presentation, formats, terminology
i)
Flexibility; perubahan secara evolutionary terhadap basis data
j)
Mengurangi pengembangan aplikasi; saat kebutuhan data yang sama untuk digunakan oleh beberapa aplikasi.
k)
Economies of Scale; mengurangi biaya secara keseluruhan operasi dan manajemen.
Perbedaan mendasar dari data non DBMS dan data DBMS adalah adanya skema lojik yang ada di DBMS yang mampu memberikan operasi-operasi basis data yang dibutuhkan oleh pengguna secara mudah. II.2.3 DBMS Open Source - MySQL MySQL adalah salah satu DBMS Open Source yang terkenal, dibangun, didistribusikan dan didukung oleh MySQL AB. MySQL AB adalah sebuah perusahaan komersial, didirikan oleh MySQL Developer. Perusahaan ini merupakan perusahaan Open Source generasi kedua yang menyatukan nilai dan
16
metodologi open source dengan model bisnis yang sukses. MySQL ini merupakan DBMS Relasional (RDBMS) yang menyimpan data di tabel-tabel yang terpisah seperti meletakkan semua data di ruang yang besar dan juga menambahkan kecepatan dan fleksibilitas terhadap akses datanya. SQL (Structured Query Language) merupakan bahasa standar yang digunakan untuk mengakses basis data yang ada di MySQL. Beberapa keuntungan yang dapat diperoleh dengan menggunakan MySQL, antara lain: a)
MySQL merupakan perangkat lunak yang opensource yang berarti setiap pengguna dapat menggunakan dan memodifikasinya, men-download dari internet tanpa harus membayar apapun.
b)
MySQL merupakan server basis data yang memiliki kecepatan dan reliability yang tinggi serta mudah untuk menggunakannya.
c)
MySQL dapat bekerja di sistem klien/server atau embedded system.
d)
MySQL memiliki kontribusi yang besar dalam hal dukungan terhadap sebagian besar bahasa pemrograman yang ada.
Selain fitur yang telah distandarkan, MySQL juga memberikan fitur yang dapat membantu dalam meningkatkan performansi basisdata, yaitu: a)
Stored Procedure (StoreProc) dan Function, yaitu sebuah kumpulan pernyataan SQL yang disimpan di server, klien tidak perlu lagi menyimpan pernyataan individual, tapi dapat mengacu ke StoreProc atau fungsi itu sebagai gantinya.
b)
Triggers, yaitu objek basisdata bernama yang terhubung dengan sebuah tabel dan aktif saat kejadian (event) tertentu berlangsung pada satu tabel.
c)
View, yaitu sebuah objek yang menyimpan hasil seleksi dari satu atau lebih tabel.
II.3
Entity Relationship Diagram (Diagram ER)
Diagram ER merupakan simbol-simbol khusus yang menggambarkan inter relasi antar entitas di dalam sebuah sistem basisdata. Simbol-simbol tersebut terdiri dari Kotak dan Berlian (Diamond). II.3.1 Entitas a)
Entitas adalah sebuah objek yang dapat dibedakan di dunia nyata. 17
b)
Kumpulan Entitas (set entity) adalah kumpulan dari entitas yang sejenis.
c)
Objek entitas dapat berupa fisik ataupun konsep.
II.3.2 Relasi (Relationship) a) Relasi adalah hubungan yang terjadi antara satu atau lebih entitas b) Kumpulan relasi (relationship set) adalah kumpulan dari relasi yang sejenis.
Gambar II-7 Contoh Relasi
II.3.3 Atribut 1) Atribut adalah karakteristik dari entitas atau relasi, yang menyediakan penjelasan detail tentang entitas atau relasi tersebut. 2) Nilai Atribut merupakan suatu data aktual atau informasi yang disimpan pada suatu atribut di dalam suatu entitas atau relasi. 3) Jenis-jenis atribut: a) Key, digunakan untuk menentukan suatu entitas secara unik. b) Simple, yaitu atribut yang bernilai tunggal. c) Multivalue, yaitu atribut yang memiliki sekelompok nilai untuk setiap instan entitas.
Gambar II-8Contoh Atribut
d) Composite, yaitu atribut yang terdiri dari beberapa atribut yang lebih kecil yang mempunyai arti tertentu.
18
Gambar II-9 Contoh Composite
e) Derivatif, yaitu atribut yang dihasilkan dari atribut lain.
Gambar II-10 Contoh Derivatif
II.3.4 Derajat Relasi Derajat relasi bertujuan untuk menjelaskan jumlah entitas yang berpartisipasi dalam satu relasi. Jenis-jenis derajat relasi, yaitu: 1) Unary Degree (derajat satu)
Gambar II-11 Contoh Unary Degree
2) Binary Degree (derajat dua)
Gambar II-12 Contoh Binary
3) Ternary Degree (derajat tiga)
19
Ruang
Dosen
Mengajar
Matakuliah
Gambar II-13 Contoh Tenary Degree
II.3.5 Kardinalitas (Cardinality) Kardinalitas bertujuan untuk menjelaskan batasan jumlah keterhubungan satu entitas dengan entitas lainnya. Jenis-jenis kardinalitas, yaitu: 1) 1 : 1 (one to one)
Gambar II-14 Contoh Kardinalitas 1:1
2) 1 : N atau N : 1 (one to many atau many to one)
Gambar II-15 Contoh Kardinalitas 1:N
3) M : N (many to many)
Gambar II-16 Contoh Kardinalitas N:N
II.3.6 Participation Constraint Participation constraint bertujuan menjelaskan apakah keberadaan suatu entitas bergantung pada hubungannya dengan entitas lain, dengan kata lain untuk menjaga integritas data yang ada di dalam sistem basisdata. Terdapat 2 jenis participation constraint, yaitu:
20
1) Total Participation, yaitu entitas bergantung pada hubungannya dengan entitas lain.
Gambar II-17 Contoh Total Participants
Setiap data yang ada di entitas Dosen harus memiliki paling sedikit satu hubungan dengan Jurusan. 2) Partial Participation, yaitu entitas tidak bergantung pada hubungannya dengan entitas lain.
Gambar II-18 Contoh Partial Participants
Setiap data yang ada di entitas Dosen tidak harus memiliki relasi dengan entitas Matakuliah II.3.7 Weak Entity (Entitas lemah) Weak entity adalah suatu entitas dimana keberadaan dari entitas tersebut tergantung dari keberadaan entitas lain. Entitas yang merupakan induknya disebut identifying owner dan relasinya disebut identifying relationship. Weak Entity selalu mempunyai Total Participation constraint dengan Identifying Owner.
Gambar II-19 Contoh Weak Entity
II.4
Rekayasa Ulang Perangkat Lunak (Software Reengineering)
Setelah sebuah perangkat lunak dibangun dan diaplikasikan di suatu sistem, maka hal yang terpenting adalah bagaimana kemampuan sebuah perangkat lunak itu
21
dapat
dirawat
(maintainability).
Perawatan
Perangkat
Lunak
(Software
Maintainance) adalah sebuah usaha itu melakukan perubahan terhadap sebuah sistem perangkat lunak untuk memperbaiki atau meningkatkan fungsionalitasnya. Ada empat tipe dari perawatan perangkat lunak, yaitu: 1. Perfective
Maintainance,
yaitu
perubahan
yang
dibuat
untuk
meningkatkan fungsionalitas produk, seperti menambahkan kebutuhan baru pengguna, meningkatkan performasi, kegunaan atau atribut sistem lainnya. 2. Corrective Maintainance, yaitu perubahan yang dibuat untuk memperbaiki kesalahan yang ada di sistem. 3. Adaptive Maintainance, yaitu perubahan yang dibuat untuk menjaga kecepatan dengan melakukan perubahan terhadap lingkungan, seperti perubahan terhadap lingkungan sistem operasi, bahasa pemrograman dan tools, DBMS dan komponen-komponen komersial lainnya. 4. Preventive
Maintainance,
yaitu
perubahan
yang
dibuat
untuk
meningkatkan maintainability dan reliability di masa depan dari sebuah sistem.
Salah satu metode yang dapat digunakan dalam proses perawatan perangkat lunak adalah
dengan
melakukan
rekayasa
ulang
perangkat
lunak
(Software
Reengineering). Rekayasa ulang perangkat lunak adalah suatu usaha untuk mengatur dan memodifikasi ulang terhadap sebuah sistem perangkat lunak yang ada agar lebih mudah dirawat. Ada dua proses yang dapat dilakukan di rekayasa ulang perangkat lunak, yaitu: 1) Code Migration, yaitu menuliskan ulang kode program ke dalam bahasa pemrograman lain dan/atau melakukan perubahan terhadap paradigma pemrograman. 2) Data Migration, yaitu melakukan perubahan terhadap lingkungan DBMS dan melakukan konversi terhadap datanya.
Keuntungan melakukan rekayasa ulang perangkat lunak antara lain adalah: 1) Mengurangi risiko 2) Mengurangi biaya
22
Beberapa faktor yang mempengaruhi besarnya biaya rekayasa ulang, yaitu: 1) Kualitas perangkat lunak yang akan direkayasa ulang 2) Ketersediaan tools untuk rekayasa ulang 3) Tingkat konversi data yang diperlukan 4) Ketersediaan staf ahli yang akan melakukan rekayasa ulang. II.4.1 Reverse Engineering Reverse
Engineering
adalah
proses
menganalisa
sebuah
sistem
untuk
mengidentifikasi komponen-komponen yang terdapat di dalam sistem serta keterhubungan antar komponen tersebut untuk membuat representasi sistem ke dalam bentuk lain di tingkat abstraksi yang lebih tinggi dan mudah dimengerti [10].
Gambar II-20 Reverse Engineering [9]
Ada 3 tahap reverse engineering, yaitu: 1) Redocumentation, yaitu proses analisa kode program dari sistem lama menjadi sebuah dokumentasi baru. 2) Redesign, perbaikan rancangan berdasarkan hasil redocumentation di atas. 3) Implementation, proses pelaksanaan hasil rancangan menjadi sebuah sistem baru.
Beberapa kesulitan dalam melaksanakan pendekatan reverse engineering ini, antara lain: 1) Pengembang harus mengetahui dan memahami bahasa pemrograman dan lingkungannya (IDE) secara luas, agar dapat memahami prosesproses yang ditulis di kode program dengan baik. 2) Legal battles, yaitu pengembang harus mengetahui dan memahami aspek legalisasi produk perangkat lunak yang digunakan.
23
3) Code
encryption,
ada
kemungkinan
pengembang
terdahulu
menanamkan kode enkripsi ke dalam struktur programnya, sehingga pengembang sekarang harus mampu mengatasinya. 4) Distributing Binaries 5) Complexity, pengembang harus mampu menangani kompleksitas yang ada di sistem lama. Berikut beberapa alasan untuk melakukan reverse engineering dari sebuah sistem software: 1)
untuk memaksa produk atau standar proses;
2)
untuk mengizinkan manajemen pemeliharaan yang lebih baik;
3)
untuk menyederhanakan software yang kompleks;
4)
untuk memfasilitasi deteksi kesalahan;
5)
untuk menghapus efek samping;
6)
untuk meningkatkan kualitas kode program;
7)
untuk menghasilkan dokumentasi yang mutakhir;
8)
untuk menyiapkan deretan test secara lengkap;
9)
untuk meningkatkan performansi;
10) untuk mengizinkan terhadap perubahan besar yang akan dibuat; 11) untuk menemukan rancangan dan spesifikasi kebutuhan; 12) untuk mengembangkan sebuah reuse library; 13) untuk mengenalkan teknik inovasi seperti antarmuka baru bagi pengguna. II.4.2 Restrukturisasi Restrukturisasi adalah proses modifikasi terhadap source code dan/atau data agar terjadi peningkatan fungsionalitas di masa yang akan datang[9]. Restrukturisasi terjadi saat arsitektur dasar dari sebuah aplikasi menjadi sangat padat, meskipun teknik internal bekerja. Beberapa keuntungan yang dapat diperoleh dengan melakukan restrukturisasi, yaitu: 1)
Program yang berkualitas tinggi, dimana program tidak terlalu kompleks serta dokumentasi yang lebih lengkap.
2)
Biaya operasional dan usaha pengguna dalam menggunakan perangkat lunak dapat dikurangi.
24
3)
Upaya yang dilakukan untuk melakukan perawatan terhadap perangkat lunak tersebut dapat dikurangi.
4)
Perangkat Lunak lebih mudah untuk dilakukan proses testing dan debugging.
Jenis-jenis restrukturisasi dapat dibagi menjadi beberapa bagian, yaitu: 1. Restrukturisasi dokumen, yaitu melakukan perubahan struktur dokumen yang ada dengan beberapa alasan, antara lain pemutakhiran dokumen. 2. Restrukturisasi kode, yaitu melakukan perubahan terhadap struktur kode program perangkat lunak untuk meningkatkan fungsionalitasnya dan menghasilkan kode yang berkualitas tinggi. 3. Restrukturisasi data, yaitu melakukan perubahan terhadap struktur data perangkat lunak untuk meningkatkan fungsionalitasnya.
II.5
Restrukturisasi Data
II.5.1 Paradigma Tujuan utama dari restrukturisasi data adalah melakukan struktur ulang terhadap data guna mendapatkan lingkungan data yang teratur dan tersusun dengan baik. Proses ini melibatkan analisa dan reorganisasi terhadap struktur data (kadangkadang nilai-nilai data), bisa merupakan bagian dari proses perpindahan dari sistem file-based ke sebuah lingkungan DBMS, atau perubahan dari DBMS satu ke DBMS lainnya.
Gambar II-21 Paradigma Restrukturisasi Data[9]
II.5.2 Pendekatan dan Issue Pendekatan yang dapat dilakukan untuk melakukan restrukturisasi data, antara lain:
25
1. Data Cleanup, yaitu melakukan penghapusan duplikasi data dan data redundan guna meningkatkan kualitas datanya. 2. Data Extension, yaitu data dan program yang terhubung direkayasa ulang untuk menghilangkan kelemahan/batasan yang ada di proses data. Hal ini memungkinkan membutuhkan perubahan terhadap program untuk menambah panjang fieldnya, mengubah batas atas di dalam tabelnya dan lain-lain. 3. Data Migration, yaitu memindahkan data ke dalam DBMS yang lebih baik. Data sebelumnya mungkin disimpan di file yang terpisah atau diatur di DBMS yang lama.
Gambar II-22 Pendekatan restrukturisasi data [9]
Berbagai permasalahan yang sering terjadi sebelum melakukan restrukturisasi data, antara lain: 1)
End-Users menghendaki data berada di mesin desktop mereka dibandingkan dengan di dalam sistem file.
2)
Sistem mungkin harus memproses data lebih jauh dibandingkan dengan yang diharapkan sebelumnya oleh perancang mereka.
3)
Data redundan mungkin disimpan dalam format yang berbeda di tempat yang berlainan dalam sebuah sistem.
4)
Penamaan data; penamaan mungkin sulit untuk dipahami. Data yang sama mungkin memiliki nama yang berbeda di program yang berbeda. 26
5)
Panjang field; item yang sama mungkin akan diberi panjang field yang berbeda di dalam program.
6)
Susunan record (baris); record merepresentasikan entitas yang sama yang mungkin disusun berbeda di program yang berbeda.
7)
Hard-coded literals
8)
Minimnya kamus data yang dimiliki.
II.5.3 Strategi Strategi yang dapat dilakukan untuk melakukan restrukturisasi data yaitu: 1.
Schema Conversion -
Translasi dari skema sistem yang ada ke dalam skema yang sama di sebuah sistem dengan teknologi baru.
2.
3.
Database Reengineering (DBRE) + database design
Data Conversion -
Migrasi data dari sistem lama ke sistem yang baru.
-
Hasil yang diperoleh disesuaikan dengan konversi skema.
Program Modification -
Melakukan perubahan terhadap program sehingga program mampu mengakses basis data yang baru sebagai pengganti sistem yang lama.
-
Meningkatkan fungsionalitas, kualitas kode program, mengubah bahasa pemrograman dan tidak mengubah antarmuka pengguna.
-
Mengurangi proses yang kompleks berdasarkan konversi skema.
Terdapat dua jenis proses konversi skema pada legacy system, yaitu: 1. transformasi Source Physical Schema (SPS) ke Target Physical Schema (TPS) 2. transformasi SPS ke Conceptual Schema (CS).
Pada tahapan Data Conversion atau Data Migration, dilakukan konversi terhadap format data, bukan terhadap isinya. Konversi data dapat dilakukan dengan menggunakan sebuah perangkat lunak yang disebut Converter, atau ExtractTransform-Load processor, dengan mentransformasi data dari sumber ke dalam format yang telah ditentukan di skema tujuan. Converter tersebut memiliki tiga
27
fungsi utama, yang pertama harus dapat mengekstraksi sumber data, kemudian mengubahnya sesuai dengan struktur data skema tujuan, dan terakhir dapat menuliskan legacy data ke skema tujuan.
Gambar II-23 Arsitektur migrasi data dan transformasi skema [6]
Adapun metodologi yang digunakan untuk melakukan data migration yaitu: 1. Target PhysicalSchema (TPS) harus telah diimplementasi di DBMS baru. 2. Pemetaan antara SPS dan TPS harus ditentukan sebagai sebuah barisan terurut dari transformasi skema berdasarkan satu dari dua strategi di atas. 3. Pemetaan tersebut harus diimplementasikan ke dalam converter untuk mentraslasi data di legacy system sesuai dengan format yang ada di TPS.
II.6 Refactoring Basisdata (Database Refactoring) Refactoring Basisdata adalah perubahan sederhana pada skema basisdata untuk meningkatkan desain dalam mempertahankan segi perilaku maupun informasi dalam kode semantic, dengan kata lain tidak menambahkan fungsionalitas baru atau memperlebar fungsionalitas yang ada, tidak juga menambahkan data atau mengubah makna data. II.6.1 Kategori Refactoring Basisdata Terdapat beberapa kategori dalam refactoring basisdata seperti yang terlihat pada Tabel II-1. Tabel II-1 Kategori Refactoring Basisdata [1] Kategori Refactoring Basisdata Struktural
Deskripsi
Contoh
Sebuah perubahan terhadap definisi Memindahkan sebuah kolom dari satu satu atau lebih tabel atau view. tabel ke tabel lain atau membagi kolom yang memiliki banyak tujuan ke dalam beberapa kolom yang terpisah, satu dari setiap tujuan.
28
Kategori Refactoring Basisdata
Deskripsi
Contoh
Kualitas Data
Sebuah perubahan yang Membuat kolom yang non-nullable meningkatkan kualitas informasi untuk memastikan kolom selalu bernilai yang terkandung di dalam basisdata. atau menetapkan format umum untuk memastikan konsistensi.
Integritas Referensial
Sebuah perubahan yang memastikan bahwa baris yang memiliki referensi ada di di dalam tabel lain dan/atau yang memastikan bahwa sebuah baris yang tidak berguna lagi dihapus secara benar.
Menambahkan sebuah trigger untuk memungkinkan penghapusan di antara dua entitas, kode yang tadinya diimplementasikan di luar basisdata.
Arsitektural
Sebuah perubahan yang meningkatkan proses secara menyeluruh di dalam program eksternal yang berinteraksi dengan sebuah basisdata.
Menukar sebuah operasi Java yang ada di dalam shared code library dengan store procedure (StoreProc) di dalam basisdata. Buat agar StoreProc itu mudah dibaca oleh aplikasi non-Java.
Metode
Sebuah perubahan terhadap metode Mengubah nama StoreProc agar mudah (a stored procedure, stored function, dimengerti. or trigger) untuk meningkatkan kualitasnya. Banyak refactoring kode dapat diaplikasikan ke metode basisdata.
Transformasi NonRefactoring
Sebuah perubahan ke skema Menambahkan kolom baru ke tabel yang basisdata yang mengubah semantic di ada. dalamnya.
Beberapa faktor berikut merupakan bagian yang dapat dijadikan pertimbangan dalam peningkatan fungsionalitas basisdata, yaitu: 1. Lookup Table, yaitu tabel yang menyimpan informasi tertentu yang menjadi referensi tabel lain dengan menggunakan foreign key. Motivasi:
Memperkenalkan integritas referensi ke sebuah kolom.
Menyediakan code lookup (memindahkan enum ke basisdata)
Mengganti batasan kolom dengan kumpulan nilai yang diharapkan di dalam lookup table.
Trade off:
Ada kemungkinan berdampak ke performansi sebagai hasil dari gabungan tambahan.
2. Cascading delete, yaitu menghapus baris turunan (child(s) record) saat baris induk (parent record) dihapus.
29
Motivasi:
Menjaga integritas referensi dari baris induk/turunan.
Menghapus responsibility untuk penghapusan turunan di aplikasi.
Trade off:
Deadlock ?
Trigger accidental mass deletion saat menghapus root nodes.
Duplikasi fungsionalitas muncul saat menggunakan persistence frameworks seperti Hibernate/Toplink.
3. Introduce Index, yaitu membagi (split) baris menjadi beberapa tabel dengan menambahkan indeks yang unik atau non unik. Motivasi:
Meningkatkan performansi pembacaan query.
Trade off:
Terlalu
banyak
indeks
menurunkan
performansi
selama
insert/update/deletes.
Data yang ada mengandung duplikasi yang mungkin membutuhkan pembersihan saat membuat indeks unik.
II.6.2 Database Smells Fowler (1997) memperkenalkan konsep “code smells”, sebuah strategi umum untuk mencari masalah yang ada di dalam kode, sehingga muncul kebutuhan untuk merefactor-nya. Serupa dengan itu, terdapat “database smells” yang juga muncul kebutuhan serupa. Smell basisdata meliputi: 1. Multipurpose column; yaitu satu kolom yang nilainya difungsikan untuk beberapa tujuan. Misalkan kolom yang menyimpan tanggal lahir seseorang, nilai ini dijadikan tanggal lahir jika ia sebagai customer dan dijadikan tanggal register jika ia seorang employee. Masalah ini dapat diatasi dengan menambahkan kolom baru untuk menambahkan informasi yang sesuai sehingga tidak ada lagi satu kolom yang memiliki tujuan lebih dari satu.
30
2. Multipurpose table; sama dengan Multipurpose Column, tapi ini terjadi pada tabel. 3. Redundant data; beberapa kolom yang menyimpan informasi pada satu tabel, ternyata informasi itu ada juga di tabel lain. Misalnya informasi alamat mahasiswa di tabel mahasiswa, ternyata alamat mahasiswa tersebut terdapat juga di tabel kelas kuliah. Masalah ini dapat diatasi dengan melakukan normalisasi. 4. Tables with too many columns; terdapat banyak kolom yang ada di satu tabel, sehingga menyulitkan dalam pengaksesan tabel tersebut. Masalah ini dapat diatasi dengan melakukan normalisasi. 5. Tables with too many rows; terdapat banyak baris atau record yang ada dalam satu tabel, hal ini berakibat pada masalah performansi data tersebut. Masalah ini dapat diatasi dengan memindahkan beberapa kolom ke tabel lain atau memindahkan baris ke tabel lain. Masalah ini dapat diatasi dengan melakukan normalisasi. 6. "Smart" columns; yaitu sebuah kolom yang menyimpan beberapa informasi. Misalnya satu kolom yang menyimpan ID mahasiswa, dimana ID mahasiswa tersebut menyimpan informasi mengenai fakultas, jurusan serta nomor urutnya, hal ini akan mengharuskan melakukan parsing terlebih dahulu sebelum informasi-informasi itu digunakan. Smell ini dapat diatasi dengan menambahkan kolom yang akan menyimpan informasi yang diperlukan, sehingga pada tahap konstruksi program tidak perlu lagi menambahkan fungsi parsing. 7. Fear of change; yaitu pada ketakutan akan mengubah skema basisdata karena takut memecahkan masalah-masalah tertentu pada saat ingin melakukan pemeliharaan sistem.
II.7 Pengukuran Kualitas Basisdata Sebuah tabel dapat dikategorikan baik (efisien) atau normal jika memenuhi 3 (tiga) kriteria berikut: 1. Jika ada dekomposisi (penguraian) tabel, maka dekomposisinya harus dijamin aman (Lossless Join Decomposition).
31
2. Terpeliharanya kebergantungan fungsional pada saat perubahan data (Depedency Preservation). 3. Tidak Melanggar Boyd-Code Normal Form (BCNF).
BCNF menjamin tidak adanya kebergantungan fungsi yang tidak trivial dari suatu atribut selain kebergantungan terhadap superkey dari struktur data tersebut. Tujuan dari pengukuran kualitas suatu struktur data
adalah untuk melihat
pemenuhan atas faktor yang menjadi rujukan suatu struktur data yang baik. Struktur data yang baik akan memenuhi tiga hal yang berhubungan dengan kebergantungan fungsi yang terdapat di dalamnya. Tetapi hampir tidak dimungkinkan untuk memenuhi ketiga faktor tersebut. Biasanya hanya terpenuhi dua kriteria saja. Kriteria tersebut adalah : memenuhi bentuk BCNF, tidak terjadi lossless join, dan mempertahankan kebergantungan yang ada. Jadi, salah satu cara menunjukkan rancangan basis data yang baik, adalah dengan melihat kebergantungan fungsi yang muncul pada struktur data tersebut di antaranya adalah dengan melihat bentuk BCNF dari rancangan struktur datanya.
32