Yasal Uyarı: Ben değilim Elder, "Hiçbir savaş planı düşmanla temasını hayatta" diyor Helmuth von Moltke gibi bir çevik bir ortamda mimarı ama. Başka bir deyişle, pratiklikler, kılavuz ilkelerin tam harfinin her zaman izlenemeyeceği anlamına gelir.
Yukarıda belirtilen puanların çoğu takımın elinden geldiğince takip edilir. Bununla birlikte, ilke 1 (Sistemi kodlayan ekipler, sistemi tasarlayan ekipler), ekip farklı kıtalara ve zaman dilimlerine yayılmış onlarca (veya yüzlerce) geliştiriciden oluştuğunda takip etmesi gerçekten zordur . Bu, geliştiricilerin becerileri veya tutumlarıyla ilgisi yoktur, hepsinden daha çok müşterilerin gereksinimlerini toplamak ve mevcut karmaşık sistemleri anlamak için mevcut olan lojistik problemdir.
Peki, sistem tasarımı nasıl yapılır? UML kullanıyor musunuz? Veya arayüzleri ve ana blokları tanımlayan bir belge? Belki başka birşey?
Genellikle mimar ana bileşenleri tanımlar, sonra aralarındaki arayüzleri tanımlar (güvenlik, hız ve güvenilirlik gibi işlevsel olmayan gereksinimler dahil) ve bileşenlerin iç tasarımını bireysel ekiplere devreder . Bu, ekiplerin, herkesin sistem hakkında her şeyi bilmesini gerektirmeden kendi bileşenlerini tasarlamalarına izin vermek arasında iyi bir uzlaşmadır.
Her organizasyonun mimari tasarımlar için kendine özgü standartları vardır ve bu bazen organizasyondan projeye projeye değişebilir. Takımdan önce yapılan bu tasarım, kodlamaya başlamadan veya olabildiğince erken ve genellikle içerir (ve tam bir liste değildir):
- Genişletilmiş gereksinimler ve kapsam tanımı. Bunlar, üst düzey iş gereksinimlerini karşılayan kullanım durumlarını veya kullanıcı hikayelerini içerir. Kişisel olarak RFC 2119'u işlevsel olmayan gereksinimler için kullanmayı seviyorum . Tasarım bunlara dayanıyor ve bunlara dayanıyor. Her ne kadar tasarımın ortak tanımına uymasa da, bunlar genellikle aynı derecede önemlidir.
- Üst düzey bir ağ veya bileşen şemasından ve bir metin sayfasından oluşan genel bakış. Bu, üst yönetimden dev ve QA'ya kadar çok geniş bir kitleye yöneliktir. Bu nadiren geniş kitleden dolayı UML'yi veya tanımlanmış bir gösterimi kullanır.
- Ayrı ayrı bileşenler için ayrıntılar, genellikle yukarıda belirtilen aralarındaki arayüzlere veya API'lere odaklanır. Arayüzler, ön koşul ve son koşul detaylarıyla hedef dilde yöntem imzaları olarak belirtilebilir. Bileşenler, VM'lerin yerleşimini bir bulutta veya veri merkezinde göstermek ve ağ düzenlemelerini göstermek gibi ağ diyagramlarına sahip olabilir. İlişkisel veritabanları genellikle Varlık-İlişki diyagramlarına sahip olacaktır.
- Eğer biliniyorsa, mimari risklerin ve bunların hafifletilmelerinin bir listesi. Gereksinimler gibi, bunlar tasarım kararlarını ve takası da göstermektedir.
Kısacası, çevik bir süreçte bir sistemin tasarımı, geleneksel bir şelale işlemindeki ile tamamen aynıdır. Bununla birlikte, çevik ortamlarda, tasarımın daha azı önceden yapılır ve çoğu da bileşen ekiplerine verilir . Kilit nokta, başlangıçta ne kadar derin olacağı, hangi kararların erteleneceği ve kararların ne zaman yapılması gerektiğinin belirlenmesidir. Birden fazla geliştirme ekibini etkileyen kararlar daha önce alınmalı, özellikle ölçeklenebilirlik ve güvenlik. Zaten uluslararasılaştırılmış bir ürüne ek dil eklemek gibi kararlar çok geç kalıncaya kadar ertelenebilir.
İlk tasarım oluşturulduktan sonra, mimar ekiplerin her biriyle çalışır ve tasarımlarını inceler. Bir iş birimi için ek bir tasarım veya tasarım değişikliği gerekiyorsa (scrum sprint gibi), mimar, işin başladığı zamana kadar hazır bulundurmayı amaçlar. Mimar, etkilenen ekiplere veya paydaşlara yapılan herhangi bir değişikliği iletmekten de sorumludur.