Version 1 Version 2 Stairs Stairs Entrance door Bath Hallway Dining Master Bedroom Study Hallway Bedroom2 Bath Bedroom2 Kitchen Kitchen Study Dining Entrance door Master Bedroom Hallway Dining Version 3 Bernd Bruegge & Allen H. Dutoit Bedroom2 Study Bath Kitchen Stairs Entrance door N Master Bedroom Figure 6-1, Example of iterative floor plan design. Three successive versions show how we minimize walking distance and take advantage of sunlight. Object-Oriented Software Engineering: Using UML, Patterns, and Java 1 Figure 6-2, The activities of system design. nonfunctional requirements Analysis dynamic model analysis object model System design design goals subsystem decomposition Object design object design model Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2 Figure 6-3, Subsystem decomposition. System Part * Class Bernd Bruegge & Allen H. Dutoit * Subsystem Object-Oriented Software Engineering: Using UML, Patterns, and Java parts 3 Figure 6-4, Subsystem decomposition for an accident management system. FieldOfficerInterface DispatcherInterface Notification Bernd Bruegge & Allen H. Dutoit IncidentManagement Object-Oriented Software Engineering: Using UML, Patterns, and Java 4 Figure 6-5, Example of reducing the couple of subsystems. Alternative 1: Direct access to the Database subsystem ResourceManagement IncidentManagement MapManagement Database Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5 Figure 6-5, Example of reducing the couple of subsystems (continued) Alternative 2: Indirect access to the Database through a Storage subsystem ResourceManagement IncidentManagement MapManagement Storage Database Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6 Figure 6-6, Decision tracking system. DecisionSubsystem assesses Criterion Alternative * * solvableBy DesignProblem * Bernd Bruegge & Allen H. Dutoit based-on resolvedBy SubTask ActionItem * Decision Task implementedBy subtasks Object-Oriented Software Engineering: Using UML, Patterns, and Java 7 Figure 6-7, Alternative subsystem decomposition for the decision tracking system of Figure 6-6 RationaleSubsystem Criterion assesses Alternative * * DesignProblem solvableBy * based-on resolvedBy Decision PlanningSubsystem implementedBy SubTask * ActionItem Bernd Bruegge & Allen H. Dutoit Task subtasks Object-Oriented Software Engineering: Using UML, Patterns, and Java 8 Figure 6-8, Subsystem decomposition of a system into three layers. Layer 1 (Top) A: Subsystem C:Subsystem B:Subsystem E:Subsystem Bernd Bruegge & Allen H. Dutoit F:Subsystem D:Subsystem Layer 2 G:Subsystem Layer 3 (Bottom) Object-Oriented Software Engineering: Using UML, Patterns, and Java 9 Level of abstraction Application Figure 6-9, An example of closed architecture: the OSI model. Bernd Bruegge & Allen H. Dutoit Presentation Format Session Connection Transport Message Network Packet DataLink Frame Physical Bit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10 Application Object Presentation CORBA Session Transport Network Socket TCP/IP DataLink Physical Ethernet Wire Figure 6-10, An example of closed architecture. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11 Figure 6-11, An example of open architecture: the Swing user interface library on the X11 platform. Application Swing AWT Xlib Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12 Figure 6-12, Repository architectural style. Repository Subsystem Bernd Bruegge & Allen H. Dutoit createData() setData() getData() searchData() Object-Oriented Software Engineering: Using UML, Patterns, and Java 13 Figure 6-13, An instance of the Repository architectural style. Compiler SyntacticAnalyzer SemanticAnalyzer Optimizer CodeGenerator LexicalAnalyzer Repository ParseTree SourceLevelDebugger Bernd Bruegge & Allen H. Dutoit SymbolTable SyntacticEditor Object-Oriented Software Engineering: Using UML, Patterns, and Java 14 Figure 6-14, Model/View/Controller architectural style. Controller initiator 1 * repository Model View Bernd Bruegge & Allen H. Dutoit subscriber 1 notifier * Object-Oriented Software Engineering: Using UML, Patterns, and Java 15 Figure 6-15, An example of MVC architectural style. Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16 Figure 6-16, Sequence of events in the Model/View/Control architectural style. 2:enterNewFileName(file,newName) 3:setName(newName) :Controller 1:subscribeToFileEvents(file) 5:getName() :InfoView :Model 4:notifySubscribedViews(file) 4:notifySubscribedViews(file) :FolderView Bernd Bruegge & Allen H. Dutoit 1:subscribeToFileEvents(file) 5:getName() Object-Oriented Software Engineering: Using UML, Patterns, and Java 17 Figure 6-17, Client/server architectural style. Server Client Bernd Bruegge & Allen H. Dutoit * requester * provider service1() service2() … serviceN() Object-Oriented Software Engineering: Using UML, Patterns, and Java 18 Figure 6-18, The World Wide Web as an instance of the client/server architecture. netscape:WebBrowser iexplorer:WebBrowser lynx:WebBrowser www12.in.tum.de:WebServer www.cs.cmu.edu:WebServer mosaic:WebBrowser Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19 Figure 6-19, Peer-to-peer architectural style. Peer service1() service2() … serviceN() Bernd Bruegge & Allen H. Dutoit requester * * provider Object-Oriented Software Engineering: Using UML, Patterns, and Java 20 Figure 6-20, An example of peer-to-peer architecture. 1. updateData application1:DBUser database:DBMS application2:DBUser Bernd Bruegge & Allen H. Dutoit 2. changeNotification Object-Oriented Software Engineering: Using UML, Patterns, and Java 21 Figure 6-21, Three-tier architectural style. Bernd Bruegge & Allen H. Dutoit Interface Form Application Logic Connection Storage Query Object-Oriented Software Engineering: Using UML, Patterns, and Java 22 Figure 6-22, Four tier architectural style. Presentation Client WebBrowser Presentation Server Form Application Logic Connection Storage Query Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23 Figure 6-23, Pipe and filter architectural style. * input Filter Bernd Bruegge & Allen H. Dutoit * output output 1 input 1 Object-Oriented Software Engineering: Using UML, Patterns, and Java Pipe 24 Figure 6-24, An instance of the pipe and filter architectural style. % ps auxwww | grep dutoit | sort | more dutoit dutoit dutoit 19737 19858 19859 0.2 0.2 0.2 ps Bernd Bruegge & Allen H. Dutoit 1.6 1908 1500 pts/6 0.7 816 580 pts/6 0.6 812 540 pts/6 grep O 15:24:36 S 15:38:46 O 15:38:47 sort Object-Oriented Software Engineering: Using UML, Patterns, and Java 0:00 -tcsh 0:00 grep dutoit 0:00 sort more 25 Figure 6-27, Analysis model for the MyTrip route planning and execution. RouteAssistant PlanningService Trip Location Direction Destination Crossing Segment Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26 Figure 6-28, Initial subsystem decomposition for MyTrip. RoutingSubsystem PlanningSubsystem RouteAssistant PlanningService Trip Location Direction Destination Crossing Segment Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27 Figure 6-29, An example of the Facade pattern. Compiler Compiler compile(s) CodeGenerator Lexer create() getToken() Optimizer Parser create() generateParseTree() ParseNode create() Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28