software system engineering - chapter 10
DESCRIPTION
Software System EngineeringTRANSCRIPT
04/13/23 1
CHAPTER 10Requirements Analysis
Software System Engineering
(260CT)
04/13/23 2
In This Lecture You Will Learn:
Why we analyse requirements
Technical terms used with class diagrams
How the UML class diagram expresses a detailed model of user requirements
How to realize use cases with collaboration diagrams and class diagrams
How the CRC technique helps identify classes and allocate responsibilities
04/13/23 3
Why Analyse Requirements?
Use case model alone is not enough• There may be repetition
• Some parts may already exist as standard components
Analysis aims to identify: • Common elements
• Pre-existing elements
• Interaction between different requirements
04/13/23 4
What a Requirements Model Must Do
A requirements model meets two main needs:
Confirms what users want a new system to do
• Must be understandable for users
• Must be correct and complete Specifies what designers must design
• Must be unambiguous
04/13/23 5
What a Requirements Model Must Do
Describes what the software should do Represents people, things and concepts
important to understand what is going on Shows connections and interactions among
these people, things and concepts Shows the business situation in enough detail
to evaluate possible designs Is organized so as to be useful for designing
the software
04/13/23 6
How We Model the Analysis
The main tool used for analysing requirements is the class diagram
Two main ways to produce this:• Directly based on knowledge of the
application domain (a Domain Model)
• By producing a separate class diagram for each use case, then assembling them into a single model (an Analysis Class Model)
04/13/23 7
Class Diagram: Stereotypes
Analysis class stereotypes differentiate the roles objects can play:• Boundary objects model interaction between
the system and actors (and other systems)
• Entity objects represent information and behaviour in the application domain
• Control objects co-ordinate and control other objects
04/13/23 8
Class Diagram: Stereotypes
User Interface::AddAdvertUI
User Interface::AddAdvertUI
startInterface( )assignStaff( )selectClient( )selectCampaign( )
<<boundary>>User Interface::AddAdvertUI
startInterface( )assignStaff( )selectClient( )selectCampaign( )
Alternative notations for boundary class:
04/13/23 9
Class Diagram: Stereotypes
Alternative notations for entity class:
Campaign
Campaign
titlecampaignStartDatecampaignFinishDate
getCampaignAdverts( )addNewAdvert( )
<<entity>>Campaign
titlecampaignStartDatecampaignFinishDate
getCampaignAdverts( )addNewAdvert( )
04/13/23 10
Class Diagram: Stereotypes
Alternative notations for control class:
AddAvert
Control::AddAdvert
showClientCampaigns( )showCampaignAdverts( )createNewAdvert( )
<<control>>Control::AddAdvert
showClientCampaigns( )
showCampaignAdverts( )
createNewAdvert( )
04/13/23 11
Class Diagram: Class Symbol
Client
companyAddresscompanyEmailcompanyFaxcompanyName
companyTelephone
Class name compartment
Attributes compartment
Operations compartment
04/13/23 12
Class Diagram: Instance Symbol
FoodCo:Client
companyAddress=Evans Farm, Norfolk
companyFax=01589-008636
companyName=FoodCo
companyTelephone=01589-008638
Object name compartment
Attribute values
Instances do not have operations
04/13/23 13
Class Diagram: Attributes
Attributes are: Part of the essential description of a
class The common structure of what the class
can ‘know’ Each object has its own value for each
attribute in its class
04/13/23 14
Class Diagram: Associations
StaffMember
staffName
staffNo
staffStartDate
Client
companyAddress
companyEmail
companyFax
companyName
companyTelephone
liaises with
staffContact
Association role Association
Association nameDirection in which name should be read
04/13/23 15
Class Diagram: Links
FoodCo:Client
Yellow Partridge:Client
Soong Motor Co:Client
Grace Chia:StaffMember
Carlos Moncada:StaffMember
A link is a logical connection between two objects
04/13/23 16
Class Diagram: Associations
Associations represent: The possibility of a logical relationship or
connection between objects of one class and objects of another
If two objects can be linked, their classes have an association
04/13/23 17
Class Diagram: Multiplicity
Associations have multiplicity Multiplicity is the range of permitted
cardinalities of an association Represent enterprise (or business) rules For example:
• Any bank customer may have one or more accounts
• Every account is for one, and only one, customer
04/13/23 18
Class Diagram: Multiplicity
StaffMember
staffName
staffNo
staffStartDate
Client
companyAddress
companyEmail
companyFax
companyName
companyTelephone
1 0..*
liaises with
Multiplicities
•Exactly one staff member liaises with each client
•A staff member may liaise with zero, one or more clients
04/13/23 19
Class Diagram: Operations
Operations are: An essential part of the description of a
class The common behaviour shared by all
objects of the class Services that objects of a class can
provide to other objects
04/13/23 20
Class Diagram: Operations
Operations describe what instances of a class can do:• Set or reveal attribute
values
• Perform calculations
• Send messages to other objects
• Create or destroy links
Campaign
actualCostcampaignFinishDatecampaignStartDatecompletionDatedatePaidestimatedCosttitlecheckCampaignBudget ( )getCampaignContribution ( )recordPayment ( )setCompleted ( )
04/13/23 21
From Requirements to Classes
Campaign Manager
Add a new advert to a campaign
Add a new advert to a campaign
:Client
:Campaign :Advert
Advert
setCompleted()createNewAdvert()
<<entity>>
User Interface::AddAdvertUI
startInterface()createNewAdvert()selectClient()selectCampaign()
<<boundary>>
Campaign
titlecampaignStartDatecampaignFinishDate
getCampaignAdverts()addNewAdvert()
<<entity>>
1 0..*
conducted by
Client
companyAddresscompanyNamecompanyTelephonecompanyFaxcompanyEmail
getClientCampaigns()getClients()
<<entity>>
1 0..*
places
Control::AddAdvert
showClientCampaigns()showCampaignAdverts()createNewAdvert()
<<control>>
CampaignManager
3.1.2: *getCampaignDetails()
5.1.1.1: createAdvert()
4.1.2: *getAdvertDetails()
5.1.1: addNewAdvert()
:AddAdvertUI :AddAdvert
:Client :Campaign
:Advert
3.1: showClientCampaigns()3: selectClient()
4: selectCampaign() 4.1: showCampaignAdverts()
4.1.1: listAdverts()
5: createNewAdvert() 5.1: addNewAdvert()
newAd:Advert
2: startInterface()
3.1.1: listCampaigns()
1:*getClient()
1
2
3
4
04/13/23 22
From Requirements to Classes
Start with one use case Identify the likely classes involved (the
use case collaboration) Draw a collaboration diagram that fulfils
the needs of the use case Translate this collaboration into a class
diagram Repeat for other use cases
04/13/23 23
Reasonability Checks for Candidate Classes
A number of tests help to check whether a candidate class is reasonable• Is it beyond the scope of the system?
• Does it refer to the system as a whole?
• Does it duplicate another class?
• Is it too vague?
• (More on next slide)
04/13/23 24
Reasonability Checks for Candidate Classes (cont’d)
• Is it too tied up with physical inputs and outputs?
• Is it really an attribute?
• Is it really an operation?
• Is it really an association?
If any answer is ‘Yes’, consider modelling the potential class in some other way (or do not model it at all)
04/13/23 25
CRC Cards
Class–Responsibility–Collaboration cards help to model interaction between objects
For a given scenario (or use case):• Brainstorm the objects
• Allocate to team members
• Role play the interaction
04/13/23 26
CRC Cards
Class Name:
CollaborationsResponsibilities
Responsibilities of a class are listed in this section.
Collaborations with other classes are listed here, together with a brief description of the purpose of the collaboration.
04/13/23 27
Class Name Client
Responsibilities Collaborations
Provide client information.
Campaign provides campaign details.
Class Name Campaign
Responsibilities Collaborations
Provide campaign information.
Provide list of adverts.Add a new advert.
Advert provides advert details.Advert constructs new object.
Class Name Advert
Responsibilities Collaborations
Provide advert details.
Construct adverts.
Provide list of campaigns.
04/13/23 28
CRC Cards
Effective role play depends on an explicit strategy for distributing responsibility among classes
For example: • Each role player tries to be lazy
• Persuades other players their class should accept responsibility for a given task
May use ‘Paper CASE’ to document the associations and links
04/13/23 29
Summary
In this lecture you have learned: Why we analyse requirements Technical terms used with class diagrams How the UML class diagram expresses a
detailed model of user requirements How to realize use cases with collaboration
diagrams and class diagrams How the CRC technique helps identify classes
and allocate responsibilities