Object-Oriented Software Engineering Chapter 8, Object Design: Reuse and Patterns Using UML, Patterns, and Java Podcast Ch08-01 ♦ Title : Object Design ♦ Description : Where does object design fit?; object design activities ♦ Participants : Barry Kurtz (instructor); Brandon Winters, Sara Hyde, Cheng Vue, Dan Baehr (students) ♦ Textbook : Object-Oriented Software Engineering: Using UML, Patterns and Java by Bernd Bruegge and Allen H. Dutoit Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2 Object Design ♦ Object design is the process of adding details to the requirements analysis and making implementation decisions ♦ The object designer must choose among different ways to implement the analysis model with the goal to minimize execution time, memory and other measures of cost. ♦ Requirements Analysis: Use cases, functional and dynamic model deliver operations for object model ♦ Object Design: Iterates on the models, in particular the object model and refine the models ♦ Object Design serves as the basis of implementation Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 3 Page 1
Object Design: Closing the Gap Problem System Application objects Requir ements gap Solution objects Custom objects Object design gap Off-the-shelf components System design gap Machine Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 4 Examples of Object Design Activities ♦ Identification of existing components ♦ Full definition of associations ♦ Full definition of classes (System Design => Service, Object Design => API) ♦ Specifying the contract for each component ♦ Choosing algorithms and data structures ♦ Identifying possibilities of reuse ♦ Detection of solution-domain classes ♦ Optimization ♦ Increase of inheritance ♦ Decision on control ♦ Packaging Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 5 A More Detailed View of Object Design Activities Select Subsystem Specification Reuse Identifying missing Identifying components attributes & operations Specifying visibility Adjusting components Specifying types & signatures Identifying patterns Specifying constraints Specifying exceptions Adjusting patterns Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 6 Page 2
Detailed View of Object Design Activities (ctd) Check Use Cases Restructuring Optimization Revisiting Optimizing access inheritance paths Caching complex Collapsing classes computations Delaying complex Realizing associations computations Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 7 A Little Bit of Terminology: Activities ♦ Object-Oriented methodologies use these terms: � System Design Activity � Decomposition into subsystems � Object Design Activity � Implementation language chosen � Data structures and algorithms chosen Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 8 A Little Bit of Terminology: Activities ♦ Structured analysis/structured design uses these terms: � Note: Structured Analysis and Design is how software engineering was taught in the 1970-80s using Structured Programming Languages � Preliminary Design Activity � Decomposition into subsystems � Data structures are chosen � Detailed Design Activity � Algorithms are chosen � Data structures are refined � Implementation language is chosen � Typically in parallel with preliminary design, not a separate activity Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 9 Page 3
1. Reuse: Identification of existing solutions Ch08 � Use of inheritance Software Reuse � Off-the-shelf components and Current and additional solution objects Upcoming � Design patterns Materials 2. Interface specification Ch09 � Describes precisely each class Specifying interface Interfaces 3. Object model restructuring � Transforms the object design model to improve its understandability and Ch10 extensibility Mapping Models to Code 4. Object model optimization � Transforms the object design model to address performance criteria such as response time or memory utilization. Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 10 Page 4
Recommend
More recommend