Outline Software design · Goals History of software design ideas Design principles Design methods Life belt or leg iron? Budgen copyright Nancy Leveson, Sept. 1999
. Outline: Software Design Goals History of software design ideas Design principles Design methods Life belt or leg iron? (Budgen) Copyright c Nancy Leveson, Sept. 1999 �
A Little History At first, struggling with programming languages, small programs math algorithms Worried about giving instructions to machine(efficiency) Think like a computer Found that life cycle costs depend far more on how well communicates with people than how fast it runs Separated the two and more emphasis began on How to write software to communicate algorithms and structure to humans How to structure design process itself Copyright Nancy Leveson, Sept 1999
A Little History ... At first, struggling with programming languages, small programs, math algorithms. Worried about giving instructions to machine (efficiency) "Think like a computer" Found that life cycle costs depend far more on how well communicates with people than how fast it runs. Separated the two and more emphasis began on How to write software to communicate algorithms and structure to humans How to structure design process itself. c Copyright Nancy Leveson, Sept. 1999 �
Structured Programming Goal: mastering complexity Dijkstra, Hoare, Wirth Construction of correct programs requires that programs be intellectually manageable Key to intellectual manageability is the structure of the program itself Disciplined use of a few program building blocks facilitates correctness arguments
Structured Programming Goal: mastering complexity Dijkstra, Hoare, Wirth: Construction of correct programs requires that programs be intellectually manageable Key to intellectual manageability is the structure of the program itself. Disciplined use of a few program building blocks facilitates correctness arguments. Copyright c Nancy Leveson, Sept. 1999 �
Structured Programming(2 Restricted control structures Levels of abstraction · Stepwise refinement ° Program families ° Abstract data types System structure Programming-in-the-large Vs. programming-in-the-small Modularization Minimizing connectivity Copyright Nancy Leveson, Sept 1999
Structured Programming (2) Restricted control structures Levels of abstraction Stepwise refinement Program families Abstract data types System structure: Programming-in-the-large vs. programming-in-the-small Modularization Minimizing connectivity Copyright Nancy Leveson, Sept. 1999 c �
Restricting Control structures Dijkstra 3 main mental tools Enumerative reasoning Mathematical induction Abstraction( e.g., variable, procedure, data type) 1. Restrict programs to constructs that allow us to use these mental aids Sequencing and alternation(enumeration) Iteration and recursion(induction) Procedures, macros, and programmer-defined data types SESX Small procedures 2. Make program structure fit problem structure ght Nancy Leveson, Sept 1999
Restricting Control Structures Dijkstra: 3 main mental tools Enumerative reasoning Mathematical induction Abstraction (e.g., variable, procedure, data type) 1. Restrict programs to constructs that allow us to use these mental aids. Sequencing and alternation (enumeration) Iteration and recursion (induction) Procedures, macros, and programmer-defined data types SESX Small procedures 2. Make program structure fit problem structure. Copyright Nancy Leveson, Sept. 1999 c �