This project is read-only.

Quality Attribute Questions List

J.D. Meier, Alex Homer, Jason Taylor, Prashant Bansode, Lonnie Wall, Rob Boucher, Akshay Bogawat

Contents

  • General
  • Availability
  • Conceptual Integrity
  • Flexibility
  • Interoperability
  • Maintainability
  • Manageability
  • Performance
  • Reliability
  • Reusability
  • Scalability
  • Security
  • Supportability
  • Testability
  • User Experience / Usability

General

  • How do I gather the quality attributes requirements?
  • Why it is necessary to identify the quality attributes requirements upfront?
  • How do I analyze the trade-offs against various quality attributes?\
  • What are the various methods for analyzing quality attributes trade-offs?

Availability

  • How do I arrive at the availability requirements?
  • What are the application factors affecting availability?
  • What are the infrastructure factors affecting availability?
  • What are the vulnerabilities affecting availability?
  • How to secure application for minimizing the vulnerabilities?
  • How do I redice the attack surface area?
  • How do I manage application installation and software updates for better availability?

Conceptual Integrity

  • What is conceptual integrity and why is it necessary to maintain?
  • How do I evolve the system without breaking clients?
  • How do I create a migration path away from legacy technologies?
  • How do I isolate the application from external dependencies?

Flexibility

  • How do I design system for dealing with dynamic business rule?
  • How do I design system for dealing with dynamic UI?
  • How do I design system for changing/growing business needs?
  • How do I design components for better reusability?

Interoperability

  • How can systems interoperate yet evolve separately or even be replaced?
  • Can service interface, layer super type and/or mapping layer be used to isolate the participants?
  • What are the requirements for interacting with external or legacy systems?
  • What is boundary bleeding and how does it affect interoperability?
  • How to handle different data formats from external or legacy systems?

Maintainability

  • What are the issues in a system difficult to maintain?
  • How do I implement cross-cutting components?
  • What are the consequences of tight coupling between components or layers?
  • How do I implement pluggable components?
  • How do I separate the functionality for cross-cutting concerns from application-specific code?

Manageability

  • How do I design system for changing behavior or operational situation at run time based on load?
  • How do I monitor aspects of the system's operation/health?
  • How do I design custom instrumentation to report back to the business?
  • How do I measure how many transactions are being processed per hour?

Performance

  • How do I arrive at the performance requirements?
  • How do I design the system using expensive resources?
  • How do I design system for communicating across physical boundaries?
  • How does caching affect performance?
  • How does communication strategy affect performance?
  • How do I structure my application considering performance requirements?

Reliability

  • How do I design system which relies on external unreliable systems?
  • How do I design for replay/retry operations?
  • What are the infrastructure factors affecting availability?
  • How do I handle invalid input data?

Reusability

  • What are the reusability requirements within application?
  • What are the reusability requirements across multiple applications?
  • How do I implement cross-cutting components?
  • How do I design for platform-agnostic data types?

Scalability

  • How do I arrive at the scalability requirements?
  • How do I choose between scaling out and scaling up?
  • What are the application factors affecting scalability?
  • What are the infrastructure factors affecting scalability?
  • How does effective deployment strategy for scalable system?
  • How do I design system for spikes in traffic and load?

Security

  • Which layers and components should implement authentication?
  • What are the vulnerabilities affecting unsecure system?
  • Which layers should trust the user?
  • How do I choose an authentication strategy?
  • When should I use custom authentication?
  • How is user credential passed between layers?
  • How do I secure database?
  • How do I secure cached information?

Testability

  • What are various patterns to improve testability?
  • How do I design components to be separately tested?
  • Why should I use automated tools for testing?
  • How do I design automate user interaction tests?
  • How do I test asynchronous components?

User Experience / Usability

  • What are effective interaction patterns?
  • How to determine user experience acceptance criteria?
  • How to improve responsiveness to the user?
  • What's the difference between MVC and MVP?
  • Which UI technology should be used?
  • How to enhance visual experience?
  • How to choose type of controls?
  • How to choose patterns for control?

Last edited Oct 16, 2008 at 12:37 AM by prashantbansode, version 1

Comments

No comments yet.