BAB 3 ANALISIS DAN PERANCANGAN PROGRAM 3.1 Perancangan Program 3.1.1 Perancangan Perangkat Lunak Perangkat lunak atau piranti lunak adalah: 1. Program komputer yang berfungsi sebagai sarana interaksi antara pengguna dan perangkat keras, penerjemah peintah-perintah yangdijalankan pengguna komputer untuk diteruskan kea tau diproses oleh perangkat keras. 2. Perintah (berupa sebuah program) yang bila dieksekusi memberikan sebuah fungsi dan unjuk kerja seperti yang diinginkan oleh si pembuat. 3. Sruktur data yang memungkinkan program memanipulasi informasi secara proporsioanal. Menurut Sommerville (2001, p6), perncangan perangkat lunak adalah disiplin perancangan yang berhubungan dengan semua aspek dari produksi perangkat lunak dari tahap awal spesifikasi sistem sampai dengan pemeliharaan setelah sistem dalam tahap berjalan. Perangkat lunak dibagi menjadi 3 tingkatan:
31 1. Tingkatan program aplikasi (application program misalnya Microsoft office). 2. Tingkatan system operasi (operating system misalnya Microsoft windows). 3. Tingkatan bahasa pemrograman (yang dibagi lagi atas bahasa pemrograman tingkat tinggi seperti pascal dan bahasa pemrograman tingkat rendah seperti bahasa rakitan). Perangkat lunak umumnya digunakan untuk mengontrol perangkat keras, melakukan perhitungan (memproses), berinteraksi dengan perangkat lunak yang lebih mendasar lainnya seperti system operasi, dan bahasa pemrograman, dan lain-lain. 3.1.2 Daur Hidup Perangkat Lunak Salah satu model perancangan perangkat lunak adalah dengan menggunakan model air terjun (waterfall model). Menurut Sommerville (2001, p45), tahap-tahap utama dalam model air terjun yang menggambarkan aktivitas dasar pengembangan perangkat lunak adalah sebagai berikut:
32 Analisis dan penentuan Desain Sistem dan Perangkat Implementasi dan Pengujian Integrasi dan Pengujian Pengoperasian dan Gambar 3.1 Daur Hidup Perangkat Lunak (Sumber: Sommerville, 2001, p45) a) Analisis dan Penentuan Kebutuhan (Requirements) Tugas, kendala, dan tujuan system ditentukan melalui konsultasi dengan pemakai sistem. Kemudian ditentukan cara yang dapat dipahami, baik oleh user maupun penulis.dalam hal ini menggunakan bahasa pemrograman Java b) Desain Sistem dan Perangkat Lunak (Design) Proses desain sistem terbagi dalam kebutuhan perangkat keras dan
33 perangkat lunak. Hal ini menentukan arsitektur perangkat lunak secara keseluruhan. Desain perangkat lunak mewakili fungsi sistem perangkat lunak dalam suatu bentuk yang dapat ditransformasikan ke dalam satu atau lebih program yang dapat dieksekusi. Penulis membuat sebuah desain program menggunakan Java dan membuat flowchart jalannya program. c) Implementasi dan Pengujian Unit (Implementation) Dalam tahap ini, desain perangkat lunak direalisasikan dalam suatu himpunan program atau unit-unit program. Pengujian unit mencakup kegiatan verifikasi terhadap suatu unit sehingga memenuhi syarat spesifikasinya. d) Integrasi dan Pengujian Sistem (Verification) Unit program secara individual diintegrasikan dan diuji sebagai satu system yang lengkap untuk memastikan bahwa kebutuhan perangkat lunak telah terpenuhi. Setelah pengujian, sistem perangkat lunak disampaikan kepada pengguna. e) Pengoperasian dan Pemeliharaan (Maintenance) Secara normal, walaupun tidak selalu diperlukan, tahap ini merupakan bagian siklus hidup yang terpanjang. Sistem telah terpasang dan sedang
34 dalam penggunaan. Pemeliharaan mencakup perbaikan kesalahan yang tidak ditemukan dalam tahap-tahap sebelumnya, meningkatkan implementasi unit-unit sistem dan mempertinggi pelayanan sistem yang disebabkan oleh penemuan kebutuhan baru. 3.2 Alat Bantu Perancangan 3.2.1. State transition Diagram (STD) State transition diagram menggambarkan jalannya suatu program dalam kondisi tertentu. Notasi yang digunakan adalah sebagai berikut: State menunjukkan satu atau lebih kegiatan atau keadaan atau atribut yang menjelaskan bagian tertentu dari program. Kondisi/aksi Anak panah berarah menunjukkan perubahan state yang disebabkan oleh aksi (action) terhadap kondisi (condition) tertentu. Kondisi merupakan suatu event pada lingkungan eksternal yang dapat dideteksi oleh suatu sistem, misalnya
35 sinyal, interupsi, atau data. Hal ini akan menyebabkan perubahan dari suatu state ke state lainnya atau satu aktivitas ke aktivitas lainnya. Aksi merupakan hal yang dilakukan oleh sistem jika terjadi perubahan state atau merupakan reaksi terhadap kondisi. Aksi dapat menghasilkan output, tampilan pesan pada layar, kalkulasi atau kegiatan lainnya. 3.2.2. Pseudocode Pseudocode adalah suatu bahasa pemrograman yang informal dan sangat fleksibel, yang tidak dimaksudkan untuk eksekusi pada mesin, tetapi hanya digunakan untuk mengatur pemikiran programmer sebelum melakukan pengkodean (Page-Jones. 1980, p11). Pseudocode dapat merupakan alternatif lain dalam perancangan perangkat lunak di samping alat-alat bantu berupa diagram. Tidak ada standarisasi dalam hal penulisan pseudocode. Programmer dapat menulisnya dalam bahasa apa saja yang mereka suka, dipadukan dengan bahasa pemrograman tertentu. Programmer juga bebas menggunakan teknik dan aturannya sendiri. Aturan untuk menulis pseudocode adalah sebagai berikut: Pernyataan ditulis dalam bahasa inggris sederhana. Seiap perintah ditulis pada baris tersendiri.
36 Kata kunci atau identasi (penulisan yang menjorok ke dalam) digunakan untuk menandai struktur control khusus. Setiap bimbingan perintah ditulis dari atas ke bawah dengan hanya satu awal dan satu akhir program. Kumpulan pernyataan-pernyataan dapat dibentuk dalam modul-modul yang diberi nama tertentu. 3.3 Perancangan Sistem 3.3.1 Diagram Transisi Menu Aplikasi Di bawah ini adalah diagram transisi keadaan sistem: Menu Utama view Diagram 3.1 STD Menu View Menu Utama Create Diagram 3.2 STD Menu Create
37 Menu Utama Create Next Diagram 3.3 STD Menu Next Menu Utama Clear Diagram 3.4 STD Menu Clear 3.3.2 Rancangan Menu Aplikasi Di bawah ini adalah perancangan untuk menu aplikasi yang akan dibuat softwarenya, di dalam menu ini akan dijabarkan tombol-tombol apa saja yang ada, serta urutan kejadian yang terjadi setelah penekanan tombol dilakukan.
38 Menu Utama View Create Clear Next Gambar 3.2 Rancangan Menu Aplikasi
39 3.3.3 Perancangan Layar Coloring Algorithm Menu Nodes: Colors: Create Clear Next View Display Gambar 3.3 Tampilan Layar Program Menu Utama
40 Pada layar ini, user akan memilih banyaknya node dan warna yang diinginkan yang terdapat pada masing-masing combo box. Node dalam program melambangkan banyaknya komputer. Color melambangkan banyaknya software yang dilambangkan dengan warna. Banyaknya node yang tersedia sebanyak 1-15 node. Sedangkan, banyaknya color yang tersedia sebanyak 1-10 warna. Dalam proses pemilihan ini perlu diperhatikan bahwa jumlah color tidak boleh melebihi jumlah node. Jika ternyata melebihi, maka akan muncul message dialog yang menyatakan bahwa jumlah color tidak boleh melebihi jumlah node. Invalid number of colors X Jumlah warna tidak boleh melebihi jumlah node ok Gambar 3.4 Tampilan Layar Program invalid number of colors Setelah memilih jumlah node dan color yang diinginkan, untuk menjalankan program maka tekan tombol OK. Setelah itu akan muncul gambar jaringan pada display sebelah kiri. Jika setelah itu menekan tombol NEXT maka
41 akan muncul gambar jaringan pada display sebelah kanan. 3.4 Perancangan FlowChart Di bawah ini adalah perancangan FlowChart dari program yang akan dibangun: Mulai Delete gambar di Clear display panel Tamplikan Kotak Peringatan Tidak Tekan Tombol OK/Clear ok Display Panel Kosong? clear Ya Clear Baca Jumlah Node Baca Jumlah Warna A B C
42 A B C Ya Jumlah Warna lebih besar dari jumlah node? tidak Jalankan Algoritma RANDOMIZATION Tekan tombol Next/Clear Next Jalankan Algoritma FLIPPING Tampilkan Hasil pada Layar Akhir
43 3.5 Perancangan Spesifikasi Proses Untuk memperjelas proses-proses yang terjadi pada setiap modul terdapat dalam program, maka akan diperinci dengan spesifikasi modul di bawah ini: Modul inisialisasi BEGIN Set nilai awal untuk semua variable dan komponen. END Modul ok Menunggu user memasukkan nilai inputan jumlah node dan jumlah warna. Menunggu user menekan tombol OK BEGIN If tombol OK dipilih then event handler untuk button click diaktifkan If display panel tidak kosong then tampilkan kotak peringatan Else Baca jumlah node dan jumlah warna. If jumlah warna lebih besar dari jumlah node then tampilkan kotak peringatan
44 Else Simpan kumpulan node ke dalam vector dengan menjalankan algoritma randomization. END Modul next BEGIN Simpan kumpulan node ke dalam vector dengan menjalankan algoritma flipping. END Modul clear Menunggu user menekan tombol Clear. BEGIN Me-reset tampilan display panel. END Modul randomization BEGIN
45 Inisialisasi vektor untuk menampung node-node yang dibuat. For i=0 sampai jumlah node If semua warna yang tersedia sudah dipakai then tentukan warna sebuah node secara random dari kumpulan-kumpulan warna yang tersedia. Buat objek node. Simpan objek node ke dalam vector. Return vector yang sudah dibuat. END Modul flipping BEGIN Baca jumlah sisi yang rusak pada kumpulan node-node di dalam vector awal. For i=0 sampai jumlah node Dapatkan vector sementara dengan eksekusi method TryFlipping untuk mencoba apakah sebuah node akan melakukan color flip. If vector sementara tidak sama dengan null then set node-node dalam vector sementara ke vector awal.
46 Baca jumlah sisi yang rusak dari node-node yang ada di dalam vector awal. END Modul generate color BEGIN For i=0 sampai jumlah warna Tentukan R antara 1 sampai 255 secara random. Tentukan G antara 1 sampai 255 secara random. Tentukan B antara 1 sampai 255 secara random. END 3.6 Perancangan Algoritma Berikut ini akan dijelaskan perancangan algoritma randomization dan color flipping yang akan digunakan pada program: 3.6.1 Perancangan algoritma Randomization Function Randomization(nColor, nnode, calcxy, R, G, B) Var vect := the empty set For i := 0 till i <= nnode Var index
47 If i < ncolor Then index := i Else index = random(ncolor) Var color := new color (R, G, B) Var position := calculate(i) from calcxy Var node := new Node Add to vector return vector; ncolor adalah jumlah warna yang tersedia. nnode adalah jumlah node yang ada dalam jaringan. calcxy merupakan variable yang digunakan untuk mendapatkan posisi X dan Y sebuah node pada saat digambar di display panel. R, G, B adalah kumpulan nilai-nilai untuk membuat objek warna. Pertama-tama, variable vect diinitialisasikan dengan nilai nil. I adalah sebuah variable counter yang akan melakukan operasi-operasi di dalam for loop sebanyak jumlah node yang ada. Variable index merupakan index untuk kumpulan nilai-nilai RGB. Jika nilai I lebih kecil dari jumlah warna, maka index yang
48 dipakai sama dengan nilai i. Namun jika tidak, maka nilai index akan didapatkan secara random dengan angka berkisar antara 0 sampai jumlah warna yang tersedia. Variable color dibuat berdasarkan dengan nilai-nilai RGB. Nilai variable position didapatkan mengeksekusi metode calculate di dalam calcxy. Variable node dibuat berdasarkan color, posisi, dan informasi lainnya yang perlu diketahui oleh sebuah node. Kemudian, masukkan node yang sudah dibuat ke dalam variable vector. 3.6.2 Perancangan algoritma Color Flipping Function Flipping(random) Var defectedge := Get defective edges Var newset := new empty set Foreach j in random Var color := get minority color Var node := get the node in random Var temp := try to flip the color of the selected node If defect edge < defectedge then Set temp as the new set of nodes defectedge := get current defective edge return newset
49 random merupakan kumpulan dari node-node yang dibuat oleh algoritma randomization. Variable defectedge diinisialisasikan dengan mengeksekusi metode get defective edge. Variable newest diinisialisasikan dengan nilai nil. Untuk setiap node di dalam random, dilakukan evaluasi color flipping. Variable color diinisialisasikan dengan mengeksekusi metode get minority color. Variable temp merupakan variable sementara dimana color flip sudah dilakukan oleh node tertentu. Jika jumlah sisi yang rusak dari variable sementara lebih kecil dari jumlah sisi yang rusak sebelumnya, maka variable sementar ditetapkan sebagai kumpulan node-node yang baru.