Hafif mimari değerlendirmesi yapmak için iyi bir yöntem nedir?


9

Teknik Mimari Tradeoff Analiz Yöntemi (ATAM) ve daha iş odaklı Maliyet Fayda Analiz Yöntemi ( CBAM) gibi mimari değerlendirme yöntemlerini biliyorum . Bununla birlikte, bu yöntemler oldukça büyük ölçeklidir: birkaç beyin fırtınası oturumu, sunum, gelenekleri tanımlayan bir dizi senaryo geliştirilmesi vb. Reçete ederler. küçük olsalar da, oldukça dik kalite kısıtlamalarına (performans, ölçeklenebilirlik, uyarlanabilirlik) sahip olan bir avuç geliştirici (veya daha az) tarafından geliştirildi.

Geçmişte kullandığım tipik bir uygulama, uygulama için genel bir mimari bulmak için bir geliştiriciye (veya bir ekibin varsa bir mimara) sahip olması ve daha sonra onu bir ekiple tartışmaktır. çizilmesi ve anlaşılması kolay bazı sahte UML gösterimleri. Bu genellikle geri bildirime ve mimaride bazı tekrarlara yol açar. Ancak biraz fazla gayri resmi olma eğilimindedir, bu da daha sonra yanlış kararlar verebilecek her türlü varsayımda bulunulmasına neden olur.

ATAM gibi yöntemler genellikle herkesin en azından mimarlık tam olarak ne üzerine tartışmalara yol kabul edene kadar mimarisi, derinden düşünmeye bütün paydaşları zorlamak olduğunu .

Herkesin hafif ön cephe mimari değerlendirmesi yapma deneyimi var mı? Öyleyse, iyi uygulamalar nelerdir?

Yanıtlar:


6

Hafif değerlendirmenin anahtarı doğru şeyleri doğru zamanda değerlendirmektir. Bunu etkili bir şekilde yapmanın iki yolu var. İle senaryo bazlı değerlendirmede yüksek öncelikli kalite özelliklerine sadece odaklanan değerlendirme sürmek için kalite niteliği senaryoları ve kullanım durumlarını kullanır. İle risk esaslı değerlendirme riskleri belirlemek ve belirlenen riskleri sizin mimari tasarım faaliyetleri kullansın.

Bu iki yaklaşımı (biraz ilgili) inceleyen, önerebileceğim iki kitap var.

Anthony Lattanze tarafından tasarlanan Mimar Yazılım Yoğun Sistemler Mimari Merkezli Tasarım Metodolojisini tanıtıyor ve hafif senaryo tabanlı değerlendirmeleri içeriyor. Lattanze'yi SEI'nin Kalite Özellikleri Çalıştayı'ndan tanıyabilirsiniz ve benzer fikirler söz konusudur.

Yeterli Yazılım Mimarisi: George Fairbanks tarafından Risk Odaklı Bir Yaklaşım , bir yazılım sisteminin mimarisini tasarlamak ve değerlendirmek için risk odaklı bir yaklaşım getiriyor. Önizleme yapmak istiyorsanız web sitesinde bazı ücretsiz bölümler de var . Bu kitaptaki ilkeler hemen uygulanabilir olsa da, yaklaşım belirli bir yöntemle gelmez, bu nedenle diğer alanlardan fikirleri birleştirmeniz gerekir. Risklerin tanımlanması / önceliklendirilmesi için SEI'nin sürekli risk yönetimi yaklaşımını önemle tavsiye ederim .

Bu yaklaşımların arkasındaki temel fikir, sonuna kadar beklemek yerine değerlendirmeyi (ve tasarımı) azaltarak değerlendirmektir. Bu kesinlikle bir beyaz tahta etrafında konuşmaktan biraz daha ağır olsa da, tamamen patlamış bir ATAM kadar pahalıya mal olmaz. Ve rahatsanız, özel ihtiyaçlarınızı karşılamak için kiraz uygulamaları seçebilirsiniz.

Değerlendirmeyi yönlendirmek için hangi yaklaşımı kullanırsanız kullanın, genel fikir aynı olacaktır ...

Başlamadan önce:

  • Öncelikli kalite özniteliği senaryoları veya riskleri (sahip olduğunuz tek şey bu ise gayri resmi olabilir)
  • Gitme / gitmeme kararı için net tanım (mimarinin "yeterince iyi" olduğunu nasıl biliyorsunuz)
  • Mimari açıklamanın en son kesimi (değerlendirmekte olduğunuz eser)

Bir değerlendirme oturumu için oturun:

  • Mimar mimariye genel bir bakış sunar
  • Bir görünümde gezinin, senaryonun veya riskin nasıl karşılandığını gösterin
  • Sorunlar daha sonra giderilmek üzere kaydedilir
  • Roller ve genel prosedür, Fagan denetimi için kullanılana (mimar veya yazar, moderatör, kayıt cihazı) benzer.
  • Oturum, sisteminizin boyutuna bağlı olarak bir veya iki saat kadar sürebilir.

Oturum bittiğinde:

  • Tanımlanan sorunları gözden geçirin ve devam etme / devam etmeme ölçütlerinin karşılanıp karşılanmadığını belirleyin. Genellikle her şeyi halletmek için yaklaşık 3 yorum alır. Karşılanmadıysa, hassaslaştırmaya ve denemeye devam edin (veya mimari riskleri azaltın).
  • Bu bir "ya hep ya hiç" değerlendirmesi değildir - mimarinizin farklı bölümleri "geçebilir", diğerleri ise yine de geliştirmeye ihtiyaç duyar.

Senaryo tabanlı yaklaşımın nasıl olabileceğine dair bir fikir vermenize yardımcı olmak için , grad okulunda üzerinde çalıştığım bir capstone projesinden bazı kamu belgeleri var . Dokümantasyon biraz zor, ancak ACDM bağlamında senaryoya dayalı yaklaşımın bazı örneklerinin verilmesine yardımcı olabilir. Biz 5 kişilik bir ekiptik ve yaklaşık 35 KLOC Java / GWT gibi web tabanlı tipik bir uygulama geliştirdik.


Teşekkürler Michael, mükemmel cevap ve hemen uygulayabileceğim bir şey.
Deckard

2

Başlamak için resmi olmayan beyaz tahta tartışmalarını seviyorum. Uygulamanın sadece bugün gerekli olan kısmını yazmaktan hoşlanıyorum ve daha sonra mimarlığın uygulama sırasında yavaş yavaş ortaya çıkmasına izin veriyorum. Önceden icat etmeye çalışmaktan ziyade "mimariyi bulmak" gibidir. Bu yaklaşım çok fazla ön değerlendirme gerektirmez ve neyin önemli olduğuna odaklanmanıza yardımcı olur (çalışan yazılım sunun).

Tabii ki, işlevsel olmayan gereksinimleriniz gerektiriyorsa (bellek kısıtlamaları, yanıt süreleri, eşzamanlı kullanıcı sayısı vb.), Sistemi uygularken bunu dikkate almalısınız.


1
Katılıyorum, mimariyi geliştirmenin iyi olduğunu - ekip, uğraştığınız alanda ve niteliklerde deneyimli olduğu ve doğru zamanda doğru riskleri yönetebildiği sürece.
Michael
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.