• Tidak ada hasil yang ditemukan

Rekayasa Perangkat Lunak

Dalam dokumen BAB 2 TINJAUAN PUSTAKA (Halaman 27-40)

Rekayasa perangkat lunak adalah sebuah teknologi rancangan yang memiliki beberapa lapisan. Dasar dari rekayasa perangkat lunak adalah fokus terhadap kualitas. Setiap pendekatan rekayasa perangkat lunak harus didasari pada komitmen sebuah organisasi terhadap kualitas[5].

Fondasi dari rekayasa perangkat lunak adalah lapisan proses. Proses dari rekayasa perangkat lunak adalah pelekat yang menyatukan semua lapisan teknologi secara utuh dan memberikan pengembangan perangkat lunak komputer secara rasional dan tepat waktu. Prose mendefinisikan sebuah kerangka kerja harus ditetapkan agar rekayasa perangkat lunak menjadi efektif. Prose perangkat lunak membentuk dasar dari pengendalian proyek perangkat lunak dan menetapkan konteks dimana cara-cara teknikal diterapkan, hasil kerja(model-model, dokumentasi, data, laporan, dan lain-lain) dihasilkan.

Ada banyak model pengembangan perangkat lunak, antara lain The Waterfall Model, Joint Application Development (JAD), Information Engineering (IE), Rapid Application Development (RAD) termasuk di dalamnya Prototyping, Unified Process (UP), Structural Analysis and Design (SAD) dan Framework for the Application of System Thinking (FAST). Salah satu yang akan dijelaskan yaitu tentang model waterfall.[5].

Model waterfall sebenarnya adalah “linear sequential model”. Model ini sering disebut dengan “classic life cycle” atau model waterfall. Model ini adalah model yang muncul pertama kali yaitu sekitar tahun 1970 sehingga sering dianggap kuno, tetapi merupakan model yang paling banyak dipakai

didalam Software Engineering (SE). Model ini melakukan pendekatan secara sistematis dan urut mulai dari level kebutuhan sistem lalu menuju ke tahap analisis, desain, coding, testing / verification, dan maintenance. Disebut dengan waterfall karena tahap demi tahap yang dilalui harus menunggu selesainya tahap sebelumnya dan berjalan berurutan. Sebagai contoh tahap desain harus menunggu selesainya tahap sebelumnya yaitu tahap requirement.

Gambar 2.9 Model Waterfall[11]

Gambar 2.9 merupakan model Waterfall. Berikut adalah penjelasan dari tahap-tahap yang dilakukan di dalam model ini:

a. Requirements analysis and definition

Tahap ini Mengumpulkan kebutuhan secara lengkap kemudian kemudian dianalisis dan didefinisikan kebutuhan yang harus dipenuhi oleh program yang akan dibangun. Fase ini harus

dikerjakan secara lengkap untuk bisa menghasilkan desain yang lengkap..

b. System and software design

Tahap ini merupakan kegiatan Tahap ini merupakan kegiatan mengumpulkan kebutuhan secara lengkap kemudian dianalisis dan didefinisikan kebutuhan yang harus dipenuhi oleh aplikasi yang akan dibangun. Tahap ini harus dikerjakan secara lengkap untuk bisa menghasilkan desain yang lengkap. Pada tahap ini juga dilakukan analisis algoritma yang akan dipakai dalam aplikasi game Death Castle.

c. Implementation and unit testing

Desain program diterjemahkan ke dalam kode-kode dengan menggunakan bahasa pemrograman yang sudah ditentukan. Program yang dibangun langsung diuji baik secara unit.

d. Integration and system testing

Penyatuan unit-unit program kemudian diuji secara keseluruhan (system testing).

e. Operation and maintenance

Mengoperasikan program dilingkungannya dan melakukan pemeliharaan, seperti penyesuaian atau perubahan karena adaptasi dengan situasi sebenarnya[5].

2.5 OOP (Object Oriented Programming)

OOP atau dikenal dengan Pemrograman Berorientasi Objek merupakan pemrograman yang semua data dan fungsi di dalam paradigma ini dibungkus kedalam kelas-kelas atau objek-objek.

Model data berorientasi objek dikatakan dapat memberi fleksibilitas yang lebih, kemudahan mengubah program, dan digunakan luas dalam teknik piranti lunak skala besar. Lebih jauh lagi, pendukung OOP mengklaim bahwa OOP lebih mudah dipelajari dibandingkan dengan pendekatan sebelumnya, dan pendekatan OOP lebih mudah dikembangkan dan dirawat.

Dengan menggunakan OOP maka dalam melakukan pemecahan suatu masalah kita tidak melihat bagaimana cara menyelesaikan suatu masalah tersebut (terstruktur) tetapi objek-objek apa yang dapat melakukan pemecahan masalah tersebut. Sebagai contoh anggap kita memiliki sebuah departemen yang memiliki manager, sekretaris, petugas administrasi data dan lainnya. Misal manager tersebut ingin memperoleh data dari bag administrasi maka manager tersebut tidak harus mengambilnya langsung tetapi dapat menyuruh petugas bagian administrasi untuk mengambilnya. Pada kasus tersebut seorang manager tidak harus mengetahui bagaimana cara mengambil data tersebut tetapi manager bisa mendapatkan data tersebut melalui objek petugas administrasi. Jadi untuk menyelesaikan suatu masalah dengan kolaborasi antar objek-objek yang ada karena setiap objek memiliki deskripsi tugasnya sendiri [2]. Pemrograman orientasi-objek menekankan konsep berikut:

1. Kelas (Class) adalah kumpulan atas definisi data dan fungsi-fungsi dalam suatu unit untuk suatu tujuan tertentu. Sebuah class adalah dasar dari modularitas dan struktur dalam pemrograman berorientasi objek. Sebuah class secara tipikal sebaiknya dapat dikenali oleh seorang non-programmer sekalipun terkait dengan domain permasalahan yang ada, dan kode yang terdapat dalam sebuah class sebaiknya (relatif) bersifat mandiri dan independen (sebagaimana kode tersebut digunakan jika tidak menggunakan OOP). Dengan modularitas, struktur dari sebuah program akan terkait dengan aspek-aspek dalam masalah yang akan diselesaikan melalui program tersebut. 2. Objek (Object) adalah membungkus data dan fungsi bersama menjadi suatu

unit dalam sebuah program komputer. Objek merupakan dasar dari modularitas dan struktur dalam sebuah program komputer berorientasi objek. 3. Abstraksi (Abstract) adalah Kemampuan sebuah program untuk melewati

aspek informasi yang diproses olehnya, yaitu kemampuan untuk memfokus pada inti. Setiap objek dalam sistem melayani sebagai model dari "pelaku" abstrak yang dapat melakukan kerja, laporan dan perubahan keadaannya, dan berkomunikasi dengan objek lainnya dalam sistem, tanpa mengungkapkan bagaimana kelebihan ini diterapkan. Proses, fungsi atau metode dapat juga dibuat abstrak, dan beberapa teknik digunakan untuk mengembangkan sebuah pengabstrakan.

4. Enkapsulasi (Encapsulation) adalah Memastikan pengguna sebuah objek tidak dapat mengganti keadaan dalam dari sebuah objek dengan cara yang tidak layak; hanya metode dalam objek tersebut yang diberi ijin untuk

mengakses keadaannya. Setiap objek mengakses interface yang menyebutkan bagaimana objek lainnya dapat berinteraksi dengannya. Objek lainnya tidak akan mengetahui dan tergantung kepada representasi dalam objek tersebut. 5. Polimorfisme (Polimorfism) melalui pengiriman pesan. Tidak bergantung

kepada pemanggilan subrutin, bahasa orientasi objek dapat mengirim pesan, metode tertentu yang berhubungan dengan sebuah pengiriman pesan tergantung kepada objek tertentu di mana pesa tersebut dikirim. Contohnya, bila sebuah burung menerima pesan "gerak cepat", dia akan menggerakan sayapnya dan terbang. Bila seekor singa menerima pesan yang sama, dia akan menggerakkan kakinya dan berlari. Keduanya menjawab sebuah pesan yang sama, namun yang sesuai dengan kemampuan hewan tersebut. Ini disebut polimorfisme karena sebuah variabel tunggal dalam program dapat memegang berbagai jenis objek yang berbeda selagi program berjalan, dan teks program yang sama dapat memanggil beberapa metode yang berbeda di saat yang berbeda dalam pemanggilan yang sama. Hal ini berlawanan dengan bahasa fungsional yang mencapai polimorfisme melalui penggunaan fungsi kelas-pertama.

6. Inheritas (Inheritance) adalah Mengatur polimorfisme dan enkapsulasi dengan mengijinkan objek didefinisikan dan diciptakan dengan jenis khusus dari objek yang sudah ada, objek-objek ini dapat membagi (dan memperluas) perilaku mereka tanpa haru mengimplementasi ulang perilaku tersebut (bahasa berbasis-objek tidak selalu memiliki inheritas).

2.6 UML (Unified Modeling Language)

Unified Modeling Language (UML) adalah himpunan struktur dan teknik untuk pemodelan desain program berorientasi objek (OOP) serta aplikasinya. UML adalah metodologi untuk mengembangkan sistem OOP dan sekelompok perangkat tool untuk mendukung pengembangan sistem tersebut. UML mulai diperkenalkan oleh Object Management Group, sebuah organisasi yang telah mengembangkan model, teknologi, dan standar OOP sejak tahun 1980-an. Sekarang UML sudah mulai banyak digunakan oleh para praktisi OOP.

UML adalah suatu bahasa yang digunakan untuk menentukan, memvisualisasikan, membangun, dan mendokumentasikan suatu sistem informasi. UML dikembangkan sebagai suatu alat untuk analisis dan desain berorientasi objek oleh Grady Booch, Jim Rumbaugh, dan Ivar Jacobson. Namun demikian UML dapat digunakan untuk memahami dan mendokumentasikan setiap sistem informasi. Penggunaan UML dalam industri terus meningkat. Ini merupakan standar terbuka yang menjadikannya sebagai bahasa pemodelan yang umum dalam industri peranti lunak dan pengembangan sistem.

a. Kegunaan UML

Adapun kegunaan UML menurut Fowler [2] adalah sebagai berikut : 1. UML sebagai bahasa visualisasi digunakan untuk merancang suatu

model yang dapat dibaca oleh banyak orang dengan pengertian yang sama.

2. UML sebagai bahasa pendefinisian digunakan untuk mendefinisikan dengan rinci seluruh hasil analisis, desain, dan implementasi yang harus dilakukan dalam pengembangan sistem.

3. UML sebagai bahasa perancangan digunakan untuk merancang model yang dapat dikembangkan oleh bahasa pemrograman yang berbeda-beda.

4. UML sebagai bahasa dokumentasi digunakan untuk mendokumentasikan arsitektur sistem beserta perinciannya, unsur-unsur yang dibutuhkan dalam pengembangannya, serta perencanaan dan implemantasi proyek secara keseluruhan dengan simbol-simbol yang mudah dimengerti.

b. Struktur UML

Adapun unsur-unsur pada UML terdiri dari :

1. Objek, yang merupakan abstraksi dari elemen-elemen model. 2. Hubungan, yang menjadi alat penyatu bagi objek-objek yang ada. 3. Diagram, yang mengelompokkan objek-objek dan hubungannya dalam

kelompok-kelompok yang mudah dibaca.

Selain memiliki unsur-unsur, UML juga memiliki aturan-aturan yang berfungsi untuk mengatur bentuk sebuah model yang baik. Sebuah model dinyatakan telah dirancang dengan baik jika model tersebut konsisten secara semantik dan selaras dengan model-model lain yang terkait.

c. Tipe Diagram UML

UML Sebuah diagram merupakan presentasi grafis dari suatu set elemen, paling sering diterjemahkan sebagai graph terhubung dari simpul(benda) dan lengkungan (hubungan).[2]

Adapun tipe dari diagram UML adalah sebagai berikut : 1. Use Case Diagram

Diagram yang menunjukkan suatu set penggunaan kasus beserta aktornya (suatu kelas spesial), beserta hubungannya. Use case diagram mengalamatkan suatu pandangan kasus statis pada suatu sistem. Diagram ini sangat penting dalam menyusun dan membuat model tingkah laku (behaviour) dari suatu sistem.

Gambar 2.10 Use Case Diagram [2].

2. Class Diagram

Diagram ini menunjukkan suatu set kelas, antarmuka dan kolaborasi, serta hubungannya. Diagram ini adalah diagram yang umum ditemukan pada sistem berbasis objek. Class diagram mengalamatkan desain yang statis dari suatu sistem. Class

diagram yang berisi kelas aktif, mengalamatkan proses statis dari suatu sistem.

Gambar 2.11 Class Diagram [2].

3. Component Diagram

Component diagram menggambarkan struktur dan hubungan antar komponen piranti lunak, termasuk ketergantungan (dependency) di antaranya. Komponen piranti lunak adalah modul berisi code, baik berisi source code maupun binary code, baik library ataupun executable, baik yang muncul pada compile time, link time, maupun run time. Umumnya komponen terbentuk dari beberapa class atau package, tapi dapat juga dari komponen-komponen yang lebih kecil. Komponen dapat juga berupa interface, yaitu kumpulan layanan yang disediakan sebuah komponen untuk komponen lain.

Gambar 2.12 Component Diagram [2].

4. Deployment Diagram

Deployment/physical diagram menggambarkan detail bagaimana komponen di-deploy dalam infrastruktur sistem, di mana komponen akan terletak (pada mesin, server atau piranti keras apapun), bagaimana kemampuan jaringan pada lokasi tersebut, spesifikasi server, dan hal-hal lain yang bersifat fisikal. Sebuah node adalah server, workstation, atau piranti keras lain yang digunakan untuk men-deploy komponen dalam lingkungan sebenarnya [2].

5. State Diagram

Statechart diagram menggambarkan transisi dan perubahan keadaan (dari satu state ke state lainnya) suatu objek pada sistem sebagai akibat dari stimulus yang diterima. Pada umumnya statechart diagram menggambarkan class tertentu (satu class dapat memiliki lebih dari satu statechart diagram).

Gambar 2.14 State Chart Diagram [2].

6. 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 atar dimensi vertikal (waktu) dan dimensi horizontal (objek-objek yang terkait). Sequence diagram biasa digunakan untuk menggambarkan skenario atau rangkaian langkah-langkah yang dilakukan sebagai respons dari sebuah event untuk menghasilkan output tertentu.

Gambar 2.15 Sequence Diagram [2].

7. Collaboration Diagram

Collaboration diagram juga menggambarkan interaksi antar objek seperti sequence diagram, tetapi lebih menekankan pada peran masing-masing objek dan bukan pada waktu penyampaian message. Setiap message memiliki sequence number, di mana message dari level tertinggi memiliki nomor 1. Messages dari level yang sama memiliki prefiks yang sama.

8. Activity Diagram

Diagram ini adalah jenis spesial dari statechart diagram yang menunjukkan alur dari aktifitas ke aktifitas lain dalam suatu sistem. Activity diagram mengalamatkan secara dinamis suatu sistem. Diagram ini sangat penting dalam membuat model fungsi dari suatu sistem dan menekankan pada alur control diantara objek - objek yang bersangkutan.

Gambar 2.17 Activity Diagram [2].

2.7 Pembangun Perangkat Lunak

Dalam dokumen BAB 2 TINJAUAN PUSTAKA (Halaman 27-40)

Dokumen terkait