Hayatın hemen hemen her alanında makro ölçekte ve mikro ölçekte planlama önemli bir yere sahiptir. Çünkü sınırlı kaynaklarla en iyi sonucu almanın yegâne yolu planlamadır. Geçmiş tecrübelerden yararlanarak ve geçmişin üstüne koyarak sistemli, sürdürülebilir, verimli ve tatmin edici sonuçlar elde edebiliriz. Aile ekonomisi, ülke ekonomisi, bina inşası, şehir inşası vb. birçok alanda iyi sonuçlara baktığımızda bunların özünde iyi bir planlamanın sonucu olduğunu gözlemleriz.
Yazılım dünyasında da iyi bir sonuç almanın yolu iyi bir mimari planlamadan geçer. Düzgün bir planlama ile projemizin ihtiyaçlarına uygun iyi bir yazılım mimarisi elde edebiliriz. Yazılım projesi ne kadar büyük ve karmaşık ise üzerinde düşünülmüş ve iyi planlanmış bir mimariye o derece ihtiyaç vardır. Yazılım mimarisi doğru tasarlandığında oldukça önemli getirileri olur ve projenin yaşamı boyunca başarılı olabilmesinin temelinde ise bu getiriler yatar.
İyi bir yazılım mimarisinin başlıca getirileri;
1. Modülerlik
2. Sürdürülebilirlik
3. Güvenlik
4. Proje Yönetimi
5. Dokümantasyon
Şimdi bu başlıklara detaylıca göz atalım.
Modülerlik
İyi bir yazılım mimarisinde proje modüllerden ve bileşenlerden oluşur. Böylece her bir modül bağımsız olarak geliştirilebilir. Modüler yapının projeye sağlamış olduğu başlıca avantajlara bakacak olursak;
- Modüler yapıdaki proje daha esnek olacağı için projenin ölçeklenebilirliği artar.
- Modüler yapı ile geliştirilmiş tekrar kullanılabilir bileşenler kod tekrarının önüne geçer, kullanım kolaylığı getirir. Bu aynı zamanda zamandan ve iş gücünden tasarrufu sağlar.
- Modülerlik geliştiricilerin aynı anda paralel geliştirme yapmasına olanak tanır: Bu sayede hedeflenen geliştirmeler çok daha kısa sürede hayata geçer dolayısıyla üretkenlik üst seviyededir.
- Bu modüller birbirinden bağımsız olarak geliştirildiği ve aralarındaki ilişkiler net bir şekilde belirli olduğu için test süreçleri çoğu zaman modül özelinde gerçekleşir ve çok daha basittir.
- Bir yazılım projesinin yaşam döngüsü boyunca hata ayıklama ve sorun giderme süreçleri kaçınılmazdır. Modüller arasındaki net ilişkiler bu hataların daha hızlı tespit edilmesini ve çözülmesini sağlar. Aynı zamanda modüler yapıda hata izolasyonu üst seviyededir. Bir modülde ortaya çıkan bir hata genelde o modül ile sınırlı kalır. Böylece hizmet aksamaları minimum seviyeye iner.
Sürdürülebilirlik
İyi bir yazılım mimarisinin getirilerinden birisi de sürdürülebilirliktir. Sürdürülebilir olmasını detaylıca inceleyecek olursak;
- Doğru tasarlanmış mimari ihtiyaç duyulan yeni değişikliklere uyum sağlamada başlıca etkendir. Böylece yeni özellik eklerken ya da mevcut özellikleri değiştirirken kolayca adapte olunabilir. Bu çeviklik teknolojinin bu denli geliştiği günümüz dünyasında çok önemli bir yere sahiptir. Bu adaptasyon aynı zamanda projenin uzun ömürlü olmasını da beraberinde getirecektir.
- İyi bir yazılım mimarisi kaynakları doğru ve verimli şekilde kullandığı için kuruluşların donanım maliyetlerini de oldukça düşürür. Ayrıca daha az donanım daha az enerji tüketimi açısından da önemlidir. Buna ek olarak kaynakların verimli kullanımı uygulamaların performans artışında da etkili olur. Bu da iyi bir kullanıcı deneyiminin olmazsa olmaz parçasıdır. İyi bir kullanımı deneyimi ise sadakati beraberinde getirerek projenin sürdürülebilirliğine katkıda bulunur.
Sonuç olarak, yazılım mimarisinde sürdürülebilirlik, çevresel etkiyi en aza indirmek, kaynak kullanımını optimize etmek ve yazılım sistemlerinin uzun vadeli olmasını ve verimliliği sağlamak açısından büyük bir öneme sahiptir.
Güvenlik
Dijital ortam virüsler, kötü amaçlı yazılımlar ve siber saldırılar dahil olmak üzere potansiyel tehditlerle doludur. Birçok sektörde verilerin ve gizliliğin korunmasına ilişkin katı düzenlemeler vardır. Bu düzenlemelere uymak yalnızca yasal bir gereklilik değil, aynı zamanda müşteriler nezdinde güven ve itibarı korumak için de gereklidir. Bankacılık veya finansal işlemlerle ilgili uygulamalar için ise güvenlik çok daha kritik bir öneme sahiptir. Güvenlik önlemleri, bir sistem içindeki belirli işlevlere veya verilere yalnızca yetkili kullanıcıların erişmesini sağlar. Bu sayede yetkisiz kullanıcıların hassas bilgileri değiştirmesi ya da bunlara erişmesi önlenmiş olur. İyi bir yazılım mimarisi tasarlanırken güvenlik bileşenlerini de göz önünde bulundurur. Veri erişimi, oturumların yönetilmesi, verilerin şifrelenmesi gibi konular mimarinin bir parçası olarak ele alınır. Böylece güvenlik zafiyeti de minimuma indirgenmiş olur.
Proje Yönetimi
İyi bir mimari aynı zamanda proje yönetimini de kolaylaştırır. Hangi modüllerin geliştirileceğinin, kim veya kimler tarafından geliştirileceğinin kolayca belirlenmesi konusunda yardımcı olur. Böylece iş bölümü daha verimli bir şekilde yapılabilir. Buna ek olarak iyi bir mimariye sahip projelerde yapılacak işlerin kilometre taşlarının, eforunun ve bitiş tarihlerinin tutarlı bir şekilde belirlenmesi daha kolaydır. Bu da yöneticilere kaynakların doğru yönetilmesi ve planlamaların doğru yapılması avantajı olarak geri döner.
Dokümantasyon
İyi bir yazılım mimarisinin bize sağladığı en büyük avantajlardan birisi de projenin her bir parçasının dokümantasyonunu oluşturmanın oldukça kolay olmasıdır.
Dokümantasyon büyük yazılım projelerinin olmazsa olmazıdır. Geliştiricilerin, analistlerin ve test mühendislerinin bir yazılım projesinin tasarımını, yapısını ve işlevselliğini anlamasına olanak tanır. Projeye yeni bir ekip üyesi katıldığında veyahut mevcuttaki bir üye üzerinde değişiklik yapılması istenen bir iş hakkında bilgi sahibi olmak istediğinde bu dokümanların yardımı oldukça büyüktür. Bu dokümanlar aynı zamanda ekip üyeleri arasında ortak bir referans görevi göreceği için birlikte çalışmayı kolaylaştırır ve ekip üyelerinin ortak bir anlayışa sahip olmasına yardımcı olur. Böylece yanlış anlaşılmalar da minimum seviyeye iner.
Büyük projelerin yaşam döngüsü boyunca projeye birçok yeni ekip üyesi dahil olur. Bu ekip üyelerinin hızlı adaptasyonu projenin başarıyla ilerlemesi ve kaynakların verimli kullanılması açısından büyük bir öneme sahiptir. İyi bir mimariye sahip projelere yeni bir üye dahil olduğunda adaptasyonu çok daha hızlı gerçekleşir. Bir yazılım geliştiricisi hakkında konuşacak olursak, yazılımcının mimari dokümantasyonu ve ilgili modülün dokümantasyonunu okumasıyla beraber hem mimari hakkında hem de ilgili modül hakkında birçok bilgiye sahip olur. Bu geliştirici bu bilgiler ışığında herhangi bir modül üzerinde geliştirme yapabilir duruma geldiğinde doğal olarak mimari hakkında da fazla bilgiye sahip olur ve diğer modüllerde geliştirme yapması gerektiğinde bunu bir öncekinden daha hızlı gerçekleştirebilir. Aynı şekilde analistlerin ve test mühendislerinin de adaptasyonu bu dokümantasyon sayesinde hızlı bir şekilde gerçekleşir.
Sonuç
Özetlemek gerekirse, yazılım projelerinin yaşamının birçok açıdan minimum sorun ve maksimum verimle ilerleyebilmesi için en önemli etken iyi bir temele sahip olmasıdır. Bir yazılım projesinin temeli ise o yazılımın mimarisidir. Üzerinde kafa yorulmamış bir mimari işleri zorlaştırdığı bazen de içinden çıkılmaz hale getirdiği gibi doğru tasarlanmış mimari performans artışı, karmaşıklığın önlenmesi, hata ve risklere karşı çözümler sunması, kaliteyi artırırken kod maliyetini azaltması gibi projenin sağlıkla ilerleyebilmesi açısından oldukça büyük getirileriyle beraber işleri bir o kadar kolaylaştırır.
Kaynakça
- https://10xers.medium.com/the-importance-of-software-architecture-for-the-success-of-your-project-3abdaed5f335 (07.10.2023)
- Bass, L., Clements, P., & Kazman, R. (2013). Software Architecture in Practice (3rd ed.). Addison-Wesley.