Software Design: Material Based On (Booch99, Rambaugh99, Jacobson99, Fowler97, Brown99)
Software Design: Material Based On (Booch99, Rambaugh99, Jacobson99, Fowler97, Brown99)
Software Design: Material Based On (Booch99, Rambaugh99, Jacobson99, Fowler97, Brown99)
Classes
ClassName attributes operations A class is a description of a set of objects that share the same attributes, operations, relationships, and semantics. Graphically, a class is rendered as a rectangle, usually including its name, attributes, and operations in separate, designated compartments.
SERG
Class Names
ClassName attributes operations The name of the class is the only required tag in the graphical representation of a class. It always appears in the top-most compartment.
SERG
Class Attributes
Person name : String address : Address birthdate : Date ssn : Id An attribute is a named property of a class that describes the object being modeled. In the class diagram, attributes appear in the second compartment just below the name-compartment.
SERG
SERG
SERG
Class Operations
Person name : String address : Address birthdate : Date ssn : Id eat sleep work play Operations describe the class behavior and appear in the third compartment.
SERG
You can specify an operation by stating its signature: listing the name, type, and default value of all parameters, and, in the case of functions, a return type.
SERG
Depicting Classes
When drawing a class, you neednt show attributes and operation in every diagram. Person Person Person name : String birthdate : Date ssn : Id Person eat play eat() sleep() work() play()
SERG
Class Responsibilities
A class may also include its responsibilities in a class diagram. A responsibility is a contract or obligation of a class to perform a particular service. SmokeAlarm Responsibilities -- sound alert and notify guard station when smoke is detected. -- indicate battery state
Software Design (UML) SERG
Relationships
In UML, object interconnections (logical or physical), are modeled as relationships. There are three kinds of relationships in UML: dependencies generalizations associations
SERG
Dependency Relationships
A dependency indicates a semantic relationship between two or more elements. The dependency from CourseSchedule to Course exists because Course is used in both the add and remove operations of CourseSchedule.
SERG
Generalization Relationships
Person A generalization connects a subclass to its superclass. It denotes an inheritance of attributes and behavior from the superclass to the subclass and indicates a specialization in the subclass of the more general superclass. Student
SERG
TeachingAssistant
SERG
Association Relationships
If two classes in a model need to communicate with each other, there must be link between them. An association denotes that link.
Student
Instructor
SERG
1..*
SERG
Student
1..*
Instructor
SERG
Student
teaches 1..*
Instructor
SERG
Student
Team
SERG
Team
SERG
Router
DomainNameServer
SERG
Product
Warranty
SERG
next
LinkedListNode
previous
SERG
SERG
Window
1 .. *
SERG
Interfaces
An interface is a named set of operations that specifies the behavior of objects without showing their inner structure. It can be rendered in the model by a one- or two-compartment rectangle, with the stereotype <<interface>> above the interface name.
<<interface>> ControlPanel
SERG
Interface Services
Interfaces do not get instantiated. They have no attributes or state. Rather, they specify the services offered by a related class.
SERG
implementation
A realization relationship connects a class with an interface that supplies its behavioral specification. It is rendered by a dashed line with a hollow triangle towards the specifier.
VendingMachine
SERG
Interfaces
inputStream {file must not be locked}
FileWriter
File
A class interface can also be rendered by a circle connected to a class by a solid line. FileReader
SERG
Parameterized Class
T LinkedList A parameterized class or template defines a family of potential elements. To use it, the parameter must be bound. A template is rendered by a small dashed rectangle superimposed on the upper-right corner of the class rectangle. The dashed rectangle contains a list of formal parameters for the class.
Software Design (UML) SERG
T
1 .. *
T
1..*
<<bind>>(Name)
DeansList
Software Design (UML) SERG
Enumeration
An enumeration is a user-defined data type that consists of a name and an ordered list of enumeration literals.
SERG
Exceptions
<<exception>> Exception getMessage() printStackTrace() Exceptions can be modeled just like any other class. Notice the <<exception>> stereotype in the name compartment.
<<exception>> KeyException
<<exception>> SQLException
SERG
Packages
A package is a container-like element for organizing other elements into groups. Compiler A package can contain classes and other packages and diagrams. Packages can be used to provide controlled access between classes in different packages.
SERG
Packages (Contd)
Classes in the FrontEnd package and classes in the BackEnd package cannot access each other in this diagram.
Compiler
FrontEnd
BackEnd
SERG
Packages (Contd)
Classes in the BackEnd package now have access to the classes in the FrontEnd package.
Compiler
FrontEnd
BackEnd
SERG
Packages (Contd)
Compiler We can model generalizations and dependencies between packages.
JavaCompiler
Java
SERG
Component Diagram
Component diagrams are one of the two kinds of diagrams found in modeling the physical aspects of an object-oriented system. They show the organization and dependencies between a set of components. Use component diagrams to model the static implementation view of a system. This involves modeling the physical things that reside on a node, such as executables, libraries, tables, files, and documents. - The UML User Guide, Booch et. al., 1999
SERG
Component Diagram
path.dll collision.dll
ISelfTest
SERG
Component Diagram
signal.h version = 3.5 parent signal.h version = 4.0 parent signal.h version = 4.1
interp.cpp
SERG
Deployment Diagram
Deployment diagrams are one of the two kinds of diagrams found in modeling the physical aspects of an object-oriented system. They show the configuration of run-time processing nodes and the components that live on them. Use deployment diagrams to model the static deployment view of a system. This involves modeling the topology of the hardware on which the system executes. - The UML User Guide, [Booch,99]
SERG
Deployment Diagram
A component is a physical unit of implementation with welldefined interfaces that is intended to be used as a replaceable part of a system. Well designed components do not depend directly on other components, but rather on interfaces that components support. - The UML Reference Manual, [Rumbaugh,99] component
spell-check Dictionary synonyms
interfaces
SERG
Deployment Diagram
<<database>> Account
stereotyped component
Transactions
Update
component
ATM-GUI
Deployment Diagram
server:HostMachine
<<database>> meetingsDB :Scheduler <<direct channel>>
reservations
clientMachine:PC
[Rumbaugh,99]
:Planner
SERG
Software Design
SERG
Use Case
A use case specifies the behavior of a system or a part of a system, and is a description of a set of sequences of actions, including variants, that a system performs to yield an observable result of value to an actor. - The UML User Guide, [Booch,99] An actor is an idealization of an external person, process, or thing interacting with a system, subsystem, or class. An actor characterizes the interactions that outside users may have with the system. - The UML Reference Manual, [Rumbaugh,99]
SERG
A use case is rendered as an ellipse in a use case diagram. A use case is always labeled with its name.
SERG
An actor is rendered as a stick figure in a use case diagram. Each actor participates in one or more use cases.
Student
Software Design (UML) SERG
Student
Software Design (UML)
Person
SERG
Student
Software Design (UML) SERG
Billing System
Student
Registrar
SERG
State Machine
The state machine view describes the dynamic behavior of objects over time by modeling the lifecycles of objects of each class. Each object is treated as an isolated entity that communicates with the rest of the world by detecting events and responding to them. Events represent the kinds of changes that objects can detect... Anything that can affect an object can be characterized as an event. - The UML Reference Manual, [Rumbaugh,99]
SERG
State Machine
An object must be in some specific state at any given time during its lifecycle. An object transitions from one state to another as the result of some event that affects it. You may create a state diagram for any class, collaboration, operation, or use case in a UML model . There can be only one start state in a state diagram, but there may be many intermediate and final states.
SERG
State Machine
start state simple state concurrent composite state final state
SERG
State Machine
download course offerings unscheduled make a course selection selecting downloading
SERG
Sequence Diagram
A sequence diagram is an interaction diagram that emphasizes the time ordering of messages. It shows a set of objects and the messages sent and received by those objects. Graphically, a sequence diagram is a table that shows objects arranged along the X axis and messages, ordered in increasing time, along the Y axis. - The UML User Guide, [Booch,99]
SERG
Sequence Diagram
an Order Line
An object in a sequence diagram is rendered as a box with a dashed line descending from it. The line is called the object lifeline, and it represents the existence of an object over a period of time.
SERG
Sequence Diagram
an Order Line a Stock Item
arrows being passed from object to object as time advances down the object lifelines. Conditions ( such as [check = true] ) indicate when a message gets passed.
SERG
Sequence Diagram
an Order Line a Stock Item
Notice that the bottom arrow is different. The arrow head is not solid, and there is no accompanying message.
This arrow indicates a return from a previous message, not a new message.
SERG
Sequence Diagram
an Order a Order Line
* prepare()
Iteration marker
An iteration marker, such as * (as shown), or *[i = 1..n] , indicates that a message will be repeated as indicated.
SERG
an Order
an Order Line
a Stock Item
[Fowler,97]
Condition
* prepare()
needsToReorder()
Return
Self-Delegation
[needsToReorder = true] new A Reorder Item
A Delivery Item
Creation
SERG
Collaboration Diagram
A collaboration diagram emphasizes the relationship of the objects that participate in an interaction. Unlike a sequence diagram, you dont have to show the lifeline of an object explicitly in a collaboration diagram. The sequence of events are indicated by sequence numbers preceding messages. Object identifiers are of the form objectName : className, and either the objectName or the className can be omitted, and the placement of the colon indicates either an objectName: , or a :className.
SERG
Collaboration Diagram
: Order Entry Window
1: prepare() Object Message Self-Delegation 5: needToReorder() 2*: prepare() 3: check() 4: [check == true] remove() Sequence Number
: Order
: Order Line
7: [check == true] new
: Stock Item
6: new
:Delivery Item
:Reorder Item
[Fowler,97]
Software Design (UML) SERG
Both a collaboration diagram and a sequence diagram derive from the same information in the UMLs metamodel, so you can take a diagram in one form and convert it into the other. They are semantically equivalent.
SERG
Activity Diagram
An activity diagram is essentially a flowchart, showing the flow of control from activity to activity. Use activity diagrams to specify, construct, and document the dynamics of a society of objects, or to model the flow of control of an operation. Whereas interaction diagrams emphasize the flow of control from object to object, activity diagrams emphasize the flow of control from activity to activity. An activity is an ongoing non-atomic execution within a state machine. - The UML User Guide, [Booch,99]
SERG
Receive Order
[Fowler,97]
Multiple Trigger
for each line item on order
*
Cancel Order
[failed]
Authorize Payment
[succeeded]
Reorder Item
Dispatch Order
SERG
References
[Booch99] Booch, Grady, James Rumbaugh, Ivar Jacobson, The Unified Modeling Language User Guide, Addison Wesley, 1999 [Rambaugh99] Rumbaugh, James, Ivar Jacobson, Grady Booch, The Unified Modeling Language Reference Manual, Addison Wesley, 1999 [Jacobson99] Jacobson, Ivar, Grady Booch, James Rumbaugh, The Unified Software Development Process, Addison Wesley, 1999 [Fowler, 1997] Fowler, Martin, Kendall Scott, UML Distilled (Applying the Standard Object Modeling Language), Addison Wesley, 1997. [Brown99] First draft of these slides were created by James Brown.
SERG