BAB II LANDASAN TEORI Pada bab ini diuraikan rangkuman informasi yang dihimpun dari berbagai pustaka yang relevan dengan masalah yang menjadi objek kajian. Materi yang dicakup dalam landasan teori meliputi pengertian design pattern yang digunakan dalam merancang bangun perangkat lunak, model iterative, Unified Modeling Languange (UML) yang digunakan sebagai bahasa pemodelan perangkat lunak. 2.1 Design pattern Menurut Christoper Alexander, “Setiap pola menguraikan suatu masalah yang terjadi berulang-ulang pada lingkungan kita, dan kemudian menggambarkan solusi dari masalah tersebut, sehingga solusi yang dihasilkan dapat digunakan sesering mungkin”[ERR95]. Secara umum, pattern mempunyai empat unsur penting : 1. The pattern name adalah nama yang akan kita gunakan untuk menggambarkan masalah desain, solusi, dan konsekuensi. 2. The problem digambarkan ketika menggunakan pattern. Pattern menggambarkan masalah desain tersebut secara spesifik, seperti bagaimana menggambarkan algoritma sebagai objek. 3. The solution menggambarkan unsur-unsur penyusun desain, hubungan antar usur, tanggung jawab, dan kolaborasi. 4. The consequences adalah hasil dari penerapan pattern consequences sering tidak dinyatakan ketika memutuskan untuk menggambarkan desain. Design pattern menggambarkan komunikasi antara objek dan class yang dibuat untuk memecahkan masalah desain secara umum dalam keadaan tertentu.
1
2
Suatu design pattern mengidentifikasikan aspek utama suatu struktur desain agar design pattern tersebut berguna untuk membuat desain berorientasi objek yang mampu digunakan secara berulang. Design pattern fokus pada desain, khususnya yang berorientasi objek. Design pattern dapat diklasifikasikan berdasarkan purpose yang mencerminkan apa yang dapat dilakukan oleh pattern tersebut yang diuraikan pada tabel 2.1[ERR95]. Tabel Error! Reference source not found..1 Design pattern berdasarkan purpose
Purpose Creational
Structural
Design pattern
Aspect(s) That Can Vary
Abstract Factory
Kumpulan dari objek produk
Builder
Bagaimana menggabungkan objek
Factory Method
Subclass dari object diinstansiasi
Prototype
Class objek yang diinstansiasi
Singleton
Instansiasi dari class
Adapter
Interface ke sebuah objek
Bridge
Implementasi dari sebuah objek
Composite
Struktur dan komposisi sebuah objek
Decorator
Tanggung jawab sebuah objek tanpa subclass
Façade
Interface ke sebuah sub sistem
Flyweight (195)
Penyimpanan objek
Proxy
Bagaimana sebuah objek diakses pada lokasinya
Behavioral
Chain of Responsibility
objek dapat memenuhi request
Command
Kapan dan bagaimana sebuah request dipenuhi
Interpreter
Penafsiran
dan
tatabahasa
suatu
bahasa Iterator
Bagaimana sekumpulan unsur-unsur diakses, dan dilintasi
Mediator
Bagaimana dan objek yang mana yang berhubungan satu dengan yang lain
Memento
Informasi pribadi apa yang disimpan
3
Purpose
Design pattern
Aspect(s) That Can Vary diluar objek dan kapan
Observer
Sekumpulan objek yang bergantung pada object lain, dan bagaimana objek - objek tersebut saling mengupdate
State
Keadaan sebuah objek
Strategy
Sebuah algoritma
Template Method
Langkah-langkah algoritma
Visitor
Operasi yang dapat digunakan objek tanpa mengganti class yang ada
4
2.1.1
Creational Pattern Creational pattern memisahkan proses instansiasi dan membuat sistem sendiri
akan bagaimana obyek diciptakan, disusun dan digambarkan. Kelas creational pattern menggunakan inherintance untuk mengubah kelas yang diinstansiasi, sedangkan obyek creational pattern akan memberikan intansiasi untuk obyek yang lain. Suatu waktu creational pattern saingan. Misalnya, terdapat kasus ketika salah satu penggunaan dari prototype atau abstract factory dapat saling menguntungkan. Pada kesempatan lain mereka saling melengkapi. Builder dapat menggunakan salah satu dari pattern untuk mengimplemen komponen yang akan dibangun. Prototype dapat menggunakan singleton dalam implementasinya [ERR95]. 2.1.1.1 Abstract Factory Pattern Factory method menyediakan sebuah interface untuk menciptakan kumpulan obyek yang berelasi dan bergantung tanpa menentukan kelas konkrit [ERR95]. Abstract Factory pattern digunakan ketika[ERR95] : 1. Sebuah sistem seharusnya berdiri sendiri dapat dipandang dari hasil yang diciptakannya, diubah dan digambarkan. 2. Sistem seharusnya dikonfigurasi dengan salah satu kumpulan produknya. 3. Ingin menyediakan library kelas dari product.
5
Struktur factory method pattern terdapat pada gambar 2.1. AbstractFactory
Client
+CreateProductA() +CreateProductB()
ConcreteFactory1
ConcreteFactory2
+CreateProductA() +CreateProductB()
+CreateProductA() +CreateProductB()
AbstractProductA
ProductA2
ProductA1
AbstractProductB
ProductB1
ProductB2
Gambar Error! Reference source not found..0.1Struktur Simple factory pattern
Keterangan struktur simple factory pattern:
a. AbstractFactory : mendeklarasikan interface untuk operasi yang menciptakan obyek terpisah.
b. ConcreteFactory : mengimplemen operasi untuk menciptakan obyek konkrit. c. AbstractProduct : mendefinisikan obyek yang akan diciptakan dengan menyesuaikan factory konkrit.
d. Client : hanya menggunakan interface AbstractFactory dan AbstractProduct.
yang dideklarasikan oleh kelas
6
2.1.1.2 Builder Pattern Builder pattern merupakan pattern yang bertujuan untuk menyusun obyek yang kompleks karena gambarannya sehingga proses penyusunan yang sama dapat menciptakan gambaran yang berbeda [ERR95]. Builder pattern digunakan ketika[ERR95] :
a. Algoritma untuk menciptakan obyek kompleks harus berdiri sendiri diantara bagian yang menghasilkan obyek dan bagaimana mereka digunakan.
b. Proses konstruksi harus mengijinkan gambaran yang berbeda untuk obyek yang dikonstruksikan. Struktur builder pattern terdapat pada gambar 2.2.
Gambar Error! Reference source not found..0.2 Struktur builder pattern
Keterangan builder pattern :
a. Builder : menentukan interface abstract untuk menciptakan obyek Product. b. ConcreteBuilder : membuat dan menggunakan bagian dari product implementasi interface
Builder,
mendefinisikan
dan
membuat
track
untuk
menggambarkannya, dan menyediakan interface untuk memperoleh product.
c. Director : menyusun obyek menggunakan interface Builder. d. Product : menggambarkan obyek kompleks pada susunan. ConcreteBuilder membangun gambaran product internal, mendefinisikan proses melalui kumpulannya dan memasukkan kelas-kelas yang mendefinisikan unsur utama part, termaksud interface untuk mengumpulkan product ke hasil akhir. 2.1.1.3 Factory Method Factory method mendefinisikan sebuah interface untuk menciptakan sebuah obyek, tetapi mengijinkan sub kelas menentukan kelas mana yang diinstansiasi. Factory method mengijinkan kelas membatalkan instansiasi ke sub kelas[ERR95].
7
Factory method pattern digunakan ketika[ERR95]:
a. Sebuah kelas tidak dapat mengetahui obyek kelas yang harus diciptakan. b. Sebuah kelas menginginkan sub kelasnya untuk menentukan obyek yang diciptakan.
c. Kelas-kelas delegasi bertanggung jawab terhadap salah satu dari beberapa helper sub kelas, dan untuk membatasi pengetahuan helper sub kelas mana sebagai delegasi. Struktur factory method pattern dapat dilihat pada gambar 2.3. Creator
Product
+FactoryMethod() +AnOperation()
ConcreteProduct
ConcreteCreator
..... product = FactoryMethod() ....
return new ConcreteProduct +FactoryMethod()
Gambar Error! Reference source not found..0.3 Struktur factory method pattern
Keterangan struktur factory method pattern :
a. Product : mendefinisikan interface dari penciptaan obyek factory method . b. ConcreteProduct : implementasi dari interface Product. c. Creator : mendeklarasikan factory method , yang mengembalikan sebuah obyek dari tipe Product, Creator juga mendefinisikan implementasi default dari factory method yang mengemba obyek default ConcreteProduct dan akan memanggil factory method untuk menciptakan obyek Product.
d. Kelas Concrete : meng-override factory
method
untuk mengembalikan
instansiasi dari ConcreteProduct. 2.1.1.4 Prototype Pattern Prototype pattern
bertujuan untuk menentukan jenis-jenis obyek untuk
menciptakan bentuk dasar dari instansiasi, dan menciptakan obyek baru dengan menyalin prototype ini[ERR95]. Prototype pattern digunakan ketika[ERR95] :
a. Sebuah sistem seharusnya berdiri sendiri untuk bagaimana productnya diciptakan, disusun dan digambarkan.
b. Kelas-kelas untuk instansiasi ditentukan pada saat run-time.
8
c. Untuk menghindari pembuatan hirarki kelas dari factory yang paralel dari hirarki kelas product.
d. Instansiasi dari kelas dapat memiliki salah satu dari kombinasi state yang berbeda. Struktur prototype pattern dapat dilihat pada gambar 2.4. prototype
Client +Operation()
Prototype ..... product = FactoryMethod() ....
+Clone()
P = prototype->Clone()
ConcretePrototype1
ConcretePrototype2
+Clone()
+Clone()
return copy of self
return copy of self
Gambar Error! Reference source not found..0.4Struktur prototype pattern
Keterangan struktur prototype pattern :
a. Prototype : mendeklarasikan interface untuk cloning itu sendiri. b. ConcretePrototype : mengimplementasi sebuah Operation untuk meng-cloning dirinya sendiri.
c. Client : menciptakan sebuah obyek baru dengan meminta prototype untuk mengcloning dirinya sendiri. 2.1.1.5 Singleton Pattern Singleton pattern merupakan pattern yang menjamin kelas hanya memiliki satu indtansiasi, dan menyediakan sifat yang umum untuk mengaksesnya. Singleton pattern digunakan ketika[ERR95] :
a. Harus ada satu instansiasi dari sebuah kelas, dan mampu mengakses klien dari tujuan akses yang diketahui dengan baik.
b. Penggunaan instansiasi harus mampu diperbanyak melalui sub kelas, dan klien mampu menggunakan instansiasi secara luas tanpa mengubah kode.
9
Struktur singleton pattern dapat dilihat pada gambar 2.5. Singleton +staticInstance() +SingletonOperation() +GetSingletonData()
return uniqueInstance
Gambar Error! Reference source not found..0.5 Struktur singleton pattern
Keterangan struktur singleton pattern :
a. Mendefinisikan sebuah operasi Instance yang mengijinkan klien untuk mengakses instance unique. Instance adalah sebuah operasi kelas.
b. Harus bertanggung jawab untuk menciptakan instance unique sendiri. 2.1.2
Structural Pattern Structural pattern diperhatikan dengan bagaimana kelas dan obyek disusun
untuk membentuk struktur yang lebih besar. Kelas structural pattern
menggunakan
inheritance untuk menyusun interface atau implementasi. Sebagai contoh sederhana, mempertimbangkan bagaimana menggabungkan dua atau lebih kelas inheritance menjadi satu. Hasilnya adalah sebuah kelas yang menggabungkan properti dari kelas induknya. Pattern ini secara khusus berguna karena membuat library kelas secara independent bekerjasama[ERR95]. 2.1.2.1 Adapter Pattern Adapter pattern merupakan pattern yang mengubah interface dari sebuah kelas menjadi interface klien lain. Adapater mengijinkan kelas-kelas bekerjasama karena interface yang tidak sesuai[ERR95]. Adapter pattern digunakan ketika[ERR95] :
a. Menginginkan menggunakan kelas yang tersedia, dan interface nya tidak sesuai dengan salah satu yang dibutuhkan.
b. Akan menciptakan kelas berulang yang bekerjasama dengan kelas-kelas yang tidak berelasi, sehingga kelas-kelas yang tidak perlu memiliki kesesuaian interface.
c. Membutuhkan penggunaan beberapa sub-sub kelas yang ada, tetapi tidak berguna untuk menyesuaikan interface nya dengan setiap sub kelas. Sebuah obyek adapter dapat menyesuaikan interface ke kelas induknya.
10
Struktur adapter pattern dapat dilihat pada gambar 2.6.
Gambar Error! Reference source not found..0.6 Struktur adapter pattern
Keterangan struktur adapter pattern:
a. Target : mendefinisikan domain interface
tertentu sehingga menggunakan
Client.
b. Client : bekerjasama dengan obyek menyesuaikan diri menjadi interface Target. c. Adaptee : mendefinisikan interface yang ada sehingga membutuhkan adaptasi. d. Adapter : menyesuaikan interface dari Adaptee ke interface Target. 2.1.2.2 Bridge Pattern Bridge pattern merupakan pattern yang memisahkan abstraksi obyek dari implementasinya sehingga dapat mengubah obyek dengan bebas[ERR95]. Bridge pattern digunakan ketika[ERR95] :
a. Ingin menghindari pengikatan permanen diantara abtraksi dan implementasi. b. Keduanya, abstraksi dan implementasi mereka harus dapat kembangkan melalui sub kelas. Dalam hal ini, bridge pattern mengijinkan untuk menggabungkan abstraksi dan implementasi yang berbeda dan memperbanyak mereka secara bebas.
c. Mengganti implementasi dari abstraksi seharusnya tidak berpengaruh pada klien sehingga kodenya tidak harus di kompile ulang.
d. Ingin menyembunyikan implementasi dari abstraksi secara lengkap dari klien. e. Ingin memperbanyak kelas. f. Ingin membagi implementasi diantara banyak obyek, dan fakta ini seharusnya disembunyikan dari klien.
11
Struktur bridge pattern dapat dilihat pada gambar 2.7.
Gambar Error! Reference source not found..0.7Struktur bridge pattern
Keterangan struktur bridge pattern: a. Abstraction : mendefinisikan interface abstrak dan mempertahankan refrensi untuk obyek dengan tipe Implementor. b. RefinedAbstraction : memberikan interface didefinisikan oleh Abstraction c. Kelas Implementor : mendefinisikan interface untuk kelas implementasi. d. ConcreteImplementor
:
mengimplemen
interface
Implementor
dan
mendefinisikan implementasi konkritnya. 2.1.2.3 Composite Pattern Composite pattern
merupakan pattern
yang menyusun obyek menjadi tiga
struktur untuk menggambarkan hirarki seluruh bagian. Composite mengijinkan klien menggunakan obyek individu dan susunan dari obyek yang seragam[ERR95]. Composite pattern digunakan ketika[ERR95] : 1. Ingin menggambarkan hirarki dari seluruh bagian obyek. 2. Agar klien mampu untuk mengabaikan perbedaan antara obyek komposisi dan individu.
12
Struktur composite pattern dapat dilihat pada gambar 2.8.
Gambar Error! Reference source not found..0.8 Struktur Composite pattern
Keterangan struktur composite pattern:
a. Composite : mendeklarasikan interface
untuk obyek di dalam komposisi,
mengimplementasi tingkah laku dasar interface
utama untuk seluruh kelas,
karena sesuai, mendeklarasikan interface untuk pengaksesan dan pengaturan komponen anaknya dan mendefinisikan sebuah interface untuk pengaksesan komponen induk dalam struktur yang berulang, dan mengimplementasikannya jika sesuai.
b. Leaf : menggambarkan obyek leaf dalam komposisi, leaf tidak memiliki turunan dan mendefinisikan tingkah laku untuk obyek primitif pada composition.
c. Composite : mendefinisikan tingkah laku untuk komponen yang memiliki turunan, menyimpan komponen turunan, dan mengimplemen operation turunan yang berelasi pada interface Component.
d. Client : memanipulasi obyek pada composition melalui interface Component. 2.1.2.4 Decorator Pattern Decorator pattern merupakan pattern yang memberikan penambahan tanggung jawab pada sebuah obyek secara dinamis. Decorator menyediakan alternatif yang sesuai untuk sub kelas selama pengextendnan fungsi[ERR95].
13
Penggunaan decorator pattern adalah pada kondisi sebagai berikut[ERR95] :
a. Untuk menambahkan tanggung jawab pada obyek individu secara dinamis dan jelas, sehingga tidak mempengaruhi obyek yang lain.
b. Selama tanggung jawab dapat diambil. c. Ketika ektensi melalui sub kelas tidak bermanfaat. Struktur decorator pattern dapat dilihat pada gambar 2.9.
Gambar Error! Reference source not found..0.9Struktur Decorator pattern
Keterangan struktur decorator pattern:
a. Component : mendefinisikan interface
untuk obyek yang dapat memiliki
tanggung jawab menambahkan secara dinamis.
b. ConcreteComponent : mendefinisikan obyek untuk menambahkan tanggung jawab yang dapat di berikan.
c. Decorator : mempertahankan refrensi sebuah obyek Component dan mendesfinisikan interface yang sesuai dengan interface Component.
d. ConcreteDecorator : menambahkan tanggung jawab ke component.
14
2.1.2.5 Facade Pattern Facade pattern menyediakan kumpulan interface dalam sebuah sub sistem. Facade mendefinisikan interface tinggkat tinggi sehingga mambuat sub sistem lebih mudah untuk digunakan[ERR95]. Facade pattern digunakan ketika[ERR95] :
a. Ingin menyediakan interface sederhana untuk sub sistem yang kompleks. b. Terdapat banyak ketergantungan diantara klien dan kelas implementasi dari sebuag abstraksi.
c. Ingin melapisi sub sistem. Menggunakan facade untuk mendefinisikan masukan point untuk setiap level sub sistem. Struktur facade pattern dapat dilihat pada gambar 2.10.
Gambar Error! Reference source not found..0.10Struktur Facade pattern
Keterangan struktur facade pattern:
a. Facade : mengetahui kelas-kelas sub sistem mana yang bertanggung jawab untuk sebuah permintaan dan mendelegasikan permintaan klien untuk menyesuaikan obyek sub sistem.
b. Subsystem : mengimplemen fungsi sub sistem, menangani tugas yang diberikan oleh obyek Facade, dan tidak memiliki pengetahuan Facade sehingga tetap menyimpan yang bukan referensi untuk facade.
15
2.1.2.6 Flyweight Pattern Flyweight pattern menggunakan sharing untuk beberapa obyek yang disatukan dengan baik secara efisien[ERR95]. Flyweight pattern akan efektif jika digunakan pada kondisi sebagai berikut[ERR95] :
a. Sebuah aplikasi menggunakan obyek yang banyak. b. Menghabiskan biaya yang tinggi karena karena jumlah obyek. c. Sebagian besar state dapat dibuat akibat dari state lain. d. Banyak grup obyek yang seharusnya dipindahkan oleh obyek yang dibagi satu kali state di pindahkan.
e. Aplikasi tidak tergantung pada identitas obyek. Struktur flyweight pattern dapat dilihat pada gambar 2.11.
Gambar Error! Reference source not found..0.11Struktur Flyweight Pattern
Keterangan struktur flyweight pattern:
a. Flyweight : mendeklarasikan sebuah interface melalui flyweight yang dapat menerima dan berperan pada state yang di sebabkan oleh keadaan lain.
b. ConcreteFlyweight : mengimplemen interface sub kelas Flyweight untuk dibagi. c. UnsharedConcreteFlyweight : tidak seluruh sib kelas Flyweight harus dibagi. Interface Flyweight mampu berbagi.
d. FlyweightFatory : menciptakan dan mengatur obyek flyweight dan menjamin bahwa flyweight dibagi dengan baik. Ketika klien meminta flyweight, maka obyek FlyweightFactory
menyediakan instansiasi atau menciptakan satu
instansiasi jika tidak ada.
e. Client : mempertahankan sebuah refrensi untuk flyweight dan memperhitungkan atau menyimpan state dari flyweight.
16
2.1.2.7 Proxy Pattern Proxy pattern
menyediakan pengganti obyek lain untuk mengontrol
pengaksesan. Proxy dapat digunakan kapan pun ketika membutuhkan kecanggihan refrensi ke sebuah obyek daripada pointer sederhana[ERR95]. Berikut diuraikan beberapa kondisi utama dalam menggunakan proxy pattern[ERR95] :
a. Sebuah proxy remote menyediakan perwakilan lokal untuk obyek pada bagian alamat yang berbeda.
b. Proxy virtual menciptakan obyek pada permintaan. c. Proxy protection mengontrol pengaksesan pada obyek. d. Smart reference adalah pergantian untuk pointer yang menunjukkan penambahan peran ketika obyek diakses. Struktur proxy pattern dapat dilihat pada gambar 2.12.
Gambar Error! Reference source not found..0.12 Struktur Proxy Pattern
Keterangan struktur proxy pattern:
a. Proxy : memelihara refrensi yang mengijinkan pengaksesan proxy pada subyek nyata, menyediakan interface untuk Subject sehingga proxy dapat disubstitusi, mengontrol pengaksesan dan bertanggung jawab untuk pembuatan dan penghapusan interface .
b. Subject : mendefinisikan interface utama untuk RealSubject dan Proxy sehingga Proxy dapat digunakan dimana pun RealSubject diharapkan.
17
2.1.3
Behavioral Pattern Behavioral pattern
dihubungkan dengan algoritma dan penetapan tanggung
jawab diantara obyek. Behavioral pattern tidak hanya menentukan pattern untuk obyek atau kelas tetapi pattern untuk komunikasi diantara obyek dan kelas[ERR95]. 2.1.3.1 Chain of Responsibilty Pattern Chain of Responsibilty Pattern
merupakan pattern
yang menghindari
penggabungan pengirim permintaan ke penerimanya dengan memberikan lebih dari satu obyek yang mencoba untuk menangani permintaan[ERR95]. Chain of responsibility digunakan ketika[ERR95] :
a. Lebih dari satu obyek harus menangani permintaan. b. Menginginkan hasil permintaan untuk beberapa obyek tanpa menentukan penerima secara eksplisit.
c. Terdapat sekumpulan obyek sehingga dapat menangani permintaan yang ditentukan secara dinamis. Struktur Chain of responsibility dapat dilihat pada gambar 2.13.
Gambar Error! Reference source not found..0.13Struktur Chain of Responsibility Pattern
Keterangan struktur chain of responsibility pattern:
a. Handler : mendefinisikan interface untuk menangani permintaan dan implementasi dari hubungan successor.
b. ConcreteHandler : menangani permintaan untuk tanggung jawabnya, dapat mengakses successor dan jika ConcreteHandler dapat menangani permintaan, maka sebaliknya ConcreteHandler meneruskan permintaan ke successor.
c. Client : menginisiasikan permintaan ke obyek ConcreteHandler pada chain.
18
2.1.3.2 Command Pattern Command pattern merupakan pattern yang membungkus permintaan sebagai obyek, dengan demikian mengijinkan parameter klien dengan permintaan yang berbeda, mengantri atau
mencatat
permintaan, dan mendukung kemampuan
membuka
operasi[ERR95]. Command pattern digunakan ketika[ERR95] :
a. Obyek parameter melalui peran yang ditampilkan sebagai obyek MenuItem. b. Menentukan, antrian dan pengeksekusian permintaan pada waktu yang berbeda. c. Mendukung undo. d. Mendukung pencatatan perubahan sehingga dapat digunakan dalam kasus sistem yng rusak
e. Struktur sistem disekitar operasi level tinggi dibangun pada operasi primitif. Struktur command pattern dapat dilihat pada gambar 2.14.
Gambar Error! Reference source not found..0.14 Struktur Command Pattern
Keterangan struktur command pattern:
a. Command : mendeklarasikan interface untuk menjalankan operasi. a. ConcreteCommand : mendefinisikan keterkaitan diantara obyek Receiver dan action, dan mengimplemen Execute melalui pemanggilan operasi pada Receiver.
b. Client : menciptakan obyek ConcreteCommand dan mengatur receiver. c. Invoker : menanyakan command untuk membawa request.
19
2.1.3.3 Interpreter Pattern Interpreter pattern memberikan sebuah bahasa, mendefinisikan gambaran untuk tatabahasanya dengan sebuah interprete sehingga menggunakan gambaran untuk menerjemahkan kalimat dalam bahasa[ERR95]. Interpreter pattern digunakan ketika[ERR95] :
a. Tata bahasa sederhana. b. Efisiensi tidak kritis. Struktur Interpreter pattern dapat dilihat pada gambar 2.15.
Gambar Error! Reference source not found..0.15 Struktur Interpreter Pattern
Keterangan struktur interpreter pattern:
a. AbstractExpression : mendeklarasikan sebuah operasi Interpreter abstrak sehingga menjadi seluruh node dalam sintaks pohon abtrak.
b. TerminalExpression : mengimplemen sebuah operasi Interpreter yang berhubungan dengan simbol terminal dalam tata bahasa dan instansiasi dibutuhkan untuk setiap simbol terminal dalam kalimat.
c. NonterminalExpression : salah satu contoh kelas yang dibutuhkan untuk setiap aturan R ::=R1 R2 .. Rn pada tata bahasa dan mempertahantakan instansiasi variabel dari tipe AbstractExpression untuk setiap simbol R sampai Rn.
d. Context : terdiri dari informasi umum untuk interpreter. e. Client : membuat sebuah sintak pohon abstrak yang menggambrakan kalimat khusus dalam bahasa yang mendefinisikan tata bahasa dan memanggil operasi Interpret.
20
2.1.3.4 Iterator Pattern Iterator pattern
menyediakan cara untuk mengakses elemen dari kumpulan
obyek secara sekuen tanpa menampilkan gambaran yang ada di dalamnya[ERR95]. Iterator pattern digunakan untuk[ERR95] :
a. Mengakses sekumpulan isi obyek tanpa menampilkan gambaran internalnya. b. Mendukung banyak traversal dari sekumpulan obyek. c. Menyediakan interface
seragam untuk melintasi sekumpulan struktur yang
berbeda. Struktur Iterator pattern dapat dilihat pada gambar 2.16.
Gambar Error! Reference source not found..0.16 Struktur Iterator Pattern
Keterangan struktur iterator pattern:
a. Iterator : mendefinisikan sebuah interface untuk pengaksesan dan pelintasan elemen.
b. ConcreteIterator : mengimplemen interface Iterator dan mempertahankan posisi dalam aggregate traversal .
c. Aggregate : mendefinisikan sebuah interface untuk menciptakan obyek Iterator. d. ConcreteAggregate : mengimplemen Iterator menciptakan interface mengembalikan instansiasi dari ConcreteIterator.
untuk
21
2.1.3.5 Mediator Pattern Mediator pattern mendefinisikan sebuah obyek yang membungkus sekumpulan interaksi obyek. Mediator mempertimbangkan kehilangan penggabungan melalui penyimpanan obyek dan mengijinkan mengubah interaksi secara independent[ERR95]. Mediator pattern digunakan ketika[ERR95] :
a. Sekumpulan obyek berkomunikasi tetapi dengan cara yang rumit. b. Menggunakan obyek berulang adalah sulit karena mengarahkan ke komunikasi dengan banyak obyek.
c. Tingkah laku yang didistribusikan diantara beberapa kelas seharusnya mampu di customize tanpa banyak sub kelas. Struktur mediator pattern dapat dilihat pada gambar 2.17.
Gambar Error! Reference source not found..0.17Struktur Mediator Pattern
Keterangan struktur mediator pattern:
a. Meidator : mendefinisikan sebuah interface untuk berkomunikasi dengan obyek Colleague.
b. ConcreteMediator : mengimplemen tingkah laku melalui koordinasi obyek Colleague.
c. Kelas Colleague : setiap kelas Colleague mengetahui obyek Mediatornya. 2.1.3.6 Memento Pattern Memento pattern
merupakan pattern
tanpa menggangu pembungkusan,
mengambil dan mengadakan state obyek internal sehingga obyek dapat disimpan ke state selanjutnya[ERR95]. Memento pattern digunakan ketika[ERR95] :
a. Gambaran sebuah state obyek harus disimpan sehingga dapat dihapus pada state berikutnya.
b. Menunjukkan interface untuk menghasilkan state yang akan menunjukkan detail implementasi dan menghentikan pembungkusan obyek.
22
Struktur memento pattern dapat dilihat pada gambar 2.18.
Gambar Error! Reference source not found..0.18 Struktur Memento Pattern
Keterangan struktur memento pattern:
a. Memento : menyimpan state internal untuk obyek Originator, melindungi pengaksesan melalui obyek lain yang originator.
b. Originator : menciptakan sebuah memento yang terdiri dari gambaran state internal dan menggunakan memento untuk menghapus state internal.
c. Caretaker : bertanggung jawab untuk penyimpanan memento dan tidak pernah mengoperasikan atau menguji isi dari memento. 2.1.3.7 Observer Pattern Observer pattern mengasumsikan bahwa obyek yang berisi data, terpisah dari obyek yang menampilkan data[ERR95]. Observer menetapkan hubungan kardinaliti oneto-many ketergantungan antar obyek, sehingga ketika suatu obyek melakukan perubahan status maka semua yang bergantung pada obyek akan diberitahukan dan dibaharui secara otomatis[ERR95]. Observer pattern digunakan ketika[ERR95] : 1. Abstraction mempunyai dua aspek, aspek yang satu bergantung pada yang lain. Encapsulation aspek pada pemisahan obyek mengijinkan terjadinya pertukaran dan penggunaan kembali secara bebas. 2. Perubahan terhadap suatu obyek membutuhkan perubahan obyek yang lain, dan tidak mengetahui berapa banyak obyek yang dibutuhkan untuk diubah. 3. Suatu obyek seharusnya mampu untuk memberitahukan obyek lain tanpa membuat asumsi mengenai obyek tersebut dan tidak saling terikat.
23
Struktur observer pattern dapat dilihat pada Gambar 2.19 .
Gambar Error! Reference source not found..0.19Struktur observer pattern
Keterangan struktur observer pattern:
a. Subject : mengetahui Observernya. Beberapa obyek observer memungkinkan menjalankan sebuah subyek dan menyediakan interface untuk memasang dan melepaskan obyek Observer.
b. Observer : mendefinisikan perubahan interface untuk obyek sehingga dapat diketahui perubahan pada subyek.
c. ConcreteSubject : menyimpan state yang penting untuk obyek ConcreteObserver dan mengirimkan pemberitahuan ke observer ketika statenya berubah.
d. ConcreteObserver : memelihara refrensi ke obyek ConcreteSubject, menyimpan state sehingga dapat tetap konsisten dengan subyek dan mengimplemen perubahan interface Observer untuk menunjukkan state yang konsisten dengan subyek. 2.1.3.8 State Pattern State pattern mengijinkan sebuah obyek untuk mengubah tingkah lakunya ketika state internalnya berubah. Obyek akan menampilkan perubahan kelasnya[ERR95]. State pattern digunakan pada saat salah satu kasus berikut ini[ERR95]:
a. Sebuah tingkah laku obyek bergantung pada statenya, dan harus mengubah tingkah lakunya pada saat run-time berdasarkan pada statenya.
b. Memiliki operasi yang banyak, menyatakan banyak kondisi yang bergantung pada state obyek.
24
Struktur state pattern dapat dilihat pada gambar 2.20.
Gambar Error! Reference source not found..0.20 Struktur state pattern
Keterangan struktur state pattern :
a. Context : mendefinisikan interface ke client, memelihara sebuah instansiasi dari sub kelas ConcreteState sehingga mendefinisikan state saat ini.
b. State : mendefinisikan sebuah interface untuk pembungkusan tingkah laku yang berhubungan dengan state khusus dari Context.
c. Sub kelas ConcreteState : setiap sub kelas mengimplemen sebuah tingkah laku yang berhubungan dengan state pada Context. 2.1.3.9 Strategy Pattern Strategy pattern
mendefinisikan kumpulan algoritma, pembungkusan dan
membuat kemampuan untuk saling bertukar. Strategy mengijinkan algoritma berubah secara bebas dari client yang menggunakannya[ERR95]. Strategy digunakan ketika[ERR95] :
a. Banyak relasi kelas berbeda hanya pada tingkah lakunya. Strategy menyediakan cara untuk mengkonfigurasi kelas dengan salah satu atau banyak tingkah laku.
b. Membutuhkan perbedaan bermacam-macam algoritma. Sebagai contoh, mendefinisikan algoritma yang menggambarkan perbedaan ruang/waktu.
c. Sebuah algoritma menggunakan data sehingga client tidak akan mengetahuinya. d. Sebuah kelas mendefinisikan banyak tingkah laku, dan hal ini menampilkan banyak kondisi dalam operasinya.
25
Struktur strategy pattern dapat dilihat pada gambar 2.21.
Gambar Error! Reference source not found..0.21Struktur strategy pattern
Keterangan struktur startegy pattern :
a. Strategy : mendeklarasikan sebuah interface utama untuk mendukung seluruh algoritma.
b. ConcreteStrategy : mengimplemen algoritma menggunkan interface Strategy. c. Context : dikonfigurasi dengan obyek ConcreteStrategy, mempertahankan refrensi ke obyek Strategy dan mendefinisikan sebuah interface
yang
mengijinkan Strategy mengakses datanya. 2.1.3.10 Template Method Pattern Template method pattern mendefinisikan kerangka dari algoritma pada operasi, menunda beberapa tahapan untuk sub kelas. Method template mengijinkan sub kelas mendefinisikan ulang beberapa tahapan pada sebuah algoritma tanpa mengubah struktur algoritma[ERR95]. Template method pattern akan digunakan ketika[ERR95] :
a. Untuk mengimplemen bagian invarian dari sebuah algoritma dan mewariskannya ke sub kelas untuk mengimplemen tingkah laku yang dapat berubah.
b. Ketika tingkah laku umum diantara sub-sub kelas seharusnya difaktorkan dan dialokasikan pada kelas utama untuk menghindari kode yang duplikat.
c. Untuk mengontrol keberadaan sub-sub kelas.
26
Struktur template method pattern dapat dilihat pada gambar 2.22.
Gambar Error! Reference source not found..0.22 Struktur method pattern
Keterangan struktur template method pattern:
a. AbstractClass : mendefinisikan abstrak PrimitiveOperation sehingga sub kelas konkrit mendefinisikan tahap implementasi pada algoritma lgoritma.
b. ConcreteClass : mengimplemen PrimitiveOperation untuk membawa tahapan sub kelas tertentu pada algoritma. 2.1.3.11Visitor Pattern Visitor pattern
menggambarkan sebuah operasi untuk menampilkan elemen
struktur obyek. Visitor mengijinkan mendefinisikan operasi baru tanpa mengubah kelaskelas dari elemen yang dioperasikannya[ERR95]. Visitor pattern digunakan ketika[ERR95] :
a. Struktur obyek terdiri dari banyak kelas-kelas obyek dengan interface yang berbeda, dan menunjukkan operasi pada obyek yang bergantung pada kelas-kelas konkrit.
b. Banyak operasi yang berbeda dan tidak berelasi harus ditampilkan pada obyek dalam struktur obyek.
c. Kelas-kelas mendefinisikan struktur obyek yang tidak selalu berubah, tetapi mendefinisikan operasi yang baru diatas struktur.
27
Struktur visitor pattern dapat dilihat pada gambar 2.23.
Gambar Error! Reference source not found..0.23 Struktur visitor pattern
Keterangan visitor pattern:
a. Visitor : mendeklarasikan operasi visitor untuk setiap kelas ConcreteElement pada struktur obyek.
b. ConcreteVisitor : mengimplemen setiap operasi yang dideklarasikan oleh Visitor. c. Element : mendefinisikan operasi Accept yang mengambil visitor sebagai argumen.
d. ConcreteElement : mengimplemen operasi Accept yang mengambil visitor sebagai argumen.
e. ObjectStructure : dapat menguraikan elemennya, menyediakan interface level tinggi untuk mengijinkan visitor mengunjungi elemennya dan memungkinkan menjadi composite.
28
2.2 Model Iterative Model iterative merupakan model yang mengandung perulangan. Hasil proses berupa produk makin lama semakin lengkap sampai versi terlengkap dihasilkan sebagai produk akhir dari proses. Karakteristik model iterative diuraikan sebagai berikut : a. Model ini merupakan kombinasi dengan waterfall. Element-element dalam waterfall dikerjakan dengan hasil berupa produk dengan spesifikasi tertentu, kemudian proses dimulai dari fase pertama hingga akhir dan menghasilkan produk dengan spesifikasi yang lebih lengkap dari yang sebelumnya. Demikian seterusnya hingga semua spesifikasi memenuhi kebutuhan yang ditetapkan oleh pengguna. b. Produk hasil increment pertama biasanya produk inti (core product), yaitu produk yang memenuhi kebutuhan dasar. Produk tersebut digunakan oleh pengguna atau menjalani review/pengecekan detil. Hasil review tersebut menjadi bekal untuk pembangunan pada increment berikutnya. Hal ini terus dikerjakan sampai produk yang komplit dihasilkan. c. Mampu mengakomodasi perubahan secara fleksibel. d. Cocok untuk proyek berukuran kecil (tidak lebih dari 200.000 kode baris).
Gambar Error! Reference source not found..0.24 Model iterative
29
2.3 Unified Modeling Language (UML) Unified modelling language adalah gambar yang digunakan sebagai “alat komunikasi”
untuk
menggambarkan
suatu
ide
yang
abstrak
untuk
dapat
diimplementasikan. Selain sebagai alat komunikasi, UML juga dapat berfungsi sebagai dokumentasi dari suatu desain [ILK11]. UML
menyediakan
beberapa
notasi/diagram
yang
dapat
digunakan
untuk
menggambarkan rancangan agar dapat dimengerti oleh semua pihak. Kategori UML terdiri dari structural, behaviour, dan interaction[CMJ03]. Tabel Error! Reference source not found..2 Kategori UML
Kategori Struktur /Strutural
Tipe Diagram Class diagram
Tujuan Digunakan untuk menampilkan entiti, elemen analisis dan perancangan, implementasi kelas dan hubungan antar kelas.
Object diagram
Digunakan untuk mengidentifikasi keadaan dari suatu peristiwa seperti pengujian atau operasi pemanggilan.
Composite structure
Digunakan untuk menampilkan
diagram
bagaimana sesuatu dibuat.
Deployment
Digunakan untuk menampilkan
diagram
arsitektur sistem dan elemen perangkat lunak.
Component diagram
Digunakan untuk menampilkan organisasi dan hubungan antara sistem.
Package diagram
Digunakan untuk mengelola elemen model dan ketergantungan antara model.
Sifat/Behavioral
Activity diagram
Digunakan untuk menampilkan alur data.
Interaksi/Interaction
State machine
Digunakan untuk menampilkan
diagram
siklus hidup objek tertentu
Overview diagram
Digunakan untuk menampilkan beberapa interaksi scenario yang
30
Kategori
Tipe Diagram
Tujuan berbeda untuk kolaborasi yang sama.
Sequence diagram
Digunakan untuk fokus pada pertukaran pesan antara objek grup dan urutan pesan.
Communication
Digunakan untuk fokus pada
diagram
pertukaran pesan antara objek grup dan hubungan antara objek.
Timing diagram
Digunakan untuk menampilkan perubahan dan hubungan real-time kerja sistem.
Berikut ini diuraikan secara detil beberapa diagram yang digunakan dalam melakukan rancang bangun perangkat lunak Sistem Informasi Project Tracker.
31
2.3.1
Use case diagram Use case diagram menggambarkan fungsionalitas yang diharapkan dari sebuah
sistem. Pada use case diagram, yang ditekankan adalah “apa” yang diperbuat sistem, dan bukan “bagaimana”. Sebuah use case menggambarkan sebuah interaksi antara aktor dengan sistem.Aktor adalah sebuah entitas manusia atau mesin yang berinteraksi dengan sistem untuk melakukan pekerjaan tertentu [BGJ98]. Simbol-simbol yang sering dipakai pada use case diagram : Table 2.3 Simbol Use case diagram
No.
Gambar
Nama
Keterangan Menspesifikasikan himpuan peran
1
Actor
yang pengguna mainkan ketika berinteraksi dengan use case. Hubungan dimana perubahan yang terjadi pada suatu elemen mandiri
2
Dependency
(independent) akan mempengaruhi elemen yang bergantung padanya elemen yang tidak mandiri (independent). Hubungan dimana objek anak
3
Generalization
(descendent) berbagi perilaku dan struktur data dari objek yang ada di atasnya objek induk (ancestor).
4
Include
Menspesifikasikan bahwa use case sumber secara eksplisit. Menspesifikasikan bahwa use case
5
Extend
target memperluas perilaku dari use case sumber pada suatu titik yang diberikan.
6
Association
7
System
Apa yang menghubungkan antara objek satu dengan objek lainnya. Menspesifikasikan paket yang menampilkan sistem secara terbatas.
32
No.
8
Gambar
Nama
Use Case
Keterangan Deskripsi dari urutan aksi-aksi yang ditampilkan sistem kepada actor Interaksi aturan-aturan dan elemen lain yang bekerja sama untuk
9
Collaboration
menyediakan prilaku yang lebih besar dari jumlah dan elemenelemennya (sinergi). Elemen fisik yang eksis saat aplikasi
10
Note
dijalankan dan mencerminkan suatu sumber daya komputasi
Contoh use case diagram dapat dilihat pada gambar 2.25.
Gambar Error! Reference source not found..0.25 Contoh use case diagram
33
2.3.2
Class Diagram Class adalahh sebuah spesifikasi spesifikasi yang jika diinstansiasi akan
menghasilkan sebuah objek dan merupakan inti dari pengembangan dan desain berorientasi objek. Class menggambarkan keadaan (atribut/properti) suatu sistem, sekaligus menawarkan layanan untuk memanipulasi keadaan tersebut(metoda/fungsi). Class memiliki tiga area pokok yaitu nama, atribut dan metoda[BGJ98]. Class diagram menggambarkan struktur dan deskripsi class, package dan objek beserta hubungan satu sama lain seperti containment, pewarisan, asosiasi, dan lain-lain[BGJ98]. Simbol-simbol yang sering dipakai pada class diagram : Table 2.4 Simbol class diagram
No.
Gambar
Nama
Keterangan Hubungan dimana objek anak
1
Generalization
(descendent) berbagi perilaku dan struktur data dari objek yang ada di atasnya objek induk (ancestor).
2
3
Nary Association Class
Upaya untuk menghindari asosiasi dengan lebih dari 2 objek. Himpunan dari objek-objek yang berbagi atribut serta operasi yang sama. Deskripsi dari urutan aksi-aksi yang
4
Collaboration
ditampilkan sistem yang menghasilkan suatu hasil yang terukur bagi suatu aktor
5
Realization
Operasi yang benar-benar dilakukan oleh suatu objek. Hubungan dimana perubahan yang terjadi pada suatu elemen mandiri (independent)
6
Dependency
akan mempegaruhi elemen yang bergantung padanya elemen yang tidak mandiri
7
Association
Apa yang menghubungkan antara objek satu dengan objek lainnya
34
Contoh class diagram dapat dilihat pada gambar 2.26.
Gambar Error! Reference source not found..0.26 Contoh class diagram
Hubungan antar kelas[BGJ98] : 1. Asosiasi, yaitu hubungan statis antar class. Umumnya menggambarkan class yang memiliki atribut berupa class lain, atau class yang harus mengetahui eksistensi class lain. Panah navigability menunjukkan arah query antar class. 2.
Agregasi, yaitu hubungan yang menyatakan bagian (“terdiri atas..”).
3. Pewarisan, yaitu hubungan hirarkis antar class. Class dapat diturunkan dari class lain dan mewarisi semua atribut dan metoda class asalnya dan menambahkan fungsionalitas baru, sehingga ia disebut anak dari class yang diwarisinya. Kebalikan dari pewarisan adalah generalisasi. 4. Hubungan dinamis, yaitu rangkaian pesan (message) yang di-passing dari satu class kepada class lain. Hubungan dinamis dapat digambarkan dengan menggunakan sequence diagram.
35
2.3.3
Sequence Diagram Sequence diagram menggambarkan interaksi antar objek di dalam dan di sekitar
sistem (termasuk pengguna, display, dan sebagainya) berupa message yang digambarkan terhadap waktu. Sequence diagram terdiri antar dimensi vertikal (waktu) dan dimensi horizontal (objek-objek yang terkait) [BGJ98]. Sequence diagram biasa digunakan untuk menggambarkan skenario atau rangkaian langkah-langkah yang dilakukan sebagai respons dari sebuah event untuk menghasilkan output tertentu. Diawali dari apa yang men-trigger aktivitas tersebut, proses dan perubahan apa saja yang terjadi secara internal dan output apa yang dihasilkan[BGJ98]. Masing-masing objek, termasuk aktor, memiliki lifeline vertikal. Message digambarkan sebagai garis berpanah dari satu objek ke objek lainnya. Pada fase desain berikutnya, message akan dipetakan menjadi operasi/metoda dari class. Activation bar menunjukkan lamanya eksekusi sebuah proses, biasanya diawali dengan diterimanya sebuah pesan[BGJ98].
36
Simbol-simbol yang sering dipakai pada sequence diagram : Table 2.5 Simbol sequence diagram
Simbol
Keterangan Obyek (Participant) Activation Message synchronous Message simple Message asynchronous Lifeline
Contoh sequence diagram dapat dilihat pada gambar 2.27.
Gambar Error! Reference source not found..0.27 Contoh sequence diagram
37
2.3.4
Activity Diagram Activity diagram menggambarkan berbagai alir aktivitas dalam sistem yang
sedang dirancang, bagaimana masing-masing alir berawal, decision yang mungkin terjadi, dan bagaimana mereka berakhir. Activity diagram juga dapat menggambarkan proses paralel yang mungkin terjadi pada beberapa eksekusi[BGJ98]. Activity diagram merupakan state diagram khusus, di mana sebagian besar state adalah action dan sebagian besar transisi di-trigger oleh selesainya state sebelumnya (internal processing). Oleh karena itu activity diagram tidak menggambarkan behaviour internal sebuah sistem (dan interaksi antar subsistem) secara eksak, tetapi lebih menggambarkan proses-proses dan jalur-jalur aktivitas dari level atas secara umum[BGJ98]. Sebuah aktivitas dapat direalisasikan oleh satu use case atau lebih. Aktivitas menggambarkan proses yang berjalan, sementara use case menggambarkan bagaimana aktor menggunakan sistem untuk melakukan aktivitas[BGJ98]. Decision digunakan untuk menggambarkan behaviour pada kondisi tertentu. Untuk mengilustrasikan proses-proses paralel (fork dan join) digunakan titik sinkronisasi yang dapat berupa titik, garis horizontal atau vertikal. Activity diagram dapat dibagi menjadi beberapa object swimlane untuk menggambarkan objek mana yang bertanggung jawab untuk aktivitas tertentu[BGJ98].
38
Simbol-simbol yang sering dipakai pada activity diagram : Table 2.6 Simbol activity diagram
No.
Gambar
Nama
Keterangan Memperlihatkan bagaimana masing-
1
Actifity
masing kelas antarmuka saling berinteraksi satu sama lain State dari sistem yang mencerminkan
2
Action
3
Initial Node
Bagaimana objek dibentuk atau diawali.
Actifity Final
Bagaimana objek dibentuk dan
4
5
Node Fork Node
eksekusi dari suatu aksi
dihancurkan Satu aliran yang pada tahap tertentu berubah menjadi beberapa aliran
39
Contoh activity diagram tanpa swimlane dapat dilihat pada gambar 2.28.
Gambar Error! Reference source not found..0.28 Contoh activity diagram
40
2.4 XAMPP XAMPP merupakan suatu paket instalasi yang di dalamnya terdapat MySQL yang sangat mudah digunakan. XAMPP juga tersedia untuk beberapa system operasi yaitu Windows, Linux, Unix dan Macintosh[APC11]. Paket-paket aplikasi yang terdapat pada XAMPP antara lain[APC11] : 1. MySQL 5.5.8 MySQL adalah Relational Database Management System (RDBMS) yang didistribusikan secara gratis dibawah lisensi GPL (General Public License). Dimana setiap orang bebas untuk menggunakan MySQL, namun tidak boleh dijadikan produk turunan yang bersifat closed source atau komersial. MySQL merupakan turunan salah satu konsep utama dalam database lama, yaitu SQL (Structured Query Language). SQL adalah sebuah konsep pengoperasian database, terutama untuk pemilihan atau seleksi dan pemasukan data, yang memungkinkan pengoperasian data dikerjakan dengan mudah secara otomatis. Keandalan suatu sistem database (DBMS) dapat diketahui dari cara kerja optimizer-nya dalam melakukan proses perintah-perintah SQL, yang dibuat oleh pengguna maupun program-program aplikasinya. Sebagai database server, MySQL dapat dikatakan lebih unggul dibandingkan database server lainnya dalam query data. 2. Apache 2.2.17 Server HTTP Apache atau Server Web/WWW Apache adalah server web yang dapat dijalankan di banyak sistem operasi (Unix, BSD, Linux, Microsoft Windows dan Novell Netware serta platform lainnya) yang berguna untuk melayani dan memfungsikan situs web. Protokol yang digunakan untuk melayani fasilitas web/www ini mengunakan HTTP.Apache memiliki fitur-fitur canggih seperti pesan kesalahan yang dapat dikonfigur, autentikasi berbasis basis dataantarmuka pengguna berbasis grafik (GUI) yang memungkinkan penanganan server menjadi mudah. dan lain-lain. Apache merupakan perangkat lunak sumber terbuka dikembangkan oleh komunitas terbuka yang terdiri dari pengembangpengembang dibawah naungan Apache Software Foundation.
41
3. PHP (Hypertext Preprocessor) 5.3.5 PHP adalah bahasa pemrograman yang berfungsi untuk membuat website dinamis maupun aplikasi web. Berbeda dengan HTML yang hanya bisa menampilkan konten statis, PHP bisa berinteraksi dengan database, file dan folder, sehingga membuat PHP bisa menampilkan konten yang dinamis dari sebuah website. Blog, Toko Online,CMS, Forum, dan website Social Networking adalah contoh aplikasi web yang bisa dibuat oleh PHP. PHP adalah bahasa scripting, bukan bahasa tag-based seperti HTML. PHP termasuk bahasa yang cross-platform, ini artinya PHP bisa berjalan pada sistem operasi yang berbedabeda (Windows, Linux, ataupun Mac). Program PHP ditulis dalam file plain text (teks biasa) dan mempunyai akhiran “.php”. 4. PHPMyAdmin 3.3.9 PHPmyAdmin adalah web application client untuk database server MySQL. Aplikasi ini sangat populer digunakan oleh para penyedia hosting web berbasis PHP. 2.5 Pengujian Pengujian adalah elemen kritis dari jaminan kualitas perangkat lunak dan merepresentasikan kajian pokok dari spesifikasi, desain, dan pengkodean. Pentingnya pengujian perangkat lunak dan implikasinya yang mengacu pada kualitas perangkat lunak tidak dapat terlalu ditekan karena melibatkan sederetan aktivitas produksi di mana peluang terjadinya kesalahan manusia sangat besar dan arena ketidakmampuan manusia untuk melakukan dan berkomunikasi dengan sempurna maka pengembangan perangkat lunak diiringi dengan aktivitas jaminan kualitas[RPS01]. Ada dua jenis pengujian yaitu : 1. Pengujian Whitebox Pengujian whitebox fokus pada struktur kontrol program. Pengujian dilakukan untuk memastikan bahwa semua statemen pada program telah dieksekusi paling tidak satu kali selama pengujian dan bahwa semua kondisi logis telah diuji. Persyaratan dalam menjalankan pengujian whitebox antara lain : a. Mendefinisikan semua alur logika b. Melakukan pengujian secara menyeluruh
42
2. Pengujian Blackbox Pengujian blackbox fokus pada spesifikasi fungsional perangkat lunak. Tujuan metode ini mencari kesalahan pada : a. Fungsi yg salah atau hilang b. Kesalahan pada interface c. Kesalahan pada struktur data atau akses database d. Kesalahan performansi e. Kesalahan inisialisasi dan tujuan akhir