Durch die explizite Trennung von Anforderungen wird es einfacher, das richtige System zu entwerfen.
Bei nichtfunktionalen Anforderungen (ich bevorzuge die Qualitätsattribute Konzept / Begriff - sollte neue Erkenntnisse liefern, die über die funktionalen und nicht funktionalen hinausgehen) sind Sie eher mit den Eigenschaften der Software als mit der Funktionalität befasst. Das ist , wie das System eine Funktion ausführt, nicht nur , was das System tut. Qualitätsanforderungen haben einen erheblichen Einfluss auf die Architektur des Systems in einer Weise, wie es die funktionalen Anforderungen nicht tun, und aus diesem Grund sollten sie unterschiedlich behandelt werden.
Wenn Sie die Qualitätsattribute von den funktionalen Anforderungen trennen, können Sie verschiedene Arten von Anforderungen auf unterschiedliche Weise analysieren, spezifizieren und priorisieren. Beispielsweise werden Qualitätsattribute normalerweise mithilfe eines Qualitätsattributszenarios angegeben, während funktionale Anforderungen in Form von Storys, Anwendungsfällen, Soll-Aussagen oder einer anderen Anzahl von Formaten vorliegen können. Die meisten Systeme, an denen ich gearbeitet habe, hatten weniger als ein Dutzend Qualitätsattribute und viele, viele weitere funktionale Anforderungen.
Ich würde tatsächlich eine andere Art von Anforderungen einführen - technische Einschränkungen . Wenn Sie die Anforderungen erneut explizit in diese drei Bereiche unterteilen, erhalten Sie Hinweise, wie Sie die richtigen Kompromisse beim Aufbau des Systems eingehen können. Funktionale Anforderungen sind oft verhandelbar, Qualitätsmerkmale beeinflussen Ihre Architektur und die von Ihnen gewählten Strukturen stark, technische Einschränkungen sind nicht verhandelbar.
Wenn dies mein Team wäre, würde ich ihnen sagen, dass die Anforderungen eindeutig nach Typ kommentiert werden sollten, um sicherzustellen, dass wir nichts Wichtiges in der Architektur verpassen. Denken Sie an die architektonischen Treiber, nicht nur an die Funktionalität.
Anthony Lattanze in Architecting Software Intensive Systems: Ein Practitioners Guide gibt einen praktischen Überblick über architektonische Treiber und warum sie anders behandelt werden sollten, viel umfassender als meine Zusammenfassung hier.