Become a member

Sunday, August 5, 2007

Quality Attributes

Architecture concerns with non functional attributes of the system as required by the stakeholders. These are quality attributes and here is a list of them and what they mean. The quality attributes which are most important to a system vary from appication to application and there can be some which are very unique to a specific system. Generally performance and scalabiltiy are concerns in most of the systems. Functionality and quality attributes are orthogonal. These are also refered as "ilities" and here some of the most common ones. Architect needs to create scenarios for the most important qualities as identified with stakeholder participation and be able to verify the architecture against those scenarios. 1. performance

Performance is about timing. Events occur and system must respond to them. Performance is oncerned with how long it takes the system to respond when an event occurs.

2. scalabilty

This is the capability of a system to increase total throughput under an increased load when resources (typically hardware) are added.

3. reliability

The ability of a system or component to perform its required functions under stated conditions for a specified period of time. 4. modifiability Modifiability is about the cost of change. 5. Maintainability

This is about the characteristics of the components of the system to be which allow easy change to respond to business needs at minimum cost and impact to other components and fuctionality of the system.

6. interoperabilty The capability to communicate, execute programs, or transfer data among various functional units in a manner that requires the user to have little or no knowledge of the unique characteristics of those units. 7. usability This is concerned with how easy it is for the user to accomplish a desired task and the kind of user support the system provides. 8. security

Security is a measure of the systems ability to resist unauthorised usage while still providing its services to legitimate users.

9. Testability

The ease with which the software can be made to demonstrate its faults through testing. 10. reusability

Reusability is the likelihood a segment of source code or a module can be used again to add new functionalities with slight or no modification.

11. supportability (serviceability) The ability of technical support personnel to troubleshoot or perform root cause analysis in pursuit of solving a problem with a product. 12. availability This is concerned with system failure and its associated consequences. 13. portability How easily the system can be adapted to a new environment. For a detail discussion of the quality attributes and the concerns they raise refer to "Software Architecture in Practice" of the SEI series.

No comments: