8 Şubat 2015 Pazar

Yazılım Tasarım Teknikleri – GRASP

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
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