Tasarım Prensipleri

SOLID

Ara 30th, 2011 | By Özcan Acar | Category: Haberler, Tasarım Prensipleri

SOLID (Single responsibility, Open-closed, Liskov substitution, Interface segregation ve Dependency inversion) yazılım tasarım prensipleri için kullanılan bir kısaltmadır. Yazılım yaparken SOLID uygulandığı taktirde bakımı ve geliştirilmesi kolay yazılım sistemleri oluşturmak mümkündür. En verimli hali test güdümlü yazılım ile uygulanır.



Stable Abstractions Principle (SAP) – Stabil Soyutluk Prensibi

Eki 26th, 2011 | By Özcan Acar | Category: Tasarım Prensipleri

Bu yazıyı PDF olarak edinebilirsiniz.



Stable Dependencies Principle (SDP) – Stabil Bağımlılıklar Prensibi

Eki 26th, 2011 | By Özcan Acar | Category: Tasarım Prensipleri

Bu yazıyı PDF olarak edinebilirsiniz.



Acyclic Dependency Principle (ADP) – Çevrimsiz Bağımlılık Prensibi

Eki 26th, 2011 | By Özcan Acar | Category: Tasarım Prensipleri

Bu yazıyı PDF olarak edinebilirsiniz.



Common Closure Principle (CCP) – Ortak Kapama Prensibi

Eki 26th, 2011 | By Özcan Acar | Category: Tasarım Prensipleri

Yazılım sistemi müşteri gereksinimleri doğrultusunda zaman içinde değişikliğe uğrar. Meydana gelen değişiklerin sistemde bulunan birçok paketi etkilemesi, sistemin bakılabilirliğini negatif etkiler. CCP’ye göre yapılan değişikliklerin sistemin büyük bir bölümünü etkilemesini önlemek için, aynı sebepten dolayı değişikliğe uğrayabilecek sınıfların aynı paket içinde yer alması gerekir. CCP daha önce incelediğimiz, sınıflar için uygulanan Single Responsibility (SRP) prensibinin paketler için uygulanan halidir. Her paketin değişmek için sadece bir sebebi olmalıdır. CCP uygulandığı taktirde sistemin bakılabilirliği artırılır ve test ve yeni sürüm için harcanan zaman ve emek azaltılır.



Common Reuse Principle (CRP) – Ortak Yeniden Kullanım Prensibi

Tem 24th, 2010 | By Özcan Acar | Category: Tasarım Prensipleri

Bu prensip hangi sınıfların aynı paket içinde yer alması gerektiği konusuna açıklık getirir. CRP’ye göre beraberce tekrar kullanılabilir yapıda olan sınıfların aynı paket içinde olması gerekir.



Reuse-Release Equivalence Principle (REP) – Tekrar Kullanım ve Sürüm Eşitliği

Ara 9th, 2009 | By Özcan Acar | Category: Tasarım Prensipleri

Program modülleri paketler (packages) kullanılarak organize edilir. Paketler arasında sınıfların birbirlerini kullanmalarıyla bağımlılıklar oluşur. Bunun bir örneği resim 1 de yer almaktadır. Eğer paket B bünyesindeki bir sınıf paket A bünyesinde bulunan bir sınıf tarafından kullanılıyorsa, bu paket A’nin paket B’ye bağımlılığı olduğu anlamına gelir. Bu tür bağımlılıkların oluşması doğaldır. Amaç bu bağımlılıkları ortadan kaldırmak değil, kontrol edilebilir hale getirmek olmalıdır. Bu amaçla paket bazında uygulanabilecek tasarım prensipleri oluşturulmuştur. Bunlardan birisi Reuse-Release Equivalence (tekrar kullanım ve sürüm eşitliği) prensibidir.



Interface Segregation Principle (ISP) – Arayüz Ayırma Prensibi

Kas 17th, 2009 | By Özcan Acar | Category: Tasarım Prensipleri

Birbiriyle ilişkili olmayan birçok metodu ihtiva eden büyük bir interface sınıf yerine, birbiriyle ilişkili (cohesive) metotların yer aldığı birden fazla interface sınıfı daha makbuldür.
ISP uygulanmadığı taktirde, birden fazla sorumluluğu olan interface sınıflar oluşur. Zaman içinde yüklenen yeni sorumluluklarla bu interface sınıflar daha da büyür ve kontrol edilemez bir hale gelebilir. Bunun bir örneğini resim 1 de görmekteyiz.



Dependency Inversion Principle (DIP) – Bağımlılıkların Tersine Çevrilmesi Prensibi

Eki 29th, 2009 | By Özcan Acar | Category: Tasarım Prensipleri

Bu prensibe göre somut sınıflara olan bağımlılıklar soyut sınıflar ve interface sınıflar kullanılarak ortadan kaldırılmalıdır, çünkü somut sınıflar sık sık değişikliğe uğrarlar ve bu sınıflara bağımlı olan sınıflarında yapısal değişikliğe uğramalarına sebep olurlar.



Liskov Substitution Principle (LSP) – Liskov’un Yerine Geçme Prensibi

Eki 29th, 2009 | By Özcan Acar | Category: Tasarım Prensipleri

Barbara Liskov tarafından geliştirilen bu prensip kısaca şöyle açıklanabilir:

Alt sınıflardan oluşturulan nesneler üst sınıfların nesneleriyle yer değiştirdiklerinde aynı davranışı göstermek zorundadırlar.