What is quality? How do we define quality?

J.E.D.I

1.2 Quality within the Development Effort

As was mentioned in the previous section, quality is the mindset that must influence every software engineer. Focusing on quality in all software engineering activities reduces costs and improves time-to-market by minimizing rework. In order to do this, a software engineer must explicitly define what software quality is, have a set of activities that will ensure that every software engineering work product exhibits high quality, do quality control and assurance activities, and use metrics to develop strategies for improving the software product and process. 1.2.1 What is quality? Quality is the total characteristic of an entity to satisfy stated and implied needs. These characteristics or attributes must be measurable so that they can be compared to known standards. 1.2.2 How do we define quality? Three perspectives are used in understanding quality, specifically, we look at the quality of the product, quality of the process, quality in the context of the business environment 2 . Quality of the Product Quality of the product would mean different things to different people. It is relative to the person analyzing quality. For end-users, the software has quality if it gives what they want, when they want it, all the time. They also judge it based on ease of use and ease in learning to use it. They normally assess and categorized quality based on external characteristics such as number of failures per type of failure. Failures are categorized as minor, major and catastrophic. For the ones developing and maintaining the software, they take a look at the internal characteristics rather than the external. Examples of which includes errors or faults found during requirements analysis, designing, and coding normally done prior to the shipment of the products to the end- users. As software engineers, we build models based on how the users external requirements relate to the developers internal requirements. Quality of the Process There are many tasks that affects the quality of the software. Sometimes, when a task fails, the quality of the software suffers. As software engineers, we value the quality of the software development process. Process guidelines suggests that by improving the software development process, we also improve the quality of the resulting product. Common process guidelines are briefly examined below. • Capability Maturity Model IntegrationCMMI. It was formulated by the Software Engineering Institute SEI. It is a process meta-model that is based on a set of system and software engineering capabilities that must exists within an organization as the organization reaches different level of capability and 2 Pfleeger, Shari Lawrence, Software Engineering Theory and Practice, International Edition, Singapore: Prentice-Hall, 1999, p. 10-14 Software Engineering 10 J.E.D.I maturity of its development process. • ISO 9000:2000 for Software. It is a generic standard that applies to any organization that wants to improve the overall quality of the products, systems or services that it provides. • Software Process Improvement and Capability Determination SPICE. It is a standard that defines a set of requirements for software process assessment. The intent of the standard is to assist organization in developing an objective evaluation of the efficacy of any defined software process. Quality in the Context of the Business Environment In this perspective, quality is viewed in terms of the products and services being provided by the business in which the software is used. Improving the technical quality of the business process adds value to the business, i.e., technical value of the software translates to business value. It is also important to measure the value of the software in terms of business terminologies such as how many sales orders were processed today?, dollar value on return on investments ROI etc. If the software does not add value to the business, why do we need it in the first place? 1.2.3 How do we address the Quality Issues?