Software Quality Ranga Rodrigo The purpose of software

  • Slides: 31
Download presentation
Software Quality Ranga Rodrigo

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

Learning Outcomes �Demonstrate competency in the use of a representative secure programming language: Eiffel.

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,

Evaluation Coursework (40%) • Programming exercise: demonstration of type safety problems in polymorphism, late-binding, design by contract, exceptions: November 16 th. • Written report: historical or external context: October 12 th. 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

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

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

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

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

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

External and Internal Factors �In the end, only external factors matter. If I use a webbrowser 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

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

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

Robustness and Correctness �Robustness complements correctness. Robustness Specification correctness

External Factors Extendibility • Extendibility is the ease of adapting software products to changes

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

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

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 Compatibility • Compatibility is the ease of combining software elements with others.

External Factors Efficiency • Efficiency is the ability of a software system to place

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.

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 2 N for large N. �For an algorithm in O(n 2) the new machine will only yield 41% increase of N. �An algorithm in O(2 n) would just add one to N.

External Factors Portability • Portability is the ease of transferring software products to various

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

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 Functionality • Functionality is the extent of possibilities provided by a system.

External Factors Timeliness • Timeliness is the ability of a software system to be

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 Integrity Ease of use

Tradeoffs Economy Functionality

Tradeoffs Economy Functionality

Tradeoffs Adaptation to specifications Reusability

Tradeoffs Adaptation to specifications Reusability

Tradeoffs Timeliness Extendibility

Tradeoffs Timeliness Extendibility

Software Maintenance �This consumes a large portion of software costs. �Maintainability is not given

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

Four Important Qualities Reliability Modularity Correctness Extendibility Robustness Reusability

Object-oriented method directly addresses software quality.

Object-oriented method directly addresses software quality.