BAB II LANDASAN TEORI Pada bab ini akan dijelaskan mengenai teori penunjang yang mendukung Tugas Akhir. 2.1 Framework 2.1.1. Pengertian Framework Menurut Oxford English Dictionary framework mempunyai arti struktur dasar yang melandasi sebuah sistem. Sehingga keseluruhan sistem bergerak berdasarkan kerangka struktur dasar yang telah dibentuk sebelumnya. Menurut Pressman (2005, p282), framework merupakan kerangka kode yang dapat disempurnakan dengan classes yang spesifik atau dengan fungsi yang telah dirancang untuk mengatasi masalah yang dihadapi. Dapat disimpulkan bahwa framework biasanya bersifat object oriented dan merupakan suatu sistem desain yang dapat digunakan kembali. Tujuan dari penggunaan framework adalah mengurangi pembuatan kembali kode yang sama sehingga seorang programmer dapat memfokuskan waktunya untuk pengerjaan bagian lainnya. 2.1.2. Keuntungan dalam menggunakan framework a. Penggunaan skrip yang telah dibuat, dites dan digunakan oleh programmer lain, sehingga dapat meningkatkan reabilitas skrip dan mengurangi waktu pengujian pemrograman. b. Framework yang dikembangkan oleh para ahli, biasanya bukan hanya menyiapkan fungsionalitas, tetapi juga mempertimbangkan aspek keamanan, karena secara langsung sudah ada pada komponen framework itu sendiri c. Framework dapat mengarahkan programmer untuk menggunakan pola pemecahan masalah yang telah terbukti bisa digunakan untuk menyelesaikan masalah spesifik yang telah dihadapi oleh programmer lain. 7 2.1.3. Kekurangan framework a. Para programmer mungkin akan menemukan batasan-batasan ketika merancang aplikasi menggunakan framework. b. Kemungkinan akan membutuhkan waktu yang lama dan menambah biaya development apabila framework yang digunakan belum terdokumentasi dengan baik dan kurang support. 2.1.4. MVC (Model View Controller) Arsitektur Model-View-Controller (MVC) adalah suatu istilah untuk memisahkan komponen-komponen atau penulisan source code dari satu aplikasi agar menjadi lebih cepat dan lebih mudah dipelihara serta dikembangkan. Ide dasar dari MVC adalah untuk memisahkan antara model, view dan controller pada bagian-bagian dalam suatu web aplikasi. MVC berhubungan erat dengan arsitektur dari Web Framework. Gambar 2.1. MVC (https://netbeans.org/images_www/articles/70/javaee/ecommerce/design/mvcmodel.png) Diagram di atas menunjukan interaksi antara ketiga komponen yang terdapat dalam pola MVC. 8 2.1.4.1. Model Pola MVC memiliki layer yang disebut dengan model yang mewakili struktur data dari sebuah aplikasi web dan berhubungan langsung dengan tugas-tugas CRUD (create, read, update, delete) pada database. Oleh karena itu, sebuah model harus terdiri dari beberapa properti untuk mewakili data tertentu, terdiri dari logika bisnis (contoh: aturan validasi) untuk memastikan data yang dipresentasikan memenuhi permintaan desain yang diberikan. Disamping itu, sebuah model juga harus terdiri dari kode untuk memanipulasi data. Beberapa kelebihan dalam pendekatan ini antara lain penempatan detail dari data dan operasi pada area yang ditentukan (model) sehingga tidak tersebar dalam keseluruhan lingkup aplikasi. Hal ini memberikan keuntungan dalam proses maintenance aplikasi. kelebihan yang lain yaitu dengan pemisahan total antara data dengan implementasi interface, komponen model dapat digunakan kembali oleh aplikasi lain yang memiliki kegunaan yang hampir sama. 2.1.4.2. View Komponen grafis menyediakan representasi proses internal aplikasi dan menuntun alur interaksi user terhadap aplikasi berdasarkan pada data dalam model. View adalah satu-satunya layer yang berinteraksi dengan user. Oleh karena itu, view harus meliputi kode presentasi seperti HTML, kode PHP yang mudah untuk melakukan format dan interpretasi data. Disamping itu, view sebaiknya tidak mencakup kode yang menampilkan rangkaian database secara eksplisit. Penggunaan layer view memiliki beberapa kelebihan antara lain memudahkan penggabungan divisi desain dalam development team. Divisi desain dapat berkonsentrasi pada style, look, feel dan sebagainya, dalam aplikasi tanpa memperhatikan lebih pada detail yang lain. Disamping itu dengan memiliki layer view yang terpisah, ketersediaan multiple interface dalam aplikasi dapat dimungkinkan. Jika inti dari aplikasi terletak pada bagian lain (dalam model), multiple interface dapat disebut (swing, web, console) secara keseluruhan memiliki tampilan yang berbeda namun dapat mengeksekusi tampilan model sesuai fungsionalitas yang diharapkan. 9 2.1.4.3. Controller Layer terakhir dari arsitektur MVC adalah layer controller. Layer ini menyediakan detail alur program. Layer ini bertanggung jawab atas penampungan event yang dibuat oleh user dari view, berinteraksi dengan model, dan memberikan instruksi kepada view untuk melakukan pembaharuan dan mengatur tampilan agar sesuai dengan data yang dibuat user. Kelebihan penggunaan layer controller secara terpisah antara lain adalah dengan menggunakan komponen terpisah untuk menampung detail dari transisi layer, komponen view dapat didesain tanpa harus menaruh perhatian berlebih pada bagian lain. Hal ini memudahkan team pengembang multiple interface bekerja secara terpisah dari yang lain secara simultan. Interaksi antar komponen view terabstraksi dalam controller. Kelebihan lainnya adalah dengan menggunakan layer terpisah yang melakukan update terhadap komponen model, detail tersebut dihapus dari layer presentasi. Layer presentasi kembali pada fungsi utamanya untuk menampilkan data kepada user. Detail tentang bagaimana data dari user mengubah ketetapan aplikasi disembunyikan oleh controller. Hal ini memisahkan dengan jelas antara presentation logic dengan business logic. 2.2. YII Framework 2.2.1. Sejarah Yii Framework Yii framework merupakan gagasan dari pendirinya Qiang Xue pada tanggal 1 Januari 2008. Sebelum menciptakan Yii framework Qiang Xue sebelumnya telah mengembangkan dan maintenace Prado framework. Setelah bertahun-tahun Qiang Xue mengembangkan Prado. Qiang Xue banyak menerima berbagai berbagai masukan dari user yang berpengalaman dalam pengembangan framework, akhirnya memutuskan untuk membuat framework yang lebih mudah, dapat diperluas dengan mudah (extensible) dan lebih efisien. Dan akhirnya pada 3 Desember 2008, Yii 1.0 resmi dirilis. sampai sekarang YII sudah mencapai versi v1.1.12 rilis pada 30 Desember 2012. 10 2.2.2. Pengertian Yii Framework Yii adalah framework (kerangka kerja) PHP berbasis-komponen, berkinerja tinggi untuk pengembangan aplikasi web berskala-besar. Yii menyediakan reusability maksimum dalam pemrograman web dan mampu meningkatkan kecepatan pengembangan secara signifikan. Nama Yii (dieja sebagai /i:/) singkatan dari "Yes It Is!". Menurut [Jeffery Winesett, 2010] untuk membuat atau mengembangkan aplikasi dengan yii maka diperlukan pengetahuan tentang PHP dan OOP (object oriented programming). Yii Framework memiliki segudang fitur yang dapat mempermudah dalam pekerjaan, meskipun usinya masih tergolong muda dibandingkan dengan framework lain karena dimulai pada tahun 2008. 2.2.3. Fitur Yii Framework Yii mempunyai dua buah kode generator yaitu yiic dan gii. Yiic adalah kode generator masih menggunakan command line yiic. Sedangkan Gii adalah kode generator yang berbasis web. Yii sudah dilengkapi dengan sebuah kode generator berbasis web yang disebut Gii dari versi 1.1.2. pada saat membuat kerangka dasar aplikasi web, maka dengan mengetik sebaris perintah pada yiic maka yiic akan membuatkannya. Apabila sudah merancang database lengkap dengan tabel-tabel, maka sudah dapat langsung membuat sistem tampilannya insert, update dan delete dengan menggunakan Gii. Artinya di sini langsung dapat membuat aplikasi dasar tanpa perlu koding. Berikut beberapa fitur lainnya dari Yii: 1. Yii Framework menggunakan pola MVC, pola standar pengembangan aplikasi yang memisahkan model, view, controller. 2. Menggunakan database abstraction layer seperti Data Access Objects (DAO) dan Active Record, Query Builder, Database Migration untuk memudahkan interaksi dengan database dan menghindari komplesitas menulis pernyataan SQL yang berulang-ulang. 3. Memiliki layer cache untuk cache data, halaman, sebagian, dan keseluruhan aplikasi sehingga dapat meningkatkan performa dengan beragam pilihan 11 media cache. Penggunaan media cache seperti database, APC (Alternative PHP Cache), memcache, dan sebagainya dengan mudah diatur tanpa melakukan perubahan besar pada kode. 4. Fitur penanganan error dan logging, sehingga memudahkan pengembang dalam melakukan debugging aplikasi dalam masa pengembangan aplikasi. 5. Widget, seperti pada Prado memiliki komponen pada Yii memiliki widget yaitu semacam kontrol yang memiliki fungsi tertentu seperti autocomplete, datapicker, table, dan lain-lain. Menggunakan JQuery sebagai javascript client side. 6. Modular dan mudah ditambahkan dengan dukungan extension dan komponen tambahan sehingga beragam fitur tambahan dengan mudah dimasukkan. 2.3. PHP PHP (Hypertxt Preprocessor) adalah sebuah bahasa pemrograman yang berbentuk scripting, sistem kerja program ini adalah sebagai interpreter bukan sebagai compiler. PHP menurut Syafii (2004 : v) merupakan bahasa pemrograman berbasis web yang terbukti sangat reliable penggunaannya dan mempunyai dukungan yang kuat. 2.4. MySQL Pendapat Sukarno (2006, hal:3) mengenai pengertian MySQL adalah merupakan perangkat lunak untuk sistem manajemen database (database management system). Karena sifatnya yang open source dan memiliki kamampuan menampung kapasitas yang sangat besar, maka MySQL menjadi database yang sangat popular dikalangan programmer web. MySQL adalah merupakan software database yang bebas berlisensi GPL atau General Public License yang open source. Mulanya MySQL hanya berjalan di system operasi linux namun pada saat MySQL versi 3.22 tahun 1998-1999 sudah tersedia diberbagai platform termasuk windows. Ini terjadi karena MySQL menjadi semakin populer dan dilirik banyak orang karena kestabilan dan kecepatan yang meningkat. 12 2.5. Pemrograman Berorientasi Objek (PBO) Object oriented programming adalah sebuah metode pemrograman dimana pengembang aplikasi tidak hanya mendefinisikan variabel yang berisi state dari sebuah struktur data, tetapi juga mendefinisikan fungsi untuk menunjukkan behavior yang diaplikasikan pada struktur data. Dalam hal ini, struktur data merupakan objek. Suatu objek dapat saling berkomunikasi satu sama lain dengan menggunakan fungsi yang ada di dalamnya tanpa perlu mengetahui internal state masing-masing objek (data encapsulation) (Webopedia, n.d). Salah satu keuntungan dari object oriented programming dibandingkan procedural programming adalah memungkinkan pengembang aplikasi untuk membuat fungsi yang tidak perlu diubah ketika sebuah objek dengan tipe berbeda ditambahkan. Seorang pengembang aplikasi hanya perlu membuat objek baru yang mewarisi beberapa fungsi atau tipe data dari objek yang sudah ada (inheritance). Hal ini membuat object oriented programming mudah dalam pengembangannya (Webopedia, n.d). 2.5.1 Konsep Pemrograman Berorientasi Objek (PBO) Menurut Bennett, McRobb, dan Farmer (2006), dalam bukunya “Object-Oriented System Analysis And Design Using UML”, terdapat beberapa konsep dalam object oriented programming, antara lain yaitu : 1. Objek Objek terdiri dari state dan behavior. Sebuah objek menyimpan state pada variabel dan menunjukkan behavior melalui fungsi. Fungsi bertugas mengubah internal state dan melayani komunikasi antara satu objek dengan objek lainnya (Oracle, n.d). 2. Kelas Kelas adalah sekumpulan objek yang memiliki state dan behavior yang sama. 3. Instance Instance adalah objek tunggal yang memiliki nilai state yang secara keseluruhan berbeda dengan objek lain. 13 4. Generalisasi Generalisasi adalah konsep yang mengelompokkan state dan behavior yang sama dari beberapa class menjadi class tersendiri. Berikut adalah ciri-ciri dari generalisasi : a. Inheritance Mekanisme untuk mengimplementasikan generalisasi dalam bahasa pemrograman berorientasi objek. Class yang memiliki state dan behavior dari hasil pengelompokkan disebut superclass sedangkan class yang memiliki state dan behavior yang unik karena pengelompokkan disebut subclass. b. Operasi transitif Operasi yang menurunkan state dan behavior dari superclass ke subclass. c. Disjoint nature Aspek dimana class harus memiliki state dan behaviour yang unik dari class lain yang satu level. 5. Message passing Message passing adalah komunikasi yang dilakukan objek untuk meminta informasi tertentu dari objek lain dengan menggunakanfungsi dari objek lain.. 2.6. Model Waterfall Menurut Pressman (2010, p39) model waterfall adalah model klasik yang bersifat sistematis, berurutan dam mambangun software. Berikut fase-fase dalam model waterfall menurut pressman. Gambar 2.2. Waterfall Model (Sumber : Roger S. Pressman, Software Engineering : A Practitioner’s Approach 7th edition, 2010) 14 1. Communication Pada tahap ini merupakan langkah menganalisis kebutuhan perangkat lunak, dan tahap untuk pengumpulan data melakukan pertemuan dengan customer serta mencari referensi tambahan dari jurnal, buku, artikel dan internet. 2. Planning Pada tahap ini merupakan lanjutan dari proses commucation (analysis requirement).. Tahapan ini akan menghasilkan dokumen user requirement atau bisa dikatakan sebagai data yang berhubungan dengan keinginan user dalam pembuatan software, termasuk rencana yang akan dilakukan. 3. Modelling Pada tahap ini akan menerjemahkan syarat kebutuhan ke sebuah perancangan software yang dapat diperkirakan sebelum diimplementasikan atau sebelum dibuat coding. Proses ini berfokus pada rancangan struktur data, arsitektur software, representasi interface, dan detail (algoritma) prosedural. Tahapan ini akan menghasilkan dokumen yang disebut software requirement. 4. Construction Pada tahap ini merupakan proses membuat kode. Coding atau pengkodean merupakan penerjemahan desain dalam bahasa yang bisa dikenali oleh komputer. Programmer akan menerjemahkan transaksi yang diminta oleh user. Tahapan inilah yang merupakan tahapan secara nyata dalam mengerjakan suatu software, artinya penggunaan komputer akan dimaksimalkan dalam tahapan ini. Setelah pengkodean selesai maka akan dilakukan testing terhadap sistem yang telah dibuat tadi. Tujuan testing adalah menemukan kesalahan terhadap sistem tersebut untuk kemudian bisa diperbaiki. 5. Deployment Pada tahap ini bisa dikatakan final dalam pembuatan sebuah software atau sistem. Setelah melakukan analisis, desain dan pengkodean maka sistem yang sudah jadi akan digunakan oleh user. Kemudian software yang telah dibuat harus dilakukan pemeliharaan secara berkala. 15 2.7. Unified Modeling Language (UML) Menurut Britton dan Doake, (2005, p13), Unified Modeling Language (UML) adalah satu kumpulan diagram, yang dirancang secara khusus untuk pengembangan berorientasi objek, dan telah menjadi standar industri untuk pemodelan sistem berorientasi objek. 2.7.1. Use-Case Diagram Menurut Britton dan Doake, (2005, p40) Use-Case Diagram adalah diagram yang secara grafis menggambarkan interaksi antara user dengan sistem. 1. Use-case Use-case digambarkan dalam bentuk elips dengan label nama use-case. Penulisan nama use-case menggunakan kata kerja yang menegaskan bahwa use case mewakili proses. Gambar 2.3. Use-Case 2. Actor Figur berbentuk tongkat diberi label nama aktor. Tujuannya, adalah untuk memanfaatkan nama aktor tersebut agar mudah untuk mengidentifikasikannya. Figur tersebut juga digunakan untuk aktor yang bukan manusia, misalnya komputer. Gambar 2.4. Actor 3. System Boundary Garis yang digambarkan mengitari use-case untuk memisahkan use-case dengan actor. Dapat diberi label untuk mengindikasikan domain diagram. 16 Gambar 2.5. Use-Case Diagram 4. Relationship Garis yang menghubungkan actor dengan use-case. Garis tersebut menunjukkan actor yang berkaitan dengan use-case yang digunakan. Hubungan ini dikenal juga sebagai asosiasi komunikasi. Hubungan yang digunakan dalam diagram use-case: a. Communication Associations Merupakan hubungan antara actor dan use-case, dimana tiap actor dapat berhubungan dengan banyak use-case dan tiap use-case dapat berhubungan dengan banyak actor. Gambar 2.6. Associations b. Inheritance Merupakan hubungan dimana salah satu entitas mewarisi karakteristik dari entitas lain. user sales Gambar 2.7. Inheritance 17 5. Use-Case Descriptions Merupakan dokumen narasi yang menjelaskan secara umum, fungsi yang dibutuhkan dalam use-case. Use-case descriptions menjelaskan tujuan dari use-case dan gambaran umum dari peristiwa yang biasa terjadi. Dengan kata lain, deskripsi harus ditulis sedemikian rupa sehingga meliputi urutan setiap kejadian dan skenario yang berkaitan dengan use-case. 2.7.2. Class Diagram Menurut Britton dan Doake, (2005, p117) Class Diagram merupakan pusat dari analisis dan desain berorientasi objek yang mendefinisikan struktur keseluruhan sistem dan struktur dari setiap objek dalam sistem. Class diagram digunakan untuk membuat model class, hubungan antar class, dan juga untuk membuat model class dengan tingkat struktur yang lebih tinggi yang terdiri dari koleksi class yang dikelompokkan dalam kelas paket. 1. Visibility Merupakan kemampuan untuk membatasi akses fitur tertentu dari model atau program. Terdapat tiga level visibility dalam UML yaitu: a. Public Dinotasikan dengan simbol “+”. Atribut public dan methods public dapat diakses dan digunakan oleh class lain. b. Protected Dinotasikan dengan simbol “#”. Atribut protected dan methods protected dapat diakses dan digunakan oleh class itu sendiri dan turunan dari class tersebut. c. Private Dinotasikan dengan simbol “-“. Atribut private dan methods private dapat diakses dan digunakan oleh class tersebut sendiri. 2. Multiplicity Multiplicity berfungsi untuk menunjukkan angka dari objek dari masing-masing class yang diperbolehkan untuk berpartisipasi dalam asosiasi. 18 Contoh Arti Notasi Tepat 2 Jumlah yang tepat 2 5 Tepat 5 Banyak 0 atau lebih 0..* 1..*, * 1 atau lebih, banyak 1 sampai 9, 0 sampai 5 Kisaran tertentu 1..9, 0..5 2 atau 7 atau 9 Pilihan 2,7,9 3. Unidirectional Unidirectional adalah hubungan satu arah. Dimana arah tujuannya diindikasikan melalui tanda anak panah. Sedangkan hubungan dua arah, dapat digambarkan dengan garis dengan anak panah di kedua ujung garis, atau garis tanpa anak panah. Gambar 2.8. Contoh hubungan satu arah Gambar 2.9. Contoh hubungan dua arah 4. Composition Composition adalah hubungan agregasi yang kuat, dimana dalam hubungan composition, seluruh objek memiliki kepemilikan eksklusif atas bagian-bagiannya dimana objek bagian hanya dapat berpartisipasi dalam satu agregasi. Bagian tersebut hidup dan mati dengan keseluruhan objek, dengan kata lain, apabila objek dihapus, bagian-bagian yang lain akan ikut terhapus. Gambar 2.10. Composition Contoh Class Diagram: Customer -custId -name -address +findCustomer() Bike 0..* 1..* #bike -type -dailyHireRate -deposit +findBike() Gambar 2.11. Class Diagram 19 2.7.3. Activity Diagram Menurut Britton dan Doake, (2005, p201) Activity Diagram menggambarkan secara detail proses yang kompleks. Dalam activity diagram, semua state adalah aktivitas, dan transisi diantaranya dipicu oleh selesainya sebuah aktivitas, bukan oleh sebuah peristiwa eksternal. Berikut merupakan elemen yang digunakan dalam diagram activity: 1. Initial node Digambarkan dalam sebuah lingkaran penuh, yang menandakan mulainya proses. Gambar 2.12. Initial Node 2. Tindakan Digambarkan dalam bentuk persegi panjang dengan ujung yang membulat, yang merepresentasikan langkah individual. Click Confirm Gambar 2.13. Tindakan 3. Aliran Tanda anak panah dalam diagram mengindikasikan perkembangan dari tindakan yang dilakukan. Gambar 2.14. Aliran 4. Keputusan Berbentuk belah ketupat, dengan satu aliran yang masuk, dan dua atau lebih aliran yang keluar. Aliran yang keluar diberi tanda untuk mengindikasikan kondisi. Gambar 2.15. KeputusanMerge 20 Berbentuk belah ketupat dengan dua atau lebih aliran yang masuk dan satu aliran yang keluar. Gambar 2.16. Merge 5. Aktivitas final Digambarkan dengan sebuah lingkaran penuh didalam lingkaran kosong yang menandakan berakhirnya suatu proses. Gambar 2.17. End State 2.8. Software Testing Fundamentals Menurut Pressman (2010, p482) tujuan dari pengujian adalah untuk menemukan dan memperbaiki sebanyak mungkin kesalahan dalam program sebelum menyerahkan program kepada customer. Salah satu pengujian yang baik adalah pengujian yang memiliki probabilitas tinggi dalam menemukan kesalahan. 2.8.1 Pengujian Black-Box Pengujian black box merupakan pengujian yang dilakukan tanpa pengetahuan detail dari sistem atau komponen yang diuji. Menurut Pressman (2010, p495) pengujian black box disebut juga pengujian behavioral atau pengujian partisi. Pengujian black box berfokus pada kebutuhan fungsional pada perangkat lunak. Dalam pengujian black box, perekayasa perangkat lunak dapat menggunakan serangkaian kondisi masukan yang sepenuhnya memerikasa keseluruhan kebutuhan fungsional untuk suatu program. Pengujian black box bukan merupakan alternative dari teknik white box, tetapi merupakan pendekatan komplementer yang kemungkinan besar mampu mengungkap kesalahan kelas yang berbeda daripada metode white box. 21 Pengujian black box untuk menemukan kesalahan dalam kategori sebagai berikut; 1. Fungsi yang hilang atau tidak benar. 2. Kesalahan pada antar muka (interface). 3. Kesalahan pada struktur data atau akses eksternal database. 4. Kesalahan pada kinerja atau perilaku. 5. Kesalahan inisialisasi dan terminasi. Pengujian ini dirancang untuk menjawab pertanyaan sebagai berikut: 1. Bagaimana validasi fungsi yang akan diuji? 2. Bagaimana perilaku dan kinerja sistem yang diuji? 3. Apa kelas input akan membuat kasus uji yang baik? 4. Apakah sistem sensitive terhadap nilai input tertentu? 5. Bagaimana batas-batas kelas data yang terisolasi? 6. Kecepatan dan volume data seperti apa yang dapat ditolerir sistem? 7. Efek apakah yang akan menspesifikasikan kombinasi data dalam sistem operasi? 22