Upload
marlene-ward
View
217
Download
0
Embed Size (px)
Citation preview
COMP 6471Software Design Methodologies
Winter 2006
Dr Greg Butlerhttp://www.cs.concordia.ca/~gregb/home/comp647-winter2006.html
Course Introduction• Course People
• Course Components
• What the course is
• What the course is not
• The CU WME Design Case Study
• Larman’s Design Process
• What is OO Analysis and Design
• Design Pattern Example - Command
Course PeopleInstructor: Dr Greg Butler
Office Hours: Wednesdays 16:00 to 17:00Or by appointmentBut ask questions in class please
TAs: Bahman Zamani, Farzad KohantorabiTeaching Fellow: Stephen Barrett
Labs: Wednesday 15:30 to 17:30 ???
Course Components
Lectures: Mondays 17:45 to 20:25 H-603-1
Assignments: 6, every 2 weeks, worth 60%
Quizzes: 2, weeks 6 and 12, worth 40%You must pass the quizzes!!!
Course Objectives• “Think in Objects”
• Analyze requirements with use cases
• Create domain models
• Apply an iterative & agile Unified Process (UP)
• Relate analysis and design artifacts
• Read & write high-frequency UML
• Practice
• Apply agile modeling
• Design object solutions– Assign responsibilities to
objects
– Design collaborations
– Design with patterns
– Design with architectural layers
– Understand OOP (e.g., Java) mapping issues
What the course is:
A (first) look at OO design!
Design process: domain model, use cases, design
Emphasis: models, GRASP principles, design patterns, responsibility, collaboration
Mentions: RDD, TDD, MDD, extensibility
Closely follows textbook!
What the course is not:
A course in UML, Java• You should know the basics of these• And become expert (as needed) yourself
A course in tools: Eclipse, XDE, JUnit• You can work through tutorials yourself
A course in UI design, DB design
A course in software engineering, software architecture, software reuse, …
The CU WME Design Case StudyConcordia University Work Management Environment (CU
WME) provides support for an organisation of people who produce and publish documents
Components:• User Management • File Management • Change Management • Activity Management • Collaborative Publication
• Project Management
The CU WME Design Case Study
No UI required
No DB design required
But … we design APIs to hide these
Assignments:• Short problem statement• Domain model• Use case model• Design and code (proof-of-concept)• Refinement – add some special cases• Refinement – handle some exceptions
The CU WME Design Case Study
Team of up to six members – preferably 5 or 6
Individual work on individual component of CU WME
Rotate responsibility for components
Components must be consistent
Therefore teamwork essential
Larman’s Design Process
Operation: enterItem(…)
Post-conditions:- . . .
Operation Contracts
Sale
date. . .
SalesLineItem
quantity
1..*1 . . .
. . .
Domain Model
Use-Case Model
Design Model: Register
enterItem(itemID, quantity)
: ProductCatalog
d = getProductDescription(itemID)
addLineItem( d, quantity )
: Sale
Require-ments
Business Modeling
Design
Sample UP Artifact Relationships
: System
enterItem(id, quantity)
Use Case Text
System Sequence Diagrams
makeNewSale()
system events
Cashier
Process Sale
: Cashier
use case
names
system operations
Use Case Diagram
SupplementarySpecification
Glossary
starting events to design for, and detailed post-condition to satisfy
Process Sale
1. Customer arrives ...2. ...3. Cashier enters item identifier.
inspiration for names of some software domain objects
functional requirements that must be realized by the objects
ideas for the post-conditions
Register
...
makeNewSale()enterItem(...)...
ProductCatalog
...
getProductDescription(...)...
1*
non-functional requirements
domain rules
item details, formats, validation
Domain Model
Catalog
VideoDescription
titlesubjectCategory
VideoRental
dueDatereturnDatereturnTime
CashPayment
amount : Money
Video
ID
Stocks
Rents
Rents-from
Pays-for
Initiates
Owns-a
Described-by
Membership
IDstartDate
11
1..*
1
1
1
1..*
1
1
*
1
1
1
*1*
Pays-for-overdue-charges
RentalTransaction
date
LoanPolicy
perDayRentalChargeperDayLateCharge
Determines-rental-charge
1
Defines
1..*
*
1..*
1
1
* *
VideoStore
addressnamephoneNumber
Customer
addressnamephoneNumber
1
1
1..*
Records-rental-of
0..1
1
Has Maintains
*
1
1
Use Case Model
Requirements
Partial artifacts, refined in each iteration.
Use-Case Model
textuse
cases
:System
foo( x )
systemoperationcontracts
systemsequencediagrams
bar( y )
usecase
diagrams
systemoperations
Typical Software Architecture Layers
UI(AKA Presentation, View)
Application(AKA Workflow, Process,Mediation, App Controller)
Domain(AKA Business,
Application Logic, Model)
Technical Services(AKA Technical Infrastructure, High-level Technical Services)
Foundation(AKA Core Services, Base Services,
Low-level Technical Services/Infrastructure)
width implies range of applicability
GUI windowsreportsspeech interfaceHTML, XML, XSLT, JSP, Javascript, ...
handles presentation layer requestsworkflowsession statewindow/page transitionsconsolidation/transformation of disparate data for presentation
handles application layer requestsimplementation of domain rulesdomain services (POS, Inventory)- services may be used by just one application, but there is also the possibility of multi-application services
(relatively) high-level technical services and frameworks Persistence, Security
low-level technical services, utilities, and frameworksdata structures, threads, math, file, DB, and network I/O
moreapp
specific
depe
nden
cy
Business Infrastructure(AKA Low-level Business Services)
very general low-level business services used in many business domainsCurrencyConverter
Typical Software Architecture Layers (Simplified)
Domain
UI
Swingnot the Java Swing libraries, but our GUI classes based on Swing
Web
Sales Payments Taxes
Technical Services
Persistence Logging RulesEngine
What is Design?Developing a blueprint (plan) for a
mechanism that performs the required task,
… taking into account all the constraints, &
… making trade-offs between constraints when they are in conflict.
What is OO Analysis and Design• Object-Oriented
Analysis
– Important domain concepts or objects?
– Vocabulary?
– Visualized in the UP Domain Model
• Object-Oriented Design
– Design of software objects
– Responsibilities– Collaborations
– Design patterns
– Visualized in the UP Design Model
Important Concepts
Model• Abstraction hiding (unimportant) details• Eg, cover of Larman’s book
GRASP Principle• for assigning responsibility
Design pattern• Solution to design problem in context• Eg, Command pattern
Responsibility-Driven Design (RDD)
• Detailed object design is usually done from the point of view of the metaphor of:– Objects have responsibilities– Objects collaborate
• Responsibilities are an abstraction.– The responsibility for persistence.
• Large-grained responsibility.
– The responsibility for the sales tax calculation.• More fine-grained responsibility.
The 9 GRASP Principles
1. Creator2. Expert3. Controller4. Low Coupling5. High Cohesion6. Polymorphism7. Pure Fabrication8. Indirection9. Protected Variations
•Present solutions to common software problems arising within a certain context
Overview of Patterns
•Capture recurring structures & dynamics among software participants to facilitate reuse of successful designs
The Proxy Pattern
1 1Proxy
service
Service
service
AbstractService
service
Client
•Help resolve key software design forces
•Flexibility•Extensibility•Dependability•Predictability•Scalability•Efficiency
•Generally codify expert knowledge of design strategies, constraints & “best practices”