Các yêu cầu rõ ràng tách biệt sẽ giúp dễ dàng hơn để thiết kế hệ thống phù hợp.
Với các yêu cầu không chức năng (tôi thích các thuộc tính chất lượng khái niệm / thuật ngữ - nên cung cấp những hiểu biết mới ngoài chức năng so với không chức năng), bạn quan tâm nhiều hơn đến các thuộc tính của phần mềm hơn là chức năng. Đó là cách hệ thống thực hiện một số chức năng, không chỉ đơn giản là những gì hệ thống làm. Các yêu cầu chất lượng có ảnh hưởng đáng kể đến kiến trúc của hệ thống theo cách mà các yêu cầu chức năng không làm được và vì lý do này, chúng nên được xử lý khác nhau.
Giữ các thuộc tính chất lượng tách biệt với các yêu cầu chức năng cho phép bạn phân tích, chỉ định và ưu tiên các loại yêu cầu khác nhau theo các cách khác nhau. Ví dụ: các thuộc tính chất lượng thường được chỉ định bằng cách sử dụng kịch bản thuộc tính chất lượng trong khi các yêu cầu chức năng có thể ở dạng câu chuyện, trường hợp sử dụng, câu lệnh hoặc bất kỳ định dạng nào khác. Hầu hết các hệ thống tôi đã làm việc có ít hơn một chục thuộc tính chất lượng và nhiều, nhiều yêu cầu chức năng hơn.
Tôi thực sự sẽ giới thiệu một loại yêu cầu khác - những hạn chế kỹ thuật . Một lần nữa, việc phân tách rõ ràng các yêu cầu trong ba nhóm này cung cấp cho bạn các tín hiệu về cách thực hiện sự đánh đổi đúng đắn trong khi xây dựng hệ thống. Các yêu cầu chức năng thường khá dễ thương lượng, các thuộc tính chất lượng sẽ ảnh hưởng lớn đến kiến trúc của bạn và các cấu trúc bạn chọn, các ràng buộc kỹ thuật là không thể thương lượng.
Nếu đây là nhóm của tôi, tôi sẽ nói với họ các yêu cầu nên được chú thích rõ ràng theo loại để đảm bảo chúng tôi không bỏ lỡ điều gì quan trọng trong kiến trúc. Hãy suy nghĩ về các trình điều khiển kiến trúc, không chỉ là chức năng.
Anthony Lattanze trong Kiến trúc hệ thống chuyên sâu về phần mềm: Hướng dẫn cho các học viên đưa ra một cái nhìn tổng quan thực tế về các trình điều khiển kiến trúc và lý do tại sao chúng nên được đối xử khác nhau, toàn diện hơn nhiều so với tóm tắt của tôi ở đây.