Yazılım mimarisini anlayabilmek için Robert C. Martin’in Clean Architecture kitabını adım adım okuyorum. Her bölümden edindiğim notları ve kendi yorumlarımı bu seride paylaşacağım.

Bu yazıda Clean Architecture — Part 1 kısmından aldığım notları yazıya dökeceğim.

Bölüm 1 — What is the design and architecture?

The goal?

“The goal of software architecture is to minimize the human resources required to build and maintein the required system.”

Bir işin tamamlanması ve sürdürülebilmesi için insan kaynaklarının en az şekilde kullanılması yazarın hedef tanımını oluşturuyor. Aslında bu tanım, bana sürdürülebilir bir sistem için gereken disiplinlerin uygulanması sonucu elde edilen bir meyvenin tanım olarak kullanılması gibi geldi, yorum sizin :)

Case Study

Yazar bu kısımda yaptığı hedef tanımına örnek olacak şekilde veriler sunuyor. Bir şirketin artan işe alım grafiğinin gösterimine karşın şirketin üretkenlik konusunda zamanla düşüşü, her bir düzenleme maliyetinin her geçen sürede ne kadar arttığını temsil eden verilerle aslında kendi “The goal” tanımının doğruluğuna atıfta bulunuyor.

Ortadaki bu ters orantılı tablonun sebebini aslında “tavşan ve kaplumbağanın yarışı” ndan örnek vererek açıklıyor. Bir şey yapacakken hızlı davranılması, sonuç odaklı olunması ve bunların sebebiyle oluşan muhtemel problemlerin gözardı edilmesinin bu duruma sebebiyet verdiğini belirtiyor. Yavaş, her şeyi olabildiğince düşünerek hareket edilen, çözüm yerine sürece odaklanılan bir ortamın daha verimli olacağını belirtiyor.

Press enter or click to view image in full size

Verdiği bir grafikte de, kendinden emin şekilde başlanan problem çözümlerinin; yavaş, durum analizi yapılan, gereksinimleri belirlenen ve doğru kararların alınarak çözüme ulaşmanın karşısında ne kadar aciz olduğunu, ve bu acizliğin giderek arttığını belirten bir grafik ortaya koymuş.

Conclusion

Press enter or click to view image in full size

Bölüm 2 — A tale of two values

Behavior

Architecture

Bu değişikliklerin de uygulamanın mimarisine uygun şekilde yapılması gerektiği vurgulanıyor. Yapılan her değişikliğin veya geliştirmenin, yazılımın esnekliğine ve tepkiselliğine olumsuz etki etmemesi gerektiğinin altı çiziliyor. Ayrıca, yazılımcıların ve yöneticilerin olası değişim senaryolarında bu kriterlere özellikle dikkat etmeleri gerektiği belirtiliyor.

The Greater Value

• If you give me a program that works perfectly but is impossible to change,
then it won’t work when the requirements change, and I won’t be able to
make it work. Therefore the program will become useless.
• If you give me a program that does not work but is easy to change, then I
can make it work, and keep it working as requirements change. Therefore
the program will remain continually useful.

Eisenhower’s Matrix

Bu matrixi illaki duymuşsunuzdur. Bu matrixe göre işlem önceliklerimizin şu sıra ile düzenlemesi gerektiği belirtiliyor:

  1. Urgent and Important
  2. Not Urgent and Important
  3. Urgent and Not Important
  4. Not Urgent and Not Important

İşlem önceliklerinin, bu sıraya göre oluşturulmasının ideal olduğunu belirtiliyor. Yazar, bu önceliklendirmenin herhangi bir mimari değerlendirme kapasitesi olmayan bir yönetici tarafından yapılmasının, sistemin kötüye götüreceğini, bu sebeple yazılım geliştiricilere özelliklerin aciliyetinden ziyade sistem mimarisi öneminin vurgulanmasını tavsiye ediyor.

Fight For The Architecture

Yazar, “yazılımcıların özellik yerine mimariyi vurgulaması” konusunun hep sancılı olacağından, aynı zamanda da bu durumun sürekli olması gerektiğinden bahsediliyor bu bölümde. Şirketteki her departman kendine göre haklı düşüncelerini vurgular, bu alışkanlık iyi ürün geliştirmeye yarar. Bu sebeple yazılımcıların, özellikle de yazılım mimarlarının sistem mimarisinin önemi hakkında ekstra vurgular yapması gerektiği belirtiliyor.

Bu yazıda Clean Architecture — Part 1 kısmından anladıklarımı yazıya döktüm. Diğer bölümlerde görüşmek üzere.