Metode Perancangan Program Pert 8 – Kohesi dan Kopling
Kohesi: Keeratan hubungan elemen-elemen di dalam suatu modul Macam-macam Kohesi Coincidnetal Jelek/lemah Logical Temporal Procedural Communicational Sequential Functional baik/kuat
Kohesi Functional: Mempunyai satu tugas Menghasilkan satu hasil/satu parameter output Bisa satu atau lebih parameter input
Contoh : Menghitung_pajak_penjualan IF harga > 5000 THEN pajak = harga * 0.25 ELSE IF harga > 4000 THEN pajak = harga * 0.2 IF harga > 3000 THEN pajak = harga * 0.15 IF harga > 2000 THEN pajak = harga * 0.1 pajak = 0 ENDIF END
Kohesi Sequential: Mempunyai pekerjaan yang beruntun Kegiatan yang dilakukan lebih dari satu Hasil dari kegiatan sebelumnya menjadi masukan bagi kegiatan selanjutnya Dapat dipecah menjadi Functional
Contoh : Menghitung_penjualan IF JB > 300 THEN POT = JB * HB * 0.15 ELSE IF JB > 200 THEN POT = JB * HB * 0.1 IF JB > 100 THEN POT = JB * HB * 0.05 POT = 0 ENDIF P = JB * HB – POT TP = TP + P END
Kohesi Komunikasional: Kegiatan lebih dari satu Menggunakan data yang sama Dapat dijadikan Functional Contoh: Proses_perhitungan C = A + B D = A – 1 E = A * B F = A / B G = A mod B END
Kohesi Procedural: Satu kegiatan dengan kegiatan lain tidak berhubungan Hubungan antara elemen yang satu dengan yang lainnya karena urutan statement Dapat dipecahkan menjadi Functional Contoh: Read_student_record_and_total_student_Ages set number_record to zero set total_age to zero read student_record DO WHILE more records exist add age to total_age add 1 to number_records ENDDO print number_record, total_age END
Kohesi Temporal: Elemen-elemen terlibat dalam berbagai kegiatan yang mempunyai hubungan dalam waktu Urutan tidak penting Contoh: Initialisation buka file transaksi total_transaksi = 0 total_pen = 0 baris = 30 no = 0 hal = 0 END
Kohesi Logical: ELemen-elemen melakukan kegiatan dengan kategori yang sama Parameter masukan menentukan kegiatan yang dilaksanakan Tidak semua kegiatan dikerjakan Contoh: Read_all_files(file_code) CASE if file_code 1 : read customer_transaction record IF not EOF THEN increment cust_trans_count 2 : read customer_master record increment cust_master_count 3 : read product_master record increment product_master_count ENDIF ENDCASE END
Kohesi Koinsidental Elemen-elemen tidak mempunyai hubungan Contoh: File Processing Open employee updates file read employee record print_page heading open employee master file set page_count to one set error_flag to false End
Kopling : Keeratan hubungan antar modul. Tingkat saling ketergantungan di antara dua modul. Faktor yang mempengaruhi kopling: Jumlah data yang disalurkan Jumlah kontrol data yang disalurkan Jumlah elemen data global yang digunakan bersama-sama oleh beberapa modul
Jenis-jenis Kopling: Data baik/lemah Stamp Kontrol External Common jelek/kuat Keterangan: Makin baik kopling, makin rendah ketergantungan suatu modul terhadap modul lain Modul dengan kopling yang baik adalah modul independence
Parameter data yang disalurkan semakin sedikit semakin baik Kopling Data: Komunikasi diantara modul menggunakan data. Diinginkan jumlah data minimal Parameter data yang disalurkan semakin sedikit semakin baik Modul A Elementary data item Modul B
Contoh: Process_customer_record … calculate_sales_tax(total_price, sales_tax) B. Calculate_sales_tax IF total_price > 5000 THEN sales_tax = total_price * 0.25 Else If total_price > 4000 THEN sales_tax = total_price * 0.2 sales_tax = total_price * 0.15 ENDIF
Kopling Stamp: Dua modul melakukan pass struktur data non global yang sama Struktur data: record, array Timbul bahaya bila modul memeriksa struktur data tetapi hanya menggunakan sebagian Modul A Data structure Modul B
Contoh: Proses_transaction_record …. proses_male_student (current_record) … END Proses_male_student (current_record) increment male_student_count (current_record) If student_age > 21 THEN increment_mature_male_count ENDIF
Kopling Kontrol: Dua modul melakukan passing parameter menggunakan data kontrol (flag/switch) Modul A Parameter Kontrol Modul B
Contoh: Process_input_code read input_code choose_appropriate_action (input_code) … END Choose_appropriate_action (input_code) CASE OF input_code 1 : read employee record 2 : print_page_heading 3 : open employee master file 4 : set page_count to zero 5 : error_message =‘Employee number not numeric’ ENDCASE
Global Data Elementer Variabel Kopling External: Dua modul atau lebih menggunakan data global yang sama Tidak ada parameter yang digunakan dari modul pemanggil ke subordinate dan sebaliknya Global Data Elementer Variabel Modul A Modul B
Contoh: Calculate_sales_tax IF product is sales exemt THEN sales_tax = 0 ELSE IF product_price < $50 THEN sales_tax = sales_price * 0.25 …. … ENDIF Calculate_amount_due amount_due = total_amount + sales_tax END
Dua modul atau lebih menggunakan struktur data global yang sama Kopling Common Dua modul atau lebih menggunakan struktur data global yang sama Struktur data global Modul A Modul B
Contoh: Read_customer_record read customer record IF EOF THEN set EOF_flag to true ENDIF END Validate_customer_record IF customer_number is NOT numeric THEN error_message = ‘invalid customer number’ … ….