Kupling ve Uyum
Birleştirme ve uyum, Java'da (ve diğer tüm nesne yönelimli dillerde) bulunan iki kavramdır. Birleştirme, program modüllerinin her birinin diğer program modüllerine ne kadar bağımlı olduğunu ölçer. Uyum, işlevlerin her birinin bir modül içinde ne kadar güçlü bir şekilde ilişkili olduğunu ölçer. Aslında, herhangi bir nesne yönelimli dilin (Java dahil), en verimli programları geliştirmek için aynı anda uyumu artırmak ve eşleşmeyi az altmak gibi iki ana amacı vardır. Bu iki yazılım mühendisliği metriği, yazılımı değiştirme ve bakımını yapma maliyetini az altmak için Larry Constantine tarafından geliştirilmiştir.
Kohezyon nedir?
Kohezyon, bir program modülünde her bir fonksiyonun ne kadar güçlü bir şekilde ilişkili olduğunu ölçer. İyi yapılandırılmış sınıflar, son derece uyumlu programlara yol açar. Belirli bir sınıf, birbiriyle oldukça ilişkili bir dizi işlevi yerine getiriyorsa, o sınıfın uyumlu olduğu söylenir. Öte yandan, bir sınıf birbiriyle tamamen alakasız işlevler gerçekleştiriyorsa, bu, sınıfın hiç de uyumlu olmadığı anlamına gelir. Tutarlılığın olmamasının, genel uygulamanın gerekli işlevselliğe sahip olmadığı anlamına gelmediğini anlamak önemlidir. Sadece uyum olmadan, uygulamanın karmaşıklığı zamanla arttıkça birçok yanlış yere dağılacağından işlevselliği yönetmek çok zor olacaktır. Kodun her tarafına dağılmış davranışları sürdürmek, değiştirmek ve genişletmek, en deneyimli programcılar için bile çok sıkıcıdır.
Kaplin nedir?
Birleştirme, program modüllerinin her birinin diğer program modüllerine ne kadar bağımlı olduğunu ölçer. Bağlantı olduğu için iki nesne arasındaki etkileşimler oluşur. Gevşek bağlı programlar, esneklik ve genişletilebilirlik açısından yüksektir. Güçlü bağlantı hiçbir zaman iyi değildir çünkü bir nesne başka bir nesneye yüksek oranda bağımlı olabilir. Bu, kod değiştirildiğinde bir kabustur, çünkü yüksek bağlantı, programcıların tek bir davranış değişikliği için bile birkaç kod yeri üzerinde çalışması gerektiği anlamına gelir. Güçlü bağlantı, her zaman düşük esnekliğe ve daha az ölçeklenebilirliğe/genişletilebilirliğe sahip programlara yol açar. Ancak Java gibi programlama dillerinde eşleşmeden tamamen kaçınmak imkansızdır. Ancak programcıların, bağlantıyı mümkün olduğunca az altmak için ellerinden gelenin en iyisini yapmaları önerilir. Nesnelerin ölçeklenebilirliğini ve esnekliğini engellemeden birbirleriyle etkileşime girmesine yardımcı olmak için bazı bağlantılara sahip olmak da mümkündür.
Bağlama ve Uyum arasındaki fark nedir?
Birleştirme ve uyum, yazılım mühendisliğinde bir modülün kalitesiyle ilgilense de, bunlar tamamen farklı kavramlardır. Uyum, modül içindeki işlevselliğin birbiriyle ne kadar ilişkili olduğundan bahsederken, birleştirme, bir modülün tüm uygulama içindeki diğer program modüllerine ne kadar bağımlı olduğuyla ilgilenir. En kaliteli yazılıma sahip olmak için, uyum ve birleştirme, spektrumlarının iki zıt ucuna ulaşmalıdır. Başka bir deyişle, gevşek bağlantı ve güçlü uyum en iyi yazılımı sağlar. Özel alanlara, genel olmayan sınıflara ve özel yöntemlere sahip olmak gevşek bağlantı sağlarken, tüm üyeleri sınıf içinde görünür kılar ve varsayılan görünürlük olarak pakete sahip olmak yüksek uyum sağlar.