From Analysis to Design

Object Design
- purpose:
- prepare for the implementation of the system model based on design decisions
- transform the system model (optimize it)
- investigate alternative ways to implement the system model
- use design goals: minimize execution time, memory and other measures of cost
- serves as the basis of implementation
- close the gap between the application objects and the off-the-shelf components by identifying additional solution objects and refining existing objects
- include
- reuse
- class libraries and additional components are selected for basic data structures and services
- design patterns are selected for solving common problems and for protecting specific classes from future change
- components and design patterns need to be adapted before they can be used, this is done by wrapping custom objects around them or by refining them using inheritance
- interface specification
- the subsystem services identified during system design are described in terms of class interfaces, including operations, arguments, type signatures, and exceptions
- the subsystem service specification is often called subsystem API (Application Programmer Interface)
- the result of service specification is a complete interface specification for each subsystem
- restructuring
- we address design goals such as maintainability, readability, and understandability of the system model
- optimization
- optimization activities address performance requirements of the system model
- changing algorithms to respond to speed or memory requirements, reducing multiplicities in associations to speed up queries, adding redundant associations for efficiency, rearranging execution orders, adding derived attributes to improve the access time to objects, and opening the architecture, that is, adding access to lower layers because of performance requirements


software system development fills the gap between a given problem and an existing machine
analysis reduces the gap between the problem and the machine by identifying objects representing problem specific concepts
system design reduces the gap between the problem and the machine in two ways:
- first, system design results in a virtual machine that provides a higher level of abstraction than the machine, this is done by selecting off-the-shelf components for standard services such as middleware, user interface toolkits, application frameworks, and class libraries
- second, system design identifies off-the-shelf components for application domain objects such as reusable class libraries of banking objects
Custom Objects
Problem: Close the object design gap
- Develop new functionality
Main goal:
- Reuse knowledge from previous experience
- Reuse functionality already available
Composition (also called Black Box Reuse)