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.
Bir proje bünyesinde değişik modüllerden oluşan bir yazılım sistemini implemente etmek için çalıştığımızı düşünelim. Her modülden ayrı bir ekip sorumlu olsun. Üzerinde çalıştığımız modülün implementasyonunu yapabilmek için büyük bir ihtimalle diğer modülleri kullanmamız gerekecektir. Örneğin bilgibankası üzerinde işlem yapmamızı sağlayacak bir modülü başka bir ekip implemente etmiş olabilir. O ekip bilgibankası üzerindeki işlemler için gerekli tüm sınıfları dao isimli bir paket içine yerleştirmiş olabilir. Bizim bu paket içindeki sınıfları tekrar kullanabilmemiz (reuse) için belirli şartların yerine gelmesi gerekmektedir. Bunlar:
- Bilgibankası ekibi, bilgibankası üzerinde işlem yapmak için kullanılan tüm sınıfları, bu sınıflar birbirleriyle ilişkili olduğu için aynı paket içine koymalıdır. Bu tekrar kullanımı kolaylaştırır.
- Tekrar kullanımı desteklemek için oluşturulan paketin bir versiyon numarasıyla yeni sürümünün oluşturulması gerekmektedir.
- Paket kullanıcıları paket üzerinde yapılan değişikliklerden haberdar edilmelidir. Onlar için kullanabilecekleri yeni bir paket sürümünün oluşturulması yanı sıra, mevcut kodun kırılmasını önlemek için paketin eski versiyonlarının da paralel kullanıma açık tutulması gerekir. Sadece bu durumda paket kullanıcıları paket üzerinde yapılan değişiklerinden etkilenmeden eski versiyonlarla çalışmaya devam edebilirler. Zaman içinde yeni paket versiyonuna geçerek, son değişiklikleri entegre ederler.
Tekrar kullanımı kolaylaştırmak için paket sürümlerinin oluşturulması şarttır. REP’e göre tekrar kullanılabilirlik (reuse) sürüm (release) ile direk orantılıdır. Sürüm ne ihtiva ediyorsa, o tekrar kullanılabilir.
Bu yazıyı PDF dosyası olarak aşağıdaki linkten edinebilirsiniz.
Reuse-Release Equivalence Principle (REP) - Tekrar Kullanım ve Sürüm Eşitliği (29,3 KiB, 4.521 yükleme)
EOF (End of Fun)
Özcan Acar
Tasarım Prensipleri kategorisinden son yazılar
- Sorumluluk Sahibi Olmak - August 20th, 2012
- SOLID - December 30th, 2011
- Stable Abstractions Principle (SAP) – Stabil Soyutluk Prensibi - October 26th, 2011
- Stable Dependencies Principle (SDP) – Stabil Bağımlılıklar Prensibi - October 26th, 2011
- Acyclic Dependency Principle (ADP) – Çevrimsiz Bağımlılık Prensibi - October 26th, 2011
- Common Closure Principle (CCP) – Ortak Kapama Prensibi - October 26th, 2011
- Common Reuse Principle (CRP) – Ortak Yeniden Kullanım Prensibi - July 24th, 2010
- Interface Segregation Principle (ISP) – Arayüz Ayırma Prensibi - November 17th, 2009
- Dependency Inversion Principle (DIP) - Bağımlılıkların Tersine Çevrilmesi Prensibi - October 29th, 2009
- Liskov Substitution Principle (LSP) – Liskov'un Yerine Geçme Prensibi - October 29th, 2009
Okcan Yasin Saygılı
03 Mart 2010çok güzel makale olmuş özcan hocam eline sağlık …
acar
04 Mart 2010Tesekkür ederim hocam, faydali bulmus olmaniz beni sevindirir :)
Pingback: Pratik Programcı Yayınları » Versiyon ve Sürüm Numaraları Nasıl Oluşturulur?