Fundamentals of Software Architecture İnceleme

Özet

Bu kitap ilk etapta yazılım mimarisine pek çok açıdan geniş bir bakış atmaktadır. İlk parçada bir yazılıma mimari olarak bakmanın ve geliştirici olarak bakmanın farklarını, modülerlik kavramını, mimari karakteristikleri ve bunlarla ilgili ayrıntıları ele almaktadır. İkinci parçada ise günümüzde kullanılan mimari stilleri örneklerle ve anlattığı karakteristiklerle birleştirerek ele almakatdır. Monolitik ve dağıtık mimarileri tek tek incelemekte ve aralarındaki farklara dikkat çekmektedir. Son parçada ise bir yazılım mimarının sahip olması gereken yetenekler ve teknikleri ele almakta; ekip yönetimi, riskler, kararlar, sunum ve kariyer ile ilgili bilgileri çeşitli analojiler ile vermektedir.

İnceleme

Bölüm 1: Introduction (Giriş)

Bu bölümde yazılım mimarisinin tanımı, bir yazılım mimarından neler beklenmesi gerektiği ve yazılım mimarları arasında dolaşan temel yasalar ele alınmaktadır. Bölüm genel olarak ilk bakış niteliğinde kısa anlatımlardan oluşmaktadır. Kitabın geri kalanına okuyucuyu hazırlamak için tasarlanmıştır.

Parça 1: Foundations (Temeller)

Bu parçada yer alan bölümlerde, yazılım mimarisinde yer alan temel kavramlar ve terminoloji ele alınmaktadır. Yazılım mimarisinde "en iyi" denen bir şeyin olmadığı ve her şeyin "trade-off"lardan meydana geldiği açıklanmaktadır. Bunun için güzel örnekler kullanılmıştır. Bir yazılım geliştirici ile yazılım mimarının projeye bakışı arasındaki farklar, modülerlik kavramı, mimari karakteristikler ve bileşen (component) bazlı düşünme gibi konular ele alınmış ve bunlar örneklerle detaylandırılmıştır.

Bölüm 2: Architectural Thinking (Mimari Düşünme)

Bu bölüme ilk olarak "mimari" ve "tasarım" kavramları arasındaki farklar açıklanmaktadır. Yazılım mimarlarının teknik derinlikten (bir konuda uzmanlaşma) çok teknik genişliğe (birçok konuyu bilmek, ama uzmanlığa kadar ilerlememek) önem vermesi gerektiği ve bunun nedenleri anlatılmaktadır. Bunu açıklamak için güzel bir piramit modeli kullanılmıştır. Bu piramit, bir projede yer alan bilgiyi (knowledge) 3 kategoriye ayırmaktadır:

  • Bildiğiniz şeyler (Stuff you know)
  • Bilmediğinizi bildiğiniz şeyler (Stuff you know you don’t know)
  • Bilmediğinizi bilmediğiniz şeyler (Stuff you don’t know you don’t know)

Bir proje için en tehlikeli kategorinin üçüncüsü olduğuna ve bunun sebeplerine değinilmektedir. Daha sonra "Frozen Caveman Anti-Pattern" isimli bir mimari Anti-pattern açıklanmaktadır. Projedeki "trade-off"ları nasıl analiz edeceğiniz örneklerle anlatılmaktadır. Bölümün sonunda ise mimari üzerinde çalışma ile ellerini koda bulaştırma arasında nasıl bir denge kurabileceğiniz anlatılmaktadır.

Bölüm 3: Modularity (Modülerlik)

Bu bölüm ilk olarak modülerlik (modularity) kavramının tanımı ile başlamaktadır. Daha sonra bir yazılım projesinde modülerliğin nasıl ölçülebileceği ile ilgili çeşitli metrikler ele alınmaktadır. Burada ayrıntılı olarak anlatılan metrikler şöyledir:

  • Cohesion (Bağlılık)
  • Coupling (Birliktelik)
  • Connascence (Birlikte Büyüme)

Bunları anlatırken soyutluk (abstractness) kavramına ve soyutluğu ölçme yöntemine de değinmektedir. Bölüm bu kavramların açıklamaları, alt kategorileri, formülleri ve örnekleri üzerinde geçmekte ve tamamlanmaktadır.

Bölüm 4: Architecture Characteristics Defined (Mimari Karakteristiklerin Tanımı)

Bu bölümde mimari karakteristikler tanım olarak ele alınmaktadır. Bu bölüm parçanın geri kalanında yer alan bölümler için önemli bir yere sahiptir. Bir mimari karakteristiğin 3 kriteri karşılaması gerektiği anlatılmaktadır:

  • Belli bir alana ait olmayan (nondomain) tasarım düşüncesini belirtir
  • Tasarımın yapısal yönünü etkiler
  • Uygulamanın başarısı için kritik veya önemlidir

Daha sonra mimari karakteristikleri şu şekilde 3 kategoriye ayırıp açıklamaktadır:

  • Operasyonel Mimari Karakteristikler (Availability, Continuity, Performance, Recoverability, Reliability/Safety, Robustness, Scalability)
  • Yapısal Mimari Karakteristikler (Configurability, Extensibility, Installability, Leverageability/Reuse, Localization, Maintainability, Portability, Supportability, Upgradeability)
  • Kesişen Mimari Karakteristikler (Accessibility, Archivability, Authentication, Authorization, Legal, Privacy, Security, Supportability, Usability/Achievability)

Ayrıca ISO standartlarında yer alan karakteristiklerinden de bahsedilmiştir. Ancak ISO tarafında çok doğru tanımların olmadığı ile ilgili bazı yakınmalar da mevcuttur.

Bölüm 5: Identifying Architecture Characteristics (Mimari Karakteristiklerin Belirlenmesi)

Bu bölümde belli bir çalışma alanında (domain) mimari tasarlarken, isterlerden mimari karakteristiklerin nasıl çıkarılması gerektiği anlatılmaktadır. Bunun için "Vasa" isimli bir geminin hikayesi analoji olarak verilmetedir. Daha sonra kitabın pek çok yerinde ismini duyacağınız "Kata" kavramı üzerinde durulmaktadır. Bu Kata’ların tam olarak nereden geldiği ve nerede bulabileceğiniz açıklanmaktadır. Daha sonra internet üzerinde yer alan Kata’lardan biri olan "Silicon Sandwiches" isimli Kata ele alınarak, bu hayali proje üzerinden mimari karakteristikleri nasıl çıkarabileceğiniz anlatılmaktadır.

Bölüm 6: Measuring and Governing Architecture Characteristics (Mimari Karakteristikleri Ölçme ve Yönetme)

Bir önceki bölümde mimari karakteristiklerin iş isterlerinden nasıl çıkartılacağı üzerinde durulduğu gibi, bu bölümde de bu çıkarılan karakteristiklerin nasıl ölçülebileceği üzerinde durulmaktadır. Karakteristikleri şu açılardan ölçebileceğimiz anlatılmaktadır:

  • Operasyonel Ölçümler (Operational Measures)
  • Yapısal Ölçümler (Structural Measures)
  • Süreç Ölçümleri (Process Measures)

Daha sonra mimari karakteristiklerin yönetimi ile ilgili bilgi verilmekte ve "Fitness Function" denilen yapıları açıklayarak başka kitaplara referans verilmektedir. Bölümü Fitness Function ile ilgili çeşitli örnekler ile bitirmektedir.

Bölüm 7: Scope of Architecture Characteristics (Mimari Karakteristiklerin Kapsamı)

Bu bölümde "Quanta" ve "Granularity" kavramları üzerinde durulmuştur. Bu kavramlar kitabın bir sonraki parçası için önemli bir yere sahip olacaktır. Yine Kata’lardan biri olan "Going, Going, Gone" ile bu kavramlar örneklendirilmiştir.

Bölüm 8: Component-Based Thinking (Bileşen Bazlı Düşünme)

Bu bölümde genel olarak sistemin bileşenlere ayrılması, mimarın rolleri, geliştiricinin rolleri, bileşenin akışı, bileşenin tanecikliliği (granularity) ve bileşenin tasarımı gibi oldukça önemli konulara yer verilmektedir. Ayrıca bu bölümde Conway Yasası adı verilen ve bir sistemin tasarımının organizasyondaki takımların iletişim yapısıyla ilgili olduğunu öne süren bir yasa da açıklanmaktadır. En sonunda yine 7. bölümde parçalarına ayırdığı Kata üzerinden devam niteliğinde anlatım yapılmakta ve kitabın ilk parçası sonlandırılmaktadır.

Parça 2: Architecture Styles (Mimari Stiller)

Bu parçada yazılım mimari stilleri tek tek açıklanmaktadır. Her bir mimari stilin sonunda 5 üzerinden karakteristik puanlaması yapılmış ve böylelikle bütün stiller arasında karşılaştırma yapabilme imkanı tanınmıştır.

Bölüm 9: Foundations (Temeller)

Bu bölümün ilk kısmında temel mimari kalıplar (patterns) üç kısımda ele alınmıştır:

  • Big Ball of Mud
  • Unitary Architecture
  • Client/Server

Daha sonra mimari stillerin iki kategorisi olan monolitik ve dağıtık stiller ve bunlar arasındaki farklar anlatılmaktadır. Yazılım dünyasında özellikle dağıtık stillerle ilgili 8 yanlış anlaşılma tek tek örnek verilerek açıklanmaktadır. Dağıtık stillerle ilgili 8 yanlış anlaşılma şunlardır:

  • Ağın monolitik mimariye göre daha güvenilir olduğu
  • İletişimdeki gecikmenin sıfıra yakın olduğu
  • Bant genişliğinin sınırsıza yakın olduğu
  • Ağın güvenli olduğu
  • Topolojinin asla değişmeyeceği
  • Sadece bir yöneticinin bulunduğu
  • İletim maliyetinin sıfıra yakın olduğu
  • Ağın homojen olduğu

Bölüm 10: Layered Architecture Style (Katmanlı Mimari Stil)

Bu bölümde ilk olarak katmanlı mimarinin topolojisi ele alınmaktadır. Katmanlı mimaride genel olarak hangi katmanların bulunduğu (Presentation, Business, Persistence vb.) ve bunların konumları hakkında bilgi verilmektedir. Daha sonra bu katmanlar arasındaki izolasyon konusu ele alınmaktadır. Sisteme yeni bir katman eklerken nelere dikkat edilmesi gerektiği ve diğer göz önünde bulundurulması gereken şeyler anlatılmaktadır. Son olarak da mimarinin karakteristiklere göre notlandırılması yapılmaktadır. Bu mimari stilin maliyet ve basitlik anlamında iyi, neredeyse kalan tüm karakteristiklerde kötü bir seçim olacağı söylenmektedir.

Bölüm 11: Pipeline Architecture Style (Pipline Mimari Stili)

Bu bölümde Pipeline mimarisinin temelleri ve topolojisi anlatılmaktadır. Pipeline mimarisinde yer alan Pipe (Boru) ve Filter (Filtre) gibi kavramlar açıklanmaktadır. Daha sonra bir örnek üzerinden genel anlatım yapılıp karakteristiklere göre notlandırmaya geçilmektedir. Yine bu mimari stilin maliyet ve basitlik anlamında çok iyi; evrimleşme, modülerlik, güvenilirlik ve test edilebilirlik anlamında orta; geri kalan diğer karakteristiklerde ise kötü olduğu söylenmektedir.

Bölüm 12: Microkernel Architecture Style (Microkernel Mimari Stili)

Bu bölümde monoloitik mimari stillerden en sonuncusu olan Microkernel mimari stili ve onun topolojileri ele alınmaktadır. Sitemde yer alan Core Component ve Plug-in Component’ler örnekler ile açıklanmakatdır. Daha sonra Registry kavramına değinilip Core bileşenlerin Plug-in bileşenler ile nasıl haberleştiği konusu açıklanmaktadır. Yine örnek kullanım senaryoları verilip notlandırmaya geçilmektedir. Bu mimari stilin maliyet ve basitlik anlamında iyi; dağıtılabilirlik, evrimleşme, modülerlik, güvenilirlik ve test edilebilirlik anlamında orta; geri kalan diğer karakteristiklerde ise kötü olduğu söylenmektedir.

Bölüm 13: Service-Based Architecture Style (Servis Bazlı Mimari Stil)

Bu bölümde dağıtık mimari stillerin ilki olan servis bazlı mimari stil anlatılmaktadır. Öncelikle bu mimari stilin genel topolojisi ve topoloji varyantları açıklanmaktadır. Servislerin nasıl tasarlanacağı ve "Granularity" kavramlarına değinilmektedir. Daha sonra bu tip mimarilerde veritabanının nasıl parçalara bölünebileceği ile ilgili teknikler gösterilmektedir. Bütün bunlardan sonra bilgileri toparlayan genel bir örnek verilmektedir. En sonunda ise karakteristik notlandırması yapılmaktadır. Bu notlandırmaya göre servis bazlı mimari stilin dağıtılabilirlik, hata toleransı, modülerlik, maliyet, güvenilirlik ve test edilebilirlik karakteristiklerinde iyi, geri kalanlarda ise orta olduğu vurgulanmaktadır.

Bölüm 14: Event-Driven Architecture Style (Olaya Dayalı Mimari Stil)

Bu bölümde olaya dayalı mimari stil ele alınmaktadır. Bu mimarinin iki topoloji türü olan Broker ve Mediator topolojileri ayrıntılı bir biçimde açıklanmaktadır. Daha sonra bu mimaride asenkron iletişimin nasıl sağlandığı, hataya karşı toleransın nasıl oluşturulabileceği, veri kayıplarının nasıl önlenebileceği, yayınlama (broadcasting) yetenekleri gibi konular anlatılmaktadır. En sonunda ise Request bazlı sistemlerden ne gibi farklarının olduğuna değinilip karakteristik notlandırmasına geçilmektedir. Bu notlandırmaya göre olaya dayalı mimari stilin evrimleşme, hata toleransı, performans ve ölçeklenebilirlik konularında çok iyi; basitlik ve test edilebilirlik konusunda kötü; diğerlerinde ise orta olduğu vurgulanmaktadır.

Bölüm 15: Space-Based Architecture Style (Alan Bazlı Mimari Stil)

Bu bölümde alan bazlı mimari stil anlatılmaktadır. İlk önce alan bazlı mimari stilin genel topolojisi ve bileşenleri anlatılmaktadır. Verilerin nasıl iletildiği, senkronize edildiği ve bu tip sistemlerde veritabanı ile nasıl çalışılacağı örneklerle açıklanmaktadır. Ayrıca bu stilde en çok karşılaşılan veri çakışması (data collision) problemlerinin çözümü üzerinde durulmaktadır. Daha sonra Cloud ve On-premise implementasyonlar arasındaki farklar ile Replicated ve Distributed Caching arasındaki farklar ele alınmakta ve çeşitli implementasyon örnekleri verilmektedir. En son yine karakteristik notlandırması yapılarak, bu mimari stilin elastiklik, performans ve ölçeklenebilirlik konularında çok iyi; maliyet, basitlik ve test edilebilirlik konularında kötü; diğer konularda ise orta olduğu vurgulanmaktadır.

Bölüm 16: Orchestration-Driven Service-Oriented Architecture Style (Orkestrasyon Bazlı Servis Yönelimli Mimari Stil)

Bu bölümde orkestrasyon bazlı servis yönelimli mimari stil ele alınmaktadır. Önce bu stilin tarihinden ve gerekliliğinden bahsedilip daha sonra topolojik olarak ele alınmaktadır. Bu stilde yer alan taksonomik yapılar tek tek açıklanmaktadır:

  • Business Services
  • Enterprise Services
  • Application Services
  • Infrastructure Services
  • Orchestration Engine
  • Message Flow

En son ise yine karakteristik notlandırma yapılmıştır. Bu notlandırmaya göre bu stilin bir tek ölçeklenebilirlik konusunda iyi; elastiklik, hata toleransı ve modülerlik konusunda orta; geri kalan konularda ise kötü olduğu vurgulanmaktadır.

Bölüm 17: Microservices Architecture (Mikroservis Mimarisi)

Bu bölümde mikroservis mimarisi üzerinde geniş çaplı olarak durulmaktadır. Öncelikle mikroservislerin tarihiyle konuya giriş yapılmaktadır. Daha sonra kısaca bu mimari stilin topolojisine göz atılmaktadır. "Bounded Context" kavramına giriş yapılmakta ve burada "Granularity" ve "Data Isolation" konuları anlatılmaktadır. API katmanı, operasyonel tekrar kullanım, Frontend stilleri (Monolithic Frontend, Microfrontend), servisler arası iletişim mekanizmaları gibi konular ayrı başlıklarla ele alınmaktadır. En son ise karakteristik notlandırması yapılmaktadır. Bu notlandırmaya göre bu stilin dağıtılabilirlik, elastiklik, evrimleşme, hata toleransı, modülerlik, güvenilirlik, ölçeklenebilirlik ve test edilebilirlik konusunda iyi veya çok iyi, geri kalan konularda (maliyet, basitlik, performans) kötü olduğu vurgulanmaktadır.

Bölüm 18: Choosing the Appropriate Architecture Style (Uygun Mimari Stilin Seçilmesi)

Bu bölümde hangi mimari stilin nerede kullanılabileceğine dair açıklamalar yer almaktadır. Hem monolitik hem de dağıtık stillerle ilgili birer örnek ele alınmaktadır.

Parça 3: Techniques and Soft Skills (Teknikler ve Sosyal Beceriler)

Bu bölümde bir yazılım mimarının mimariyi tasarlama sürecinin başından sonuna kadar alması gereken kararlar, ortaya çıkan risklerin yönetimi ve takımı daha verimli hale getirmesi gibi konular anlatılmaktadır. Yazılım mimarının teknik ve sosyal becerilerine genel bir bakış atılmakta ve örneklendirilmektedir.

Bölüm 19: Architecture Decisions (Mimari Kararlar)

Bu bölümde mimariyi oluştururken verilecek olan kararlar anlatılmaktadır. Bölümde şu 3 mimari Anti-pattern geniş olarak anlatılmaktadır:

  • Covering Your Assets Anti-Pattern
  • Groundhog Day Anti-Pattern
  • Email-Driven Architecture Anti-Pattern

Daha sonra ise bir kararın mimari olarak anlamlı olmasının ne demek olduğu anlatılmaktadır. En sonunda bu kararların dokümantasyonu ile ilgili bir standart olan Architecture Decision Records (ADR) standardı ve onun araçları ele alınmaktadır.

Bölüm 20: Analyzing Architecture Risk (Mimari Riskleri Analiz Etme)

Bu bölümde bir mimariyi tasarlarken ve kullanırken risklerin nasıl ele alınması gerektiği anlatılmaktadır. Risk matrisinin ne olduğu ve nasıl kullanılacağı, risk sınıflandırmasının nasıl yapılacağı, Risk Storming toplantılarının amacı ve işlevi anlatılıp en sonunda ise bunlarla ilgili bir örnek verilmektdir.

Bölüm 21: Diagramming and Presenting Architecture (Mimariyi Diyagrama Dökme ve Sunma)

Bu bölümde bir mimariyi diyagrama dökme ile ilgili standartlar ve araçlar ele alınmakta, ayrıca mimariyi diğer paydaşlara nasıl sunabileceğimiz ile ilgili yöntemler anlatılmaktadır.

Bölüm 22: Making Teams Effective (Takımları Daha Verimli Hale Getirme)

Bu bölümde bir yazılım mimarının takımların nasıl daha verimli hale getirebileceği ile ilgili önerilen sunulmaktadır. Bölümde mimarların kişilikleri 3 kategoride incelenmektedir:

  • Control Freak
  • Armchair Architect
  • Effective Architect

Daha sonra bir takımda bir şeylerin yanlış gittiği ile ilgili sinyallerin neler olduğu, kontrol listesi (checklist) tutmanın faydaları ve destek sağlama ile ilgili çeşitli konular anlatılıp bölüm sonlandırılmaktadır.

Bölüm 23: Negotiation and Leadership Skills (Müzakere ve Liderlik Becerileri)

Bu bölümde bir yazılım mimarının iletişim becerileri ve liderliği ile ilgili bazı durumlar örnekler ile açıklanmaktadır. Mimarın farklı paydaşlar ile nasıl iletişim kurması ve nasıl tartışması gerektiği anlatılmaktadır. Ayrıca geliştirme takımına olan entagrasyonu da ele alınmaktadır.

Bölüm 24: Developing a Career Path (Bir Kariyer Yolu Çizme)

Bu bölümde yazılım mimarının kariyer yolu ile ilgili bazı tavsiyeler verilmektedir. 20 Dakika Kuralı, teknoloji radarı ve sosyal medya kullanımı gibi konular kısaca anlatılmakta ve örnekler verilmektedir.

Değerlendirme

Kitap genel olarak temiz bir anlatıma sahiptir ve her bölümde önceki bölümlerde anlattıklarını bağlayarak ilerlemektedir. Bunu yaparken çeşitli diyagramlar ile anlatımı destelemekte ve gerçek hayattan örnekler vermeyi ihmal etmemektedir. Kitabın kendi içinde de bahsedildiği gibi hedef kitlesi daha önce geliştirici olup yazılım mimarlığına yeni adım atmış olan kişilerdir. Bu nedenle her bir kavramı üzerine basa basa açıklamakta ve örneklendirmektedir. Sonuç olarak bu hedef kitlesine yönelik piyasada bulunan en iyi kitaplardan biri olduğunu söyleyebiliriz.

Kitap genel olarak 3 parçadan meydana gelmektedir. İlk parça yazılım mimarisinin temelleri üzerinedir. Bu parçada ilk olarak mimari olarak düşünme ve geliştirici olarak düşünmenin farklarını ele almakta, modülerlik kavramını örneklerle açıklamakta ve bu parçada geriye kalan neredeyse tüm bölümlerde mimari karakteristikler üzerinde durmaktadır. Bu bölümlerde ise mimari karakteristiklerin (performans, güvenlik, ölçeklenebilirlik vb.) tanımlarını, kategorilerini, ölçümlerini ve kapsamlarını incelemektedir. Kitabın başlangıcı için oldukça iyi bir giriştir.

İkinci parçada ise mimari stiller üzerinde durmaktadır. Aslında mimari stiller ve karakteristikler arasındaki ilişkiyi ilk bölümde güzel bir şekilde açıklamaktadır. Ayrıca çeşitli mimari stillerin sahip olduğu karakteristikleri 5 yıldızlı değerlendirme yöntemiyle tek tek değerlendirmektedir. Bunu yaparak anlattığı stiller arasında karşılaştırma yapmaya ve okuyucunun kullanması gereken stilin hangisi olduğu karar vermesine yardımcı olmaktadır. Bu bakımdan bu kitabın bence en iyi parçası burasıdır.

Son parçada daha çok yazılım mimarının tekbik ve sosyal becerileri (skills) üzerinde durmakta ve kullanması gereken teknikleri açıklamaktadır. Bir yazılım mimarının hangi koşullarda nasıl kararlar alması gerektiğini örneklerle açıklamaktadır. Daha sonra bir yazılım mimarisindeki riskleri nasıl ele alabileceğimizi ve mimarileri diyagrama dökerek nasıl sunabileceğimizi anlatmaktadır. En sonunda ise takım yönetimi, liderlik ve yazılım mimarının kariyeri hakkında konuşmaktadır. Bunları yaparken örneklendirmesi güzel olsa da bence biraz kitabın kapsamından kaynaklı olarak kitabın en zayıf kalan kısmı burasıydı. Ancak temelleri yüzeysel olarak ele alması açısından değerlendirirsek çok da fena bir bölüm değildi.

Sonuç olarak, bence bu kitap yazılım geliştiriciliğinden yazılım mimarlığına geçiş yapacak kişiler için mükemmel bir kaynaktır. Bu geçişte yaşanabilecek sıkıntıları ve geliştirici ile mimarın arasındaki ayrımı çok iyi yansıtmaktadır. Kitabın genel olarak dil kullanımı ağır değildir ve bu nedenle de okunabilirliği yüksektir. Bazı yerlerde görsel kullanımı az olsa da genel olarak baktığımızda oldukça yeterlidir. İçeriğin eşsizliği konusunda ise mükemmeldir. Çünkü bu kitapta bulunan bazı kavramları Google’a yazarsanız doğrudan bu kitapla ilgili referanslar karşınıza çıkabilmektedir. Kitapta verilen örnekler ve analojiler yine oldukça yerinde ve açıklayıcıdır.

Fundamentals of Software Architecture İnceleme Özeti


Tam İsim: Fundamentals of Software Architecture: An Engineering Approach
Basım No: 1st Edition
Yazarlar: Mark Richards, Neal Ford
Yayımlama Tarihi: 3 Mart 2020
Sayfa Sayısı: 419
Anlaşılabilirlik/Okunabilirlik
Görsel/Diyagram Kullanımı
İçerik Kalitesi/Eşsizliği
Örneklendirme/Örnek Kalitesi

Sonuç Özeti

Sonuç olarak, bence bu kitap yazılım geliştiriciliğinden yazılım mimarlığına geçiş yapacak kişiler için mükemmel bir kaynaktır. Bu geçişte yaşanabilecek sıkıntıları ve geliştirici ile mimarın arasındaki ayrımı çok iyi yansıtmaktadır. Kitabın genel olarak dil kullanımı ağır değildir ve bu nedenle de okunabilirliği yüksektir. Bazı yerlerde görsel kullanımı az olsa da genel olarak baktığımızda oldukça yeterlidir. İçeriğin eşsizliği konusunda ise mükemmeldir. Çünkü bu kitapta bulunan bazı kavramları Google’a yazarsanız doğrudan bu kitapla ilgili referanslar karşınıza çıkabilmektedir. Kitapta verilen örnekler ve analojiler yine oldukça yerinde ve açıklayıcıdır.

4.5
5 3 votes
Article Rating
Subscribe
Bildir
guest

1 Yorum
Eskiler
En Yeniler Beğenilenler
Inline Feedbacks
View all comments
yusufpapurcu

Guzel bir ozet olmus, tesekkurler!