SOFTWARE QUALITY ASSURANCE Maltepe University- Faculty of Engineering SE410.

Post on 22-Dec-2015

215 views 1 download

Tags:

Transcript of SOFTWARE QUALITY ASSURANCE Maltepe University- Faculty of Engineering SE410.

SOFTWARE QUALITY ASSURANCE

Maltepe University- Faculty of EngineeringSE410

SE 410 - Software Quality Assurance

2

Chapter 1

INTRODUCTION TOSOFTWARE QUALITY and

ASSURANCE

SE 410 - Software Quality Assurance

3

• What is Software?

• Software error, fault and failure

• Classifying the reasons of software errors

• What is Software Quality?

• Properties that determines software quality

• Software Quality Assurance and Aims

• Problems in Software Quality

• Quality System and Management

• Cost of Quality

• Best Practices Approach

• SWEBOK (Software Engineering Body of Knowledge)

Outline

SE 410 - Software Quality Assurance

4

What is Software?

• Software is a computer program that manages computer hardware and also performs the instructions of the user of the computer.

• IEEE defines the software as: «It is a complement of codes, procedures, data and documents about operation of a computer systems.»

• Computer softwares can be viewed in two main groups;

• System Software

• Application Software

SE 410 - Software Quality Assurance

5

Software – Basic Concepts

• Error: : Mistake that a programmer makes

• Fault: Consequence of an error in the software

• Failure: It is the wrong output produced by a software.

SE 410 - Software Quality Assurance

6

Classifying Reasons of Software Errors

• We can classify the reasons of the software errors as follows:

Wrong definition of requirements, Failure of communication between customer and the developer, Deviating from requirements on purpose, Logical design failure, Coding errors, Not following the documentation and coding standards, Lack of test process, User interface and procedure faults, Documentation faults.

SE 410 - Software Quality Assurance

7

Problems in Software Development

Based on the questionnaires that have been done to review hundreds of software projects in late 1970s and in early 1980s in USA.

Rate of successful projects: % 4 - % 5 Rate of patially successful projects: % 40 - % 45 Rate of unsuccessful projects: % 50 - % 55

SE 410 - Software Quality Assurance

8

Problems in Software Development (cont..)

• Observed a little improvement during 1990’s

• In the early 2000’s, there is a progress than 20 years ago.

• 53% of the projects in USA deviated at the rate of 189% in 2001.

SE 410 - Software Quality Assurance

9

Problems in Software Development (cont..)

• According to the research of The Standish Group about software projects in 2000,

% 90 late delivery. % 50 over budget. % 50 not meet the client’s needs. % 20 canceled.

SE 410 - Software Quality Assurance

10

Problems in Software Development (cont..)

SE 410 - Software Quality Assurance

11

Real Project Failures

Yıl Şirket Sonuç (Maliyetler ($))

2005 Hudson Bay Co. (Canada) Problems with inventory system, caused 33.3 million $ loss.

2004-05 Inland Revenue (England) Software faults caused 3.45 billion $ more tax payment

2004 Avis Europe PLC (England) ERP system, canceled after paying 54.5 million $

2004 Ford Motor Co. Buying system, canceled because of a 400 million $ cost of delivery

2004 J Sainsbury PLC (England) Supply-chain management system, canceled because of a 527 million $ cost of delivery

2004 Hewlett-Packard Co. Problems about ERP system, caused 160 million $ loss.

2003-04 AT&T Wireless CRM updating problems, caused 100 million $ profit loss.

2002 McDonald’s Corp. Information buying system, canceled after paying 170 million $

2002 Sydney Water Co. Billing system, canceled after paying 33.2 million $

SE 410 - Software Quality Assurance

12

Fail Reasons of Software Projects

• Project aims that are not fully indicated,

• Wrong estimations about essential resources,

• Wrong identified system requirements,

• Bad reporting of the Project progress,

• Unmanaged risks,

• Lack of communication between client and developer,

• Bad Project management,

• Commericial pressures

SE 410 - Software Quality Assurance

13

Quality Concept

• Quality, “ability to meet the requirements” (Edwards Deming, 1968).

• Quality, “To meet the client’s needs without a single fault.” (Crosby, 1979).

• Quality, “To make the right thing at once” (Price, 1985).

• Quality, “fit for purpose” (Juran, 1988).

• Quality, “hard to define, easy to see, impossible to measure” (Kitchenham, 1996).

SE 410 - Software Quality Assurance

14

Quality Concept (cont)

• Quality, «The complement of features of a product or service that meets certain needs.» (IEEE).

SE 410 - Software Quality Assurance

15

Quality Concept (cont)

• Important product quality criteria; Meeting user’s needs, Minimizing faults, Immediately fixing faults, Post-delivery support,

SE 410 - Software Quality Assurance

16

"Quality" Myths

• “Quality is an abstract concept and can not be measured”• Quality can be measured by measuring fault cost.

• “Lower level staff cause quality problems”• Lower level staff cause less quality problems than upper

level staff.

SE 410 - Software Quality Assurance

17

"Quality" Myths

• “Quality Departments of organizations start Quality”• Quality starts with the upper magagement level and must

be taken up by all employees.

SE 410 - Software Quality Assurance

18

Quality Concepts

• Quality Control; Application techniques and operations to provide quality requirements,

• Quality Assurance; The complement of planned and systematic operations to provide enough assurance with the purpose of meeting the needs for the quality of the product or the service,

• Quality Management; The part of general management that determines and performs the quality policy,

• Quality System; The complement of organization structure, responsibilities, procedures, processes and resources that is essential for implementing the quality management

SE 410 - Software Quality Assurance

19

Quality Concepts (cont)

• Quality control; To examine activities and outcomes about quality whether they are stick to the planned arrangements and to examine whether those arrangements are applied effectively.

SE 410 - Software Quality Assurance

20

How to Provide Quality?

• Traditional Consideration: Debugging Errors• «Quality Control»• Techniques and activities that are used to determine whether the defined

requirements of a product or service are met.

• Improved Consideration: Avoiding Errors• «Quality Assurance»• Systematic and planned activities to assure meeting the requirements of a

product ot service adequately.

SE 410 - Software Quality Assurance

21

What is Software Quality?

• Acceptable error level,

• Meets the requirements,

• Suitable to use,

• In Time Delivery,

• Developed in budget,

• Compatible with standards,

• Maintainable software.

SE 410 - Software Quality Assurance

22

Features Determine Software Quality

Features related to running software ,

Features related to software improvement,

Features related to software compatibility

SE 410 - Software Quality Assurance

23

Features related to Running Software

• Correctness: Performing tasks as needed and accurate.

• Reliability: Keep running without malfunctioning.

• Efficiency: Using system resources properly.

• Immunity: Software must protect the system against intrusions and attacks from unauthorized users.

• Usability: Software must be usable as easy as possible. User interface must be user-friendly (easy to use).

SE 410 - Software Quality Assurance

24

Features related to software improvement

• Maintainability: Software must be coded deducible, well documented and easy to test to be maintained by another software developer.

• Flexibility: Software must be customizable/adaptable as possible to add new features.

• Testability: This feature is essential for software developer. The whole system or a part of it can be tested.

SE 410 - Software Quality Assurance

25

Features related to software compatibility

• Portability: Software must be adapted easily to another operating system or hardware.

• Reusability: It shows whether some parts of software can be used in other systems/projects or not.

• Compatibility: A software product must be compatible with previous versions or collaborator.

SE 410 - Software Quality Assurance

26

Software Quality Assurance

• All planned and systematic operations that need to be applied to all workflows in software life-cycle to provide enough assurance.

SE 410 - Software Quality Assurance

27

Goals of SQA

• To improve software quality by controlling software development process

• To assure complying with standards and methods which are developed for software process.

• To catch management’s attention in case of insufficiency about the product, process or standards.

SE 410 - Software Quality Assurance

28

Problems in Software Quality

• Prioritising quality features,

• Long term investment to provide quality,

• Keeping up with new techs,

• Staff motivation.

SE 410 - Software Quality Assurance

29

Why Need Quality in Software

• An experienced engineer produces an error in every 7-10 code lines.• It means thousands of lines in a mid scope Project.

• Most of errors are corrected in test stage.

• That means late delivey, expensive post delivery maintenance, low quality product.

SE 410 - Software Quality Assurance

30

Quality System

• There must be a quality guideline in quality system

• Quality guideline consists of following concepts:

standards,

procedures,

guidelines.

SE 410 - Software Quality Assurance

31

Quality Management

• Software Quality Assurance is related to process development, using standards, requirements management, testing, validation, verification, reliability, maintainability.

• To provide and maintain this relation we need a Quality Management in every level of the organization.

SE 410 - Software Quality Assurance

32

Cost of Quality

• Some controls must be done step by step to keep the quality cost of the software product low. The activities needed in those control steps are as follows:

Precaution : Planning, education, process enhancement activities, Validation/Verification : design and code control, tests, etc. Error correction: code fixing, re-test.

SE 410 - Software Quality Assurance

33

Cost of Quality (cont)

• Optimum balance is important between steps. But;

Cost of error increases progressively Thus preventing an error before it occurs is the cheapest way.

SE 410 - Software Quality Assurance

34

Cost of Quality (cont)

• Software products have a different quality consideration from other products. An incomplete/insufficient/faulty software can be released on purpose;

To release an earlier time, Other reasons (promised, market competition etc.)

• It is hard to measure software quality A virtual product, Complex.

SE 410 - Software Quality Assurance

35

Best Practices Approach

• Software Quality principles have been shaped by past best practice experiences.

• Best practices are guides.

• Best practices built up the basics of accepted quality models.

SE 410 - Software Quality Assurance

36

Best Practices Approach (cont)

• Early diagnosis, early solution reduces cost.

• Process is important, not the product. Process must be enhanced.

• Continuous enhancement,

• Standards and measures must be used.

• Investigate Client satisfaction.

SE 410 - Software Quality Assurance

37

Best Practices Approach (cont)

• Use project estimation tools.

• Document the processes.

• Use methodology and documantation.

• Perform critical design review (CDR).

• Code walkthrough and inspection.

SE 410 - Software Quality Assurance

38

Best Practices Approach (cont)

• Use configuration management tools.

• Measure and analyse errors and reliability,

• Use estimation models.

• Post Project evaluation.

SE 410 - Software Quality Assurance

39

SWEBOK (Software Engineering Body of Knowledge)

SWEBOK, A product of attempt of gathering and classifying software engineering concepts by an international expert group under IEEE Computer Society

First version in 2001, Second version in 2004, Third and latest version in 2010.

SE 410 - Software Quality Assurance

40

SWEBOK (cont)

• Software Engineering definition: It is a disciplined, quantitative and systematic engineering approach for software development, running and maintenance

SE 410 - Software Quality Assurance

41

SWEBOK (cont)

• 10 main knowledge area in Software ENGİNEERİNG:

1. Software Requirements

2. Software Design

3. Software Construction

4. Software Testing

5. Software Maintenance

6. Software Configuration Management

7. Software Enginering Management

8. Software Process

9. Software Tools and Methods

10. Software Quality

SE 410 - Software Quality Assurance

42

SWEBOK (cont)

• Related Areas: Computer Engineering Computer Sciences Mathematics Management Science

Quality Management Project Management

Human Computer Interaction System Engineering

SE 410 - Software Quality Assurance

43

KA 1: Software Requirements

Requirement: The operation that the software product must perform.

• Requirements Engineering Process,• Requirements Elicitation,• Analysis,• Specification,• Validation, • Requirements Management.

SE 410 - Software Quality Assurance

44

KA 2: Software Design

Design: Architectural structure, modules, interfaces and definition of other features;

• Software Design Basic Concepts,

• Key Issues,

• Software Structure and Architecture,

SE 410 - Software Quality Assurance

45

KA 3: Software Construction

• Reduction of Complexity,

• Anticipation of Diversity,

• Structuring for Validation,

SE 410 - Software Quality Assurance

46

KA 4: Software Test

The aim is to validate the software product dynamically with pre-defined data whether it is running as needed or not.

• Basics,

• Levels,

• Techniques,

• Measures.

SE 410 - Software Quality Assurance

47

KA 5: Software Maintenance

Yazılımın işletmede, çalışır durumda tutulması ve yeni durumlara uyarlanmasıdır. The aim is to kkep the software product running and up to date.

• Process,

• Maintenance Techniques.

SE 410 - Software Quality Assurance

48

KA 6: Configuration Management

The aim is to ensure software integrity, to control every single change in software configuration.

• Process Management,

• Change Control,

• Accounting,

• Auditing,

• Version Control.

SE 410 - Software Quality Assurance

49

KA 7: Engineering Management

Project management in terms of engineering. Measurements etc.

• Initiation & Scope,

• Project Planning,

• Project Execution,

• Revision and Evaluation,

• Closure,

• Measures,

SE 410 - Software Quality Assurance

50

KA 8: Engineering Process

Aim is to define, apply, measure, evaluate, management and enhancement of software processes.

• Process Definition,

• Process Evaluation,

• Process and Product Criteria.

SE 410 - Software Quality Assurance

51

KA 9: Tools and Methods

Yazılım mühendisliğinde kullanılan araçlar ve metotlar.

• Tools (for every KA),

• Methods; Heuristic, Formal, Prototyping.

SE 410 - Software Quality Assurance

52

KA 10: Quality

Project Management

• Basics,

• Management,

• Practical Points.

SE 410 - Software Quality Assurance

53

SWEBOK Homework…http://www.computer.org/portal/web/swebok