Yazılım Mimarisi ve Tasarımına Giriş
Bir sistemin mimarisi, ana bileşenlerini, ilişkilerini (yapılarını) ve birbirleriyle nasıl etkileştiklerini tanımlar. Yazılım mimarisi ve tasarımı, İş stratejisi, kalite özellikleri, insan dinamikleri, tasarım ve BT ortamı gibi birçok katkıda bulunan faktörü içerir.
Yazılım Mimarisi ve Tasarımını iki farklı aşamaya ayırabiliriz: Yazılım Mimarisi ve Yazılım Tasarımı. İçindeArchitectureişlevsel olmayan kararlar, işlevsel ihtiyaçlara göre atılır ve ayrılır. Tasarımda işlevsel gereksinimler yerine getirilir.
Yazılım mimarisi
Mimarlık bir blueprint for a system. Sistem karmaşıklığını yönetmek ve bileşenler arasında bir iletişim ve koordinasyon mekanizması kurmak için bir soyutlama sağlar.
Bir structured solution performans ve güvenlik gibi ortak kalite özelliklerini optimize ederken tüm teknik ve operasyonel gereksinimleri karşılamak için.
Ayrıca, kuruluş hakkında yazılım geliştirmeyle ilgili bir dizi önemli karar içerir ve bu kararların her biri, nihai ürünün kalitesi, sürdürülebilirliği, performansı ve genel başarısı üzerinde önemli bir etkiye sahip olabilir. Bu kararlar aşağıdakilerden oluşur:
Sistemin oluşturulduğu yapısal elemanların ve bunların arayüzlerinin seçimi.
Bu unsurlar arasındaki işbirliğinde belirtilen davranış.
Bu yapısal ve davranışsal unsurların büyük bir alt sistemde bileşimi.
Mimari kararlar iş hedefleriyle uyumludur.
Organizasyona mimari tarzlar rehberlik eder.
Yazılım Tasarımı
Yazılım tasarımı, design planbir sistemin unsurlarını, nasıl uyduklarını ve sistemin gereklerini yerine getirmek için birlikte çalıştıklarını açıklar. Bir tasarım planına sahip olmanın amaçları aşağıdaki gibidir:
Sistem gereksinimlerini müzakere etmek ve müşteriler, pazarlama ve yönetim personeli ile beklentileri belirlemek.
Geliştirme sürecinde bir plan olarak hareket edin.
Ayrıntılı tasarım, kodlama, entegrasyon ve test dahil olmak üzere uygulama görevlerine rehberlik edin.
Ayrıntılı tasarım, kodlama, entegrasyon ve testten önce ve alan analizi, gereksinim analizi ve risk analizinden sonra gelir.
Mimarinin Hedefleri
Mimarinin birincil amacı, uygulamanın yapısını etkileyen gereksinimleri belirlemektir. İyi tasarlanmış bir mimari, teknik bir çözüm oluşturmayla ilgili iş risklerini azaltır ve iş ile teknik gereksinimler arasında bir köprü oluşturur.
Diğer hedeflerden bazıları şu şekildedir:
Sistemin yapısını ortaya çıkarın, ancak uygulama ayrıntılarını gizleyin.
Tüm kullanım durumlarını ve senaryoları gerçekleştirin.
Çeşitli paydaşların gereksinimlerini ele almaya çalışın.
Hem işlevsel hem de kalite gereksinimlerini karşılayın.
Sahiplik hedefini azaltın ve kuruluşun pazar konumunu iyileştirin.
Sistemin sunduğu kaliteyi ve işlevselliği iyileştirin.
Organizasyonda veya sistemde dış güveni artırın.
Sınırlamalar
Yazılım mimarisi, yazılım mühendisliği içinde hala gelişmekte olan bir disiplindir. Aşağıdaki sınırlamalara sahiptir -
Mimariyi temsil etmek için araçların ve standartlaştırılmış yolların eksikliği.
Mimarinin, gereksinimleri karşılayan bir uygulama ile sonuçlanıp sonuçlanmayacağını tahmin etmek için analiz yöntemlerinin eksikliği.
Yazılım geliştirmede mimari tasarımın önemi konusunda bilinç eksikliği.
Yazılım mimarının rolünün anlaşılmaması ve paydaşlar arasında zayıf iletişim.
Tasarım sürecinin, tasarım deneyiminin ve tasarımın değerlendirilmesinin anlaşılmaması.
Yazılım Mimarının Rolü
Bir Yazılım Mimarı, teknik ekibin tüm uygulama için oluşturabileceği ve tasarlayabileceği bir çözüm sunar. Bir yazılım mimarı aşağıdaki alanlarda uzmanlığa sahip olmalıdır -
Tasarım Uzmanlığı
Nesne odaklı tasarım, olaya dayalı tasarım gibi çeşitli yöntemler ve yaklaşımlar dahil olmak üzere yazılım tasarımında uzman
Tasarımın bütünlüğü için geliştirme ekibine liderlik edin ve geliştirme çabalarını koordine edin.
Kendi aralarında tasarım önerilerini ve ödünleşmeleri gözden geçirebilmelidir.
Alan uzmanlığı
Geliştirilmekte olan sistem konusunda uzman ve yazılım evrimi için planlama.
İhtiyaç araştırma sürecine yardımcı olarak eksiksizlik ve tutarlılık sağlar.
Geliştirilmekte olan sistem için alan modelinin tanımını koordine edin.
Teknoloji Uzmanlığı
Sistemin uygulanmasına yardımcı olan mevcut teknolojiler konusunda uzman.
Programlama dili, çerçeve, platformlar, veritabanları vb. Seçimini koordine edin.
Metodolojik Uzmanlık
SDLC (Yazılım Geliştirme Yaşam Döngüsü) sırasında benimsenebilecek yazılım geliştirme metodolojileri konusunda uzman.
Tüm takıma yardımcı olan geliştirme için uygun yaklaşımları seçin.
Yazılım Mimarının Gizli Rolü
Ekip üyeleri arasında teknik çalışmayı kolaylaştırır ve ekipte güven ilişkisini güçlendirir.
Bilgiyi paylaşan ve engin deneyime sahip bilgi uzmanı.
Ekip üyelerini, dikkatlerini dağıtacak ve projeye daha az değer katacak dış güçlerden koruyun.
Mimarın Teslimatları
Açık, eksiksiz, tutarlı ve ulaşılabilir bir dizi işlevsel hedef
En az iki ayrıştırma katmanıyla sistemin işlevsel bir açıklaması
Sistem için bir konsept
En az iki ayrışma katmanına sahip sistem biçiminde bir tasarım
Zamanlama, operatör özellikleri ve uygulama ve operasyon planları hakkında bir fikir
İşlevsel ayrıştırmayı sağlayan bir belge veya süreç takip edilir ve arayüzlerin şekli kontrol edilir
Kalite Özellikleri
Kalite, bir mükemmellik ölçüsü veya eksiklik veya kusurlardan arınmış olma durumudur. Kalite nitelikleri, sistemin işlevselliğinden ayrı olan sistem özellikleridir.
Kalite özniteliklerinin uygulanması, iyi bir sistemi kötü sistemden ayırt etmeyi kolaylaştırır. Öznitelikler, çalışma zamanı davranışını, sistem tasarımını ve kullanıcı deneyimini etkileyen genel faktörlerdir.
Şu şekilde sınıflandırılabilirler -
Statik Kalite Özellikleri
Doğrudan mimari, tasarım ve kaynak kodu ile ilgili bir sistemin ve organizasyonun yapısını yansıtın. Son kullanıcı tarafından görünmezler, ancak geliştirme ve bakım maliyetini etkilerler, örneğin: modülerlik, test edilebilirlik, sürdürülebilirlik vb.
Dinamik Kalite Özellikleri
Sistemin yürütülmesi sırasında davranışını yansıtır. Sistem mimarisi, tasarımı, kaynak kodu, yapılandırması, dağıtım parametreleri, ortamı ve platformu ile doğrudan ilgilidir.
Son kullanıcı tarafından görülebilirler ve çalışma zamanında var olurlar, ör. İş hacmi, sağlamlık, ölçeklenebilirlik vb.
Kalite Senaryoları
Kalite senaryoları, bir hatanın arızaya dönüşmesinin nasıl önleneceğini belirtir. Özellik özelliklerine göre altı bölüme ayrılabilirler -
Source - Teşvik eden kişi, donanım, yazılım veya fiziksel altyapı gibi dahili veya harici bir varlık.
Stimulus - Bir sisteme ulaştığında dikkate alınması gereken bir durum.
Environment - Uyaran belirli koşullar altında gerçekleşir.
Artifact - İşlemciler, iletişim kanalları, kalıcı depolama, işlemler vb. Gibi bir sistemin tamamı veya bir kısmı.
Response - Arızaların tespiti, arızanın giderilmesi, olay kaynağının devre dışı bırakılması gibi uyaranın gelmesinden sonra gerçekleştirilen bir faaliyet.
Response measure - Gereksinimlerin test edilebilmesi için oluşan yanıtları ölçmelidir.
Ortak Kalite Özellikleri
Aşağıdaki tablo, bir yazılım mimarisinin sahip olması gereken ortak kalite özelliklerini listeler -
Kategori | Kalite Özelliği | Açıklama |
---|---|---|
Tasarım Nitelikleri | Kavramsal Bütünlük | Genel tasarımın tutarlılığını ve tutarlılığını tanımlar. Bu, bileşenlerin veya modüllerin tasarlanma şeklini içerir. |
Sürdürülebilirlik | Sistemin bir derece kolaylıkla değişiklik geçirme yeteneği. | |
Tekrar Kullanılabilirlik | Bileşenlerin ve alt sistemlerin diğer uygulamalarda kullanıma uygun olma yeteneğini tanımlar. | |
Çalışma Zamanı Nitelikleri | Birlikte çalışabilirlik | Bir sistemin veya farklı sistemlerin, dış taraflarca yazılan ve çalıştırılan diğer dış sistemlerle iletişim kurarak ve bilgi alışverişinde bulunarak başarılı bir şekilde çalışabilme becerisi. |
Yönetilebilirlik | Sistem yöneticilerinin uygulamayı yönetmesinin ne kadar kolay olduğunu tanımlar. | |
Güvenilirlik | Bir sistemin zaman içinde çalışır durumda kalma yeteneği. | |
Ölçeklenebilirlik | Bir sistemin, ya sistemin performansını etkilemeden yük artışını ya da kolayca genişletilebilme yeteneğini idare etme yeteneği. | |
Güvenlik | Bir sistemin tasarlanan kullanımların dışında kötü niyetli veya kazara eylemleri önleme kabiliyeti. | |
Verim | Belirli bir zaman aralığında herhangi bir eylemi gerçekleştirmek için bir sistemin yanıt verme gücünün belirtilmesi. | |
Kullanılabilirlik | Sistemin işlevsel ve çalışır durumda olduğu zaman oranını tanımlar. Önceden tanımlanmış bir süre boyunca toplam sistem kapalı kalma süresinin yüzdesi olarak ölçülebilir. | |
Sistem Kaliteleri | Desteklenebilirlik | Sistemin, düzgün çalışmadığında sorunları tespit etmek ve çözmek için yararlı bilgiler sağlama yeteneği. |
Test edilebilirlik | Sistem ve bileşenleri için test kriterleri oluşturmanın ne kadar kolay olduğunu ölçün. | |
Kullanıcı Nitelikleri | Kullanılabilirlik | Uygulamanın sezgisel olarak kullanıcı ve tüketicinin gereksinimlerini ne kadar iyi karşıladığını tanımlar. |
Mimari Kalitesi | Doğruluk | Sistemin tüm gereksinimlerini karşılama sorumluluğu. |
Çalışma Zamanı Dışı Kalitesi | Taşınabilirlik | Sistemin farklı bilgi işlem ortamında çalışabilme yeteneği. |
Bütünlük | Sistemin ayrı ayrı geliştirilen bileşenlerinin birlikte doğru çalışmasını sağlayabilme. | |
Değiştirilebilirlik | Her bir yazılım sisteminin, yazılımındaki değişiklikleri barındırma kolaylığı. | |
İşletme kalitesi özellikleri | Maliyet ve zamanlama | Pazara sunma süresi, beklenen proje ömrü ve mirasın kullanımı açısından sistemin maliyeti. |
Pazarlanabilirlik | Sistemin piyasa rekabeti açısından kullanılması. |