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?”