Software Quality Characteristics of a Well-engineered Software

J.E.D.I

1.3 Software Quality Assurance and Techniques

Software quality assurance is a subset of software engineering that ensures that all deliverables and work products are meet, and they comply with user requirements and standards. It is considered as one of the most important activity that is applied throughout the software development process. Its goal is to detect defects before the software is delivered as a final product to the end-users. It encompasses a quality management approach, effective software engineering technology methods and tools, formal technical reviews, a multi-tiered testing strategy, control of software documentation and the changes made to it, a procedure to assure compliance with software development standards, and measuring and reporting mechanism.

1.3.1 Software Quality

A software has quality if it is fit for use, i.e., it is working properly. In order for it to work properly, it should conform to explicitly stated functional and performance requirements users external characteristics, explicitly documented development standards quality standards, and implicit characteristics developers internal characteristics that are expected of all professionally developed software. Three important points should be raised from the definition of software quality. 1. Software Requirements are the foundation from which quality is measured. It is necessary to explicitly specify and prioritize them. 2. Standards define a set of development criteria that guide the manner by which the software is engineered. 3. Implicit characteristics must be identified and documented; they influence the way software is developed such as good maintainability.

1.3.2 Characteristics of a Well-engineered Software

To define a well-engineered software, one takes a look at specific characteristics that the software exhibits. Some of them are enumerated below: • Usability. It is the characteristic of the software that exhibits ease with which the user communicates with the system. • Portability. It is the capability of the software to execute in different platforms and architecture. • Reusability. It is the ability of the software to transfer from one system to another. • Maintainability. It is the ability of the software to evolve and adapt to changes over time. It is characterized by the ease of upgrading and maintaining. • Dependability. It is the characteristic of the software to be reliable, secure and safe. • Efficiency. It is the capability of the software to use resources efficiently. Software Engineering 12 J.E.D.I

1.3.3 Software Quality Assurance Activities