16-design - umass amherst design-rup ©rick adrion 2005 (except where noted) 3 u niv ers ty oof cm a...
TRANSCRIPT
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 1
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
16-Design•Readings•OOAD Using the UML•Copyright 1994-1998 Rational Software, all rights reserved
• [Partly] posted
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
The RUP presentation is adapted from OOAD Using the UMLCopyright 1994-1998 Rational Software, all rights reserved
Rational Unified Process•The Unified Modeling Language (UML) is a languagefor specifying, visualizing, constructing, anddocumenting the artifacts of a software-intensive system•A software development process defines Who is doingWhat, When and How in building a software product•The Rational Unified Process has four phases:Inception, Elaboration, Construction and Transition•Each phase ends at a major milestone and containsone or more iterations•An iteration is a distinct sequence of activities with anestablished plan and evaluation criteria, resulting in anexecutable release
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 2
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
In RUP: Major Workflows Produce Models
verified by
TestModel
Test
ImplementationModel
Implementation
implemented by
realized by
Analysis &Design
DesignModel
BusinessModeling
Business Model
Requirements
Use-CaseModel
supported by
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
The RUP Iterative Model
ManagementEnvironment
Business Modeling
ImplementationTest
Analysis & Design
Preliminary Iteration(s)
Iter.#1
PhasesProcess Workflows
Iterations
Supporting Workflows
Iter.#2
Iter.#n
Iter.#n+1
Iter.#n+2
Iter.#m
Iter.#m+1
Deployment
Configuration Mgmt
Requirements
Elaboration TransitionInception Construction
Workflowsgroupactivitieslogically
In aniteration, youwalk throughall workflows
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 3
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Requirements Workflow
Use-Case Specifier
RequirementsReviewer
User-InterfaceDesigner
Capture a Common
Vocabulary
Find Actors and Use Cases
ReviewRequirements
Structure the Use-Case Model
User-InterfacePrototyping
Detail a Use Case
Elicit Stakeholder Needs
Manage Dependencies
Architect
Prioritize Use Cases
DevelopVision
User-InterfaceModeling
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Analysis & Design Workflow
Architect
Designer
ArchitecturalAnalysis
ArchitectureReviewer
Review theDesign
Review theArchitecture
Use-CaseAnalysis
ArchitecturalDesign
DescribeConcurrency
DescribeDistribution
DatabaseDesigner
ClassDesign
SubsystemDesign
Use-Case Design
DatabaseDesign
DesignReviewer
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 4
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Implementation Workflow
IntegrateSystem
Architect
System Integrator
Implementer
Code Reviewer
Implement Classes
Perform Unit Test
Structure theImplementation Model
IntegrateSubsystem
Review Code
Fix a Defect
Plan System Integration
Plan Subsystem Integration
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Test Workflow
Design Test
ImplementTest
Test Designer
Integration Tester
System Tester
Evaluate Test
Execute IntegrationTest
Execute System Test
Designer
Design Test Classes and Packages
Implementer
Implement Test Components and Subsystems
PlanTest
PerformanceTester
Execute Performance Test
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 5
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Project2
O-O System Development
adapted from Bruegge/Dutoit O-O SW Engr
problemstatement
Requirementselicitation
Requirementsanaly sis
Sy stem design
sy stem designobject modeldesign goals subsy stem
decomposition
f unctionalmodel
nonf unctionalrequirements
use casediagram
analy sisobject model
classdiagram
dy namicmodel
statechartdiagram
sequencediagram
Implementation
sourcecode Test
deliv erablesy stem
Object design
object designmodel
classdiagram
Project0
interviews Project1
Project3
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Copyright 2002. Gary K. Evans. All Rights Reserved. www.evanetics.com
A Minimal Iterative ProcessGetting Started: (do this once)1. Capture the major functional and non-functional requirements for the
system.• Express the functional requirements as use cases, scenarios, or stories.• Capture non-functional requirements in a standard paragraph-style
document.2. Identify the classes which are part of the domain being modeled.3. Define the responsibilities and relationships for each class in the domain.4. Construct the domain class diagram.• This diagram and the responsibility definitions lay a foundation for a
common vocabulary in the project.5. Capture use case and class definitions in an OO CASE tool (e.g., Rose)
only when they have stablilized.
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 6
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Copyright 2002. Gary K. Evans. All Rights Reserved. www.evanetics.com
A Minimal Iterative ProcessGetting Started: (do this once)6. Identify the major risk factors and prioritize the most
architecturally significant use cases and scenarios.• It is absolutely imperative that the highest risk items and the most
architecturally significant functionality be addressed in the earlyiterations. You must not pick the “low hanging fruit” and leave therisks for later.
7. Partition the use cases/scenarios across the planned iterations.8. Develop an Iteration plan describing each “mini-project” to be
completed in each iteration.• Describe the goals of each iteration, plus the staffing, the
schedule, the risks, inputs and deliverables.• Keep the iterations focused and limited (2-3 weeks per iteration).
In each iteration, conduct all of the software activities in theprocess: requirements, analysis, design, implementation and test.
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
A Minimal Iterative ProcessFor each iteration: (repeat until done)1. Merge the functional flow in the use cases/scenarios with the
classes in the domain class diagram• Produce sequence (and collaboration) diagrams at the analysis level.
2. Test and challenge the sequence diagrams on paper, or whiteboard• Discover additional operations and data to be assigned to classes• Validate the business process captured in the flow of the sequence
diagram3. Develop statechart diagrams for classes with “significant” state• Statechart events, actions, and most activities will become operations
on the corresponding class4. Enhance sequence diagrams and statechart diagrams with design
level content• Identify and add to the class diagram and sequence diagrams any
required support or design classes (e.g. collection classes, GUI andother technology classes, etc.)
5. Challenge the sequence diagrams on paper/whiteboard, discoveringadditional operations and data assigned to classes.
Copyright 2002. Gary K. Evans. All Rights Reserved. www.evanetics.com
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 7
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
designv iew
deploymentv iew
processv iew
implementationv iew
Use -CaseView
Use cases
Components
Classes, interfaces,collaborations
Active classes Nodes
OrganizationPackage, subsystem
DynamicsInteraction
State machine
Views & Workflows
ArchitectArchitectural
AnalysisArchitectural
DesignDescribe
ConcurrencyDescribe
DistributionReview theArchitecture
DatabaseDesign
Use-CaseAnalysis
SubsystemDesign
ClassDesign
Use-CaseDesign
Review theDesign
Designer
DatabaseDesigner
DesignReviewer
ArchitectureReviewer
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Worker Responsibilities
Architect
Software ArchitectureDocument
Design Model
Designer
Use Case Realization
Package/Subsystem Class
Database DesignerData Model
ArchitectureReviewer
DesignReviewer
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 8
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
So where do we start?
Architect
ArchitecturalAnalysis
ArchitecturalDesign
DescribeConcurrency
DescribeDistribution
Review theArchitecture
DatabaseDesign
Use-CaseAnalysis
SubsystemDesign
ClassDesign
Use-CaseDesign
Review theDesign
Designer
DatabaseDesigner
DesignReviewer
ArchitectureReviewer
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Use Case Analysis Overview
Use-Case Model
Use-Case Realization
Supporting Documents Architecture Document Glossary Supplemental Specs
Analysis Classes
Design ModelAnalysis Model
OR
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 9
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Use Case Analysis Steps•Supplement the Descriptions of the Use Case•For each use case realization•Find Classes from Use-Case Behavior•Distribute Use-Case Behavior to Classes
•For each resulting analysis class•Describe Responsibilities•Describe Attributes and Associations•Qualify Analysis Mechanisms
•Unify Analysis Classes
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
What is an Analysis Class?
<<entity>>
<<boundary>>
<<control>>
<<control>>
<<boundary>>
<<entity>>
Systemboundary
Use-casebehaviorcoordination
Systeminformation
•Early conceptual model•Functional requirements•Model problem domain
• Likely to change•Boundary• Information used•Control logic
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 10
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
The Roles
Customer
Boundary Class -- Modelinteraction between thesystem and its environment
Entity Class -- Store andmanage information in thesystem
Control Class -- Coordinatethe use case behavior
Collaboration Diagram
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Example: Entity & Control Classes
Course(from University Artifacts)
CourseOffering(from University Artifacts)
Grade(from University Artifacts)
Student(from University Artifacts)
Professor(from University Artifacts)
Schedule(from University Artifacts)
RegistrationController(from Registration)
SubmitGradesController(from Student Evaluation)
SelectCoursesToTeachController(from Registration)
MaintainProfessorController(from Registration)
MaintainStudentController(from Registration)
ReportCardController(from Student Evaluation)
CloseRegistrationController(from Registration)
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 11
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Describe Responsibilities•What are responsibilities?•How do we find them?
Class Name
Responsibility 1
Responsibility 2
Responsibility N
•First cut at class operations•Actions that object can perform•Knowledge object maintains•Non-functional requirements
•Class should have multiple responsibilities
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Class Responsibilities from aCollaboration Diagram
: Student
: MaintainScheduleForm
: RegistrationController
:Schedule
: CourseCatalogSy stem
: MainForm
5: // select 4 primary and 2 alternate of f erings( )1: // select maintain schedule( )
3: // get course of f erings( )6: // add courses to schedule( )
7: // create with of f erings( )
2: // open schedule f orm( )
4: // get courseof f erings( )
MaintainScheduleForm
// select 4 primary and 2 alternate offerings()// open ()
<<boundary>>
MainForm
// select maintain schedule()
<<boundary>>
CourseCatalogSystem
// get course offerings()
<<boundary>>RegistrationController
// add courses to schedule()
<<control>>
Schedule
// create with offerings()
<<entity>>
Register for Courses use case
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 12
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Class Responsibilities from aSequence Diagram
: Student : MaintainScheduleForm
: RegistrationController
: Schedule : MainForm : CourseCatalogSy stem
5: // select 4 primary and 2 alternate of f erings( )
6: // add courses to schedule( )
7: // create with of f erings( )
1: // select maintain schedule( )
2: // open schedule f orm( )
3: // get course of f erings( )
4: // get course of f erings( )MaintainScheduleForm
// select 4 primary and 2 alternate offerings()// open ()
<<boundary>>
MainForm
// select maintain schedule()
<<boundary>>
CourseCatalogSystem
// get course offerings()
<<boundary>>RegistrationController
// add courses to schedule()
<<control>>
Schedule
// create with offerings()
<<entity>>
Register for Courses use case
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
What are Roles?•The “face” that a class plays in the association
Pre-requisites
Instructor
Course
CourseOffering Professor DepartmentDepartment head
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 13
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Example: Finding Relationships
MainForm
// select maintain schedule()
<<boundary>> MaintainScheduleForm
+ // open()+ // select 4 primary and 2 alternate offerings()
<<boundary>>
1 0..11
CourseCatalogSystem
// get course offerings()
<<boundary>> 1 0..*RegistrationController
// add courses to schedule()// get course offerings ()
<<control>>
1
1
Schedule
// create with offerings()
<<entity>>
1
0..1
: Student
: MaintainScheduleForm
: RegistrationController
:Schedule
: CourseCatalogSy stem
: MainForm
5: // select 4 primary and 2 alternate of f erings( )1: // select maintain schedule( )
3: // get course of f erings( )6: // add courses to schedule( )
7: // create with of f erings( )
2: // open schedule f orm( )
4: // get courseof f erings( )
• MaintainScheduleForm doesnot make any sense outside ofthe context of a particular usesession.
• Only oneMaintainScheduleForm canbe active at any one time, ornone may be active
• one controller for eachSchedule being created (e.g.,each Student registrationsession).
• only oneCourseCatalogSystem instancefor possibly manyMaintainScheduleForms
• serializes access• Many MaintainScheduleForms
can be active at one time (fordifferent sessions/students).
legacy system.
View of Participating Classes (VOPC) diagram.
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
What is a Use-Case Realization?
Use Case Use Case Realization
<<realizes>>
Class Diagrams
Sequence Diagrams CollaborationDiagrams
Use Case RealizationDocumentation
Use Case Model Design Model
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 14
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Alternatives•RUP begins with Analysis classes we foundby analyzing Collaboration & SequenceDiagrams (these derived from the Use Casesduring Use Case Analysis), then is refined bydefining Operations, States, Attributes,Associations and Generalizations (in ClassDesign)•Some other approaches:• Noun Phrase Approach• Common Class Patterns• CRC (Class-Responsibility-Collaboration)
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Noun Phrase Approach• Examine the requirements and underline each noun• Each noun is a candidate class
• Divide list of candidate classes into• Relevant Classes• Part of the application domain; occur frequently in reqs
• Irrelevant Classes• Outside of application domain
• Fuzzy Classes• Unable to be declared relevant with confidence; requireadditional analysis
• Experience will eventually enable designers to avoidgenerating irrelevant classes
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 15
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Fuzzy
Find Classes from requirements
•Consider the following UniversityEnrollment system specification•each university major has a number ofrequired courses and a number ofelective courses.
Course
Major
RequiredCourse
ElectiveCourse
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Classes, Relationships & Attributes
•A course can be part of any number of majors
•Each major specifies minimum total credits required
•Students may combine course offerings intoprograms of study suited to their individual needs andleading to the degree/major in which enrolled
CourseOfferingSudyprogramStudentElectiveCourseMajorCompulsoryCourseCourseFuzzy classesRelevant classes
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 16
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Noun Phrase Approach•may help in identifying domain objects• not good at identifying objects that live in theapplication domain•Thus, it can help at the beginning of analysis, but youwill not return to it as you move into design•Finding good objects during design means identifyingabstractions that are part of your application domain andits execution machinery•Objects that are part of your application domain will havea tenuous connection, at best, to real-world things• e.g. what’s the correspondence of a scrollbar to the realworld
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Common Class Patterns• Derive classes from the generic classificationtheory of objects• Concept class• a notion shared by a large community
• Events class• captures an event that demarks intervals within a system
• Organization class• a collection or group within the domain
•People class• roles people can play
•Places class• a physical location relevant to thesystem
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 17
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Common Class Patterns• Rumbaugh proposed a different scheme• Physical Class (Airplane)• Business Class (Reservation)• Logical Class (FlightTimeTable)• Application Class (ReservationTransaction)• Computer Class (Index)• Behavioral Class (ReservationCancellation)
• These taxonomies are meant to help a designer thinkof classes, however it is difficult to be systematic• Probably only useful during early analysis
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
CRC Cards• CRC = Candidates, Responsibilities, Collaborators• Meant primarily as a brainstorming tool for analysisand design• In place of use case diagrams ⇒ use index cards• In place of attributes and methods ⇒ recordresponsibilities
•See Object Design by Wirfs-Brock and McKean, ©2003
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 18
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Index Cards• On the unlined side of theindex card•write an informaldescription of eachcandidate class’ purposeand role
•On the lined side of theindex card• identify responsibilities andcollaborators
DocumentPurpose: A Document acts as a container for graphicsand textRole: ContainerPattern: Composite text,graphics, other
elements
Inserts and removes
Knows storage location
TextFlowKnows contents
←candidateDocument
responsibilities collaborators
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Model
Maintain problem related information
Broadcast change notification
MVC using CRC cards
View
Render the Model Controller ModelTransform coordinates Controller
Interpret user input View ModelDistribute control
class
responsibilities
collaborators
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 19
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Not Just Index Cards• Post-It Notes can be used for even less “structure”;•might be easier when brainstorming
DocumentPurpose: A document Represents a containerthat holds text and/orgraphics that the user can enter and visually arrange on pages
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Why index cards?• Forces you to be concise and clear and focus on major
responsibilities since you must fit everything onto one indexcard• Inherent Advantages•cheap, portable, readily available, and familiar•gives people a "feel" for the design•can propose and test changes to the design rapidly (all youhave to do is make new cards)• focus on responsibilities as opposed to ”n:m attribute" designas promoted by OMT, Booch, etc•affords Spatial Semantics…• close collaborators can be overlapped• vertical dimension can be assigned meanings• abstract classes and specializations can form piles
…which provides benefits• Beck and Cunningham report that they have seen designers talk
about a new card by pointing at where it will be placed
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 20
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Architect
ArchitecturalAnalysis
ArchitecturalDesign
DescribeConcurrency
DescribeDistribution
Review theArchitecture
DatabaseDesign
Use-CaseAnalysis
SubsystemDesign
ClassDesign
Use-CaseDesign
Review theDesign
Designer
DatabaseDesigner
DesignReviewer
ArchitectureReviewer
So Where Are We?
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Architectural Design Overview
SupplementarySpecifications
Architecture Document
Analysis Classes
Design Model
DesignGuidelines
Glossary
ArchitecturalDesign
Design Model
DesignGuidelines
•• Design and ImplementationDesign and ImplementationMechanismsMechanisms•• Design Classes and SubsystemsDesign Classes and Subsystems•• Reuse OpportunitiesReuse Opportunities•• Refined Architectural Layers andRefined Architectural Layers and
PartitionsPartitions
ArchitectArchitectural
DesignDescribe
ConcurrencyDescribe
Distribution
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 21
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Design Classes
In analysis, we hadone application with
many different forms …
LogonForm<<boundary>>
CloseRegistrationForm(from Registrar Interface)
<<boundary>>MaintainScheduleForm(from Student Interface)
<<boundary>>
MaintainProfessorForm(from Registrar Interface)
<<boundary>>
MaintainStudentForm(from Registrar Interface)
<<boundary>>
ReportCardForm(from Student Interface)
<<boundary>>
SelectCoursesForm(from Professor Interface)
<<boundary>> SubmitGradesForm(from Professor Interface)
<<boundary>>
MainForm<<boundary>>
1
0..10..1
1
1 0..1
1
0..1
0..1
1
0..1
1
0..1
1
0..1
1
0..10..1
During design, someanalysis classes may
be split, joined,removed, etc.
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Design Classes (cont.)In design, the one
application becomesthree applications,each with it’s own
forms ...
MaintainScheduleForm(from Student Interface)
<<boundary>>
ReportCardForm(from Student Interface)
<<boundary>>
MainStudentForm(from Student Interface)
<<boundary>>
1
0..1
1
0..1
MaintainStudentForm(from Registrar Interface)
<<boundary>>MaintainProfessorForm
(from Registrar Interface)
<<boundary>>CloseRegistrationForm
(from Registrar Interface)
<<boundary>>
MainRegistrarForm(from Registrar Interface)
<<boundary>>
1
0..*
1
0..*
1
0..1
(from Professor Interface)SubmitGradesForm
<<boundary>>SelectCoursesForm
(from Professor Interface)
<<boundary>>
MainProfessorForm(from Professor Interface)
<<boundary>>
11
0..1 0..1
LogonForm<<boundary>>
CloseRegis trationForm(from Regis trar Interface)
<<boundary>>MaintainScheduleForm(from Student Interface)
<<boundary>>
MaintainProfessorForm(from Regis trar Interface)
<<boundary>>
MaintainStudentForm(from Regis trar Interface)
<<boundary>>
ReportCardForm(from Student Interface)
<<boundary>>
Selec tCoursesForm(from Professor Interface)
<<boundary>> SubmitGradesForm(from Professor Interface)
<<boundary>>
MainForm<<boundary>>
1
0..10..1
1
1 0..1
1
0..1
0..1
1
0..1
1
0..1
1
0..1
1
0..10..1
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 22
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Class Name
Package Name
Classes & packages•What is a class?•A description of a set of objects that share the sameresponsibilities, relationships, operations, attributes, andsemantics.
•What is a package?•A general purpose mechanism for organizing elementsinto groups•A model element which can contain other modelelements
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
A<<subsystem>>
PackageB
Class B1
Class B2
Client Class
Encapsulation is the key! But note for packages dependencies should be on public classes
Packages Vs. Subsystems• Packages provide no
behavior• Packages are simply
containers of thingswhich providebehavior• Packages help
organize and controlsets of classes thatare needed incommon, but whicharen’t reallysubsystems• Dependencies are on
specific elementswithin the Package
• Subsystems providebehavior, packagesdo not• Subsystems
completelyencapsulatetheir contents• Dependencies are
on the interface ofthe subsystem• Subsystems are
easily replaceable
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 23
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
DesignClass
Subsystem<<subsystem>>
DesignClass
DesignClass
DesignClass
Subsystem<<subsystem>>
Subsystem<<subsystem>>
Design Classes and Subsystems• Identifying Design Classes•analysis class is simple and already represents a singlelogical abstraction-> design class•entity classes survive relatively intact into design.
• Identifying Subsystems•analysis class is complex, such that it appears to embodybehaviors that cannot be the responsibility of a single classacting alone, or the responsibilities may need to be reused,the analysis class should be mapped to a subsystem•may take a few iterations to stabilize.
• Analysis classes which evolve intosubsystems might include:•complex services and/or utilities•user interfaces and externalsystem interfaces.
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Layering•Concentrate on encapsulating change•Package dependencies are not transitive, thus onelayer can shield another from change•Upward dependencies should be resolved in design•e.g., call backs can be replaced with the “subscribes to”association whose source is a class (called thesubscriber) and whose target is a class (called thepublisher)• subscriber specifies a set of events and is notified whenone of those events occurs in the target
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 24
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Goal is to reduce coupling and to ease maintenance effort
Layering Guidelines•Visibility•Dependencies only within currentlayer and below
•Volatility•Upper layers affected byrequirements changes•Lower layers affected byenvironment changes
•Generality•More abstract model elements inlower layers
•Number of layers•Small system: 3 layers•Complex system: 5-7 layers
User Interface<<layer>>
Business Services<<layer>>
Business Objects<<layer>>
System<<layer>>
Middleware<<layer>>
java
global
Base Reuse
global
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Layers & Visibility
User Interface<<layer>>
Business Services<<layer>>
Business Objects<<layer>>
System<<layer>>
Middlew are<<layer>>
java
global
Base Reuse
global
PackageB
Class B1
Class B2
PackageA
Class A1
Class A3
Class A2A
B
Public visibility
Private visibility
Only publicclasses can be
referencedoutside of the
owning package
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 25
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Describe Concurrency
• Concurrency Requirements driven by:•degree to which the system must be distributed•degree to which the system is event-driven•computational intensity of key algorithms•degree of parallel execution supported by the environment
•Modeling Processes map on independent threads of controlsupported by environment•Processes - stand-alone, heavyweight flow of control thatmay be divided into individual threads•Threads- lightweight flow of control which run in the context ofan enclosing process
•Mapping Processes onto the Implementation Environment• Distributing Model Elements Among Processes
Process Model
DescribeConcurrency
SupplementarySpecifications
ArchitectArchitectural
DesignDescribe
ConcurrencyDescribe
Distribution
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Example
StudentApplication<<process>>
MainStudentForm(from Student Interface)
<<boundary>>
1 1
CourseRegistrationProcess<<process>>
RegistrationController(from Registration)
<<control>>
1 1
CourseCatalogSystemAccess<<process>>
CourseCatalog(from CourseCatalog)
<<subsystem>>1 1
CourseCache<<thread>>
1
1
Course(from University Artifacts)
<<entity>>0..*1
OfferingCache<<thread>>
1
1
CourseOffering(from University Artifacts)
<<entity>> 0..* 1
Mapping Design Elements to Processes
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 26
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Example
composition<<process>>
CourseCatalogSystemAccess
<<thread>>CourseCache
<<process>>CourseRegistrationProcess
<<thread>>OfferingCache
dependency
1
1
1
1
<<process>>StudentApplication
Class Diagram
<<process>>CourseCatalogSystemAccess
<<thread>>OfferingCache
<<thread>>CourseCache
<<process>>CourseRegistrationProcess
dependency
<<process>>StudentApplication
Component Diagram
CourseCatalogSystemAccess
Remote
(f rom jav a.rmi)CourseRegistrationProcess
Runnable
(f rom jav a.lang) OfferingCache
Thread(f rom jav a.lang)
1
CourseCache
1
1
1
Mapping to Implementation
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Describe Distribution Overview
DescribeDistribution
Process Model
Implementation Model
Deployment Model
ArchitectArchitectural
DesignDescribe
ConcurrencyDescribe
Distribution
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 27
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Why Distribute?•Reduce processor load•Special processing requirements•Scaling concerns•Economic concerns•Distribution Patterns•Client/Server• 3-tier•Fat-Client•Web Application•Distributed Client/Server
•Peer-to-peer
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Distribution patterns• Common services• Presentation Services• UI including, the visual appearance of output and how user input is handled
• Business Services• Business rules and logic
•Data Services• Data relationships, efficiency of storage, and data integrity
• Patterns•One-Tier• Two-Tier• Fat Client -- client has its presentation and business services; server has
the data services• Thin Client -- client has the presentation services; server has the
business and data services• Three-tier• client has presentation services; server has business services; separate
(logical) server has data services.•Web-tier• client accesses a web server that at least handles presentation services;
web server may have its own business and data services or it may utilizeone or more servers that handle business and data services
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 28
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Node #1<<Node>>
Processor #1<<Processor>>
Device #1<<Device>>
Connection
Deployment Model Modeling Elements
•Node•Physical run-time computational resource
•Processor•Execute system software
•Device•Support devices•Typically controlled by a Processor
•Connection•Communication mechanisms•Physical medium•Software protocol
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Deployment Diagrams
Component
Interface
Component
Node #1<<Node>>
Node #2<<Node>>
Object
<<connection type>>Connection
Object
Process-1Process-2...
Process-1Process-2...
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 29
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Process-to-Node Allocation
External Desktop PC
StudentApplication
Desktop PC
Registration Server
CourseCatalogSystemAccessCourseRegistrationProcessGradeSubmissionProcessTeachingCoursesSelectionProcessProfessorMaintenanceProcessStudentMaintenanceProcess CloseRegistrationProcessReportCardProcessFinanceSystemAccess
Course Catalog
<<legacy>>Billing System
<<legacy>>
<<Internet>>
<<Campus LAN>>
Dial up access and behind campus firewall
<<Campus LAN>><<Campus LAN>>
StudentApplicationProfessorApplicationRegistrarApplication
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Design Distribution Pattern: Proxy
1
0..*
RemoteDistributedControllerProxyDistributedController
SecureUser(from Secure Interfaces)
<<Interface>>1
0..*
+currentUser+currentUser
RegistrationController(from Student Activities)
<<controller>>RemoteRegistrationController
(from Student Activities)0..11
Naming(from java.rmi)
<<utility>>
client serversecure user instance is createdon the client and passed to theserver when the remotecontroller is created
CMPSCI520/620 Design-RUP
©Rick Adrion 2005 (except where noted) 30
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
: RemoteTimecard
Lookup("RemoteTimecardController")
SomeFormController
: Naming : ProxyDistributedController
3: new( )
1: new(SecureUser)2: lookup(String)
4: setSession(SecureUser)
5: DoSomething
6: DoSomething
All calls to the proxy controller are forwarded to the remote controller
The connection between the proxy and remote controlleris established when the proxy controller is created
The current user context is passed to the server for later access checks
Design Distribution Pattern: Proxy
UUNIVERSITYNIVERSITY OFOF M MASSACHUSETTS ASSACHUSETTS AAMHERSTMHERST •• D DEPARTMENTEPARTMENT OF OF CCOMPUTER OMPUTER SSCIENCE CIENCE •• CCMPMPSSCI 520/620 CI 520/620 FFALL 2004ALL 2004
Affect on Process Model Associations
MainStudentForm(from Student Interface)
MaintainScheduleForm(from Student Interface)
<<boundary>>0..1
1
StudentApplication<<process>>
1
1
RegistrationController(from Student Activities)
<<control>>
1
1
RegistrationControllerProcess<<process>>
RemoteRegistrationController(from Student Activities)
<<control>>
0..11
1
1
StudentApplication
<<process>>MainStudentForm
(from Student Interface)
<<boundary>>
1 1
CourseRegistrationProcess
<<process>>RegistrationController
(from Registration)
<<control>>
1 1
CourseCatalogSystemAccess
<<process>>CourseCatalog
(from CourseCatalog)
<<subsystem>>1 1
CourseCache<<thread>>
1
1
Course(from University Artifacts)
<<entity>>0..*1
OfferingCache<<thread>>
1
1
CourseOffering
(from University Artifacts)
<<entity>> 0..* 1