What do you think? What is your definition of Quality? Would you recognise good quality bad quality Does quality simple apply to a products or does it apply to services as well? Does any company epitomise quality in your mind? What would you consider to be quality control Who should be in charge of quality? Who graduates and then goes into quality? Definitions of Quality Quality is fitness for use - Juran those product features which meet the needs of the customers and thereby provide product satisfaction freedom from deficiencies Quality is conformance to requirements and zero defects - Crosby Quality is the totality of characteristics that bear upon its ability to satisfy stated or implied needs - ISO9000 stated needs - specified as requirements by a customer implied needs - identified and defined by the company providing the product Page 1
Defining Software Quality Software Quality is conformance to: explicitly stated functional and performance requirements explicitly documented development standards implicit characteristics that are expected of all professionally developed software Software Quality is ambiguous, subjective and multidimensional This makes it difficult to implement The need for more detailed measures of quality Previous definitions are high-level and difficult to measure Requirements are difficult to specify Requirements are usually incomplete Next Experiment: Compare software warranties with hardware warranties Page 2
The Hardware Warranty Company X warrants that the products it manufactures and sells are free from defects in materials and workmanship. If any product fails to operate properly, the company will repair the defective product and restore it to normal operation without charge The Software Warranty Company X s sole obligation under this warranty will be to provide support services described in our current software support policy. The company does not warrant that the licensed software is free from defects or that the support services will correct any defects that might exist. Page 3
The ilities -Software Quality Attributes (1) Product Operation Correctness Does it do what I want? Tool - Use Cases Reliability Does it do it accurately all of the time? Tool - Formal methods Efficiency Will it run on my hardware as well as it can? Tool Good algorithmic design, appropriate language (even Assembler in some cases) Integrity Is it secure? Tool - Java Useability Is it designed for the user? Tool - User-centred design The ilities -Software Quality Attributes (2) Product Revision Maintainability Can I fix it? Tool - Encapsulation Flexibility Can I change it? Tool - Encapsulation Testability Can I test it? Tool - Interfaces Page 4
The ilities -Software Quality Attributes (3) Product Transition Portability Will I be able to use it on another machine? Tool - Java, ANSI C, (and other emerging technologies) Reusability Will I be able to reuse some of the software? Tool - OO class libraries (e.g. GUI components), function libraries (e.g. Numerical Recipes in C) Interoperability Will I be able to interface it with another system? Tool - CORBA, DCOM Metrics for Quality /1 Many quality factors are difficult or impossible to measure directly Need to develop indicative measures of the quality factors Unfortunately many of these measures are still subjective Two methods are: McCall s checklist approach Hewlett-Packard s FURPS.. Page 5
Metrics for Quality /2 Two methods are: Hewlett-Packard s FURPS Functionality feature set, capabilities of program, generality of delivered functions, security of overall system Useability human factors, overall aesthetics, consistency and documentation Reliability frequency and severity of failure, accuracy of output, MTTF, ability to recover from failure, predictability Performance processing speed, response time, resource consumption, throughput, efficiency Supportability extensibility, adaptability, serviceability testability, compatibility, configurability, ease of installation, ease of problem localization Software Quality Activities A - Quality Assurance The production of organisational procedures and standards which lead to high-quality software B - Quality Planning Choosing appropriate procedures and standards and tailoring them for a specific software project C - Quality Control Ensuring that procedures and standards are followed by the software development team Which of these is the most important? Page 6
Software Quality Assurance How an organisation defines the methods by which it will achieve quality Organisation must define or select standards Quality of the product is influenced by the quality of the process Standards need to be embedded in the software development process All this will be documented in a Quality Manual The relationship between software process and product quality is complex and poorly understood Assuring Quality Need to ask four questions WHAT attributes of the product manifest quality in your context? HOW is quality to be measured? WHEN do we evaluate the product and the process? WHO is responsible for carrying out the process? Quality relies on people, but we can greatly help or hinder people from producing quality Page 7
Quality Principles Try to prevent defects from being introduced Ensure that defects that get in are detected and corrected as early as possible Establish and eliminate the causes as well as the symptoms of defects Measure quality characteristics Independently audit work for compliance with standards and procedures The Quality Plan Is specific to a project Produced early in the life of a project Should set out desired product qualities Should define how the quality is to be assessed Should indicate which standards are to be applied Indicate how compliance to the standards is monitored and assured May define new standards Page 8
Contents of Software Quality Plan from ISO9000 Management responsibility Quality system Contract review Design control Quality control Purchasing Customer supplied info Configuration management Process control Inspection and testing Inspection and testing equipment Control of non-conforming product Corrective action Handling, storage, packing and delivery Quality records Internal quality audits Training Software maintenance Statistical techniques Control of the development environment Quality Control Ensuring that all of the above gets done! Tyranny is not effective in ensuring that the work is done People must see a clear benefit to them in performing the above activities Embedding the procedures in day-to-day work is essential Reviews are one of the major tools for quality control Page 9
Quality Standards Major standards ISO9000 international set of standards ISO9000-3 is a specific subset aimed at software development Aims to document the work practices of the organisation Quality Standards (2) Organisations must be certified to be granted ISO9000 status Certification is granted by independent auditing groups Certification is not cheap (approximately $500,000 for a medium-sized company) Certification need not bring any benefits to the company in terms of quality, but only in terms of marketing Certification is an on-going process; audits are carried out annually Page 10
Quality Standards (3) To get benefits from quality standards must use sound management techniques must aim to improve the process employees must participate actively Quality standards are of greatest value to those organisations which don t already have formal development processes They don t replace individual skills and abilities They can only be as good as the work practices which they document Page 11
Beyond Quality Standards Quality standards are only a necessary first step towards a software development environment which produces quality software We need to define what sub-processes are necessary in the overall process The Capability Maturity Model (CMM) documents this for organisations The Personal Software Process (PSP) does this for individual developers The Capability Maturity Model Developed by the Software Engineering Institute (SEI), based on work by Watts Humphrey American Government initiative More Later.. Personal Software Process For you Page 12
The Personal Software Process Mirrors the CMM for an individual designed to help you become a better software engineer requires research, motivation and study to work Framework for why you make errors and how you find them determining the quality of your reviews determining the types of errors you make Developed by Watts Humphrey PSP0 PSP0 - Baseline Process your current process with some basic measurements and a reporting format time recording defect recording defect type standard PSP0.1 a coding standard size measurement process improvement proposal Page 13
PSP1 PSP1.0 - Personal Planning Process adds planning steps to PSP0: PSP1.1 test report size and resource estimation to establish a performance rate for future planning PSP1.0 enhanced by adding: task planning schedule planning PSP2 PSP2.0 Personal Quality Management Process adds review techniques to PSP1 to help you find defects early: design reviews code reviews defect rates are typically 1 per 5-12 lines of code, do you know what yours is? PSP2.1 establishes design completeness criteria: design templates Page 14
PSP3 PSP3 - Cyclic Personal Process For large programs - 10,000 LOC Sub-divide into PSP2-sized modules Enhance the base module in iterative cycles In each iteration do a complete PSP2 including design, code, compile, test Effectively scale up from base module to large program, if each increment is of high quality Overview of CMM and PSP CMM sets out the principal practices for managing the processes in large-scale software development PSP sets out the principal practices for defining, measuring and analysing an individual s own processes Page 15
References Pressman, Roger S., Software Engineering: A Practitioner s Approach, McGraw-Hill, 2000 (Ch. 19). Capability Maturity Model for Software (SW- CMM ), The Software Engineering Institute (SEI), Carnegie Mellon University. http://www.sei.cmu.edu/cmm/cmm.html The Personal Software Process SM (PSP SM ), The Software Engineering Institute (SEI), Carnegie Mellon University. http://www.sei.cmu.edu/tsp/psp.html Page 16