Getting Non-Functional Requirements from Business People

As an architect in the world of software development, I’ve often encountered business stakeholders who, despite their expertise in their respective domains, find themselves out of depth when discussing the nitty-gritty of software requirements. The challenge isn’t their lack of understanding; it’s about bridging the gap between their business needs and the technical solutions we can provide.

In this blog post, I’ll share a couple of conversations starters for each of the ISO 25010 quality attributes (also known as non-functional requirements), which will eventually drive a lot of the software architecture and associated cost.

Functional Suitability

  • Functional Completeness: “Can you describe the tasks and functions you expect the software to perform for your business?”
  • Functional Correctness: “What does ideal performance of these tasks look like in your view?”
  • Functional Appropriateness: “How do you envision these features fitting into your daily business activities?”

Performance Efficiency

  • Time Behavior: “What are your expectations about the time it takes for the software to complete various tasks?”
  • Resource Utilization: “What are your thoughts on how the software should use the existing resources of your computers or systems?”
  • Capacity: “Could you explain the volume of data and the number of users the software should handle?”
  • Scalability: “How do you see the software adapting to the growth of your business in terms of users and workload?”

Compatibility

  • Co-existence: “What other systems or software do you use, and how do you expect this new software to function alongside them?”
  • Interoperability: “What are the types of interactions or data exchanges you expect the software to have with other systems?”

Usability

  1. Appropriateness Recognizability: “What are your thoughts on how new users should experience learning and using the software?”
  2. Operability: “What are your expectations regarding the ease of managing and customizing the software?”
  3. User Error Protection: “How do you think the software should handle mistakes made by users?”
  4. User Interface Aesthetics: “What are your preferences or expectations for the software’s visual design and user interface?”
  5. Accessibility: “What are your requirements or expectations for the software’s accessibility for users with disabilities?”
  6. Maturity: “What is your tolerance for minor bugs or issues in the software, and how often do you think they should occur?”

Reliability

  1. Availability: “What are your thoughts on the acceptable amount of downtime, if any, for the software?”
  2. Fault Tolerance: “In what ways do you expect the software to handle unexpected errors or failures?”
  3. Recoverability: “How do you envision the process of recovering data or regaining functionality after a system failure?”

Security

  • Confidentiality: “Can you describe the types of sensitive information the software will handle and your expectations for its protection?”
  • Integrity: “What is your perspective on maintaining the accuracy and consistency of data within the software?”
  • Non-repudiation: “How important is it for the software to provide proof of transactions or actions that cannot be disputed later?”
  • Authenticity: “What are your expectations for verifying the identities of users accessing the software?”
  • Accountability: “What kind of tracking or auditing of user actions within the software would you consider necessary?”

Maintainability

  1. Modularity: “How do you view the importance of being able to update or modify parts of the software independently?”
  2. Reusability: “What are your thoughts on the potential to reuse parts of this software for different functions in the future?”
  3. Analysability: “How do you see the process of identifying and addressing issues within the software?”
  4. Modifiability: “How do you anticipate your business needs changing, and what would that mean for the software?”
  5. Testability: “What are your thoughts on how the software should be tested for its functionality and performance?”
  6. Deployability: “What are your expectations or preferences regarding the ease of deploying the software in your environment?”

Portability

  • Adaptability: “How do you envision the software adapting to different types of devices or operating systems?”
  • Installability: “What are your thoughts on the installation process of the software?”
  • Replaceability: “How do you feel about the ability to replace this software with a different one in the future, if needed?”

Leave a Reply

Your email address will not be published. Required fields are marked *