Wednesday, October 28, 2009

On Software Quality Factors

Software Quality can be looked at from different angles in software development. These quality aspects manifest themselves at different situations and usually in combination. Some of the quality factors are listed below – these are usually referred to as software ‘ilities’ (based on the last five letters of their names). Some people argue against paying attentions to such factors as all of them may emerge in software development if the project development team uses the proper engineering principles. My take is that these factors provide conceptual clarity on the aspects of software quality at least at the higher level. I used the IEEE definition of these quality factors.

Reusability: The degree to which a software module or other work product can be used in more than one computing program or software system [IEEE]. It is the ability of a component/module to function and integrate in more than one environment. It is always manifested in and is considered as characteristics of high quality software. To achieve this quality, component or modules should be designed and implemented so that they can be reused in many different systems.

Maintainability:The ease with which a software system or component can be modified to correct faults, improve performance, or other attributes, or adapt to a changed environment [IEEE]. Maintainability provides a way of measuring the ease with which a program can be corrected if an error is encountered, adapted if its environment changes, or enhanced if the customer desires a change in requirements.

Flexibility: The ease with which a system or component can be modified for use in applications or environments other than those for which it was specifically designed [IEEE]. This concept encompasses the hardware, software and software combination in using a system. It is the effort required to modify an operational programs when environment of the system where it is running is changed.

Testability: The effort required to test a program to ensure that it performs its intended function.

Extensibility: It refers to the ease with which a program or module can be adopted with newer requirements with out affecting the existing one. It is the ability or property of a module that allows changes in many aspects such as performance, functionality, etc… within the same existing framework while retaining partial or complete compatibility among systems that belong to the same framework. Extensibility like other qualities can be achieved in varying degrees. An extensible system allows easy addition of new designs in an exiting one.

Related Post:

On Practices in Design: Modular Design (Modularity)

No comments:

Post a Comment