ranga rodrigo. the purpose of software engineering is to find ways of building quality software

31
Software Quality Ranga Rodrigo

Upload: elizabeth-mcdonald

Post on 12-Jan-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

Software QualityRanga Rodrigo

Page 2: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

The purpose of software engineering is to find ways of building quality software.

Page 3: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

Learning OutcomesDemonstrate 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.

Page 4: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

EvaluationCoursework (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.

Page 5: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

Secure LanguagesThis 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.

Page 6: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

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.

Page 7: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

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

Page 8: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software
Page 9: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

EiffelAlthough 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.

Page 10: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

External and Internal Factors

• Perceptible to users and clients.

External quality factors

• Perceptible to designers and implementers.

Internal quality factors

Page 11: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

External and Internal FactorsIn 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.

Page 12: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

External Factors

• Correctness is the ability of software products to perform their exact task as defined by their specifications.

Correctness

Page 13: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

External Factors

•Robustness is the ability of a software system to react appropriately to abnormal conditions.

Robustness

Page 14: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

Robustness and CorrectnessRobustness complements correctness.

Robustness

Specification

correctness

Page 15: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

External Factors

•Extendibility is the ease of adapting software products to changes of specifications.

Extendibility

Page 16: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

Improving ExtendibilityDesign Simplicity

• A simple architecture will always be easier to adapt to changes than a complex one.

Decentralization

• The more autonomous the modules, the higher the likelihood that a simple change will affect just one module.

Page 17: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

External Factors

•Reusability is the ability of software elements to serve for the construction of many different applications.

Reusability

Page 18: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

External Factors

•Compatibility is the ease of combining software elements with others.

Compatibility

Page 19: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

External Factors

•Efficiency is the ability of a software system to place a few demands as possible on hardware resources.

Efficiency

Page 20: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

EfficiencyAssume 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.

Page 21: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

External Factors

• Portability is the ease of transferring software products to various hardware and software elements.

Portability

Page 22: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

External Factors

• 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.

Ease of use

Page 23: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

External Factors

•Functionality is the extent of possibilities provided by a system.

Functionality

Page 24: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

External Factors

•Timeliness is the ability of a software system to be released when or its uses want to use it.

Timeliness

Page 25: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

TradeoffsIntegrit

y

Ease of use

Page 26: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

TradeoffsEcono

my

Functionali

ty

Page 27: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

TradeoffsAdaptation

to specificatio

ns

Reusability

Page 28: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

TradeoffsTimeliness

Extendibili

ty

Page 29: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

Software MaintenanceThis 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.

Page 30: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

Four Important QualitiesReliabilit

yCorrectnes

s

Robustness

Modularity

Extendibility

Reusability

Page 31: Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software

Object-oriented method directly addresses software quality.