Static analysis modeling

advertisement
Analysis Modeling
Static Modeling
Requirements analysis
• Results in static and dynamic models
– Scenario models: use cases (static), swimlane
diagrams (dynamic)
– Class diagrams (static)
– Flow oriented diagrams (dynamic)
– Behavioral models: sequence diagrams (dynamic),
state diagrams (dynamic)
• These models bridge the gap between
requirements and implementation (code)
Classes through Class diagrams
• We’ve done use cases, time to move on to
candidate classes, all of which should:
– Retain information
– Need services
– Have multiple attributes
– Have common attributes and operations
– Be essential requirements (in the problem space)
Selecting classes: example
• Run this slide to see animation
ATMUser
PinNum
retained information
Yes
Yes
needed services
Yes
No
multiple attributes
Yes
No
common attributes
Yes
Yes
common operations
Yes
Maybe
essential requirements
Yes
Yes
Class diagrams
• A box with at least three
compartments:
Student
-major: String
-gpa: Real
-standing: String
– Class name
+add(section: Section)
– Attributes
+drop(section: Section)
– Operations
-- The set of students known to
the registration system
– Responsibilities
– User-defined compartment
• Each class associated with
other classes
-- An exception occurs if gpa
falls below 2.0
Attribute syntax
[visibility] name [multiplicity] [:type] [=initial-value]
[{property-string}]
• visibility: public “+”, protected “#”, or private “-”
• name: capitalize first letter of each word that
makes up the name, except for the first
• multiplicity: number, range, or sequence of number
or ranges.
• type: built-in type or any user-defined class
• initial-value: any constant and user-defined object
• property-string: e.g, changeable, addOnly, frozen
Operation syntax
[visibility] name [(parameter-list)] [:returntype] [{property-string}]
• visibility: “+”, “#”, “-”
• name: verb or verb phase, capitalize first letter of
every word, except first
• parameter-list: coma separated list of parameters
• return-type: primitive type or user-defined type
• property-string: isQuery, sequential, guarded,
concurrent
Example association
Student
Section
-major: String
-GPA: Real
-standing: String
-name: String
-capacity: Integer
+add(Section)
+drop(Section)
+add(Student)
+drop(Student)
+checkPrereq(List<Student>)
Here, a Student is associated with a Section; one
or both need the other in order to function
Associations
• An association is a structural relationship
that specifies that objects of class may be
connected to objects of another class
• Associations typically represent “longlived” relationships
– In a library system a Person always has a
name (association), but may infrequently have
a book (dependency)
Association syntax
•
•
•
•
Connect two classes
Have labels and roles
Have multiplicities
Are directional (related to “has a”
relationship) – the navigation
– Think about which class needs to know about
the other; which class is an attribute of the
other? Why/when do I care?
Exercise: How many instructors can a
class section have?
Student
1..*
0..*
1
0..8
<works for
Instructor
1..*
1
Department
Semester
1..3
1
0..6
1..*
Class
Section
1..*
Course
How many instructors can a class
section have? Answer: 1 to 3
Student
1..*
0..*
1
0..8
<works for
Instructor
1..*
1
Department
Semester
1..3
1
0..6
1..*
Class
Section
1..*
Course
Attribute vs Association
joe: Student
Is basically the
same as ...
-name: String = “Joe Jones”
joe: Student
name
1
Joe Jones : String
• name is the role on the association (attribute)
• We generally don’t model built-in classes like
String (they are just types for attributes)
Types of associations
Relation
Generalization
Association
Binary Association
Aggregation
Dependency
N-ary Association
Generalization
• A triangle on the side of the general class
• Same as inheritance hierarchy in Java
• Opportunity for reuse
Person
Student
Graduate
Student
Dependency
• One class uses another, but it’s a weaker form
of association
– Not
necessarily
long-lived; the
depend-or can
exist without a depend-ee
in the system
• Dashed line
Aggregation
• Means “part of”
• Symbolized by a white diamond
Crust
1
1
Sauce Serving
1
1
Cheese Serving
Topping Serving
*
Pizza
1..3 1
1
0..9 1
4..*
Slice
1
Order
Composition
• Like aggregation, but the component cannot
survive on its own
• Symbolized by a black diamond
Room
Building
Exercise
• Take a look at
http://www.cs.gmu.edu/~kdobolyi/cs321/BookstoreEx
ample4.jpg
• Does John McCain (who has 7 houses) have a
problem using this system?
• If Barack Obama decides to create a Federal
sales tax, how would we change the system?
• Why is there a display method in Item, Book,
MusicCD and Software?
• An ItemOrder is part of how many Orders?
• Can you explain how a search works using this
diagram?
Answer
• Take a look at
http://www.cs.gmu.edu/~kdobolyi/cs321/BookstoreExample4.jpg
• Does John McCain (who has 7 houses) have a problem using this
system?
– Yes; only 2 addresses associated with a customer
• If Barack Obama decides to create a Federal sales tax, how would
we change the system?
– add federalTax attribute to Order class
• Why is there a display method in Item, Book, MusicCD and
Software?
– each subclass has its own implementation, even though one was
inherited from the parent
• An ItemOrder is part of how many Orders?
– 1
• Can you explain how a search works using this diagram?
– No; this is a static diagram, and does not show “flow” or actions
Quiz review
•
•
•
•
•
•
•
•
What two main components make up a class in a class diagram?
How do you represent an attribute? What are all the options/parts?
How do you represent a method? What are all the options/parts?
What is an association? Draw it.
What is a dependency? Draw it.
What is a generalization? Draw it.
What is an aggregation/composition? Draw it.
When do you include an attribute, as opposed to modeling it with
an association?
• What do the arrows mean on associations?
• What do the multiplicities mean on associations?
In-class exercise
• Let’s make a class diagram for an ATM
–
–
–
–
–
Include a dependency
Include a generalization
Include a composition
Include all multiplicities
label all attributes
• Complete the exercises at
http://www.cs.gmu.edu/~kdobolyi/cs321/hwk03.html
• Due next class
Team Project
• Examine the Quiz Game description/use cases
• In your teams, come up classes;
– At least one dependency, aggregation, and
generalization
– All associations must have navigations and
multiplicities
– All attributes and operations must have types and
visibilities
• Turn in this assignment through XP-Dev
Download