Software Engineering Software quality
Software quality characteristics: External: user is aware of. User cares about. Internal: programmer is aware of. Programmer cares about. User does not care about.
Software quality External software quality: Correctness. Usability. Efficiency. Reliability. Integrity. Adaptability. Accuracy. Robustness.
Software quality Internal software quality: Maintainability. Flexibility. Portability. Reusability. Readability. Testability. Understandability.
Software quality External software quality – synergy: + = help each other - = mess with each other O = indifferent
Software quality Software quality programme: Explicit software quality goals. Explicit quality assurance activity. Testing strategy. Software engineering guidelines. Informal technical reviews. Formal technical reviews. External audits.
Software quality Development process for quality assurance: Change-control procedures. Measurability / measurement of results. Prototyping.
Software quality How to compare quality programmes: Percentage of defects detected. Cost of finding defects. Cost of fixing defects. Typically, empirical analysis.
Software quality When to do quality assurance: The earlier a defect is captured and fixed, the less expensive are its consequences. Quality assurance should start together with the software project.
Software quality General principle of software quality: Improving quality reduces development costs.
Software quality Quality assurance plan checklist: Have you identified specific quality characteristics that are important to your project? Have you made others aware of the project's quality objectives? Have you differentiated between external and internal quality characteristics? Have you thought about the ways in which some characteristics might compete with or complement others?
Software quality Quality assurance plan checklist: Does your project call for the use of several different error-detection techniques suited to finding different kinds of errors? Does your project include a plan to take steps to assure software quality during each stage of software development? Is the quality measured in some way so that you can tell whether it is improving or degrading? Does management understand that quality assurance incurs additional costs up front in order to save costs later?