0% found this document useful (0 votes)
618 views49 pages

Software Quality Management

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1/ 49

Software Quality Management:

Managing the quality of the software process and products

Software Engineering

Acknowledgments
n

This presentation is mainly based on slides of Ian Sommerville accompanying the book Software Engineering, 6th edition, Addison-Wesley, 2001

Objectives
n

To introduce the notion of software quality and describe common software quality attributes and quality-factors To introduce the verification and validation process To introduce the software quality management process and key quality management activities To explain the role of standards in software quality management To explain the main approaches to verification and validation and quality control: testing, inspections and reviews and measurements To explain why formal development methods are important to improve software quality

Index
n

Introduction to software quality


software product, software development process, product quality, product quality attributes, product quality factors, quality of service, process quality, quality-related activities

Quality assurance and standards Quality planning and control Software testing Software inspections and reviews Software measurement and metrics The role of formal methods Conclusions

Product and process


Business System
goals

Demand Costumer or Market Product or Service


Is a Is a

Business Process

resources

software product

software development process

What is a software product?


n

Software product = computer programs (sources and executables) + associated documentation Software products may be
Custom - developed for a particular customer, according to its specifications Generic (package) - developed for a general market, to be sold to a range of different customers

Types of software products


Business support software
- Includes software engineering tools in the software engineering business

Personal productivity software


- spreadsheets, word processing tools,

Embedded software

What is a software development process?


n

Is the definition of a set of activities whose goal is the development or evolution of a software product To be followed/instantiated in individual software development projects Its the main business process in a software development business Generic activities in all software processes are: Specification - what the system should do and its development constraints Development - production of the software system Validation - checking that the software is what the customer wants Evolution - changing the software in response to changing demands

New or changed requirements (problem)

Software Development Process

New or changed software product (solution)

The importance of software


n

The economies of ALL developed nations are dependent on software More and more systems are software controlled Including an increasing number of safety-critical and mission-critical systems, with high demands on dependability More and more businesses depend on software for their success Software and Information Systems are critical success factors in an increasing number of businesses and organizations Software engineering expenditure (in the development and maintenance of software products) represents a significant fraction of GNP (Gross National Product) in all developed countries

What is product quality?


n

Quality, simplistically, means that a product should meet its specification The software product should deliver the required functionality (functional requirements) with the required quality attributes (nonfunctional requirements) This is problematical for software systems Tension between customer quality requirements (efficiency, reliability, ...) and developer quality requirements (maintainability, reusability, ...) Some quality requirements are difficult to specify in an unambiguous way Software specifications are usually incomplete and often inconsistent The quality compromise: we cannot wait for specifications to improve before paying attention to quality, and procedures must be put into place to improve quality in spite of imperfect specification Quality attributes are frequently conflicting and increase development costs, so there is a need for weighting and balancing Software engineering is concerned with the cost-effective development of good software

The current status of software quality


n

Microsoft Windows XP End-User License Agreement: 11. LIMITED WARRANTY FOR PRODUCT ACQUIRED IN THE US AND CANADA. Microsoft warrants that the Product will perform substantially in accordance with the accompanying materials for a period of ninety days from the date of receipt. () If an implied warranty or condition is created by your state/jurisdiction and federal or state/provincial law prohibits disclaimer of it, you also have an implied warranty or condition, BUT ONLY AS TO DEFECTS DISCOVERED DURING THE PERIOD OF THIS LIMITED WARRANTY (NINETY DAYS). () Some states/jurisdictions do not allow limitations on how long an implied warranty or condition lasts, so the above limitation may not apply to you. () YOUR EXCLUSIVE REMEDY. Microsoft's and its suppliers' entire liability and your exclusive remedy shall be, at Microsoft's option from time to time exercised subject to applicable law, (a) return of the price paid (if any) for the Product, or (b) repair or replacement of the Product, that does not meet this Limited Warranty and that is returned to Microsoft with a copy of your receipt. (..) This Limited Warranty is void if failure of the Product has resulted from accident, abuse, misapplication, abnormal use or a virus.

Product quality attributes (1)


n n

Attributes of good software (beyond delivering the required functionality): Efficiency Software should not make wasteful use of system resources (disk and memory space, CPU time, etc.) and should present appropriate response times Usability (ease of use) Software must be usable by the users for which it was designed Dependability (reliability, availability, security, safety,) Software must be trustworthy Maintainability (ease of maintenance) Software must evolve to meet changing needs Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs

Product quality attributes (2)


n

Other quality attributes:


Robustness Understandability Testability Adaptability Modularity Simplicity

Portability Reusability Learnability

Main dimensions of dependability


n

Reliability - The probability of failure-free system operation over a specified time in a given environment for a given purpose Availability - The probability that a system, at a point in time, will be operational and able to deliver the requested services Its possibly to have high availability with low reliability if failures are repaired quickly Safety - The systems ability to operate, normally or abnormally, without danger of causing human injury or death and without damage to the systems environment Security The systems ability to protect itself from accidental or deliberate external attack

Dependability and critical systems


n

For critical systems, it is usually the case that the most important system property is the dependability of the system Types of critical systems:
Safetycritical system a system whose failure may result in injury, loss of life or major environment damage
- e.g. an insulin delivery system

Mission-critical system a system whose failure may result in the failure of some goal-directed activity
- e.g. a navigational system for a space aircraft

Business-critical system a system whose failure may result in the failure of the business using the system
- e.g. a customer account system in a bank

Usability

Does usage and time cause degradation of a software product quality?


n n

By definition, should not, but A program running continuously for a long period of time (without shutting down) may work increasingly slower or even crash e.g. because of memory leaks or memory fragmentation fortunately, original quality is restored by shutting down and restarting do you know products like this? Performance decreases with the number of concurrent users and the size of the data may req. hardware upgrade and, consequently, software upgrade (good 4 business) Maintainability decreases with time may req. preventive maintenance (migration to knew technologies, etc.) Software becomes obsolete very quickly because of fast evolution of technology, requirements or knowledge sometimes software is used for longer time than expected (remember Y2K bug) requires continuous innovation and evolution

Principal product quality factors (1)


Development technology
Software development process

Process quality

Product quality

People quality

Budget and Cost, time and Schedule schedule

Principal product quality factors (2)


n

Process quality
A good process is usually required to produce a good product For manufactured goods, process is the principal quality determinant For design-based activity (like software development), other factors are also involved especially the capabilities of the designers For large projects with average capabilities, the development process determines product quality

People quality
For small projects, the capabilities of the developers is the main determinant Corollary: you need lower quality people (and higher quality process) in larger projects? Project Size x People Quality = Constant ?

Development technology
Is particularly significant for small projects

Budget and schedule


In all projects, if an unrealistic schedule is imposed then product quality will suffer

Process quality attributes


Process characteristic Understandability Description To what extent is the process explicitly defined and how easy is it to understand the process definition? Do the process activities culminate in clear results so that the progress of the process is externally visible? To what extent can the process activities be supported by CASE tools? Is the defined process acceptable to and usable by the engineers responsible for producing the software product? Is the process designed in such a way that process errors are avoided or trapped before they result in product errors? Can the process continue in spite of unexpected problems? Can the process evolve to reflect changing organisational requirements or identified process improvements? How fast can the process of delivering a system from a given specification be completed?

Visibility

Supportability Acceptability

Reliability

Robustness Maintainability

Rapidity

People quality attributes

Quality of service
n

Some product-related services and their quality attributes


User Training User Help
- Quick and useful response (avoid Help does not Help)

Product repair and new versions deployment


- Quick and effective repair - Conservation qualities: - Things that worked well in the old version, continue to work well in the new version (regression tests are very important here), and dont require new user training - Installation of the new version doesnt cause loss of user data (backward compatibility) - Installation of the new version doesnt require system down for too much time - Progress qualities: - Things that worked wrong or didnt work at all in the old version, now work well in the new version, or new useful features have been added
n

Not focused in this presentation (more focused on product than service)

Quality-related activities (1)


n

Software Verification and Validation (V & V)


Goals:
- Establish the existence of defects in a product - Assess whether or not the product is usable in an operational situation

Verification
- Ensure that we are building the product right, i.e., according to its specification

Validation
- Ensure that we are building the right product, i.e., according to user needs

V & V are integral part of the development process Concerned directly with product quality

Quality-related activities (2)


n

Software Quality Management (SQM) Goals: Ensure that the required level of quality is achieved in software products, namely, that defined standards and procedures are followed SQM should aim to develop a quality culture where quality is seen as everyones responsibility Sub-activities: - (Organizationwide) Quality assurance - Establish organisational procedures and standards for quality in a quality manual - (Projectwide) Quality planning - Select applicable procedures and standards for a particular project and modify these as required. Produce a quality plan. - (Projectwide) Quality control (QC) - Ensure that procedures and standards are followed by the software development team. Produce quality review reports Quality management should be separate from project management to ensure independence of budget and schedule pressures Concerned directly with process quality and, indirectly, product quality

Quality management and software development

deliverables

Software development process

D1

D2

D3

D4

D5

Quality management process

Standards and procedures

Quality plan

Quality review reports

Main approaches for V&V and QC


n

Tests Dynamic technique, concerned with exercising and observing product behaviour to discover defects The system is executed with test data (defined test cases) and its operational behaviour is observed to discover defects (differences between observed and expected) Used mainly for V & V GUI testing difficult to automate; API testing easier to automate Inspections and reviews Static technique - concerned with the analysis of the static system representation (source code, documentation, ) to discover problems May be supplement by tool-based document and code analysis Measurements The value of defined metrics is automatically measured on selected components of the product, for prediction or control purposes Used mainly for CQ All involve planning, execution and result analysis and reporting

Index
n

Introduction

Quality assurance and standards


Quality planning and control Software testing Software inspections and reviews Software measurement and metrics The role of formal methods Conclusions

Quality assurance and standards


n

Standards are the key to effective quality management They may be international, national, organizational or project standards Product standards define characteristics that all components should exhibit e.g. a common programming style Process standards define how the software process should be enacted

Importance of standards
n

Encapsulation of best practice - avoids repetition of past mistakes Framework for quality assurance process it involves checking standard compliance Provide continuity - new staff can understand the organisation by understand the standards applied

Problems with standards


n

Not seen as relevant and up-to-date by software engineers Practitioners should be involved in development. Engineers should understand the rationale underlying a standard Standards and their usage should be reviewed regularly. Standards can quickly become outdated and this reduces their credibility amongst practitioners

Involve too much bureaucratic form filling Unsupported by software tools so tedious manual work is involved to maintain standards Detailed standards should have associated tool support. Excessive clerical work is the most significant complaint against standards

Product and process standards

Product standards Design review form Document naming standards Procedure header format Ada programming style standard Project plan format Change request form

Process standards Design review conduct Submission of documents to CM Version release process Project plan approval process Change control process Test recording process

Documentation standards
n

Particularly important - documents are the tangible manifestation of the software Documentation process standards
How documents should be developed, validated and maintained

Document standards
Concerned with document identification, structure, presentation, changes highlighting, etc.

Document interchange standards


How documents are stored and interchanged between different documentation systems XML is an emerging standard for document interchange which will be widely supported in future

Development of process standards


n

Care must be taken not to impose inappropriate process standards

Define process

Develop product

Assess product quality

Improve process

No

Quality OK

Yes

Standardize process

ISO 9000
n

International set of standards for quality management (ISO 9000:2000, ISO 9001:2000, ISO 9004:2000, etc.) Applicable to a range of organisations from manufacturing to service industries ISO 9001:2000 specifies requirements for a quality management system for any organization that needs to demonstrate its ability to consistently provide product that meets customer and applicable regulatory requirements and aims to enhance customer satisfaction, in all business sectors Integrates previous standards ISO 9001, ISO 9002 and ISO 9003 ISO 9001 is a generic model that must be instantiated for each organisation ISO 9004:2000 provides guidance for continual improvement of a quality management system to benefit all parties (employees, owners, suppliers, society in general,) through sustained customer satisfaction. It should be used to extend the benefits obtained from ISO 9001:2000 to all parties that are interested in or affected by the business operations.

n n

ISO 9000 certification


n

Quality standards and procedures should be documented in an organisational quality manual External body may certify that an organisations quality manual conforms to ISO 9000 standards (namely ISO 9001) Customers are, increasingly, demanding that suppliers are ISO 9000 certified

ISO 9000 and quality management


ISO 9000 quality models instantiated as documents

Organization quality manual is used to develop

Organization quality process instantiated as

Project 1 quality plan

Project 2 quality plan

Project 3 quality plan

Project quality management

Supports

The Software Engineering Institute (SEI) Capability Maturity Model for Software (CMM)
Is a model for n judging the maturity of the software processes of an organization n identifying the key practices that are required to increase the maturity of these processes
Level 5 Optimizing

Level 4 Managed Level 3 Defined Level 2 Repeatable Level 1 Initial

CMM maturity levels


n

1) Initial. The software process is characterized as ad hoc, and occasionally even chaotic. Few processes are defined, and success depends on individual effort and heroics. 2) Repeatable. Basic project management processes are established to track cost, schedule, and functionality. The necessary process discipline is in place to repeat earlier successes on projects with similar applications. 3) Defined. The software process for both management and engineering activities is documented, standardized, and integrated into a standard software process for the organization. All projects use an approved, tailored version of the organization's standard software process for developing and maintaining software. 4) Managed. Detailed measures of the software process and product quality are collected. Both the software process and products are quantitatively understood and controlled. 5) Optimizing. Continuous process improvement is enabled by quantitative feedback from the process and from piloting innovative ideas and technologies.

CMM key process areas

Optimizing Process change management Technology change management Defect prevention Managed Software quality management Quantitative process management

Defined Peer reviews Intergroup coordination Software product engineering Integrated software management Training programme Organization process definition Organization process focus Repeatable Software configuration management Software quality assurance Software subcontract management Software project tracking and oversight Software project planning Requirements management

Initial

The CMM and ISO 9000


n

There is a clear correlation between the key processes in the CMM and the quality management processes in ISO 9000 The CMM is more detailed and prescriptive and includes a more detailed framework for improvement Organisations rated as level 2 in the CMM are likely to be ISO 9000 compliant

Index
n

Introduction Quality assurance and standards

Quality planning and control


Software testing Software inspections and reviews Software measurement and metrics The role of formal methods Conclusions

Quality planning
n

A quality plan sets out (within a particular project) the desired product qualities and how these are assessed and define the most significant quality attributes It should define the quality assessment process It should set out which organisational standards should be applied and, if necessary, define new standards Quality plans should be short, succinct documents
If they are too long, no-one will read them

Quality control
n

Checking the software development process (within a particular project) to ensure that procedures and standards, as defined in the quality plan, are being followed Two approaches to quality control
(Manual) Quality reviews main approach (Automated) Quality measurement

Index
n

Introduction Quality assurance and standards Quality planning and control

Software testing
Software inspections and reviews Software measurement and metrics The role of formal methods Conclusions

Black-box and white-box tests


n

Black-box testing
An approach to testing where the program is considered as a black-box The program test cases are based on the system specification Test planning can begin early in the software process

White-box testing
Sometime called structural testing Derivation of test cases according to program structure. Knowledge of the program is used to identify additional test cases Objective is to exercise all program statements (not all path combinations)
- Test coverage measures ensure that all statements have been executed at least once

Component and integration testing


n

Component testing
Testing of individual program components Usually the responsibility of the component developer (except sometimes for critical systems) Tests are derived from the developers experience

Integration testing
Testing of groups of components integrated to create a system or subsystem The responsibility of an independent testing team Tests are based on a system specification (black-box)
Component testing Software developer Integration testing Independent testing team

The defect testing process

inputs and expected results

Test cases

Test data

Test results

Test reports

Design test cases

Prepare test data

Run program with test data

Compare results to test cases

Key points
n

Software quality management is concerned with ensuring that software meets its required standards Quality assurance procedures should be documented in an organisational quality manual Software standards are an encapsulation of best practice Reviews are the most widely used approach for assessing software quality

Key points
n

Software measurement gathers information about both the software process and the software product Product quality metrics should be used to identify potentially problematical components There are no standardised and universally applicable software metrics

More information
n

Ian Sommerville, Software Engineering, 6th edition, Addison-Wesley, 2001


ISO 9000
http://www.iso.ch/iso/en/iso9000-14000/iso9000/iso9000index.html

SEI Capability Maturity Model http://www.sei.cmu.edu/cmm/cmm.html International Conference on Software Quality http://www.icsq.org/

Certified Software Quality Engineer (CSQE) Body of Knowledge http://www.asq.org/cert/types/csqe/bok.html Instituto Portugus da Qualidade www.ipq.pt

You might also like