Software Design, Software Coding - Are there Distinctions? “Design” Revisited Software Design, Software Coding - Are there Distinctions? From Herb Simon’s work
Design Definition - Herb Simon Science describes natural things Engineering teaches how to make artifacts that have desired properties (how to design)
“The artificial world is centered precisely on this interface between the inner and outer environments; it is concerned with attaining goals by adapting the former to the latter. The proper study of those who are concerned with the artificial is the way in which that adaptation of means to environments is brought about - and central to that is the process of design itself.”
Design Definition (again) The natural sciences are concerned with how things are. Design is concerned with how things ought to be, with devising artifacts to attain goals.
Design is about “normative” “should’s” and predicate logics (descriptive) won’t suffice modal (normative) logics exist, but are not helpful? What do designers do? look at process of OPTIMIZATION
Maximize utility - standard optimization problem - to maximize a function subject to constraints how do we do this using predicate logic????? construct sets of possible worlds consider the possible worlds that meet the constraints of the outer environment; then find the particular world in the set that meets the remaining constraints of the goal and maximizes the utility function
Central Topics for the Curriculum: Science of Design The Evaluation of Designs Theory of evaluation: utility theory, statistical decision theory Computational methods: Algorithms for choosing optimal alternatives Algorithms and heuristics for choosing satisfactory alternatives
The Formal Logic of Design The Search for Alternatives imperative and declarative logics The Search for Alternatives Heuristic search: factorization and means-ends analysis Allocation of resources for search
Theory of Structure and Design Organization: hierarchic systems Representation of Design Problems