From Requirements To Components
From Requirements To Components
From Requirements To Components
Components
John Daniels
Syntropy Limited
john@syntropy.co.uk
Agenda
Service
Application Server
Existing
Any
System
(server)
JDBC / ODBC / SQL
Data
Database Server
Application Blueprint
Web Server
A/JSP Application Server
Component
Object
Component
Object
Component
Object
Component
Presentation focus: Object
Component
How do you design
Object
this part?
Existing
Database System
email:john@syntropy.co.uk Syntropy Limited
Service
Application
Business transactions
Allows multiple Dialogs
System Services
(including Batch)
Business Integrity State
System
Business Services
Sub-transactions
Business Instance State
Data
• Development Processes
– Create working software from requirements
– Focus on software development artifacts
– Described independently of the management process
– Defines ordering constraints and dependencies
– Organized into Workflows
Use Case
models Specification Component specs
Workflow & architectures
Business Concept
models
Test
Tested
assemblies
Workflow (c.f. RUP)
Deployment
Requirements
Workflow
1 1 * *
contactAddress 0..1 1
Address RoomType
1
0..1
1
Bill
Payment
0..1
customer arrives/
Wait for
event
enquiry/ [else] cancel request/
Check amendment
availability Cancel
request/
[suitable reservation
room]
Make Amend no show/
reservation reservation
Cancel a
reservation
ReservationMaker
Use Case
Make a diagram
reservation
Update a
Guest reservation
Take up a
reservation
BillingSystem Process no
shows
Add, amend,
remove
hotel, room,
ReservationAdministrator customer,
etc.
email:john@syntropy.co.uk Syntropy Limited
Extensions
3. Room Not Available
a) System offers alternative dates and room types
b) Reservation Maker selects from alternatives
Requirements
Specification
Component
Identification
Component
Interaction
Component
Specification
Provisioning
Component Identification
Component
Develop Business Identification
Type Model
Existing
Interfaces Identify Business Identify System
Interfaces Interfaces & Ops
Existing Architecture
Assets Create Initial Patterns
Comp Specs &
Architecture
!
1
Hotel Chain
!
1..*
Clerk
1..*
1
!
Hotel
*
contactedHotel 1
1
* * 1..*
allocation
Customer Reservation Room
1 * * 0..1
1 1 * *
contactAddress 0..1 1
Address
! 0..1
1
RoomType
!
1
Bill
!
Payment
0..1
Component architecture
<<comp spec>>
Reservation IMakeReservation
System
ITakeUpReservation
<<comp spec>>
BillingSystem IBilling
<<comp spec>>
CustomerMgr
ICustomerMgt
<<comp spec>>
HotelMgr
IHotelMgt
<<comp object>>
:Reservation IMakeReservation
System
ITakeUpReservation
<<comp object>>
:BillingSystem IBilling
<<comp object>>
:CustomerMgr
ICustomerMgt
<<comp object>>
:HotelMgr
IHotelMgt
Component Interaction
Component
Discover Business Interaction
Operations
Refine Refine
Interfaces & Ops Component Specs
& Architecture
Component Specs
Interfaces
& Architecture
makeReservation ( )
1:getCustomerMatching( )
3:notifyCustomer( ) 2:makeReservation( )
<<data type>>
CustomerDetails
/IMakeReservation:ReservationSystem name: String
postCode[0..1]: String
email[0..1]: String
<<interface type>>
IMakeReservation
<<interface type>>
IHotelMgt
Component Specification
Component
Define Interface Specification
Information Models
Specify Component-
Specify Operation Interface constraints
Pre/Post-Conditions
<<interface type>>
ICustomerMgt
*
Defines the set of information assumed to be held by a Customer
component object offering the interface, for the
id: CustId
purposes of specification only.
name: String
postCode: String
Implementations do not have to hold this information email: String
themselves, but they must be able to obtain it.
pre:
-- cus is valid
customer->exists(c | c.id = cus)
post:
-- the details returned match those held for customer cus
Let theCust = customer->select(c | c.id = cus) in
result.name = theCust.name
result.postCode = theCust.postCode
result.email = theCust.email
email:john@syntropy.co.uk Syntropy Limited
Collaboration
Package Diagram
Diagram
email:john@syntropy.co.uk Syntropy Limited