Komunikasi Antar Modul, Materi 9 Komunikasi Antar Modul, Kohesi dan Kopling Disusun Oleh : Yulyani Arifin,S.Kom, MMSI
Agenda Komunikasi Antar Modul Modul Kohesi Modul Kopling
Kemampuan Akhir yang Diharapkan Mahasiswa mampu memahami komunikasi antar modul. Mahasiswa mampu menyelesaikan masalah dengan penggunaan parameter antar modul Mahasiswa mampu mengukur kekuatan internal modul dengan kohesi Mahasiswa mampu mengukur tingkat pertukaran informasi antar modul
Komunikasi Antar Modul MATERI BELAJAR Komunikasi Antar Modul Perlu mempertimbangkan arus informasi antar modul Arus informasi ( intermodule communication) dapat dipenuhi dengan cakupan variabel ( lokal, global data, passing parameter)
Komunikasi Antar Modul MATERI BELAJAR Komunikasi Antar Modul Cakupan variabel : bagian dalam sebuah program tempat variabel didefinisikan dan dapat direferensikan. Global data - digunakan : semua modul dlm 1 program - Jangkauan : semua program - Lifetime : selama eksekusi program
Komunikasi Antar Modul MATERI BELAJAR Komunikasi Antar Modul 2. Data lokal - digunakan : di sub modul - Jangkauan : sub modul tertentu Lifetime : selama eksekusi sub modul Mengurangi side effect ( pengunaan data global dalam sebuah modul)
Komunikasi Antar Modul MATERI BELAJAR Komunikasi Antar Modul 3. Passing Parameter - Parameter : data item yang ditransfer dari modul yang dipanggil ke modul yang memanggil. - Syarat : - Calling Module menyediakan nama untuk parameter yang dikirim
Komunikasi Antar Modul MATERI BELAJAR Komunikasi Antar Modul - Sub Module harus dapat menerima parameter dan mengembalikannya jika dibutuhkan. - Contoh : Calling Module : Print_page_heading (pagecount, linecount) SubModule : Print_page_heading ( pagenumber,linenumber)
Komunikasi Antar Modul MATERI BELAJAR Komunikasi Antar Modul Parameter Formal dan Aktual Parameter Formal : Parameter yang ada ketika submodul yang ditentukan. Parameter Aktual : Variabel atau ekspresi yang dikirimkan pada sebuah sub modul yang dipanggil.
Komunikasi Antar Modul MATERI BELAJAR Komunikasi Antar Modul Contoh parameter aktual: Mainline Calculate_amount_owing (gasFigure,amountbilled) End Contoh Parameter Formal : Submodul Calculate_amount_owing (gasUsage,amountOwing) …..
Komunikasi Antar Modul MATERI BELAJAR Komunikasi Antar Modul Parameter Value dan Reference Parameter Value : Nilai yang dikirimkan dari satu modul ke modul yang memanggil. Parameter Reference : Alamat memori dari sebuah parameter yang dikirim ke modul yang memanggil.
Komunikasi Antar Modul MATERI BELAJAR Komunikasi Antar Modul Hierarchy Chart dan Parameter Parameter yang dikirimkan antar modul dapat digambarkan dalam Hierarchy Chart Data parameters Status parameter
Latihan Program dengan Parameter MATERI BELAJAR Latihan Program dengan Parameter Design a solution algorithm that will prompt a terminal operator for three characters, accept those characters as input, sort them into ascending sequence and output them to the screen. The algorithm is to continue to read characters untuk ‘XXX’ is entered
Latihan Program dengan Parameter MATERI BELAJAR Latihan Program dengan Parameter Diagram Definisi Input Char_1 Char_2 Char_3 Proses Prompt for characters Accept three characters Sort Three Characters Output Three Characters Output
Latihan Program dengan Parameter MATERI BELAJAR Latihan Program dengan Parameter Hierarchy Chart
Latihan Program dengan Parameter MATERI BELAJAR Latihan Program dengan Parameter Algoritma Solusi : Process_three_characters Read_three_characters(char1, char2, char3) DOWHILE NOT (char1=‘X’ AND char2=‘X’ AND char3=‘X’) Sort_three_charcters(char1,char2,char3) Print_three_characters(char1, char2, char3) Read_three_characters(char1,char2,char3) END prompt the operator for char_1,char_2,char_3 get char_1,char_2,char_3 Print_three_characters(char1,char2,char3) output to the screen char, char2, char3
Latihan Program dengan Parameter MATERI BELAJAR Latihan Program dengan Parameter Algoritma Solusi : Sort_three_characters(char1,char2,char3) IF char1>char2 THEN Swap_two_characters(char1, char2) ENDIF IF char2>char3 THEN Swap_two_characters(char2, char3) END Swap_two_characters(firstchar,secondchar) temp = firstchar firstchar = secondchar secondchar = temp
Kohesi : tolak ukur kekuatan internal dalam modul . MATERI BELAJAR Modul Kohesi Modul : melakukan satu fungsi, terdiri dari 1 entry, 1 exit dan nama modul yang mencerminkan fungsinya. Kohesi : tolak ukur kekuatan internal dalam modul . Semakin dekat element dalam modul maka semakin tinggi tingkat kohesi. Modul dengan kohesi tinggi adalah modul yang baik.
MATERI BELAJAR Modul Kohesi
MATERI BELAJAR Functional Cohesion Functional Cohesion terjadi ketika semua element berkontribusi mengerjakan suatu tugas khusus. Calculate_sales_tax IF product is sales tax exempt THEN sales__tax = 0 ELSE IF product_price < $ 50.00 THEN sales_tax = product_price * 0.25 IF product_price < $100.00 THEN sales_tax = product_price * 0.35 sales_tax = product_price * 0.5 ENDIF END
MATERI BELAJAR Sequential Cohesion Sequential Cohesion terjadi ketika sebuah modul terdiri dari elemen – elemen yang tergantung pada proses elemen sebelumnya Process_purchases set total_purchases to zero prompt and get number_of_purchases DO loop_index = 1 to number_of_purchases prompt and get pruchase add purchase to total_purchases ENDDO sales_tax = total_purchases*sales_tax_percent amount_due = total_purchases + sales_tax END
Communicational Cohesion MATERI BELAJAR Communicational Cohesion Communicational Cohesion terjadi ketika sebuah modul dikelompokan bersama karena menggunakan data yang sama. validate_product_record IF transaction_type NOT=‘0’’ THEN error_flag = true error_message = ‘invalid transaction type’ print_error_report ENDIF IF customer_number is NOT= numeric THEN error_message = ‘invalid customer number’ IF product_no = blanks OR produc_no has leading blanks THEN error_message = ‘invalid product no’ END
MATERI BELAJAR Procedural Cohesion Procedural Cohesion terjadi ketika elemen-element dalam sebuah modul saling terkait karena dijalankan berdasarkan prosedur. Contoh : Mainline Read_student_record_and_total_student_ages set number_of_records to zero set total_age to zero read student record DOWHILE more records exist add age to total_age add 1 to number_of_records ENDDO print number_of_records, total_age END
MATERI BELAJAR Temporal Cohesion Temporal Cohesion terjadi ketika elemen – elemen dalam sebuah modul dikelompokan bersama karena terkait dengan waktu. Initialisation Open transaction file Issue Prompt ‘enter today’s date – DDMMYY’ Read todays_date Set transaction_count to zero Read transaction record IF not EOF increment transaction_count ENDIF Open report file Print_page_headings Set report_total to zero END
MATERI BELAJAR Logical Cohesion Logical Cohesion terjadi ketika elemen – elemen dalam sebuah modul dikelompokan bersama berdasarkan pada aktivity tertentu. Read_all_files(file_code) CASE of file_code 1 : Read customer transaction record IF not EOF increment customer_transaction_count ENDIF 2 : Read customer master record IF NOT EOF increment customer_master_count 3 : Read product master record increment product_master_count ENDCASE END
Coincidental Cohesion MATERI BELAJAR Coincidental Cohesion Coincidental Cohesion terjadi ketika elemen – elemen dalam sebuah modul dikelompokan bersama hanya karena dalam satu modul. Tidak ada hubungan yang berarti 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
Coupling adalah ukuran sejauh mana pertukaran informasi antara modul. MATERI BELAJAR Modul Coupling Coupling adalah ukuran sejauh mana pertukaran informasi antara modul. Semakin kuat coupling artinya semakin besar ketergantungan pada modul lain. Semakin lemah coupling artinya semakin mudah mandiri dan mudah dikembangkan.
MATERI BELAJAR Modul Coupling
MATERI BELAJAR Data Coupling Data Coupling terjadi ketika sebuah modul mengirimkan variabel non global ke modul lain. Module A Elementary data item Module B
Data Coupling Contoh: Process_customer_record … MATERI BELAJAR Data Coupling 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 END
MATERI BELAJAR Stamp Coupling Stamp Coupling terjadi ketika sebuah modul mengirimkan struktur data non global ke modul lain. Module A Data Structure Module B
Stamp Coupling Contoh: Process_transaction_record …. MATERI BELAJAR Stamp Coupling Contoh: Process_transaction_record …. process_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
MATERI BELAJAR Control Coupling Control Coupling terjadi ketika sebuah modul mengirimkan variabel kontrol untuk mengontrol logika modul lain Module A Flag Module B
Control Coupling Contoh: Process_input_code read input_code MATERI BELAJAR Control Coupling 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
MATERI BELAJAR External Coupling External Coupling terjadi ketika dua atau lebih modul mengakses variabel global yang sama. Global Data variabel Module A Module B
External Coupling Contoh: Calculate_sales_tax MATERI BELAJAR External Coupling Contoh: Calculate_sales_tax IF product is sales exempt 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
MATERI BELAJAR Common Coupling Common Coupling terjadi ketika dua atau lebih modul mengakses struktur data global yang sama. Global Data Structure Module A Module B
Common Coupling Contoh: Read_customer_record read customer record MATERI BELAJAR Common Coupling 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’ print_error_report … ….
MATERI BELAJAR Q & A