BAB 2 LANDASAN TEORI 2.1 Database 2.1.1 Pengertian Database Menurut Connolly dan Begg (2004, p14), database adalah suatu kumpulan data yang saling berhubungan secara logis dan penjelasan tentang data yang terhubung tersebut dirancang sedemikian rupa sehingga dapat memberikan informasi yang diperlukan oleh organisasi. Artinya, database adalah tempat penyimpanan data yang terbesar dimana bisa digunakan secara simultan atau secara bersamaan oleh banyak departemen dan pengguna lainnya. Di dalam database, semua data item diintegrasikan dengan menghindarkan duplikasi data. Database tidak hanya mengandung data operasional organisasi, tetapi juga deskripsi dari data tersebut. Untuk alasan ini sebuah database juga mendefinisikan integrasi record dari database itu sendiri (self describing of integrated record). Deskripsi atau data dari data ini dikenal sebagai system catalog (atau data dictionary atau meta-data). Deskripsi ini menetapkan kebebasan dari program aplikasi (program data independence). Pendekatan dengan sistem database dimana definisi dari data adalah dipisahkan dari program aplikasi. Menurut Atre (1980, p12), data base adalah sebuah objek untuk menyimpan informasi terstruktur yang kompleks, yang diorganisir dan disimpan dalam suatu cara yang diizinkan penggunanya sehingga dapat mengambil informasi dengan cepat dan efisien. Informasi dipecah ke dalam bagian-bagian kecil, agar bisa dikelola dengan mudah. Data base juga merupakan data yang digunakan pada suatu perusahaan. 7 8 Menurut Ramakrishnan dan Gehrke (2003, p4), database adalah suatu koleksi data yang secara khas menggambarkan aktivitas organisasi yang satu dengan organisasi yang terkait. Menurut Post (2005, p2), database merupakan kumpulan data yang disimpan dalam format yang standar dan dirancang untuk dibagikan oleh berbagai pengguna. 2.1.2 Structured Query Language (SQL) Menurut Groff dan Weinberg (1999, p4), Structured Query Language (SQL) adalah alat yang digunakan untuk mengorganisir, mengatur dan mendapatkan data yang disimpan dalam database komputer. SQL merupakan bahasa komputer yang dipergunakan untuk berinteraksi dengan database terutama database relasional. Menurut Coffman (1999, p4), SQL diterima secara luas oleh dunia industri sebagai standar untuk mendefinisikan, mengubah dan mengatur data serta mengontrol bagaimana perubahan yang dilakukan pada database dengan menggunakan tabel, index, key, baris dan kolom untuk menyimpan data. SQL dibangun dari ide Dr. Edgar(Ted) F. Codd dari IBM yang juga membantu pengembangan model relasional ketika bekerja di laboratorium penelitian IBM tahun 1970-an dan mulai beredar di pasaran pada awal tahun 1990-an. SQL, menurut Groff dan Weinberg (1999, p4), menyediakan perintah yang bervariasi untuk berbagai macam tugas yang disediakan DBMS bagi penggunanya, seperti: • Data defiition SQL memungkinkan pengguna mendefinisikan struktur dan pengorganisasian data yang tersimpan serta relationship antar data yang tersimpan. 9 • Data retrieval SQL memungkinkan pengguna atau program aplikasi untuk mengambil data yang tersimpan di database dan menggunakannya. • Data manipulation SQL memungkinkan pengguna atau program aplikasi untuk mengubah database dengan menambahkan data baru, menghapus data lama dan mengubah data yang telah disimpan sebelumnya. • Access control SQL dapat digunakan untuk membatasi kemampuan pengguna untuk mengambil, menambah dan mengubah data, melindungi data yang tersimpan dari pihak yang tidak berwenang. • Data sharing SQL digunakan untuk mengelola pemakaian data bersama oleh beberapa pengguna secara bersamaan untuk memastikan tidak adanya saling mengganggu satu sama lain. • Data integrity SQL mendefinisikan integrity constraint pada database, menjaganya dari kerusakan karena adanya perubahan data yang tidak konsisten atau kegagalan sistem. 10 Menurut Connolly dan Begg (2004, p40), SQL dibagi ke dalam dua bagian , yaitu: 1. Data Definition Language (DDL) DDL adalah sebuah bahasa yang memungkinkan Database Administrator (DBA) atau pengguna untuk mendeskripsikan dan memberi nama entity, atribut dan relationship yang diperlukan dalam aplikasi, beserta integrity dan security constraint. Perintah DDL yang utama, yaitu: 1. Create 2. Alter 3. Drop 2. Data Manipulation Language (DML) DML adalah bahasa yang menyediakan seperangkat operasi yang mendukung operasi dasar manipulasi data pada data yang tersimpan di dalam database. Perintah DML meliputi: 1. Select 2. Insert 3. Update 4. Delete 2.1.3 Integrity Constraint Menurut Connolly dan Begg (2004, pp163-167), integrity constraint terdiri dari lima jenis, yaitu: 11 • Required Data Beberapa kolom harus berisi nilai yang valid, tidak boleh berisi NULL. NULL berbeda dari nilai kosong atau nol, dan digunakan untuk merepresentasikan data yang tidak tersedia atau hilang • Domain Constraints Setiap kolom harus memiliki suatu domain, yaitu suatu himpunan atau set dari nilai-nilai yang valid. • Entity Integrity Primary key dari suatu tabel harus berisi suatu nilai yang unik dan tidak NULL untuk setiap row. • Referensial Integrity Jika suatu foreign key berisi nilai, maka nilai tersebut harus merujuk pada satu row yang valid di parent table. • Enterprise Constraints Update pada suatu tabel dapat diatur berdasarkan enterprise rule yang sesuai dengan transaksi di dunia nyata. 2.2 Teori Database Management System (DBMS) 2.2.1 Pengertian DBMS Menurut Connolly dan Begg (2002, p16), Database Management System (DBMS) merupakan suatu sistem piranti lunak yang memungkinkan pengguna untuk mendefinisikan, membuat, mengatur dan mengontrol akses ke suatu database. Fasilitas yang umumnya disediakan oleh DBMS adalah: 12 1. Pendefinisian database, biasanya dengan DDL, yang memungkinkan pengguna menentukan tipe dan struktur data serta persyaratan data tersebut ke dalam database. 2. Penambahan, pengubahan, penghapusan dan pengambilan data dari database, biasanya dengan DML. Pemanipulasian data ini dilakukan dengan menggunakan query language. 3. Akses terkontrol pada database Menurut Ramakrishnan dan Gehrke (2003, p4), DBMS adalah piranti lunak yang dirancang untuk membantu memelihara dan memanfaatkan kumpulan data dalam jumlah besar, dan kebutuhan untuk sistem maupun penggunanya yang berkembang dengan cepat. Menurut Post (2005, p2), DBMS adalah piranti lunak yang mendefinisikan sebuah basis data, menyimpan data, mendukung bahasa query, membuat laporan dan menciptakan layar masukan data. 2.2.2 Fungsi DBMS Menurut Connolly dan Begg (2004, pp48-52), fungsi dari DBMS antara lain: • Data storage, retrieval and update DBMS harus melengkapi pengguna dengan penyimpanan, pengambilan dan perubahan data • A user-accessible catalog DBMS harus dilengkapi dengan sebuah katalog yang berisi deskripsi data yang tersimpan pada databse dan dan dapat diakses oleh pengguna. 13 • Transaction support DBMS harus dilengkapi dengan sebuah mekanisme yang akan memastikan semua operasi perubahan data pada sebuah transaksi akan dikerjakan semua atau tidak sama sekali. • Concurency control service DBMS harus dilengkapi dengan sebuah mekanisme yang akan memastikan bahwa database diubah dengan benar ketika pengguna jamak mengubah database secara bersamaan. • Recovery service DBMS harus dilengkapi dengan sebuah mekanisme untuk memulihkan database jika database mengalami kerusakan. • Authorization service DBMS harus dilengkapi dengan sebuah mekanisme yang akan memastikan hanya pengguna yang berhak yang mengakses database. • Support for data communication DBMS harus memiliki kemampuan untuk dipadukan dengan piranti lunak komunikasi. • Integrity service DBMS harus memastikan data yang tersimpan dalam database dan perubahannya mengikuti aturan tertentu. • Service to promote data independence DBMS harus memiliki fasilitas untuk mendukung independensi program terhadap struktur database. 14 • Utility services DBMS sebaiknya menyediakan seperangkat layanan alat bantu. 2.2.3 Objek-objek DBMS Dalam suatu database terdapat berbagai objek yang tersedia, antara lain: 1. Table Menurut Atzeni, Ceri, Paraboschi dan Torlone (2003, p5), table digunakan untuk merepresentasikan relasi yang memungkinkan data diorganisasikan dalam sekumpulan record. Pada table, baris menunjukkan record tertentu dan kolom menunjuk pada field suatu record. Menurut Connelly dan Begg (2002, p), record diterminologikan sebagai tupple dan field diterminologikan sebagai attribute. Tupple adalah baris dari suatu relasi dan attribute adalah nama kolom dari suatu relasi. 2. View Menurut Connolly dan Begg (2004, p84), view adalah hasil dinamis dari satu atau lebih operasi relasional pada relasi dasar untuk menghasilkan relasi lain. Sebuah view adalah relasi virtual yang tidak diperlukan ada di dalam database, tapi bisa didapatkan melalui permintaan pengguna tertentu pada suatu waktu. 3. Trigger Menurut Ramakrishnan dan Gehrke (2003, p168), trigger adalah suatu prosedur yang secara otomatis akan dilakukan oleh DBMS sebagai respon dari suatu perubahan yang telah dispesifikasi terlebih dahulu, umumnya oleh database administrator. 15 4. Stored Procedure Menurut Ramakrishnan dan Gehrke (2003, p4), stored procedure adalah program yang dieksekusi, dalam bentuk perintah SQL, dapat secara lokal, dan diselesaikan di waktu kosong proses database server. 5. User Defined Function Menurut Post (2005, p268), user-defined function adalah fungsi yang dapat kita berikan nama sendiri dan dapat melakukan berbagai proses atau perhitungan yang diperlukan yang akan digunakan pada beberapa query yang berbeda. Dengan adanya user-defined function, pencarian dan perubahan pada fungsi dapat lebih mudah dilakukan karena hanya perlu dilakukan pada fungsi tersebut saja. Userdefined function dapat melakukan pengiriman nilai dalam bentuk parameter. 6. Security Menurut Connolly dan Begg (2004, p84), database security adalah perlindungan terhadap database dari pengguna yang tidak berhak menggakses database. 2.2.4 Microsoft SQL Server 2000 Microsoft SQL Server, menurut Coffman (1999, pp4-6), adalah database relasional yang berjalan di sistem operasi Microsoft Windows. Microsoft, pada awalnya, mendapatkan izin atas building blocks dasar SQL Server dari Sybase dan membuat produk ini tersedia pada PC dengan platform OS/2 dan, kemudian, Windows NT. Pada tahun 1988, Sybase, Ashton-Tate dan Microsoft mencoba bergabung untuk memproduksi salah satu database pertama pada PC, yang membuat database relasional makin dapat digunakan oleh pengguna akhir. Microsoft memimpin proyek SQL Server; 16 Ashton-Tate mengundurkan diri saat SQL Server dipindahkan ke sistem operasi Microsoft Windows dari OS/2. Microsoft, bersama Sybase, menjual database pada platform piranti keras PC sampai versi 4.21, tetapi kerja sama Microsoft/Sybase berakhir pada 1993, karena Sybase berkonsentrasi pada platform mini komputer dan Microsoft pada platform PC. Dan kemudian, SQL Server dikembangkan secara penuh oleh Microsoft. SQL Server 2000, menurut Garcia (2000, p13), adalah DBMS relasional dengan banyak fitur yang memungkinkan sistem disusun sesuai dengan kebutuhan bisnis, baik bisnis kecil, bisnis enterprise ataupun bisnis e-commerce; yang menyediakan proses administrasi yang lebih mudah, lebih banyak fleksibilitas, fungsional yang lebih berguna dan penampilan yang lebih baik. 2.2.5 MySQL Menurut artikel “MSIT 643 Relational Database Management System” dan “Migrating From Microsoft SQL Server and Access to MySQL”, pada mulanya MySQL dikembangkan oleh TcX, sebuah perusahaan di Swedia, dengan Michael Widenius sebagai perancang utama. Pada tahun 1979, ia mengembangkan sebuah Database Management System yang pertama kali diberi nama UNIREG. Lalu pada tahun 1995, terlahirlah MySQL yang dirilis ke internet. Pada tahun 1999, diperkirakan ada sekitar setengah juta server yang menggunakan MySQL. MySQL sebagai salah satu DBMS yang paling popular memiliki beberapa keunggulan, antara lain: 1. Performance yang tinggi, reliable, dan mudah untuk digunakan. 2. Open Source, yang berarti dapat digunakan dan dikembangkan oleh siapa saja. 17 3. Dapat dijalankan pada system client/server maupun sebagai embedded system. 4. Cross-Platform, MySQL dapat digunakan pada berbagai macam sistem operasi. 2.3 Standar SQL 2.3.1 Sejarah Standar SQL SQL Standard, menurut Groff dan Weinberg (1999, pp29-30), mulai disusun pada tahun 1982 saat ANSI menugaskan komite X3H2 untuk menetapkan standar bahasa database relasional. Komite tersebut akhirnya memilih SQL sebagai bahasa database relasional dan mulai melakukan standarisasi. Pertimbangan dalam memilih SQL adalah adanya komitmen IBM yang tinggi pada SQL dan SQL pada saat itu secara de facto telah berkembang sebagai standar database relasional di pasaran. Hasilnya standar ANSI sebagian besar berdasarkan pada DB2 SQL, walaupun standar tersebut memiliki beberapa perbedaan. Setelah beberapa kali revisi, standar tersebut akhirnya disusun secara resmi sebagai standar ANSI X3.135 pada tahun 1986, dan sebagai standar ISO pada tahun 1987. Standar ini direvisi dan dikembangkan pada tahun 1989, yang kemudian dikenal dengan nama SQL-89 atau SQL1. Untuk memperbaiki kekurangan yang ada pada standar SQL-89, komite ANSI melanjutkan pekerjaan mereka dan menerbitkan standar SQL2. Standar SQL2 berusaha untuk melakukan standarisasi bagian dari bahasa SQL yang memiliki standar berbedabeda yang ditetapkan oleh berbagai vendor DBMS. Pada oktober 1992 standar SQL2 disetujui oleh ANSI sebagai standar bahasa database relational dan dikenal dengan nama SQL-92. Berdasarkan artikel Eisenberg dan Melton (“SQL:1999, formerly known as SQL3”, p1), proyek baru yang direncanakan selesai pada tahun 1996 untuk menetapkan 18 standar SQL baru, yaitu SQL3, dimulai. Proyek yang direncanakan akan berjalan tiga sampai empat tahun ini, bertujuan untuk menetapkan standar bahasa database relasional yang akan dipakai di dalam beberapa object-relational database management systems ( termasuk ORACLE8 dari Oracle, Universal Server dari Informix, DB2 Universal Database dari IBM, dan Cloudscape dari Cloudscape). Namun ternyata proyek ini memerlukan waktu tujuh tahun untuk diselesaikan. SQL:1999 disebut juga SQL3, bukan SQL-99 seperti pendahulunya SQL-92, untuk memudahkan penamaan selanjutnya dan menghindari kebingungan pemanggilan. Misalnya jika ada “SQL-02”, standard SQL tahun 2002, akan membingungkan karena sulit dibedakan dari “SQL2”, SQL generasi kedua. 2.4 Teknologi yang Digunakan 2.4.1 Java 2.4.1.1 Sejarah Pada tahun 1991, berdasarkan Deitel dan Deitel (2003, p9), Sun Microsystems mendirikan sebuah proyek penelitian bernama Green yang menghasilkan sebuah bahasa pemrograman berdasarkan C++ yang kemudian dinamakan Oak. Namun ternyata nama Oak sudah digunakan oleh bahasa pemrograman lain, maka kemudian diputuskan menggunakan nama Java. Anggota proyek tersebut antara lain James Gosling, Patrick Naughton, Chris Warth, Ed Frank, dan Mike Sheridan. Kemunculan WWW(World Wide Web) membuat java, terutama java applet , semakin dikenal di masyarakat. 19 2.4.1.2 Pengenalan Bahasa pemrograman Java memiliki semboyan “Write Once, Run Everywhere”. Semboyan ini menjadi salah satu symbol dari kelebihan Java, dimana Java dapat berjalan di hampir semua platform (platform independent). Hal ini dimungkinkan karena adanya Java Virtual Machine (JVM). Java virtual Machine adalah sebuah mesin abstrak (abstract computing machine) yang menginterpretasikan program - program Java. Output yang dihasilkan oleh Java compiler berupa bytecode yang nantinya akan di interpret oleh JVM. Dengan demikian sebuah bytecode program yang dihasilkan oleh satu platform dapat berjalan di platform lain yang memiliki JVM. Oleh karena itu Java dikategorikan sebagai interpreted language. (Spell, 2000, p5, pp7-8). 2.4.1.3 Konektivitas dengan Database Berdasarkan pendapat Deitel dan Deitel (2003, pp1179-1180), program Java dapat digunakan untuk berkomunikasi dengan berbagai macam database dan memanipulasi data menggunakan Java Database Connectivity (JDBC) API. Sebuah JDBC driver mengimplementasikan interface ke sebuah database. Dengan penggunaan JDBC, seorang pengembang dapat merubah database yang digunakan tanpa mengubah kode program. 2.4.1.4 Keunggulan Menurut Schildt (2004, pp10-12), Java memiliki beberapa keunggulan, antara lain : 20 • Simple Java didesain agar programmer mudah untuk memahaminya dan dapat menggunakannya secara efektif. Programmer yang menguasai bahasa pemrograman C++ atau C tidak akan mengalami kesulitan, karena java mengadopsi banyak sintaks dari kedua bahasa tersebut. • Object-Oriented Konsep utama dalam Java adalah objek. Objek dalam java mudah untuk di extend dan simple. Dalam Java juga ada tipe – tipe data primitif, seperti yang terdapat dalam bahasa pemrograman structural, seperti int, float, boolean, dsb. • Robust Java dirancang agar bisa memenuhi kebutuhan teknologi web sehingga memiliki kemampuan yang robust, seperti automatic memory allocation and deallocation, garbage collection, strict type checking, dan sebagainya. • Multithreaded Java memungkinkan programmer untuk membuat sebuah program yang dapat melakukan banyak hal secara simultan. JVM mengatur semua sinkronisasi yang diperlukan untuk mendukung hal di atas. • Architecture-Neutral Dengan menggunakan JVM, sebuah program mampu berjalan hampir di semua platform, sehingga meningkatkan portabilitas program–program java. • Interpreted and High Peformance 21 Meskipun dikategorikan sebagai interpreted language, java memiliki penampilan kerja yang cukup baik, sehingga tidak kalah dibandingkan bahasa pemrograman yang lain. • Distributed Java dirancang untuk memenuhi teknologi internet, dengan menggunakan protocol TCP/IP. Java juga mendukung RMI (Remote Method Invocation). 2.4.2 ANother Tool for Language Recognition (ANTLR) ANTLR, ANother Tool for Language Recognition, berdasarkan artikel “An Introduction to ANTLR”, adalah sebuah alat bantu yang menerima deskripsi grammatical dari sebuah language dan membentuk program yang mengenali sentence dalam language tersebut. Sebagai bagian dari translator, kita dapat menambah grammar dengan operator dan action untuk memberi pedoman pada ANTLR bagaimana membentuk AST (Abstract Syntax Tree) dan output. ANTLR mengimplementasikan strategi parsing LL(k) dan sanggup melakukan sejumlah lookahead dalam menangani grammar yang ambigu. ANTLR dapat membentuk recognizer dengan grammar yang sesuai untuk 3 jenis input, yaitu character streams, token streams, dan two dimensional tree. Dengan 3 input tersebut ANTLR akan menghasilkan program lexer untuk menangani input berupa character streams, parser untuk menangani token streams yang dihasilkan oleh lexer, dan treeparser untuk menangani two dimensional tree jika dibutuhkan. ANTLR dikembangkan oleh Terence Parr sejak 1989. Bersama dengan beberapa temannya Terrence Parr telah memberikan sejumlah kontribusi dasar pada teori parsing 22 dan alat bantu untuk pengenalan language. Hal ini berdampak pada perkembangan penggunaan alat bantu pengenalan bahasa berdasarkan metode parsing LL(k). 2.4.2.1 ANTLR Tree Berdasarkan artikel “ANTRL Tree Construction”, ANTLR dapat membentuk intermediate form tree, atau abstract syntax tree, dengan menambahkan simbol-simbol tertentu pada grammar untuk mengindikasikan token yang menjadi root dari subtree, token yang menjadi leaves, dan token yang harus diabaikan pada saat pembentukan tree. Root node untuk pembentukan AST pada ANTLR, ditentukan dengan menambahkan tanda “^” pada akhir dari sebuah token (sufix). Sedangkan untuk leaf node, setiap referensinya ke nonsuffixed token atau token-range dianggap sebagai leaf node untuk rule tersebut. 2.5 Teori Parsing 2.5.1 Pengertian Parsing Menurut Aho (2003, p40), parsing adalah proses menentukan apakah string dari token dapat dibentuk dari sebuah grammar. Proses menemukan sebuah parse tree untuk sebuah string yang terdiri dari token-token disebut parsing string tersebut. Menurut Gries(1971, p29), parse dari sebuah sentence adalah pembentukan syntax tree dan derivasi dari sentence tersebut. Menurut Bennet (1996, p5), syntax analyser, yang dikenal dengan parser, menganalisa struktur program secara keseluruhan, melakukan pengelompokan entitientiti yang diidentifikasi oleh scanner menjadi sebuah struktur yang lebih besar. 23 2.5.2 Jenis-jenis Metode Parsing Pada umumnya metode parsing dapat dimasukkan ke dalam dua jenis, dengan nama metode top-down dan bottom-up parsing. 2.5.2.1 Metode Top-down Parsing Top-down parsing, menurut Aho (2003, p181), dapat dilihat sebagai usaha untuk menemukan leftmost derivation untuk sebuah masukan string. Dengan kata lain, usaha untuk membentuk sebuah parse tree untuk sebuah masukan string dimulai dari root dan membentuk node-node dari parse tree secara preorder. Bentuk umum dari top-down parsing disebut recursive descent, yang memungkinkan backtracking. Menurut Tremblay, J.P. (1985, p208) ada 3 metode umum untuk top-down parsing yaitu brute force approach, recursive descent parser, dan top-down parsing dengan partial atau limited backup. 2.5.2.1.1 Recursive Descent Parser Recursive descent parser menurut Tremblay J.P. (1985, p219) adalah metode top-down parsing yang tidak mengijinkan adanya backup, namun teknik ini tidak dapat bekerja pada semua context free grammar. Beberapa grammar tetap memerlukan backup agar parsing berhasil. Pada metode recursive descent parsing, production diimplementasikan dalam function call untuk setiap nonterminal. Tiap function memiliki return value true atau false, tergantung apakah substring yang mewakili nonterminal tersebut dapat dikenali atau tidak. Mekanisme pemrograman untuk menangani pemanggilan fungsi recursive 24 menyediakan kemampuan untuk menangani stack yang diperlukan pada parsing, hal ini membebaskan user untuk membuat dan memanipulasi stack secara terpisah. 2.5.2.2 Metode Bottom-up Parsing Bentuk umum dari bottom-up parsing dikenal dengan nama shift-reduce parsing. Shift-reduce parsing menurut Aho (2003, p195) berusaha untuk membentuk sebuah parse tree untuk sebuah input string dimulai dari leave (bottom) dan bekerja menuju root (top). Proses ini dapat dilihat sebagai “reducing” sebuah string w menjadi start symbol dari grammar. Pada setiap langkah reduction sebuah substring tertentu yang cocok dengan right side dari sebuah production digantikan dengan symbol dari left side production tersebut. 2.6 Metode Perancangan Piranti Lunak Incremental Menurut Pressman (2001, p35), model perancangan Incremental mengkombinasikan elemen-elemen dari model Linear Sequential, yang diterapkan berulang-ulang, dengan filosofi dari Prototyping. Metode perancangan model Incremental mirip dengan Prototyping, tetapi Incremental memfokuskan diri pada pengiriman produk operasional pada setiap perulangannya. Metode perancangan model Linear Sequential terangkum dalam kegiatan (Pressman, 2001, p29) : 1. System / Information engineering and Model Pada tahap ini, akan ditetapkan kebutuhan untuk semua elemen dari sistem lalu menempatkan sebagian kebutuhan tersebut pada piranti lunak. 25 2. Software requierement analysis Pada tahap ini, pengumpulan informasi dan kebutuhan diintensifkan dan difokuskan pada piranti lunak. 3. Design Tahap ini merupakan proses dengan multistep yang difokuskan pada empat atribut utama program: struktur data, arsitektur poranti lunak, representasi antar muka dan rincian prosedur. Proses design menerjemahkan kebutuhan ke representasi piranti lunak yang dapat dikaji terlebih dahulu sebelum coding dimulai. 4. Code generation Dalam tahap ini, rancangan yang telah dibuat diterjemahkan ke dalam bentuk yang dapat dibaca oleh mesin. 5. Testing Tahap testing difokuskan pada logical internals dari pianti lunak untuk memastikan semua perintah telah diujicobakan, dan pada functional externals; yang melakukan ujicoba untuk menemukan kesalahan dan memastikan masukan yang sesuai akan menghasilkan hasil yang sesuai dengan yang dibutuhkan. 6. Support Tahap ini akan menjalankan kembali setiap tahap-tahap di atas pada program yang telah ada ataupun pada program yang baru. Metode perancangan model Prototyping, menurut Pressman (2001, p30), dimulai dengan pengumpulan informasi dan kebutuhan, kemudian diikuti dengan perancangan sederhana yang difokuskan pada representasi aspek-aspek piranti lunak yang dapat dilihat oleh pengguna. Perancangan sederhana dilanjutkan dengan pembuatan protoype. 26 Prototype ini kemudian dievaluasi oleh pengguna untuk memperbaiki piranti lunak yang sedang dikembangkan. Tahapan ini berulang sampai kebutuhan pengguna terpenuhi. Gambar 2.1 Metode Perancangan Piranti Lunak Incremental