YAZILIM MIMARISI
Yazılım Mimarisi ve Tasarım için Yol Haritası
Khalil Stemmler web sitesindeki bir yazıda Yazılım Mimarisi ve Tasarım için bir öğrenme yol haritası için bir yığıt oluşturmuş. Bu yazıda daha önceden yazılım mimarisi konusunda yazdığım yazılar ile bir eşleştirme yapmaya çalışacağım.
Khalil bu yazısında aşağıdakine benzer OSI Model stack yapısını Yazılım Tasarım ve Mimarisine uygulamıştır ?
Not: OSI Model nedir diyenler Internet Ağ Kavramları yazımı okuyabilirler.
Şimdi bu katmanları ve bu katmanlara ilişkin yazılarımı bu kısımda eşleştirme yapmak istiyorum.
Clean Code Katmanı
Kodun temiz olması. Kodun temiz olması isimlendirme, kodun yapısı, stili, okunabilirliği, test edilebilirliği gibi en temel yapı taşını en temel kısmı oluşturuyor.
Bu konuda henüz blog yazım bulunmuyor. Bu konuda en iyi kaynak olarak aşağıdaki kitapları okuyabilirsiniz.
- Clean Code, by Robert C. Martin
- Refactoring, by Martin Fowler (2nd edition)
- The Pragmatic Programmer, by Andy Hunt and Dave Thomas
- The Design of Everyday Things, by Don Norman
- Code Complete, Steve McConnell
Programlama Paradigmaları Katmanı
Programlama Paradigmalarını öğrenmek için aşağıdaki yazılarımı okuyabilirsiniz.
Object-Oriented Programlama Katmanı
Object-Oriented Programlama katmanı Inheritance, Polymorphism, Encapsulation ve Abstraction konularını içeriyor. Bu konuda aşağıdaki yazıları okuyabilirsiniz.
- Soyutlama ve Kapsama
- Soyut Veri Tipleri
- OOP Unutulmuş Tarihi-1
- OOP Unutulmuş Tarihi-2
- OOP Unutulmuş Tarihi-3
- OOP Unutulmuş Tarihi-4
- OOP Unutulmuş Tarihi-5
- OOP Unutulmuş Tarihi-6
- OOP Unutulmuş Tarihi-7
Bu kısımda farklı Inheritance yapıları bulunuyor. Ben yazılarımda JavaScript kapsamında prototype üzerinden kalıtım’dan bahsettim.
- JS’te Kalıtım(Inheritance) Nasıl Gerçekleşir ?
- JavaScript’ te prototype, __proto__ Kavramlarını Anlamak
OOP inheritance ve polymorphism için Java ve C# dilleri nasıl ele aldığı anlaşılması için TypeScript üzerinden yazılar yazmıştım. Bu yazılarda Class,Inheritance, Interface, Abstract, ConcreteClass, Generics, Reflection, Annotations gibi konulara değinmiştim.
Object Oriented Tasarımın bir üst seviyesi daha model ve nesneler üzeri anlamlı grup kapsamında tanımlamalar ile geliştirme yapmak. Model Driven Development geniş bir konu ama bana Ruby on Rails, Blitz.JS entity’ler üzerinden fullstack geliştirmeyi hatırlatıyor.
Tasarım Prensipleri Katmanı
Kodu test edilebilir ve geliştirme isteklerine için esnek tutmak istiyorsanız. Ne tarz yazılım prensiplere dikkat etmeniz gerekir konusunda aşağıdaki yazıları okuyabilirsiniz;
- Composition over Inheritance
- Yazılım Geliştirme Prensipleri
- S.O.L.I.D Prensipleri
- TDD(Test) vs BDD(Behaviour)
- Reactive Manifesto
- 12 Factor App Uygun Geliştirme Nedir ?
Tasarım Örüntü Katmanı
Yazılım geliştirme sırasında uygulamanın farklı kısımlarında her geliştiricinin ortak karşılaştığı problem-çözüm ilişkileri bulunur. İşte tasarım örüntüleri bu problem çözüm ilişkilerini inceler. Aşağıdaki yazı grubundan erişebilirsiniz.
Mimari Prensipler Katmanı
Bileşenlerin birbirleri ile olan iletişim kuralları, birbirlerine olan bağımlılıklarının yönetimi , sınırlar , coupling ve cohesion gibi kavramların ele alınması.
Mimari Stiller Katmanı
Mimari stiller konusunda aşağıdaki yazıları okuyabilirsiniz.
- Bileşen Odaklı UI(Kullanıcı Arayüzü) Geliştirme
- Microservices Mimarisi
- Microfrontends Mimarisi
- SOA Mimarisi
- Serverless Architecture (FaaS)
- Yazılım Mimarisinde Brokerlik
- Event-Driven Architecture
- Blackboard System
- Pipe and filter architecture
- Katmanlı Uygulama Mimarisi
Mimari Örüntüler Katmanı
Mimari örüntüler konusunda aşağıdaki yazıları okuyabilirsiniz.
Enterprise(Kurumsal) Örüntüler Katmanı
Bu konuda aşağıdaki yazıyı okuyabilirsiniz.
Bunun konuda aşağıdaki kaynaklardan faydalanabilirsiniz.
- Patterns of Enterprise Application Architecture, by Martin Fowler
- Enterprise Integration Patterns, by Gregor Hohpe
- Domain Driven Design, by Eric Evans
- Implementing Domain-Driven Design, by Vaughn Vernon
Referanslar
Okumaya Devam Et 😃
Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.