Unified Software Development Process 1 The Unified Process Use Case Driven
Unified Software Development Process 1 The Unified Process Use Case Driven
Risks eliminated
Revise Project plan
Revise risk assessment
Unified Process is Iterative and Incremental
• Each iteration consists of one or more of the following process
components: requirements capture, analysis and design,
implementation, and test.
• Developers do not assume that all requirements are known at the
beginning of the life cycle; indeed change is anticipated
throughout all phases.
• This type of life cycle is a risk-mitigating process. Technical
risks are assessed and prioritized early in the life cycle and are
revised during the development of each iteration. Risks are
attached to each iteration so that successful completion of the
iteration alleviates the risks attached to it. The releases are
scheduled to ensure that the highest risks are tackled first.
Two Dimensions
Time and Process Component
Time—division of the life cycle into phases and
iterations.
Inception—specifying the project vision
Elaboration—planning the necessary activities and
required resources; specifying the features and
designing the architecture.
Construction—building the product as a series of
incremental iterations.
Transition—supplying the product to the user
community(manufacturing, delivering, and training).
Two Dimensions
Time and Process Component
Process Components—production of a specific set of
artifacts with well-defined activities.
Requirement Capture
Analysis and Design
Implementation
Test
Supporting Components
Management
Environment
Deployment
Use–Case Model
Analysis Model
Realized by
Design Model
Implemented by Distributed by
Verified by
X
OK
Deployment Model
X
OK
Implementation Model
Test Model
Use-Case-Driven Process
• Requirements capture has two objectives:
-- to find the true requirements.
Withdraw Money
Deposit Money
Transfer between
Money Receptor Deposit
Accounts
Using a Collaboration Diagram to Describe
a Use-Case Realization
1: identify 2: request withdrawal
:Cashier 3: validate and withdraw
Interface
:Bank :Withdraw :Account
Customer
4: authorize dispense
5: dispense money :Dispenser
Design
Model
Dispenser Withdraw Account
Display
Sensor
Card Reader
Display Transaction
Client Manager
Manager
persistent
Key Pad class
Withdrawal
Dispenser
Feeder
Cash
Counter Account
Dispenser Account
Sensor Manager
Client
Manager <<trace>> <<executable>>
client.exe
Dispenser <<compilation>>
Feeder
<<file>>
client.c
Dispenser <<trace>>
Sensor
<<file>>
Cash dispenser.c
Counter
<<trace>>
Input:
•The Bank customer’s account 12-121-1211 has a balance of $350.
•The Bank Customer identifies himself correctly.
•The Customer request to withdraw $200 from the account 12-121-1211.
•There is enough money (at lest $200) in the ATM.
Result:
•The balance of the Customer’s account 12-121-1211 decreases to $150.
•The Bank Customer receives $200 from the ATM.
Conditions: No other use cases (instances) are allowed to access the
account 12-121-1211 during this test case.
Summary of A Use-Case-Driven Process
Use Cases drive the process.
• During the requirements workflow, developers can represent
requirements as use cases. Project managers can then plan the project in
terms of the use cases that developers work with.
• During analysis and design, developers create use-case realizations in
terms of classes or subsystems. Developers then implement components.
Components are integrated into increments that each realize a set of use
cases.
•Finally, testers verify that the system implements the right use cases for
the users. In other words, use cases bind together all development
activities and drive the development process--this is perhaps the most
important benefit of the use-case-driven approach.
•But this is not all. Other aspect of unified process is architecture-centric.
An Architecture-Centric Process
1. Use Cases Driven Workflow:
Requirement Analysis Design Implementation Test
2. Use Cases alone are not enough to achieve a working system. It
should be supplied with architecture
3. Architectural model elements: subsystems, dependencies, interfaces,
collaborations, nodes, active classes.
4. Blind men and elephant: a big snake (the trunk), a piece of cord
(tail), a big fan (ear), or a small tree (the leg).
5. Software architecture encompasses the significant decisions about
• The organization of a software system.
• The structural elements and their interfaces that will comprise the
system, together with their behavior as specified in the collaborations
among those elements.
An Architecture-Centric Process
• The composition of the structural and behavioral elements into
progressively larger subsystems.
•The architectural style that guides this organization: the elements and
their interfaces, their collaborations, and their composition.
6. Architecture Description(Views of Models): 4+1 views, use-case
model, analysis model, view of design model, …
7. Why we need architecture?
• Understand the system
•Organize development
•Foster reuse
•Evolve the system
The Layered Architecture Organizes Systems in
Layer of Subsystem
Application-specific layer
Application-general layer
Middleware layer
System-software layer
Architecture of ATM System
• Architecture View of the Use-Case Model of the ATM System
• Architecture View of the Design Model of the ATM System
Withdrawal
<<subsystem>> <<subsystem>> <<subsystem>>
ATM Transaction Account
Interface Management Transfers Management
Dispensing
Workers take the following steps in the business use case Sales: From
Order to Delivery:
1. A buyer orders goods or services by contacting the seller.
2. The Seller sends an invoice to the buyer through the payment handler.
3. The seller delivers the goods or services to the buyer.
4. The buyer pays via the payment handler. This involves transferring
money from the account of the buyer to the account of the seller.
Buyer Seller
Buyer Payment
Handler
Seller
Account Invoice
Capturing the Requirements as Use Cases
• Use Case Model (actors + use cases with constraints)
• Use-cases (functional requirements)
• Supplementary requirements (non-functional)
Workflow for Capturing Requirements as Use Cases
Find Actors and Structure the
System Analyst Use Cases Use Case Model
Prioritize
Architect
Use Cases
User-Interface
Prototype
Designer
User-Interface
Summary of the Requirement Workflow
How to Capture the Requirements on a System?
• A business model or a domain model to set the context of the system
• A use-case model that captures the functional and the nonfunctional
requirements that are specific to individual use cases. The use-case
model is described by a survey description, a set of diagrams, and a
detailed description of each use case.
• A set of user interface sketches and prototypes for each actor
representing the design of the user interfaces.
•A supplementary requirements specification for the requirements that
are generic and not specific for a particular use case.
Analysis
The purpose of analysis is to achieve a more precise understanding of
the requirements and to achieve a description of the requirements by
refining and structuring them.
Brief Comparison of the Use-Case Model and Analysis Model
Use Case Model Analysis Model
Described using the language of the customer Described using the language of the developer
External view of the system Internal view of the system
Structured by use cases: gives structure to the external Structured by stereotypical classes and packages;
view gives structure to the internal view
Used primarily as a contract on what the system Used primarily by developers to understand how the
should and should not do system should be shaped, i.e., designed and
implemented
May contain redundancies inconsistencies, etc. among Should not contain redundancies, inconsistencies,
requirements ect., among requirements
Captures the functionality of the system, including Outlines how to realize the functionality with the
architecturally significant functionality. system, including architecturally significant
functionality; works as a first cut at design.
Defines use cases that are further analyzed in the Defines use-case realizations, each one representing
analysis model the analysis of a use case from the use-case model
• Design and implementation are so much more than analysis (refining
and structuring the requirements), so a separation of concern is needed.
*
1
*
* * * *
• Boundary Classes
A boundary class is used to model interaction between the system
and its actors ( users and external systems). Boundary classes often
represent abstractions of windows, forms, panes, communication
interfaces, printer interfaces, sensors, and terminals.
• Entity Classes
An entity class is used to model information that is long-lived and
often persistent. Entity classes often show a logical data structure
and contribute to the understanding of what information that the
system is dependent upon.
• Control Classes
Control classes represent coordination, sequencing, transaction, and
control objects and are often used to encapsulate control related to a
specific use case.
The dynamics of the system are modeled by control classes, since
they handle and coordinate the main actions and control flows, and
delegate work to other objects (boundary and entity objects).
• Use Case Realization--Analysis (Class and Interaction Diagrams)
Order Confirmation
Order Handler
Invoice
Payment Request UI
Buyer
:Order
Confirmation
4: Get
:Order Handler
3: Check Invoice
2: Browse
1: Browse Invoices
:Invoice
6: Schedule invoice for payment
9: setStatus (scheduled)
7: Schedule payment
:Payment Request UI
:Buyer 8: New
Supplementary
Requirement Buyer’s Invoice Seller’s Invoice
Analysis Class Management Management
Architectural [outlined]
Analysis
Business Model
[or domain model]