Software quality
-
Upload
sunil-mishra -
Category
Engineering
-
view
143 -
download
0
Transcript of Software quality
1
Software Quality
ManagementProf. R. Mall
Dept. of CSE, IIT, Kharagpur
2
Plan of the Talk Introduction to Quality
Engineering. Quality control and Quality
Assurance ISO 9000 SEI CMM Summary
3
IntroductionTraditional definition of quality:•Fitness of purpose:
A quality product does exactly what the users want it to do.
4
Fitness of Purpose
Fitness of purpose for software products:
Satisfaction of the requirements specified in SRS document.
5
Fitness of Purpose A satisfactory definition of
quality for many products: •A car, a table fan, a food mixer, microwave oven, etc.
But, not satisfactory for software products.•Why?
6
Quality for Software Products
Consider a software product:•Functionally correct:
Performs all functions as specified in the SRS document.
•But, has an almost unusable user interface. Cannot be considered as a quality product.
7
Quality for Software Products
Consider another example:•A product which does everything that users want.
•But has an almost incomprehensible and unmaintainable code.
•Will you call it a quality product?
8
Modern View of Quality
Several quality factors are associated with a software product :• Correctness• Reliability• Efficiency (includes efficiency of resource
utilization)• Portability• Usability• Reusability• Maintainability
9
CorrectnessA software product is correct: •If different requirements as specified in the SRS document have been correctly implemented.
•Results are accurate.
10
PortabilityA software product is said to be portable: •If it can be easily made to workIn different operating systems.In different machines, With other software products, etc.
11
ReusabilityA software product has good reusability:•If different modules of the product can easily be reused to develop new products.
12
Usability A software product has good
usability:•If different categories of users (i.e. both expert and un expert) can easily invoke the functions of the product.
13
Maintainability A software product is
maintainable: •If errors can be easily corrected as
and when they show up, •New functions can be easily added
to the product, •Functionalities of the product can
be easily modified.
14
Software maintenance:•any modifications to a software
product after it has been delivered to the customer.
Software maintenance is an important activity for many organizations.
15
Many people think•only bad software products need
maintenance. The opposite is true:
•bad products are thrown away,•good products are maintained
and used for a long time.
16
Software products need maintenance for three reasons:•corrective•adaptive•perfective
17
CorrectiveCorrective maintenance of a software product: •to correct bugs observed while the system is in use.
•to enhance performance of the product.
18
Adaptive A software product needs
maintenance (porting) when customers:•need the product to run on new platforms,or, on new operating systems,
•need the product to interface with new hardware or software.
19
PerfectivePerfective maintenance:
•to support new features required by users.
•to change some functionality of the system due to customer demands.
20
Software Reverse Engineering
By analyzing a program code, recover from it:•the design and the requirements specification.
21
Quality System A good quality system must
be well documented.•Without a properly documented quality system, Application of quality procedures become ad hoc,
Results in large variations in the quality of the products delivered.
22
Quality System An undocumented quality
system:•Sends clear messages to the staff
about the attitude of the organization towards quality assurance.
International standards such as ISO 9000 provide:•Guidance on how to organize a
quality system.
23
ISO 9000 ISO (international Standards
Organization): •a consortium of 63 countries
established to formulate and foster standardization.
ISO published its 9000 series of standards in 1987.
24
What is ISO 9000 Certification?
ISO 9000 certification: •Serves as a reference for contract between independent parties.
The ISO 9000 standard: •Specifies guidelines for maintaining a quality system.
25
ISO 9000 A set of guidelines for the
production process.•Not directly concerned about the product it self.
•A series of three standards: ISO 9001, ISO 9002, and ISO 9003.
26
ISO 9000Based on the premise:
•If a proper process is followed for production: Good quality products are bound to follow.
27
ISO 9001 Applies to:
•Organizations engaged in design, development, production, and servicing of goods.
•Applicable to most software development organizations.
28
ISO 9002 ISO 9002 applies to:
• Organizations who do not design products: but are only involved in production.
Examples of this category of industries:• Steel or car manufacturing industries• Buy the product and plant designs from
external sources: only manufacture products.
• Not applicable to software development organizations.
29
ISO 9003 ISO 9003 applies to:
•Organizations involved only in installation and testing of the products.
30
ISO 9000 Part-3 ISO released a separate
document called ISO 9000 part-3 in 1991:•To help interpret the ISO standard
for software industry. At present:
•Official guidance is inadequate.
31
ISO 9000: 2000 ISO 9001:2000:
• Combines the three standards 9001, 9002, and 9003 into one.
Design and development procedures are required:• Only if a company does in fact engage in
the creation of new products. The 2000 version sought to make a
radical change in thinking:• By actually highlighting the concept of
process management.
32
Why Get ISO 9000 Certification?
Several benefits: •Confidence of customers in an organization increases. If organization qualified for ISO 9001 certification.
This is especially true in the international market.
33
SEI Capability Maturity Model (CMM)
Developed by Software Engineering Institute (SEI) of the Carnegie Mellon University, USA
34
SEI Capability Maturity Model
Major DoD contractors began CMM-based process improvement initiatives: • As they vied for DoD contracts.
SEI CMM helped organizations: • Helped Improve quality of software they
developed• Realized adoption of SEI CMM model had
significant business benefits. Other organizations adopted CMM.
35
Software Process Assessment
Used by an organization to assess its current process:•Suggests ways to improve the process capability.
•This type of assessment is for purely internal use.
36
SEI Capability Maturity Model
The SEI CMM classifies software development industries into: Five maturity levels. Stages are ordered so that
improvements at one stage provide foundations for the next.
37
SEI Capability Maturity Model
Initial (1)
Repeatable (2)
Defined (3)
Managed (4)
Optimizing (5)
38
Key Process AreasEach level is associated with a key process area (KPA) identifies:•Where an organization at the previous level must focus to reach this level.
39
Level 2 KPAsSoftware project planning:
•Size, cost, schedule.•Project monitoring
Configuration management
Subcontract management
40
Level 3 KPAsProcess definition and documentation.
ReviewsTraining program
41
Level 4 KPAsQuantitative measurements.
Process management.
42
Level 5 KPAsDefect prevention.Technology change management.
Process change management.
43
Comparison Between ISO 9001 and SEI CMM
ISO 9001 awarded by an international standards body:•Can be quoted in official documents and communications.
SEI CMM assessment is purely for internal use.
44
CMMI (CMM Integration)
CMMI is the successor of the CMM. The CMM was developed from 1987
until 1997. In 2002, CMMI Version 1.1 was
released. • Version 1.2 followed in August 2006.
The goal of the CMMI to integrate many different models into one framework. • It was created by members of industry,
government and the SEI.
45
Personal Software Process (PSP)
Based on the work of Humphrey. PSP is a scaled down version of
industrial software process:•Suitable for individual use.
Even CMM assumes that engineers use effective personal practices.
46
Personal Software Process (PSP)
PSP framework:•Helps software engineers to measure
and improve the way they work.
47
Personal Software Process (PSP)
Helps developing personal skills and methods.•Estimating and planning method.•Shows how to track performance
against plans.•Provides a defined process;
Can be fine tuned by individuals. Recognizes that a process for individual
use is different from that necessary for a team project.
48
Time Management Track the way you spend time:
•Boring activities seem longer than actual.
•Interesting activities seem short. Record time for:
•Designing •Writing code•Compiling•Testing
49
Personal Software Process (PSP)
PlanningDesignCode
CompileTest
Postmortem
Logs
Project plan summary
50
PSP-Planning Problem definition Estimate max, min, and total LOC Determine minutes/LOC Calculate max,min, and total
development times Enter the plan data in project
plan summary form Record the planned time in Log
51
PSP-Design Design the program. Record the design in specified
format. Record the Design time in time
recording log.
52
PSP-Code Implement the design. Use a standard format for
code text. Record the coding time in
time recording log.
53
Personal Software Process (PSP)
PSP 0
PSP 1
PSP 2
PSP 3
Personal measurement Basic size measures
Personal planning Time and schedule
Personal quality management Design and code reviews
Personal processevolution
54
Six Sigma Six sigma is a quantitative approach
to eliminate defects:• Applicable to all types of industry - from
manufacturing, product development, to service.
The statistical representation of Six Sigma quantitatively describes :• How a process is performing.
55
Six Sigma To achieve six sigma:
• A process must not produce more than 3.4 defects per million opportunities.
• 5 Sigma -> 230 defects per million.• 4 Sigma -> 6210 defects per million.
Six sigma methodologies:• DMAIC (Define, Measure, Analyze,
Improve, Control).• DMADV: (Define, Measure, Analyze,
Design, Verify).
56
Six Sigma Methodologies
The methodologies are implemented by Green belt and Black belt workers:• Supervised by Master black belt worker.
Pareto Chart:• Simple bar chart to represent defect data• Identify the problems that occurs with
greatest frequency or incur the highest cost
57
Computer Aided Software Engineering (CASE)
CASE tools help in software development and maintenance.
CASE is a much talked about topic in software industries.
58
CASE and Its Scope CASE tool is a generic term:
•denotes any form of automated support for software engineering.
59
Objectives of CASE
To increase productivityTo help produce better quality software at lower cost.
60
Schematic representation of architecture of CASE environment
CentralRepository
Consistency-
checker
ProjectManageme
nt
Testing
StructuredDesign
StructuredAnalysisConfigurati
onManageme
nt
DocumentGeneration
Coding Support
61
CASE EnvironmentThe central repository is the data dictionary:•contains definition of all composite and elementary data items.
•through this repository all CASE tools share information.
62
Programming Environment A CASE environment helps:
•automate step-by-step methodologies.
In contrast to CASE environment: •a programming environment denotes tools supporting coding phase alone.
63
Benefits of CASE A key benefit of using CASE
environment:•cost saving through all
developmental phases. Studies carried out to measure
the impact of CASE usage: •cost saving between 30% to 40%.
64
Benefits of CASE Data relating to a software
product are maintained in a central repository: •redundancy in the stored data is reduced.
•chances of inconsistent documentation is reduced.
65
Benefits of CASE Use of CASE tools leads to
improvements in quality:•becomes easy to iterate through
different software development phases.
•chances of human error is reduced.
•CASE tools help produce higher quality and consistent documents.
66
Benefits of CASE
CASE tools take drudgery out from software engineers’ work: •engineers need not manually check balancing of the DFDs
•easily draw diagrams and produce documentation, etc.
67
Towards Next Generation CASE Tool
An important feature of next generation CASE tools:•be able to support any
methodology. Necessity of a CASE
administrator for every organization: •who would tailor the CASE
environment to a particular methodology.
68
SummaryThe trend is now towards:
• distributed workstation-based CASE tools.
We discussed some desirable features of CASE tools.
Software Reuse and Component-Based Software Engineering
Software Reuse In most engineering disciplines, systems
are designed by composition (building system out of components that have been used in other systems)
Software engineering has focused on custom development of components
To achieve better software quality, more quickly, at lower costs, software engineers are beginning to adopt systematic reuse as a design process
Types of Software Reuse Application System Reuse
• reusing an entire application by incorporation of one application inside another (COTS reuse)
• development of application families (e.g. MS Office)
Component Reuse• components (e.g. subsystems or single
objects) of one application reused in another application
Function Reuse• reusing software components that
implement a single well-defined function
Benefits of Reuse Increased Reliability
• components already exercised in working systems Reduced Process Risk
• less uncertainty in development costs Effective Use of Specialists
• reuse components instead of people Standards Compliance
• embed standards in reusable components Accelerated Development
• avoid custom development and speed up delivery
Reuse Problems
Increased maintenance costs Lack of tool support Finding and adapting reusable
components
Component-Based Software Engineering
CBSE is an approach to software development that relies on reuse
CBSE emerged from the failure of object-oriented development to support reuse effectively
Objects (classes) are too specific and too detailed to support design for reuse work
Components are more abstract than classes and can be considered to be stand-alone service providers