320 likes | 499 Views
Software Quality. Ranga Rodrigo. 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.
E N D
Software Quality Ranga Rodrigo
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.
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.
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.
Robustness and Correctness • Robustness complements correctness.
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.
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.