An INTRODUCTION TO SOFTWARE QUALITY Presented By Lipsa Rajnandini Sandeep Kumer Behera Santwana Sahu
Objective:
Ø To study the characteristics of software quality and techniques for improving software quality
INTRODUCTION: Ø Software is a general term for the various kinds of programs used to operate computers and related devices. q A program is a specific set of ordered operations for a computer to perform
Ø Systems software : Includes the operating system and all the utilities that enable the computer to function. Ø Applications software : Includes programs that do real work for users. For example, word processors, spreadsheets, and database management systems..etc
SOFTWARE QUALITY: Ø External Characteristics: What a system’s user is interested in; typically properties of any single particular system Ø Internal Characteristics : What programmers/management are interested in; properties of the development of a collection of systems (all versions of a particular system, related systems, etc.)
CONT…
EXTERNAL CHARACTERISTICS: Ø Correctness: Degree to which system is free from faults in specification, design and implementation Ø Usability: The ease with which users can learn and use a system Ø Efficiency: Minimal use of system resources incl. memory and execution time Ø Reliability: The ability of a system to perform whenever required without/with few failures Ø Integrity: Prevention of unauthorized or improper use (allowed permissible users and data) Ø Adaptability: Usability in other applications than the original one Ø Accuracy: Degree of ‘quantitative’ correctness Ø Robustness: Functioning
INTERNAL CHARACTERISTICS: • Maintainability: Ease of modifying software for changing/adding capabilities, improving performance, correcting defects • Flexibility: Extent of modifying system for other uses/environments • Portability: Ease of modifying system for operating in different environment • Reusability: Extent of using parts in other systems • Readability: Ease of reading and understanding source code • Testability: Support for unit- and system-testing • Understandability: Ease of comprehension of a system’s organization at high and low levels.
TECHNIQUES FOR IMPROVING SOFTWARE QUALITY: Ø
Explicit software quality objectives: Making clear which qualities are most important
Ø Testing strategy: Planning and conducting unit- and system testing Ø Software engineering guidelines: Recommendations/rules/standards requirements analysis, design, coding, testing
for
Ø Informal technical reviews: Reviewing specifications, design, code alone or with peers Ø Formal technical reviews: Formal reviews at well-defined milestones (requirements/architecture, architecture/detailed design, detailed design/coding, coding/testing)
CONT… Ø External audits: Technical review conducted by outside personnel, usually commissioned by management Ø Development process: Development process with explicit risk management Ø Change-control procedures: Explicit procedures for changing requirements, design, code; documenting them and checking them for consistency Ø Measurement of results: Measuring effects of quality assurance activities Ø Prototyping: Developing realistic models of a system's key functions. Ø Mathematical proof: Formal verification of correctness and robustness properties Ø Modular programming techniques: Design by contract Defensive programming
EFFECTIVENESS OF TECHNIQUES: Ø Different techniques are good at finding different kinds of errors Ø Different people find different errors (using the same technique) Ø Reviewing finds more errors than testing Ø Corollary: High quality requires multiple techniques and multiple people
Timeliness of defect detection: Ø Late defect detection costs much more than early defect detection q E.g., specification error detected after coding is much more costly than if detected before or during design Ø Corollary: Quality assurance must be built into the project throughout its stages
CONT…
CONCLUSION:
Ø General Principle of Software Quality: Improving quality reduces development costs.