Minggu, 03 Juni 2012

Coupling & Cohesion

COHESION
Cohesion adalah ke eratan hubungan elemen-elemen di dalam suatu modul.
Jenis – jenis Cohesion dari yang keeratannya lemah/buruk hingga yang keeratannya baik/kuat antara lain adalah :
1.      Coincidental Cohesion - merupakan elemen yang 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

2.       Logical Cohesion - merupakan elemen-elemen yang melakukan kegiatan dengan kategori yang sama. Parameter  yang di masukkan menentkan kegiatan yang dilaksanakan. Tidak semua kegiatan akan 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
          IF not EOF THEN
             increment cust_master_count
      3 : read product_master record
          IF not EOF THEN
             increment product_master_count
          ENDIF
    ENDCASE
END
3.      Temporal Cohesion - merupakan elemen-elemen yang terlibat dalam berbagai kegiatan yang mempunyai hubungan dalam waktu. Tidak memperhatikan urutan.
Contoh :
Initialisation
    buka file transaksi
    total_transaksi = 0
    total_pen = 0
    baris = 30
    no = 0
    hal = 0
END
4.      Procedural Cohesion - merupakan hubungan antara elemen yang satu dfengan yang lainnya dikarenakan urutan statement. Satu kegiatan dengan kegiatan lain tidak berhubungan. Elemennya 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
        read student_record
    ENDDO
    print number_record, total_age
END
5.      Communicational Cohesion - ciri-cirinya adalah kegiatan yang dilakukan lebih dari satu, menggunakan data yang sama, dan dapat dijadikan Functional.
Contoh :
Proses_perhitungan
    C = A + B
    D = A – 1
    E = A * B
    F = A / B
    G = A mod B
END
6.      Sequential Cohesion –  mempunyai pekerjaan yang beruntun. Kegiatan yang dilakukan lebih dari satu, hasil dari kegiatan sebelumnya menjadi masukan bagi kegiatan selanjutnya, dapat juga di pecah menjadi Functional.
Contoh :
Menghitung_penjualan
    IF JB > 300 THEN
        POT = JB * HB * 0.15
    ELSE
        IF JB > 200 THEN
            POT = JB * HB * 0.1
        ELSE
            IF JB > 100 THEN
                POT = JB * HB * 0.05
            ELSE
                POT = 0
            ENDIF
        ENDIF
    ENDIF
    P = JB * HB – POT 
    TP = TP + P
END
7.      Functional Cohesion -  hanya mempunyai satu tugas, menghasilkan satu hasil atau 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
        ELSE
            IF harga > 3000 THEN
                pajak = harga * 0.15
            ELSE
                IF harga > 2000 THEN
                    pajak = harga * 0.1
                ELSE
                    pajak = 0
                ENDIF
            ENDIF
        ENDIF
 ENDIF
END

COUPLING
Description: http://upload.wikimedia.org/wikipedia/commons/thumb/9/9c/Coupling_sketches_cropped_1.svg/300px-Coupling_sketches_cropped_1.svg.png
Coupling adalah ketergantungan antar modul satu dengan modul lainnya.Jadi Coupling adalah sebuah ukuran untuk mengukur berapa kuatnya sebuah element terhubung dengan element lain.Ukuran ini dipakai juga untuk mengetahui seberapa kuat informasi yang dimilikinya,atau ketergantungan ke elemen lain.Bayangkan jika anda mengubah 1 modul A tapi karena modul lain memiliki ketergatungan terhadap modul A,maka efek perubahan ini mungkin saja punya impact terhadap modul lain.Karena itu low coupling sangat penting dalam perencanaan software.
  Jenis-jenis Coupling :

1.        No direct coupling
Modul 1 dan Modul2 adalah subordinate terhadap modul2 yang berbeda.Sehinnga masing2 tidak berhubungan dan tidak ada penggandengan langsung yang terjadi antara keduanya.
2.        Data Coupling
Dua buah modul dari sistem mempunyai data coupling jika komunikasi dari modul2 ini dilakukan lewat suatu data.Data dapat berupa sebuah item data tunggal atau elemen dari suatu larik(array).atau ketika modul berbagi data melalui, misalnya, parameter. Setiap datum adalah bagian dasar, dan ini adalah data hanya bersama (misalnya, melewati sebuah integer ke fungsi yang menghitung akar kuadrat).

3.        Stamp coupling 
Dua buah modul dikatakan stamp coupling jika kedua modul ini berkomunikasi lewat suatuukelompok item data. Kelompok item data dapattberupa suatu record yang terdiri dari beberapa field atau larik yang terdiri dari beberapa elemen.uah modul dikatakan stamp coupling modul ini berkomunikasi lewat item data. Kelompok item data suatu record yang terdiri dari field atau larik yang terdiri dari beberapa elemen.
4.        Control coupling
Control coupling ditandai dengan adanya jalur kendali antara modul. Modul satu mengendalikan  aliran data di modul yang lain, kendali dilakukananmelalui flag yang mengontrol logika intern modullyang lain.
5.                  External coupling
Tingakt coupling yang terjadi bila modul-modul terikat pada lingjkungan luar (external) dari perangkat lunak.
6.                  Common coupling
Modul-modul dikatakan common coupling jika modul-modul tersebut menggunakan data yang di simpan di area memori yang sama.
7.                  Content coupling
Content coupling terjadi jika suatu modul mengguankan data atau mengendalikan informasi dari modul yang lain tanpa berhubungan lewat suatu parameter. Contet coupling dapat juga terjadi jika percabangan di lakukan ke tengah-tengah suatu modul yang lain.
      Content coupling (tinggi)
Konten kopling (juga dikenal sebagai kopling patologis) adalah ketika satu modul memodifikasi atau bergantung pada kerja internal modul lain (misalnya, mengakses data lokal dari modul lain).
Oleh karena itu mengubah cara modul kedua menghasilkan data (lokasi, jenis, waktu) akan menyebabkan perubahan modul tergantung.

Kopling umum (juga dikenal sebagai kopling Global) adalah ketika dua modul berbagi data global yang sama (misalnya, variabel global).
Mengubah sumber daya bersama berarti mengubah semua modul menggunakannya.


8.        Eksternal kopling
Kopling Eksternal terjadi ketika dua modul berbagi format data eksternal dikenakan, protokol komunikasi, atau interface.This perangkat pada dasarnya terkait dengan komunikasi ke alat eksternal dan perangkat.
9.        Pengendalian kopling
Kopling Control adalah satu modul mengendalikan aliran lain, dengan melewatkan informasi tentang apa yang harus dilakukan (misalnya, lewat bendera apa-to-do).

Subclass Coupling
Menggambarkan hubungan antara anak dan induknya. Anak terhubung ke induknya, tetapi orangtua tidak terhubung ke anak.
Temporal kopling
Ketika tindakan dua yang digabungkan bersama menjadi satu modul hanya karena mereka kebetulan terjadi pada saat yang sama.
Dalam karya terbaru berbagai konsep kopling lainnya telah diselidiki dan digunakan sebagai indikator untuk prinsip-prinsip modularisasi berbeda yang digunakan dalam praktek [2] .

Kekurangan

Sistem erat cenderung menunjukkan karakteristik perkembangan berikut, yang sering dianggap sebagai kelemahan:
  1. Perubahan dalam satu modul biasanya memaksa efek riak perubahan modul lainnya.
  2. Perakitan modul mungkin memerlukan lebih banyak usaha dan / atau waktu karena ketergantungan antar modul meningkat.
  3. Sebuah modul tertentu mungkin lebih sulit untuk menggunakan kembali dan / atau tes karena modul tergantung harus disertakan.

Masalah kinerja

Apakah longgar atau ketat ditambah, kinerja sistem sering dikurangi dengan penciptaan pesan dan parameter, transmisi, terjemahan (misalnya marshaling) dan overhead interpretasi. Lihat -event pemrograman .
Pesan Penciptaan Overhead dan Kinerja
Karena semua pesan dan parameter harus memiliki makna tertentu untuk dikonsumsi (yaitu, menghasilkan alur logis dimaksudkan dalam penerima), mereka harus diciptakan dengan makna tertentu. Menciptakan apapun pesan membutuhkan overhead baik CPU atau penggunaan memori. Membuat pesan nilai tunggal integer (yang mungkin menjadi acuan untuk struktur string, array atau data) memerlukan overhead kurang dari membuat pesan yang cukup rumit seperti SOAP pesan. Pesan yang lebih panjang memerlukan lebih CPU dan memori untuk menghasilkan. Untuk mengoptimalkan kinerja runtime, panjang pesan harus diminimalkan dan makna pesan harus dimaksimalkan.
Pesan Transmisi Overhead dan Kinerja
Karena pesan harus dikirimkan secara penuh untuk mempertahankan arti lengkap, transmisi pesan harus dioptimalkan. Pesan yang lebih panjang memerlukan lebih CPU dan memori untuk mengirim dan menerima. Juga, ketika diperlukan, penerima harus memasang kembali pesan ke keadaan semula untuk benar-benar menerimanya. Oleh karena itu, untuk mengoptimalkan kinerja runtime, panjang pesan harus diminimalkan dan makna pesan harus dimaksimalkan.
Pesan Terjemahan Overhead dan Kinerja
Pesan protokol dan pesan sendiri sering mengandung informasi tambahan (yaitu, paket, struktur, definisi dan informasi bahasa). Oleh karena itu, penerima sering perlu menerjemahkan pesan ke dalam bentuk yang lebih halus dengan menghapus karakter tambahan dan informasi struktur dan / atau dengan mengubah nilai dari satu jenis yang lain. Apapun terjemahan meningkatkan CPU dan / atau overhead memori. Untuk mengoptimalkan kinerja runtime, bentuk pesan dan isi harus dikurangi dan disempurnakan untuk memaksimalkan arti dan mengurangi penerjemahan.
Pesan Interpretasi Overhead dan Kinerja
Semua pesan harus ditafsirkan oleh penerima. Pesan sederhana seperti bilangan bulat mungkin tidak membutuhkan proses tambahan untuk ditafsirkan. Namun, pesan yang kompleks seperti SOAP pesan membutuhkan parser dan sebuah transformator string untuk mereka untuk menunjukkan makna yang dimaksud. Untuk mengoptimalkan kinerja runtime, pesan harus disempurnakan dan dikurangi untuk meminimalkan overhead interpretasi.

Solusi

Salah satu pendekatan untuk kopling penurunan adalah desain fungsional , yang berusaha untuk membatasi tanggung jawab bersama modul fungsi, kopling meningkat antara dua kelas A dan B jika:
  • A memiliki atribut yang mengacu pada (adalah tipe) B.
  • Sebuah panggilan pada jasa dari B objek.
  • A memiliki sebuah metode yang merujuk B (melalui tipe kembali atau parameter).
  • Adalah subclass dari (atau menerapkan) B kelas.
Kopling rendah mengacu pada hubungan di mana satu modul berinteraksi dengan modul lain melalui antarmuka yang sederhana dan stabil dan tidak perlu khawatir dengan pelaksanaan internal modul lain (lihat Menyembunyikan Informasi ).
Sistem seperti CORBA atau COM memungkinkan objek untuk berkomunikasi satu sama lain tanpa harus mengetahui apapun tentang implementasi obyek lain. Kedua sistem ini bahkan memungkinkan untuk objek berkomunikasi dengan objek ditulis dalam bahasa lain.

Coupling dibandingkan Kohesi

Coupling dan Kohesi adalah dua istilah yang sangat sering terjadi bersamaan. Bersama-sama mereka berbicara tentang kualitas modul seharusnya. Coupling berbicara tentang saling ketergantungan antara berbagai modul sementara kohesi menggambarkan bagaimana fungsi-fungsi terkait dalam sebuah modul berada. Kohesi yang rendah menunjukkan bahwa modul melakukan tugas-tugas yang tidak sangat terkait satu sama lain dan karenanya dapat menciptakan masalah sebagai modul menjadi besar. ang data di modul yang lain, ke
Dikutip dari  berbagai sumber yang mengontrol logika intern la

0 komentar:

Posting Komentar

hi..All..
thanks for reading my post.
i would be glad if you give me a
comment about this post