Gereksinimleri açıkça ayırmak, doğru sistemi tasarlamayı kolaylaştıracaktır.
İşlevsel olmayan gereksinimlerle (kavram / terim kalite özelliklerini tercih ediyorum - işlevsel değil işlevsel değil ötesinde yeni bilgiler sağlamalıyım), işlevsellikten ziyade yazılımın özellikleriyle daha fazla ilgilenirsiniz . Yani nasıl sistem bazı işlev değil, basitçe gerçekleştirir ne sistem yok. Kalite gereklilikleri, fonksiyonel gerekliliklerin yapmadığı şekillerde sistemin mimarisi üzerinde önemli bir etkiye sahiptir ve bu nedenle farklı şekilde ele alınmalıdır.
Kalite niteliklerini fonksiyonel gereksinimlerden ayrı tutmak, farklı gereksinimleri farklı şekillerde analiz etmenize, belirlemenize ve önceliklendirmenize olanak tanır. Örneğin, kalite öznitelikleri normalde bir kalite özniteliği senaryosu kullanılarak belirtilirken , işlevsel gereksinimler öyküler, kullanım senaryoları , kurallar veya diğer herhangi bir sayıda biçim şeklinde olabilir. Üzerinde çalıştığım sistemlerin çoğunun bir düzineden az kalite özelliği ve daha birçok fonksiyonel gereksinimi vardı.
Aslında başka bir tür gereksinim getireceğim - teknik kısıtlamalar . Yine, gereksinimleri bu üç kovaya açıkça ayırmak, sistemi kurarken doğru değiş tokuşların nasıl yapılacağına dair ipuçları verir. İşlevsel gereksinimler genellikle oldukça tartışılabilir, kalite özellikleri mimarinizi ve seçtiğiniz yapıları büyük ölçüde etkiler, teknik kısıtlamalar pazarlık edilemez.
Bu benim ekibim olsaydı, mimaride önemli bir şeyi kaçırmamamız için gereksinimlerin türüne açıkça eklenmesi gerektiğini söylerdim. Sadece işlevselliği değil, mimari sürücüleri de düşünün.
Mimar Yazılım Yoğun Sistemlerde Anthony Lattanze : Bir Uygulayıcı Kılavuzu , mimari sürücülere ve neden farklı muamele görmeleri gerektiğine dair pratik bir genel bakış sunuyor, buradaki özetimden çok daha kapsamlı.