Question
Is it possible to build software without any bug in it?
.
Causes for Bugs in Programs
The main reasons for bugs in programs: * Design flaws
* Coding error
* Other (including human related error)
Cleanroom Software Engineering
Cleanroom software engineering (CSE) is an engineering process for the development of high quality software with certified reliability with the emphasis on design with no defects and test based on software reliability engineering concepts.
CSE focuses on defect prevention instead of
defect
Cleanroom Software Engineering
CSE
yields software that is correct by
CSE: Characteristics
Objective: Achieve zero defects with certified
reliability.
Focus: Defect prevention rather than defect
correction.
Process: Incremental (short) development
cycles; long product life. Quality.
Most suitable for critical applications. Increased Productivity.
Comparison:
Craft-Based SE Cleanroom SE
Sequential development Incremental development Informal design Disciplined engineering
specification and design Unknown reliability Measured reliability Individual development Peer reviewed engineering
Individual unit testing Team correctness verification Informal load or coverage
CSE: Management
Process
Project Planning
Cleanroom engineering guide
Software development plan (incremental)
Project Management
Project record
Performance Improvement
Performance improvement plan
Engineering Change
CSE: Specification Process
/1
Requirements Analysis
Elicitation(deriving) and analysis of
requirements
Define requirements for the software product Obtain agreement with the customer on the
requirements.
Function Specification
Base on the result of Requirements Analysis
CSE: Specification Process
/2
Usage Specification
Identify and classify software users, usage scenarios, and environments of use
(operational modes).
Architecture Specification
Define the conceptual model, the
structural organization and the execution characteristics of the software.
CSE: Specification Process
/3
Increment Planning
Allocate customer requirements defined in
the
Function Specification to a series of software
increments that satisfy the Software Architecture,
Define schedule and resource allocations for
increment development and certification
Obtain agreement with the customer on the
CSE: Certification Process
Usage modeling and test planning
A usage model represents a possible usage scenario of the software
Usage model is based on usage specification and is used for testing
Statistical Testing and Certification
Testing is conducted in a formal statistical design under experimental control.
Management decisions on continuation of testing and
Cleanroom Strategy /1
Requirement gathering (RG)
A detailed description of customer level requirements for
each increment.
Box structure specification (BSS)
Functional specification using box structure to separate
behavior, data and procedures.
Formal design (FD)
Specifications (black boxes) are refined to become
Cleanroom Strategy /2
Correctness verification (CV) A set of correctness verification activities on the design and moves later to code. First level verification is via application of a set of “correctness questions”.
Code generation, inspection & verification (CG &CI)
The box structure transformed to a programming language. Walkthrough and code inspection techniques are used to
ensure
Cleanroom Strategy /3
Statistical use testing (SUT)
Creating test case, execute them and collecting error
data.
Certification (C)
Conducting certification test to accept/reject developed software components (using
Box Structure /1
Box structures are used to move from an abstract specification to
Box Structure /2
Black box
Specifies the behavior of a system or a part of a system.
The system responds to specific stimuli (events) by applying a set of transition rules that map the stimuli to response. (specifications ).
State box
Summarizes state data and services (operations). Input to
the state box and outputs are represented. (architectural designs).
Clear box
Transition function that are implied by the state box. It
contains the procedural design of the state box.
Example
Automated Teller Machine (
ATM
)
Requirements:
Example: Black Boxes
Black boxes
Card Processor
In: ValidCard(cardNum)
Out: showMessage(message)
Boolean
Cash Dispenser
In: enoughCashInMachine(amount)
dispenseCash(amount)
Out: showMessage(message)
dispense(amount) Boolean
Transaction Manager
In: ValidCustomer(cardNum, pin)
AmountLimit(amount)
EnoughCashInAccount(amount)
Out: showMessage(message)
CSE: Team
Specification team:
Responsible for developing and maintaining the system specification.
Development team:
Responsible for developing and verifying the software.
The software is not executed during this process.
Certification team:
Responsible for developing a set of statistical
CSE: Evaluation
Basic features of Cleanroom development
that
distinguishes it from other SE methodologies
are:
Formal specification (Box structure). Correctness verification.
Conclusion:
Key Characteristics of Cleanroom SE
Incremental Development Life Cycle. Defect Prevention: Quality Assessment
through Statistical Testing.
Disciplined SE methods required to create
Conclusion:
Cleanroom approach is a rigorous approach to software engineering that has emphasis on:
Formal specification.
Mathematical verification of correctness of
design.
Certification of software reliability.
Cleanroom approach is yet to become a
common practice in software development industry because of emphasis on the above