Com S 362 Lecture Outline --------------------------------------------------- Reading: Chapter 2 from Baldwin and Clark The textbook is available on reserve in the library. --------------------------------------------------- DESIGN PROCESS Design (verb): Design is the process of inventing objects -- our "things" -- that perform specific functions. These objects, the products of human intelligence and effort, are called artifacts. Artifacts: have structure (what it is, how it is constituted?) and functions (what it does, what it is for?) Exercise: Explain domain models and sequence diagrams Exercise: Class diagrams and interaction diagrams -------------------------------------------------- DESIGN ARTIFACTS Design (noun): Design is an abstract description of an artifact. It describes both structure and function. The design, however, need to precisely and completely describe the structure of the artifact. Functions may not be completely specified. Q: Why functionality need not be completely specified? Exercise: Think about the initial purpose (function) of designing unix utility wc, now think about its use in the command ls -al | wc -l. Were this use and other similar usage anticipated? Exercise: Think about the design of a stack of objects. Same design may serve different purposes, method call stack, postfix expression evaluation stack, etc. -------------------------------------------------- DESIGN PARAMETERS Design parameters: A design can be broken down into smaller units, called design parameters. Example: Red mug and blue mug differ in terms of design parameter "color". Polo's and Tees differ in terms of design parameter "collar type". Design parameters have range. For example, mug could have a choice of colors red, blue, green, black, and white. In that case, the range of the design parameter will be the set {red, blue, green, black, white}. Space of design: n-dimensional co-ordinate system, each axis represents a design parameter. When we give value to all co-ordinates, we get a point in the design space (i.e. a design). -------------------------------------------------- HIERARCHICAL DESIGN PARAMETERS Hierarchical Design Parameters: Design parameters, certain choices of which bring new design parameters into existence in the design space. Example: Consider a design space of two subsystems {A, and B} and interconnection between these subsystems {A-B}. The initial design space is {A, B, A-B}, i.e. the design parameters are the choice of module A, module B, and the choice of interconnection between the modules. The range of the design parameter interconnection is {true, false}, i.e. whether these two modules are interconnected or not, however, if the value of the design parameter interconnection is set to true a new set of design parameters comes into existence. For example, interface between these two modules need to be determined, i.e. a design decision about design parameters invocation {Explicit, Implicit}, concurrency {Asynchronous, Synchronous}, etc will have to made. ---------------------------------------------------- DESIGN PARAMETER INTERDEPENDENCE Design parameter interdependence: Often design parameters depend on each other is complex ways. For example, in the expanded design space of the example above {A, interfaceA, B, interfaceB, invocationA-B, concurrencyA-B}, the choice of the interconnection invocationA-B affects the choices that can be made for design parameters interfaceA and interfaceB. If invocationA-B is selected to be explicit, A's use of B affects interfaceB and vice versa. If invocationA-B is selected to be implicit, choices of interfaceA and interfaceB will have to include declaring and announcing events. ---------------------------------------------------- DESIGN STRUCTURE MATRIX Design Structure Matrix: A tool for formally mapping hierarchical relationships and interdependencies among design parameter [Donald Steward 1981, Steven Eppinger 1991,1997]. - A square matrix - Design parameters as rows and columns - Initiating and resulting parameter in columns and rows. - X's to denote hierarchies - X's in symmetry to denote interdependencies Design Tasks: Choose the value of design parameters Design structure: List of design parameters and the interdependencies among them. Task structure: List of design tasks and connections between these tasks. ----------------------------------------------------