320 likes | 548 Vues
This module explores the fundamentals of secure programming, focusing on the use of the Eiffel language. Students will demonstrate competency in analyzing program vulnerabilities and critically evaluate language features that enhance software security. Lessons learned from historical software failures will inform the discussion on software reliability. The course emphasizes the importance of robustness, correctness, and maintainability in software development. It covers the trade-offs between efficiency and extendibility, aiming to reduce maintenance costs by incorporating quality design practices.
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.