BAB 3 ANALISIS DAN PERANCANGAN PROGRAM
3.1 Analisis Sistem Untuk membuat sistem perlu dilakukan analisa sistem tersebut sehingga dapat diketahui tahapan dan proses yang dibutuhkan sistem agar program (perangkat lunak) dapat mencapai hasil yang diharapkan. Setelah sistem dianalisis, maka langkah selanjutnya adalah design, coding, testing, dan maintance seperti yang sudah dijelaskan pada BAB 2. Proses analisa dilakukan terhadap program aplikasi yang pernah dibuat oleh S. Nancy (2009) dan Andrew Saputra (2010). Kekurangan pada program aplikasi sebelumnya menjadi poin-poin penting untuk pengembangan program aplikasi ini, begitu juga kelebihan pada program aplikasi sebelumnya menjadi poin-poin yang dipertahankan.
3.2 Rancangan Program Sistem dibuat dan dirancang sedemikian rupa agar menghasilkan sebuah aplikasi program yang efisien dan mudah digunakan oleh pengguna serta dapat memberikan hasil keluaran yang jelas dan mudah dipahami pengguna program aplikasi tersebut. 3.2.1
Rancangan Sistem Langkah awal yang dilakukan sebelum membuat program (perangkat lunak)
adalah merancangnya terlebih dahulu. Menurut Dr. Asep Juarna, perancangan perangkat lunak adalah disiplin manajerial dan teknis yang berkaitan dengan pembuatan dan pemeliharaan produk perangkat lunak secara sistematis, termasuk pengembangan dan modifikasinya, yang dilakukan pada waktu yang tepat dan
31
dengan pertimbangan faktor biaya. Perancangan diperlukan untuk membentuk dasar dan langkah-langkah yang perlu dilakukan dalam tahapan-tahapan pembuatan aplikasi. Berikut ini gambaran secara umum mengenai tahapan-tahapan program aplikasi pengujian struktur aljabar yang akan dibuat.
Gambar 3.1. Flobal Flowchart Rancangan Sistem Seperti yang ditunjukan pada gambar, langkah pertama yang perlu dilakukan oleh pengguna adalah memasukkan data dan elemen sistem aljabar yang dibutuhkan program untuk proses pengujian sifat. Pengguna akan memasukkan data dan elemen pada himpunan yang akan diuji. Pengguna dapat memasukkan data untuk satu atau dua buah himpunan sesuai kebutuhan. Jika pengguna ingin menguji sampai sifat grup faktor, homomorfisma, dan subgrup normal, maka pengguna perlu memasukkan data elemen untuk kedua himpunan. Selain itu pengguna juga perlu memasukkan hasil operasi untuk tiap pasang elemen himpunan tersebut ke dalam tabel Cayley yang akan di-generate oleh program. Setelah data elemen dan hasil operasi dari tiap sistem aljabar selesai dimasukkan pengguna, secara otomatis program melakukan pengolahan data. Hasil dari proses pengolahan data ini adalah berupa sifat-sifat umum dari operasi aljabar yang telah teruji, mulai dari sifat tertutup, asosiatif, ada tidaknya elemen identitas,
32
ada tidaknya invers bagi setiap elemen dalam sistem aljabar, serta sifat komutatif. Selanjutnya, program akan melakukan pengujian untuk klasifikasi struktur aljabar umum sesuai dengan definisi. Pengujian sifat-sifat umum dan pengujian klasifikasi struktur aljabar umum harus dilakukan terlebih dahulu sebelum pengguna dapat melakukan pengujian untuk klasifikasi bentuk-bentuk struktur aljabar khusus. Jika pengujian sifat-sifat umum dan pengujian klasifikasi struktur aljabar umum telah membuktikan bahwa sistem aljabar tersebut adalah sebuah grup, maka pengguna dapat melanjutkan instruksi program untuk menguji beberapa bentuk grup khusus, yaitu siklik, berhingga (aperiodik, periodik, dan campuran), faktor, subgrup normal, dan homomorfisma. Pada pengujian homomorfisma pengolahan data akan berjalan jika kedua sistem aljabar yang di-input terbukti sebagai grup. Selain itu pada uji homomorfisma juga akan diuji bentuk derivatif homomorfisma, yakni sifat isomorfisma, monomorfisma, dan epimorfisma. Pada pengujian subgrup normal dan grup faktor pengolahan data akan berjalan jika sistem aljabar terbukti merupakan grup serta sistem aljabar lainnya merupakan subgrup dari grup tersebut.
3.2.2
Rancangan Proses Ketika program dijalankan pertama kali akan muncul halaman sambutan
yang berisi judul dan fungsi utama program. Pada saat ini menu yang dapat dipilih hanya File > Input, yang akan memunculkan form untuk mengisi himpunan yang masih kosong beserta tabel Cayley. Dalam form tersebut, masing-masing himpunan harus diisi dengan lengkap dan valid sebelum himpunan dapat di-submit. Cara mengisi himpunannya adalah dengan memilih satu operator dari daftar operator yang tersedia dan menuliskan
33
elemen-elemen yang dipisahkan oleh koma. Jika himpunan tidak kosong, serta tidak memiliki elemen kembar di dalamnya, maka himpunan akan ter-submit dengan sukses. Operator terpilih akan dikunci dan disimpan oleh program dalam bentuk string. Daftar elemen akan dikunci dan disimpan oleh program dalam bentuk array of string 1 dimensi (members[no. of elements]). Setelah pilihan clear tersedia untuk mengosongkan himpunan dan mengganti operator. Setelah memilih operator dan meng-input elemen, maka tabel Cayley dapat diisi. Sama halnya dengan elemen himpunan, isian tabel Cayley pun akan divalidasi sebelum diterima program. Jika tabel Cayley tidak terisis lengkap, program akan menolak untuk ditutup. Tabel Cayley disimpan program dalam bentuk array of string 2 dimensi ( Cayley[row][column]) dengan ukuran sesuai jumlah elemennya. Hanya setelah kedua himpunan dan tabel Cayley diisi dengan benar, form input dapat ditutup. Program akan melakukan uji sifat grup umum secara bergantian. Jika himpunan tidak memenuhi suatu sifat grup umum, uji-uji sifat berikutnya tidak akan dilakukan. Setelah itu uji grup umum dan grup khusus juga akan dilakukan. Sifat Grup Umum yang diuji adalah: 1. Tertutup 2. Asosiatif 3. Unkes 4. Invers 5. Komutatif Grup Umum yang diuji adalah: 1. Grupoid 2. Semigrup
34
3. Monoid 4. Grup Grup Khusus yang diuji adalah: 1. Grup Komutatif 2. Grup Siklik 3. Grup Berhingga 4. Subgrup Normal 5. Grup Faktor 6. Homomorfisma Grup Algoritma Uji Sifat Grup Umum 1. Uji Sifat Tertutup tertutup = true For Each element in Cayman[row][column] Jika element tidak ada di dalam members[] tertutup = false End For 2. Uji Sifat Asosiatif For(i=0;i<members.length;i++) For(j=0;j<members.length;j++) For(k=0;k<members.length;k++) { i_j = calc(members[i],members[j]) j_k = calc(members[j],members[k]) Jika calc(i_j,_members[k] != calc(members[i], j_k)) asosiatif = false End Jika End For End For End For 3. Uji Sifat Unkes For(i=0;i<members.length;i++) RowIsUnkesKiri = true; ColumnIsUnkesKanan = true; For(j=0;j<members.length;j++) Jika Cayman[i][j] != members[j] RowIsUnkesKiri = false Jika Cayman[j][i] != members[j] ColumnIsUnkesKanan = false End For Jika (RowIsUnkesKiri) tambahDaftarUnkesKiri(members[i]) Jika (ColumnIsUnkesKanan) tambshDaftarUnkesKanan(members[i])
35
Jika (RowIsUnkesKiri && ColumnIsUnkesKanan) indeksIdentitas = i End For unkes = (daftarUnkesKiri berisi) && (daftarUnkesKanan berisi) 4. Uji Sifat Invers For(i=0;i<members.length;i++) For(j=0;j<members.length;j++) Jika Cayman[i][j] = Cayman[j][i] && CaymanTable[i][j] = members[indeksIdentitas] inverse[i] = members[j] inverse[j] = members[i] End Jika End For End For For(int i=0;i
36
2. Uji Grup Siklik listOfMembers = members maxtry = 999 siklik = false For Each element in listOfMembers For(i=0;i<members.length;i++) result = calc(members[i],members[i]) try = 0 while(try < maxtry && result != element) result = calc(result,members[i]) try++ End While Jika result = element listOfMembers.pop(result) End Jika End For End For End For Jika listOfMembers kosong siklik = true End Jika
3. Uji Grup Berhingga boolean finite = true; int matchCount = 1; // identity element is counted by default int attempt = 0, maxattempt = 99; for(i=0;i<members.length;i++) { if(members[i] == identity) continue; attempt = 0; do { result = calculate[result][members[i]); } while(result != identity && ++attempt < maxattempt); if(attempt < maxattempt) matchCount++; } isAperiodic = (matchCount == 1); //only identity matches isMixed = ( (1 < matchCount) && (matchCount < members.length) ); //some match finite = isPeriodic = (matchCount == members.length); //all
37
4. Uji Subgrup Normal // setup a new set from B's members and operator Himpunan sub = sub.setupHimpunan(B.members, operator); // test if sub (B) is part of A isPartOf = (isPart(B.getMembers(), members) if(isPartOf) { for(int i=0;i<sub.getMembers().length;i++) { for(int j=0;j<sub.getMembers().length;j++) { sub.caymantable[i][j] = this.caymanTable[sub.getMembers(i)][sub.getMembers(j)]; } } } isSubgroup = isPartOf && sub.isTertutup && sub.isAllInverse) if(isSubgroup) { isNormal = true; for(int i=0;i<_members.length;i++) { kosetkiri = calculateKoset(members[i], B.getMembers()); kosetkanan = calculateKoset(B.getMembers(),members[i]); if( !(isListSame(kosetkiri, kosetkanan)) isNormal = false; } } isNormalSubGroup = isSubgroup && isNormal; }
5. Uji Grup Faktor boolean isfactorgroup, newElement; isfactorgroup = false; if(!isNormalSubGroup(B)) isfactorgroup = false; kosetkiri = calculateKoset(_members[0], B.getMembers()); for(Object e:kosetkiri) if(!(unionlist.contains(e))) unionlist.add(e); testReportFactor += _name + "=" + calculateKoset(members[0], B.getMembers()); for(int i=1;i<_members.length;i++) { kosetkiri = calculateKoset(_members[i], B.getMembers(), KOSET_KIRI); newElement = false; for(Object e:kosetkiri) if(!(uni onlist.contains(e))) { newElement = true;
38
unionlist.add(e); } if(newElement) testReportFactor += " U " + kosetkiri.toString(); kosetkirilist.add(kosetkiri); } isfactorgroup = Unionlist.isGroup
6. Uji Homomorfisma Grup boolean homomorfis = true; String F[] = new String[members.length]; for(i=0;i<_members.length;i++) { F[i] = B.getMembers(i%B.getMembers().length); } int index_a_b, index_Fa, index_Fb; for(i=0;i<_members.length;i++) { for(j=i;j<_members.length;j++) { a_b = caymanTable[i][j]; Fa = B.member(F[i]); Fb = B.member(F[j]); if( !(F[a_b].equals(B.caymanTable(Fa,Fb)))) homomorfis = false; } }
3.2.3
Rancangan Tampilan Berikut adalah rancangan-rancangan tampilan dari program aplikasi yang
akan dibuat, dimulai dari saat pertama kali program dibuka, dijalankan sampai saat program menjelaskan klasifikasi grup khusus.
39
A. Tampilan Pembuka Rancangan pertama dari program aplikasi adalah tampilan pembuka berupa pengenalan aplikasi mulai dari nama aplikasi, nama pembuat aplikasi, serta tahun dibuat. Untuk memulai program aplikasi ini, pengguna haruslah memilih ”File” lalu ”Input”.
Gambar 3.2 Tampilan Pembuka B. Tampilan Input Data Elemen Rancangan kedua dari program aplikasi adalah tampilan input data elemen. Pengguna diminta untuk memasukkan data elemen-elemen dalam himpunan. Setelah itu, program akan men-generate tabel Cayley sesuai dengan data elemen yang telah dimasukkan sebelumnya pada himpunan, dilanjutkan dengan pengguna memasukkan nilai hasil operasi tiap pasangan pada tabel Cayley.
40
Gambar 3.3 Tampilan Input Data Elemen C. Tampilan Output Hasil Masukan Data Elemen Rancangan ketiga dari program aplikasi adalah tampilan hasil dari masukan data elemen sebelumnya yang telah diuji. Pada halaman ini pengguna dapat dengan mudah mengetahui apakah data elemen-elemen yang telah dimasukkan sebelumnya dapat menghasilkan grup khusus yaitu dengan melihat aktif atau tidaknya tombol ”Uji Grup Khusus”. Aktif menunjukkan bahwa data elemenelemen dapat diuji, begitu pula sebaliknya, tidak aktif menunjukan data dan elemen tidak dapat diuji. Tombol ”Detail A” dan ”Detail B” pada halaman ini akan membantu pengguna menuju halaman selanjutnya yang akan menjelaskan secara detail masing-masing data elemen dari himpunan. Sedangkan fungsi tombol ”Edit A” dan ”Edit B” pada halaman ini membantu pengguna kembali menuju halaman Gambar 3.3.
41
Gambar 3.6 Tampilan Output Hasil Masukan Data Elemen D. Tampilan Detail Himpunan Rancangan keempat dari program aplikasi adalah tampilan detail dari masingmasing himpunan. Pada halaman ini pengguna dapat mengetahui hasil uji data elemen dari himpunan dengan melihat tanda atau simbol di depan masingmasing sifat-sifat umum. Tanda ”√” menunjukkan bahwa himpunan memiliki sifat umum tersebut. Sedangkan tanda ”X” menunjukkan bahwa himpunan tidak memiliki sifat umum tersebut. Jika pengguna mengarahkan kursor ke salah satu sifat umum maka akan muncul keterangan dalam bentuk balon kecil yang menjelaskan terbentuknya sifat umum tersebut. Setelah diketahui sifat-sifat umum yang dimiliki himpunan maka dapat diketahui pula klasifikasi struktur aljabar secara umum. Dapat diperiksa apakah himpunan tersebut termasuk dalam grupoid, semigrup, monoid, atau grup. Untuk mengetahuinya adalah dengan
42
melihat aktif atau tidaknya masing-masing label tersebut. Berikut adalah gambar Detail Himpunan A dengan operasi ”+”;
Gambar 3.7 Tampilan Detail Himpunan A E. Tampilan Uji Grup Khusus Rancangan kelima dari program aplikasi adalah tampilan uji grup khusus. Pada halaman ini, pengguna dapat melakukan pengujian sifat-sifat grup umum sehingga dapat diklasifikasikan ke beberapa grup khusus seperti: grup komutatif (abelian), grup siklik, grup berhingga (aperiodik, periodik, dan campuran), grup faktor, homomorfisma, dan subgrup normal. Setelah program melakukan pengujian, maka detail mengenai klasifikasi akan ditampilkan pada layar di sampingnya. Berikut adalah contoh tampilan layar yang telah didesain.
43
Gambar 3.8 Tampilan Uji Grup Khusus
3.2.4 Skema Rancangan Sistem Berikut adalah skema perancangan program aplikasi beserta modul.
44
A. Flow Chart Sistem Kontrol Modul
Gambar 3.9 Flow Chart Sistem Kontrol Modul Gambar di atas menunjukkan alur kontrol berjalannya modul-modul pada program aplikasi secara garis besar beserta dengan kondisi-kondisi yang perlu dipenuhi agar suatu modul spesifik dapat berjalan.
45
B. Use Cases Diagram
Gambar 3.10 Use Cases Diagram untuk Program Pengujian Kemungkinan interaksi yang dapat dilakukan oleh pengguna dengan sistem program aplikasi disajikan dalam bentuk Use Cases Diagram seperti gambar di atas.
46
C. Flow Chart Program Utama
Gambar 3.11 Flow Chart Program Utama Secara keseluruhan alur kerja program ditunjukan pada gambar di atas. Untuk subrutin pengujian sifat klasifikasi umum dipecah ke dalam beberapa tahapan seperti dijelaskan pada gambar berikut.
47
Gambar 3.12 Flow Chart Subrutin Uji Sifat Klasifikasi Umum Jika ada syarat sifat yang tidak dipenuhi dalam proses uji klasifikasi umum sistem aljabar (grupoid, semigrup, monoid, dan grup) maka program tidak melakukan pengujian untuk sifat selanjutnya. Hal ini sesuai dengan syarat untuk masing-masing bentuk.