Sunday, April 12, 2009

Software Quality Attribute

Software of any size has quality attributes. These quality attributes decides the fate of that software from its idea/inception to its retirement. These quality attributes are independent of its size – enterprise, embedded, desktop, etc; architectural philosophies followed – SOA, Message Driven, Object Oriented, Procedure Oriented, etc; nature – real time, near real time, batch mode, synchronous, asynchronous, etc; usage – project & product; etc. For the ease of understanding these attributes may be classified as:

1. Business Quality Attributes
2. System Quality Attributes
3. Architecture Quality Attributes
4. Design Quality Attributes
5. Implementation & Support Quality Attributes

1. Business Quality Attributes: As name implies these attributes are interest of business persons and directly affect viability of software.
a. Target Market Segment
b. Time to market
c. Roll out schedule
d. Team composition – at each stage of SDLC
e. Resource Composition – at each stage of SDLC
f. Availability and cost of skill set
g. Legacy system integration
h. Legal Compliance

2. System Quality Attributes: These attributes are essentially non functional requirements. Few of them are listed:
a. Re-usability
b. Evolve-ability
c. Test-ability
d. Portability
e. Scalability
f. Integr-ability
g. Interoperability
h. Platform independence
i. Changeability
j. Maintainability
k. Security
l. Understandability
m. Availability
n. Reliability
o. Efficiency (Efficient usage of resources)

3. Architectural Quality Attributes: These attributes help in defining architectural foundation of software.
a. Completeness
b. Correctness
c. Conceptual integrity
d. Level of Compliance – Legal
e. Level of Compliance – Standards
f. Build-ability
g. Modularity
h. Loose coupling
i. Separation of concern
j. Backward and forward compatibility
k. Technology and Platform Selection
l. Outsource-ability

4. Design Quality Attributes: These attributes are derivatives of System and Architectural quality attributes. But these are very important and lay foundation of successful implementation and support.
a. Trace-ability
b. Information hiding and encapsulation
c. Abstraction
d. Loose Coupling
e. Reusability
f. Self documentation
g. Separation of concern
h. Increment-ability
i. Design for change
j. Patch-ability
k. Usage of contemporary standards
l. Usage of contemporary best practices
m. Usage of appropriate design patterns

5. Implementation and Support Quality Attributes: These are the attributes which governs coding to retirement of software. Few of the quality attributes at this stage are resultant of System, Architecture and Design quality attributes and remaining can trace their origin in SDLC methodology followed, business decisions and environmental conditions.
a. Outsource-ability
b. Testability
c. Definition of SLAs
d. Trace-ability
e. Modular-ability

No comments:

Post a Comment