Using UML, Patterns, and Java Object-Oriented Software Engineering Object Design II: Design Patterns Bernd Bruegge Applied Software Engineering Technische.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

Bernd Bruegge & Allen Dutoit Object-Oriented Software Engineering: Conquering Complex and Changing Systems 1 Software Engineering September 12, 2001 Capturing.
Lecture 9 Design Patterns CSCI – 3350 Software Engineering II Fall 2014 Bill Pine.
CS590L - Lecture 6 1 CS590L Distributed Component Architecture References: - E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns: Elements of.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Example of a Problem Statement: Introduction into.
Using UML, Patterns, and Java Object-Oriented Software Engineering Royce’s Methodology Chapter 16, Royce’ Methodology.
Chapter 8, Object Design Reuse and Patterns II Using UML, Patterns, and Java Object-Oriented Software Engineering.
Design Patterns for Object Oriented systems CSC 515 Ashwin Dandwate.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 5: Analysis, Object Modeling.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 5, Analysis: Dynamic Modeling.
Design Patterns CS is not simply about programming
Chapter 8, Object Design Introduction to Design Patterns
Spring 2010CS 2251 Design Patterns. Spring 2010CS 2252 What is a Design Pattern? "a general reusable solution to a commonly occurring problem in software.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 5, Object Modeling.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Software Engineering I Object-Oriented Design Software Design Refinement Using Design Patterns Instructor: Dr. Hany H. Ammar Dept. of Computer Science.
Chapter 8 Object Design Reuse and Patterns. Finding Objects The hardest problems in object-oriented system development are: –Identifying objects –Decomposing.
ECE 355 Design Patterns Tutorial Part 2 (based on slides by Ali Razavi) Presented by Igor Ivković
Reuse Activities Selecting Design Patterns and Components
PRESENTED BY SANGEETA MEHTA EECS810 UNIVERSITY OF KANSAS OCTOBER 2008 Design Patterns.
1 An introduction to design patterns Based on material produced by John Vlissides and Douglas C. Schmidt.
Chapter 8, Object Design Reuse and Patterns II Using UML, Patterns, and Java Object-Oriented Software Engineering.
Design Patterns Trends and Case Study John Hurst June 2005.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Introduction to Software Engineering CEN 4010.
Conquering Complex and Changing Systems Object-Oriented Software Engineering Chapter 1, Introduction to Software Engineering.
Software Design Refinement Using Design Patterns Instructor: Dr. Hany H. Ammar Dept. of Computer Science and Electrical Engineering, WVU.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
ISP666 MVC & Design Patterns. Outline Review Event Programming Model Model-View-Controller Revisit Simple Calculator Break Design Patterns Exercise.
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Outline of the Lecture  Patterns covered  Composite:
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 27. Review UML dynamic view – State Diagrams.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 4, Requirements Elicitation.
CSC 395 – Software Engineering Lecture 13: Object-Oriented Analysis –or– Let the Pain Begin (At Least I’m Honest!)
Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Object Modeling.
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 5: Analysis, Object Modeling.
Y2 eProjects Session 4 – Advanced Topics. Objectives  Dynamic Models  Design Patterns (Optional)  Software testing (for S4) ACCP i7.1\Sem3_4\eProject\T4.
1 Software Development Software Engineering is the study of the techniques and theory that support the development of high-quality software The focus is.
18 April 2005CSci 210 Spring Design Patterns 1 CSci 210.
L11-12: Design Patterns Definition Iterator (L4: Inheritance)‏ Factory (L4: Inheritance)‏ Strategy (L5: Multiple Inheritance)‏ Composite (L6: Implementation.
Software Design Patterns (1) Introduction. patterns do … & do not … Patterns do... provide common vocabulary provide “shorthand” for effectively communicating.
Chapter 8 Object Design Reuse and Patterns. Object Design Object design is the process of adding details to the requirements analysis and making implementation.
Software Production ( ) First Semester 2011/2012 Dr. Samer Odeh Hanna (PhD)
ECE450S – Software Engineering II
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 8, Object Design: Introduction to Design Patterns.
Design Patterns CSIS 3701: Advanced Object Oriented Programming.
1 Design Patterns Object-Oriented Design. 2 Design Patterns 4Reuse of design knowledge and experience 4Common in many engineering disciplines 4Avoids.
05/26/2004www.indyjug.net1 Indy Java User’s Group May Knowledge Services, Inc.
Object-Oriented Modeling: Static Models. Object-Oriented Modeling Model the system as interacting objects Model the system as interacting objects Match.
Copyright © Active Frameworks Inc. - All Rights Reserved - V2.0Design Pattern Catalog - Page L3-1 PS95&96-MEF-L10-1 Dr. M.E. Fayad Creationa.
CS 210 Proxy Pattern Nov 16 th, RMI – A quick review A simple, easy to understand tutorial is located here:
Chapter 8 Object Design Reuse and Patterns. More Patterns Abstract Factory: Provide manufacturer independence Builder: Hide a complex creation process.
Why is Design so Difficult? Analysis: Focuses on the application domain Design: Focuses on the solution domain –The solution domain is changing very rapidly.
Design Patterns CSCE 315 – Programming Studio Spring 2013.
Chapter 8 Object Design: Reuse and Patterns.
Review of last class Software Engineering Modeling Problem Solving
Chapter 8 Object Design: Reuse and Patterns 2.
Design Patterns: MORE Examples
Software Design Refinement Using Design Patterns
Object Design II: Design Patterns
Chapter 8, Object Design Introduction to Design Patterns
Instructor: Dr. Hany H. Ammar
Chapter 8, Design Patterns Bridge
Chapter 8, Object Design Reuse and Patterns II
Chapter 6, System Design Design Patterns
Presented by Igor Ivković
Chapter 8, Object Design Introduction to Design Patterns
Chapter 8, Object Design Introduction to Design Patterns
Chapter 8, Design Patterns Composite
Chapter 8, Design Patterns Introduction
Presented by Igor Ivković
Presentation transcript:

Using UML, Patterns, and Java Object-Oriented Software Engineering Object Design II: Design Patterns Bernd Bruegge Applied Software Engineering Technische Universitaet Muenchen

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2 What is this? 1.Nf3 d5 2.c4 c6 3.b3 Bf5 4.g3 Nf6 5.Bg2 Nbd7 6.Bb2 e6 7.O- O Bd6 8.d3 O-O 9.Nbd2 e5 10.cxd5 cxd5 11.Rc1 Qe7 12.Rc2 a5 13.a4 h6 14.Qa1 Rfe8 15.Rfc1 This is a fianchetto! The fianchetto is one of the basic building-blocks of chess thinking.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3 The diagram is from Reti-Lasker, New York We can see that Reti has allowed Lasker to occupy the centre but Rtei has fianchettoed both Bishops to hit back at this, and has even backed up his Bb2 with a Queen on a1! Fianchetto (Reti-Lasker)

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4 Is this a good Object Model? public interface SeatImplementation { public int GetPosition(); public void SetPosition(int newPosition); } public class AimSeat implements SeatImplementation { public int GetPosition() { // actual call to the AIM simulation system } …. } public class SARTSeat implements SeatImplementation { public int GetPosition() { // actual call to the SART seat simulator }... } Not quite But it depends….

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5 A Game: Get-15 The game starts with nine numbers 1,2,3,4,5,6,7,8 and 9 You and your opponent take alternate turns, each taking a number Each number can be taken only once: If you opponent has selected a number, you can no longer take it The first person to have any three numbers that total 15 wins the game Example: You: Opponent: Opponent Wins!

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6 Characteristics of Get-15 Hard to play The game is especially hard, if you are not allowed to write anything down Why? All the numbers must be scanned to see if you have won/lost It is hard to see what the opponent will take if you take a certain number The choice of the next number depends on all the previous numbers (your and your opponent’s numbers) Not easy to devise an simple strategy.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7 Another Game: Tic-Tac-Toe Source:

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8 A Draw Sitation

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9 Strategy for determining a winning move

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10 Winning Situations for Tic-Tac-Toe Winning Patterns

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11 Tic-Tac-Toe is “Easy” Why? Reduction of complexity through patterns and symmetry Patterns: Knowing the following three patterns, the player can anticipate the opponents move. Symmetry: The player needs to remember only these three patterns to deal with 8 different game situations The player needs to memorize only 3 opening moves and their responses.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12 Get-15 and Tic-Tac-Toe are identical problems  Any sequence of three numbers that wins the Get-15 game also wins at Tic-Tac-Toe  Any Tic-Tac-Toe solution is also a solution the to Get-15 problem  To see the relationship between the two games, we simply arrange the 9 digits into the following pattern

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java You: Opponent:

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14 During object modeling we do many transformations and changes to the object model It is important to make sure the system model stays simple during these model transformations After all, the goal of a model is to be an abstraction, that is, a simplification, not a complication Design patterns keep the system model simple.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15 Heuristics for Good Models Modeling must address our mental limitations: Our short-term memory has only limited capacity (7+-2) Good models deal with this limitation, because … … they do not tax the mind A good model requires a minimal mental effort to understand … they reduce complexity Use of patterns Use of symmetries … they use abstractions Taxonomies … they have organizational structure Memory limitations are overcome with an appropriate representation (“natural model”).

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16 Outline of the Lecture Two games Patterns and symmetry help to win the game Heuristics for good models Reducing the complexity of models Patterns covered in this lecture Composite: Model dynamic aggregates Facade: Interfacing to subsystems Adapter: Interfacing to existing systems (legacy systems) Bridge: Interfacing to existing and future systems Next lecture (January 8) Factory and Abstract Factory Proxy Observer Strategy

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17 Review: Design pattern A design pattern is… …a reusable template for solving a recurring design problem Basic idea: Don’t re-invent the wheel! … design knowledge Knowledge on a higher level than classes, algorithms or data structures (linked lists, binary trees...) Lower level than application frameworks …an example of modifiable design Learning how to design starts by studying other designs.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18 Why are modifiable designs important? A modifiable design… …enables an iterative and incremental development concurrent development risk management flexibility to change … minimizes the introduction of new problems when fixing old ones … allows to easily add more functionality after the delivery of the system

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19 What makes a design modifiable? Low coupling and high cohesion Clear dependencies Explicit assumptions How do design patterns help? They are generalized from existing systems They provide a shared vocabulary to designers They provide examples of modifiable designs Abstract classes Delegation

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 20 Recall: Finding Objects The hardest problems in object-oriented system development are: Identifying objects Decomposing the system into objects Requirements Analysis focuses on application domain: Object identification System Design addresses both, application and implementation domain: Subsystem identification Object Design focuses on implementation domain: Additional solution objects.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21 Recall: Techniques for Finding Objects Requirements Analysis Start with Use Cases. Identify participating objects Textual analysis of flow of events (find nouns, verbs,...) Extract application domain objects by interviewing client (application domain knowledge) Find objects by using general knowledge System Design Subsystem decomposition Try to identify architectural style Object Design Find additional objects by applying implementation domain knowledge Try to identify design patterns.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22 What is common between these definitions? Definition Software System A software system consists of subsystems which are either other subsystems or collection of classes Definition Software Lifecycle A software lifecycle consists of a set of development activities which are either other actitivies or collection of tasks.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23 What is common between these definitions? Definition Software System A software system consists of subsystems which are either other subsystems or collection of classes Composite: Subsystem (A software system consists of subsystems which consists of subsystems, which consists of subsystems, which...) Leaf node: Class Definition Software Lifecycle A software lifecycle consists of a set of development activities which are either other actitivies or collection of tasks Composite: Activity (A software lifecycle consists of activities which consist of activities, which consist of activities, which....) Leaf node: Task.

Introducing the Composite Pattern Tree structures that represent part-whole hierarchies with arbitrary depth and width can be used in the solution of many problems The Composite Pattern lets a client treat individual objects and compositions of these objects uniformly Client Component Operation() Leaf Operation() Composite Operation() AddComponent() RemoveComponent() GetChildren() Children *

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25 Modeling a Software System with a Composite Pattern Software System Class Subsystem Children * User

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26 Modeling the Software Lifecycle with a Composite Pattern Software Lifecycle Task Activity Children * Manager

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27 The Composite Patterns models Dynamic Aggregates University School Department Organization Chart (variable aggregate): Dynamic tree (recursive aggregate): Car Fixed Structure: DoorsWheels BatteryEngine Compound Statement Simple Statement Program Block * * * * * * Composite Pattern

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28 Graphic Applications use the Composite Pattern Client Graphic Draw() Circle Draw() Picture Draw() Add(Graphic g) RemoveGraphic) GetChild(int) Children Line Draw() The Graphic Class represents both primitives (Line, Circle) and containers (Picture). *

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 30 The Java‘s AWT library can be modeled with the component pattern Graphics Component Button TextField Label * TextArea Text Component Container add(Component c) paint(Graphics g) getGraphics()

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31 Reducing the Complexity of Models Modeling is about communication To a human being as well as to a tool To communicate a complex model to a human being we use navigation and reduction of complexity Navigate through the model so the user can follow it Start with a very simple model Identify the key abstractions Then decorate the model with additional classes To reduce the complexity of the model further Look for inheritance (taxonomies) If the model is too complex, taxonomies should be placed in separate UML packages Then identify or introduce patterns in the model Make sure to use the name of the patterns.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 32 Example: Modeling a Project

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 33 How to reduce the Complexity of the Model 1.Look for the key abstractions Project, Outcome, Schedule, Work, Resource 2.Identify patterns: For example, the project model has 3 composite patterns 3.Find all the application domain taxonomies Start with the taxonomies for the key abstractions 4.Key abstractions, patterns and/or taxonomies are candidates for separate UML packages. *

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java Find the Key Abstractions in the Model Key Abstractions

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 35 Key Abstractions in the Project Model Project OutcomeScheduleWorkResource

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java Find Patterns used in the Model Composite Patterns

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 37 Composite Patterns in the Project Model Activity * Work Task Staff * Organizational Unit Partici- pant Set of Work Products * Outcome Work product

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java Find the Taxonomies used in the Model Taxonomies

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 39 Step 4: Package based on Key Abstractions Project OutcomeScheduleWorkResource Project

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 40 Step 4 continued: Additional Packages based on Patterns Activity * Work Task Staff * Organizational Unit Partici- pant Set of Work Products * Outcome Work product Outcome WorkOrganization

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 41 Step 4 continued: Additional UML Packages based on Taxonomies Resource

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 42 Patterns are not the cure for everything What is wrong in the following pictures?

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 43

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 44

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 45

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 46

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 47

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 48

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 49 Summary Design patterns are template solutions for common design problems such as separating an interface from a number of alternate implementations Accessing a set of legacy classes protecting a caller from changes associated with specific platforms A design pattern consists of a small number of classes uses delegation and inheritance provides a modifiable design solution These classes can be adapted and refined for the specific system under construction To provide the reuse of existing solutions Customization of the system.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 50 Additional Readings E. Gamma et.al., Design Patterns, M. Fowler, Analysis Patterns: Reusable Object Models, 1997 F. Buschmann et. Al., Pattern-Oriented Software Architecture: A System of Patterns, 1996 T. J. Mowbray & R. C. Malveau, CORBA Design Patterns, 1997 S. W. Ambler, Process Patterns: Building Large-Scale Systems Using Object Technology, Dependency management: P. Feiler & W. Tichy, “Propagator: A family of patterns,” in Proceedings of TOOLS-23'97, Santa Barbara, CA, Aug, Configuration management: W. J. Brown et. Al., AntiPatterns and Patterns in Software Configuration Management, 1999.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 51 Backup Slides

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 52 Notation used in the Design Patterns Book Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software, Addison Wesley, 1995 Based on OMT (a precursor to UML). Notational differences between the OMT notation and UML: Attributes come after the Operations Associations are called acquaintances Multiplicities are shown as solid circles Dashed line: Instantiation Association (Class can instantiate objects of associated class) (In UML it denotes a dependency) UML Note is called Dog-ear box (connected by dashed line to class operation): Pseudo-code implementation of operation.