Software Quality
Download
Report
Transcript Software Quality
Ranga Rodrigo
The purpose of
software engineering
is to find ways of
building quality
software.
Learning Outcomes
Demonstrate competency in the use of a representative
secure programming language: Eiffel.
Be able to analyze programs and programming languages
to identify sources of insecurity.
Be able to identify and critically evaluate language features
which address common sources of insecurity.
Demonstrate a knowledge of case history of, and the
resulting lessons learned, from disasters involving software
error.
Apply and evaluate quality measurement in software
development.
Evaluation
Coursework (40%)
• Programming exercise: demonstration of type safety
problems in polymorphism, late-binding, design by
contract, exceptions: November 16th.
• Written report: historical or external context: October 12th.
Examination (60%)
• Two-hour examination: syntax, semantics of Eiffel,
characterize sources of insecurity, critically evaluate the
feature.
Secure Languages
This module addresses aspects of the question of how
to write software that we can depend on.
Studying disasters due to software failure will help us
make progress by learning from mistakes.
Secure
The word secure refers to the contribution that
programming language design can make to writing
applications which are robust and correct.
C is insecure:
Type conversations not checked by the compiler.
Extensive use of dynamically allocated storage and
pointers.
Aspects Supporting Dependable
Software
Data
abstraction
The design of
control
structures
Data types
and typing
Inheritance
Design by
contract
Dynamically
allocated
storage
Genericity
Garbage
collection
Eiffel
Although not as widely used in industry as C++
and Java, Eiffel does have a real-world presence.
It was specifically designed to be a simple and
secure O-O language.
It includes in the language support for the
specification of software quality.
External and Internal Factors
External quality factors
• Perceptible to users and clients.
Internal quality factors
• Perceptible to designers and
implementers.
External and Internal Factors
In the end, only external factors matter. If I use a web-
browser or live near a computer-controlled nuclear
plant , little do I care whether the source program is
readable or modular , if graphics take ages to load, or if
a wrong input blows up the plant.
Key to achieving external factors is through the
internal ones.
External Factors
Correctness
• Correctness is the ability of
software products to perform
their exact task as defined by
their specifications.
External Factors
Robustness
• Robustness is the ability of a
software system to react
appropriately to abnormal
conditions.
Robustness and Correctness
Robustness complements correctness.
Robustness
Specification
correctness
External Factors
Extendibility
• Extendibility is the ease of
adapting software products
to changes of specifications.
Improving Extendibility
Design Simplicity
Decentralization
• A simple
architecture will
always be easier to
adapt to changes
than a complex one.
• The more
autonomous the
modules, the higher
the likelihood that a
simple change will
affect just one
module.
External Factors
Reusability
• Reusability is the ability of
software elements to serve
for the construction of
many different applications.
External Factors
Compatibility
• Compatibility is the ease
of combining software
elements with others.
External Factors
Efficiency
• Efficiency is the ability of a
software system to place a
few demands as possible on
hardware resources.
Efficiency
Assume that there is a new machine twice as fast as the
old.
Let n be the size of the problem to solve, and N the
maximum n that can be handled by a certain
algorithm in a given time.
Then if the algorithm in O(n), the new machine will
allow us to handle problems of sixe 2N for large N.
For an algorithm in O(n2) the new machine will only
yield 41% increase of N.
An algorithm in O(2n) would just add one to N.
External Factors
Portability
• Portability is the ease of
transferring software
products to various hardware
and software elements.
External Factors
Ease of use
• Ease of use is the ease with which
people of various backgrounds and
qualifications can learn to use software
products and apply them to solve
problems. It also covers the ease of
installation, operation and monitoring.
External Factors
Functionality
• Functionality is the
extent of possibilities
provided by a system.
External Factors
Timeliness
• Timeliness is the ability of a
software system to be
released when or its uses
want to use it.
Tradeoffs
Integrity
Ease of
use
Tradeoffs
Economy
Functionality
Tradeoffs
Adaptation to
specifications
Reusability
Tradeoffs
Timeliness
Extendibility
Software Maintenance
This consumes a large portion of software costs.
Maintainability is not given as a quality factor because
this problem is addressed by developing quality
software.
Object oriented technology helps achieve this.
Four Important Qualities
Reliability
Modularity
Correctness
Extendibility
Robustness
Reusability
Object-oriented
method directly
addresses
software quality.