• Anasayfa
  • Eğitimler
    • JavaScript Eğitimi
    • Angular 2 Eğitimi
    • React.js Eğitimi
    • Java 8 Eğitimi
    • Java EE 7 Eğitimi
    • Spring Framework Eğitimi
    • Git Eğitimi
  • Online Eğitimler
    • Online React.js Eğitimi
    • Online Angular 2 Eğitimi
    • Online Spring Boot Eğitimi
  • Referanslar
  • Hakkında
  • İletişim
KodEdu
  • Anasayfa
  • Eğitimler
    • JavaScript Eğitimi
    • Angular 2 Eğitimi
    • React.js Eğitimi
    • Java 8 Eğitimi
    • Java EE 7 Eğitimi
    • Spring Framework Eğitimi
    • Git Eğitimi
  • Online Eğitimler
    • Online React.js Eğitimi
    • Online Angular 2 Eğitimi
    • Online Spring Boot Eğitimi
  • Referanslar
  • Hakkında
  • İletişim

Coupling ve Cohesion Kavramları Nedir?

  • Posted by Kodedu
  • Categories backend, Genel, Uncategorized, Yazılar, Yazılım
  • Date 14 Temmuz 2012

Merhabalar, bu yazımda nesneye yönelik programlama dahilinde yazılım mühendisliğinde bahsi geçen Bağlaşım (Coupling) ve Yapışkanlık (Cohesion) kavramlarını açıklamak istiyorum.

Bağlaşım (Coupling): Birden fazla sınıf/nesne arasında ilişkiyi temsil etmektedir. Burada iki alt kavram daha ortaya çıkıyor; Gevşek bağlılık ( Loosely Coupled) ve Sıkı bağlılık (Tightly Coupled). Nesneye yönelik programlama dillerinde bir sınıfın diğerine erişmesi/içermesi Kalıtım ya da Bir sınıfın diğer sınıfa bir referans (bağ) ile bağlanması yöntemleriyle gerçekleşiyor. Sıkı sıkıya bağlılık kavramında; İlişki içerisinde bulunan bir sınıf üzerinde yapılacak değişiklik, diğer bağlantılı sınıfları da etkileyebiliyor. Bu da modülerliği ve bakım maliyetlerini etkileyen bir unsur. Bu sebeple Yazılım Mühendisliğinde nesneler arasındaki ilişkinin sıkı olmaması yani gevşek bağlı (loosely coupled) olması istenir. Yani bir sınıf üzerinde yapılan değişikliğin diğer sınıflara sıçramaması istenir.

Yapışkanlık (Cohesion): Sınıflar arası ilişkinin gevşek bağlı olması istenirken, sınıflar içersindeki yordamların ve veri alanlarının yapışkan/bağlantılı olması istenir. Bir sınıf Single responsibility principle çerçevesinde yalnızca tek bir görevi gerçekleştirmelidir. Eğer bir sınıf içerisinde birden fazla değişik iş yapan yordamlar ya da bağımsız veri alanları bulunuyorsa, bu iş grupları farklı sınıflar halinde ayrıştırılmalıdır. Bir sınıf içerisindeki yordamlar ortak veri alanlarını kullanmıyorlarsa  ya da yaptıkları iş bakımından tamamen ayrık iseler, onları aynı kümenin içinde barındırmanın bir anlamı da bulunmamakta. Yapışkanlık derecesi düşük sınıflar modülerliği ve yazılım bakımını tehdit eden bir unsurdur.

Şimdi bu kavramları gerçek dünya ilişkileri yönünden değerlendirelim. Bir “A” firması olsun ve bu firmanın alt birimleri bulunsun (Örn: Muhasebe, Pazarlama, Teknik Destek, Yönetim). Gerçek dünya şartlarında bu birimler arası ilişkinin ayrık olması beklenirken, her birimin kendi içindeki ilişkinin ise sıkı sıkıya ilintili olması beklenir. Aynı düzen yazılım geliştirkende aynı olmalıdır. Birimler (sınıflar) gevşek bağlı olmalı iken, Her bir birim (metodlar) sıkı sıkıya ilişkili/ yapışkan olmalıdır.

Sınıflar içinde ne kadar farklı iş gören ayrık güzergah varsa, bu ayrık yolların sayısı LCOM4 (Lack of Cohesion Methods) olarak isimlendiriliyor. 4 sayısı LCOM hesaplarken kullanılan yöntemlerden bir tanesi, her bir LCOM hesaplamanın kendine ait matematiksel de bir formülü bulunuyor.

Yukarıda kare kutu şeklinde iki sınıf bulunuyor. A <-> E arası mavi şekiller metodları, x ve ye ise sınıflara ait veri alanlarını / değişkenleri temsil ediyor. A metodu B metodunu çağırırken bu işlemlerde x veri alanı kullanılıyor, fakat bu görevi icra etmek için C, D, E metodlarına ve y kaynağına gerek yok. Yani 2 ayrık küme olduğunu görüyoruz.

Bir sınıf içerisindeki ilişki sağ taraftaki şekilde olduğu gibi olmalı, yani metod ve değişkenler arası ilişki ayrık olmamalı. LCOMx değerinde arzu edilen sayı 1′ dir. Yani bir sınıfa karşılık bir görev. Bir yazılım projesinde LCOM değeri mümkün olduğunca 1 ya da 1′ e yakın bir değer olmalı. LCOM değerinin 2 yada 2′ den büyük bir değer olması, o sınıfın ayrıştırılması gerektiğine işarettir.

Yazılım kalitesinde LCOM önemli bir unsur, bu maksatla yazılım geliştiriciler tek sınıf tek görev yaklaşımına uygun davranmalı.

Tekrar görüşmek dileğiyle..

Tag:bağlaşım, coupling, lcom4, yapışkanlık

  • Share:
author avatar
Kodedu

Previous post

PlusClouds ile Röportaj
14 Temmuz 2012

Next post

Sürekli Entegrasyon Yaklaşımları - (ücretsiz webiner)
16 Temmuz 2012

You may also like

api-logo
Swagger Nedir? Neden kullanılır?
10 Ekim, 2018
spring-cli-logo
Spring CLI ile Spring Boot Projeleri Hazırlamak
21 Ağustos, 2017
eureka_architecture
Spring Cloud Netflix ve Eureka Service Discovery
3 Temmuz, 2017

    2 Comments

  1. Ilkin Abdullayev
    10 Aralık 2017
    Cevapla

    Guzel yazi olmus hocam.Elinize salik 🙂

  2. Hilal
    9 Haziran 2022
    Cevapla

    Teşekkürler içerik için… Sınavda çıkar muhtemelen

Leave A Reply Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta listesine kayıt olun!






Gözde yazılar

Hafif bir Kod Editörü – Brackets
30Haz2012
Java’da Record’lar
27Oca2020
Reflection ile Dependency Injection nasıl gerçekleştirilir?
04Eyl2012
Integration of Spring MVC and Mustache
02Ağu2013

Son Yazılar

  • Java’da Record’lar 27 Ocak 2020
  • Swagger Nedir? Neden kullanılır? 10 Ekim 2018
  • Spring CLI ile Spring Boot Projeleri Hazırlamak 21 Ağustos 2017
  • Spring Cloud Netflix ve Eureka Service Discovery 3 Temmuz 2017
  • Online React.js Eğitimi ardından (15-25 Mayıs 2017) 31 Mayıs 2017

Son Yorumlar

  • Coupling ve Cohesion Kavramları Nedir? için Hilal
  • Naïve Bayes Sınıflandırma Algoritması için Rahman Usta
  • Naïve Bayes Sınıflandırma Algoritması için Mete
  • YAML Nedir? Neden YAML Kullanmalıyız? için kara
  • JWT (JSON Web Tokens) Nedir? Ne işe yarar? için Furkan

Get Java Software

Arşivler

Bizi takip edin

React.js Eğitimi Başlıyor
11-22 Eylül, 2017
Eğitmen
Rahman Usta
İletişim

merhaba@kodedu.com

  • Hakkında
  • Gizlilik Politikası
  • İletişim
  • Referanslar
Kodedu Bilişim Danışmanlık
Cemil Meriç mah. Çelebi sok.
No:16/3 Ümraniye/İSTANBUL
Tel: 0850 885 38 65
Alemdağ V.D.: 8960484815

KODEDU © Tüm hakları saklıdır.