Jawne oddzielenie wymagań ułatwi zaprojektowanie odpowiedniego systemu.
W przypadku niefunkcjonalnych wymagań (wolę atrybuty jakości koncepcji / terminu - powinny one zapewnić nowy wgląd poza funkcjonalny niż niefunkcjonalny), bardziej zależy Ci na właściwościach oprogramowania niż na funkcjonalności. W ten sposób system wykonuje jakąś funkcję, a nie tylko to, co robi system. Wymagania jakościowe mają znaczący wpływ na architekturę systemu w sposób, którego nie spełniają wymagania funkcjonalne iz tego powodu powinny być traktowane inaczej.
Oddzielenie atrybutów jakości od wymagań funkcjonalnych pozwala analizować, określać i ustalać priorytety różnych rodzajów wymagań na różne sposoby. Na przykład atrybuty jakości są zwykle określane przy użyciu scenariusza atrybutu jakości, podczas gdy wymagania funkcjonalne mogą przybrać formę opowieści, przypadków użycia, instrukcji oświadczeń lub dowolnej innej liczby formatów. Większość systemów, nad którymi pracowałem, miała mniej niż tuzin atrybutów jakości i wiele, wiele innych wymagań funkcjonalnych.
W rzeczywistości wprowadziłbym inny rodzaj wymagań - ograniczenia techniczne . Ponownie, wyraźne podzielenie wymagań na te trzy segmenty daje wskazówki, jak dokonać właściwych kompromisów podczas budowania systemu. Wymagania funkcjonalne są często dość negocjowalne, atrybuty jakości będą miały duży wpływ na twoją architekturę i wybrane przez ciebie konstrukcje, ograniczenia techniczne nie podlegają negocjacji.
Gdyby to był mój zespół, powiedziałbym im, że wymagania powinny być wyraźnie opisane według rodzaju, aby upewnić się, że nie umknie nam coś ważnego w architekturze. Pomyśl o sterownikach architektonicznych, a nie tylko o funkcjonalności.
Anthony Lattanze w oprogramowaniu architektonicznym Intensywne systemy: przewodnik dla praktyków daje praktyczny przegląd sterowników architektonicznych i dlaczego należy je traktować inaczej, znacznie bardziej kompleksowo niż moje streszczenie tutaj.