150 likes | 257 Vues
Explore concepts of deployment and collaborations in software design to optimize system performance and enhance modularity. Learn about deployment diagrams, nodes, components, and collaboration diagrams. Understand the significance of sequencing and how it impacts system behavior. Enhance your understanding of software design patterns for effective coding practices. Dive into deployment strategies to configure running systems in real-world environments effectively.
E N D
RNDS Deployment, Collaborations and Sequences CS 236700: Software Design Winter 2004-2005/T6
Reminder: Homework bonus program • Report a bug • Report a programming challenge
RNDS: The story so far • Problem description • SRS • Use case model • SDD • Class design • Sequence, Deployment • Detailed class design • Coding • Design patterns
Deployment diagram (1/2) • Deployment (in design) • The configuration of the running system in a real-world environment • Show relationships between Nodes • What is a node? • A “location” where run-time entities “live” • Run-time entities: objects, components • Has a memory • Usually has processing capabilities • Nodes usually represent: • Executables (processes) • Distinct hardware (workstations, I/O devices)
Deployment diagram (2/2) • Deployment diagram • Shows dependency between nodes • In most cases shows instances of nodes • Analogous to a diagram of running objects • Nodes are typically singletons/anonymous • It is possible (but not common) to show types of nodes • Analogous to class diagram • Relevant components/objects inside a node are usually shown • Notation • A network of Node symbols • Edges between nodes => communication relationship • Dashed arrows => dependency between components • Preferably thru interface
Components • What are components? • A replaceable part of the system • Provides implementation • Conforms to a set of interfaces • Components vs. classes • Every class is (usually) a trivial component • Usually components include several classes/packages • Not always coherent
Components considerations • The major tradeoff: • Simplicity vs. Modularity • Few components => System is simple • “Everybody” knows each other • Usually hard-coded within constructors • On the other hand: poor modularity • Many components => System is complex • Implementing inter-component relationship is difficult • Techniques for overcoming the problem: • Unique identifiers • Interfaces • Central registry • Configuration values processed in run-time • On the other hand: the system is highly modular
Deployment diagram (RNDS) • Devices: RF, GPS • Processes: RNDS station
Collaborations • What is a collaboration? • An arrangement of objects within a context • Properties • The collaboration is aimed at achieving some goal • Object (possibly) fulfill a predefined role • A single object may fulfill more than one role • Roles are only meaningful within their context • A parameterized collaboration is a Pattern • Collaboration diagram • Shows Interaction between the participating objects • Relationship are indicated by arrows (messages, composition, …) • Time is indicated by “sequence number”
Sequence Diagrams • Describes how groups of objects interact • Shows messages passed (between objects) over time • Properties • Captures the behavior of a single scenario • The most popular way for representing a use-case • Actually shows the same information as a collaboration diagram • Sequence diagrams (SD) vs. Collaboration Diagrams (CD) • SD: Shows time clearly; object relationships are implicit • CD: Shows object relationships clearly; time has no visual representation
Sequence Diagram: Adding a message • Adding actors, objects: • Drag-and-drop
Sequence Diagram: GPS update • Do you like this design?