GRASP(General Responsibility Assignment
Software Patterns <or Principles>) Yazılımda sorumluluk atama ile ilgili
genel geçer şablonlar(prensipler) demektir. 2004-2005 yıllarında Craig Larman
öne sürmüştür. Bu teknik yaklaşımlarda; yazılım geliştirirken 9 tekniğin
kullanılmasının geliştirilen yazılım ürününde; daha az satır kod yazmayı,
daha okunabilir,anlaşılır temiz kod yazmayı, daha kullanışlı, daha performanslı
çalışan kod yazmayı sağladığı öne sürülmüş ve genel kabul görmüştür. Bu teknik
yaklaşımlar:
1)
Controller,
2)
Creator,
3)
Indirection,
4)
Information Expert,
5)
High Cohesion,
6)
Low Coupling,
7)
Polymorphism,
8)
Protected Variations,
9)
Pure Fabrication.
1)Controller(Kontrol edenin belirlenmesi): Nesnelerin yaptıkları iş
itibari ile nesneler arasında olası bir iş kırılımı olması olasılığı var ise; o
iş kırılımlarını kontrol edecek bir controller yazılması gerektiğini söyler.
2)Creator(Oluşturucu): Object Oriented kod yazılırken, nesnelerin oluşturulması (create) işleminin
ortak ve tek bir yapı ile yapılması gerekliliğini söyler.(Örnek: Factory
pattern gibi.)
3)Indirection(Dolaylı,endirekt bağımlılık): Nesne gruplarının kendine
has yaptığı işlerde diğer nesnelere bağımlılığının(object coupling) azaltıması
gerektiğini söyler.(Low Coupling in genelleştirilmiş bakış açısı denilebilir.Örn.
Delegation pattern, Model View Controller pattern gibi)
4)Information Expert(Bilginin uzmanı): Nesnelere sorumluluk atarken;
bir işi , o işin uzmanı olan nesneye atamak gerekir. Yani bir sorumluluğu
yerine getirmek için gerekli bilgiye sahip olan nesneye o sorumluluğun atanması
gerektiğini söyler.
5)High Cohesion(Yüksek alaka): Nesnelerin sorumluluklarının;
birbiriyle çok alakalı olan işler ile ilgi olması gerektiğini söyler.
6)Low Coupling(Az bağımlılık): Bir nesnenin yaptığı iş itibari ile
diğer nesnelere en az bağımlı olması gerektiğini söyler.(Örnek: Web Services)
7)Polymorphism(Çok çeşitlilik): Bir nesnenin ortak özelliklerinin,
çok çeşitli olarak kullanılabilecek şekilde tasarlanması gerektiğini söyler.(Örnek:
Tekerlek<Araba tekerleği, bisiklet tekerleği ,... gibi>)
8)Protected Variations(Güvenli,birliktelik oluşturan Çeşitlemeler): Nesneleri
,birliktelik oluşturacak şekilde(‘yabancılarla konuşmayan’ gibi), olabildiğince
kullanıma açık, değiştirilebilmeye kapalı olarak tasarlamanın gerektiğini
söyler.(Örnek : Open-Closed prensibi)
9)Pure Fabrication(Saf fabrikasyon): Nesnelerin uzmanlık alanlarının
belirlenmesinde, nesne bağımlılığı(object coupling) ve method alakası(method cohesion)
ile ilgili problem olduğu düşünülüyor ise; uzmanlık konusu ile alakası olmayan yeni
bir suni sınıf/katman oluşturulması gerektiğini söyler. (Örnek : Service<Systems
Architecture> )
Yararlanılan Kaynak:
·
Hiç yorum yok :
Yorum Gönder