CS 541 Lecture -*- Outline -*- * the object-oriented paradigm ** What is a paradigm? (in design/programming) how to go about design, coding, testing a way to approach problems in design a way to *organize* programs a set of tools variables, procedures, while-loops, declarations, ... a set of questions how to evaluate a design/program what makes a good/bad program *** Stepwise refinement (top-down design) (ref: Wirth 1971 article in CACM) **** how to go about design... Program developed in sequence of refinement steps. -starts with specification (find abs. mean of a data set) -refines both algorithms and data in parallel refinements in tasks accompanied by refinement in data used to communicate between tasks recurse for each newly identified task (draw tree) -terminates when all instructions expressed in prog. language **** remark: Stepwise refinement and Pascal Pascal expresses important parts of stepwise refinement refinement of algorithms: nesting, procedures refinement of data: data structuring primitives e.g. arrays **** limitations: change each paradigm has limits e.g., hammer analogy not theoretical limits, but practical limits e.g., bicycle without speeds analogy practical limits of stepwise refinement (and Pascal) designs aren't built to handle change small change in requirements => redesign so maintenance is difficult stepwise refinement set up to prevent change! requirements -> specs -> code -> test -> deliver contract (signed) after contract is signed customer can't ask for more changes. ** why is change important? world is constantly changing to be competative in the world of software, keep up with customers how many versions of Lotus? ... even Pascal changed significantly since first introduced. ** the vision software that can evolve easily e.g., find median, find median of data-set of strings, find weighted mean, find mode,... reusable components program by putting together building blocks (software ICs) revolution from making it better to work together