Elaboration Phase 1

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 50

Elaboration Phase

Determining the Functionality and


Structure of the Software
Elaboration
 The main two purposes of Elaboration are:
 Requirements analysis: Determining how
functionality (described during requirements
capture) will operate
 However, the system is perceived as a black box
 In other words, we only consider how the system appears
from outside (not inside)
 Architecture and Design: Determining how
functionality will be implemented
 The system is perceived as a white/clear box
 In other words, we will consider the internal structure of the
system
Requirements Analysis

 Analysts will often create diagrams, and other


artifacts, when analyzing the requirements:
 Use Case Model:
 Use case descriptions
 Use case diagrams
 Use case contracts
 System sequence diagrams (i.e. use case realizations)
 Domain Model:
 Class diagrams
Use Cases
 A use case is a complete use of the system
 Use cases describe the functionality of the system
 There is a simple rule for determining if a
behaviour is a use case:
 Is the behaviour something that an actor might do
by itself?
 If not, then it is part of a larger use case
 Is the behaviour atomic (can it be reduced into
multiple, distinct, behaviours)?
 If so, then there is more than one use case
A Sample Case Study

 Consider an example: The First Bank of


Nunavut
 The application will manage the bank’s accounts,
including:
 In-branch transactions
 ATM transactions
 Web transactions
 Automatic deposit transactions
 The application will facilitate the loan application
and approval process
Use Case Descriptions
 A use case description is a detailed description of a
use case, including:
 A list of primary and secondary participants (actors)
 A step-by-step description of the main success scenario of
the use case
 Alternative flows (exceptional conditions) that may occur
(and when they could occur)
 Much of this information comes from the
requirements document (from requirements capture)
 The rest of the information should be obtained using
questionnaires and interviews with the customer
A Sample Use Case Description
Use Case: Deposit into Account
Primary Actor: Teller
Stakeholders and Interests: Customers want to deposit money
into their account. The want the transaction to be completed
correctly, as losing their money would be unacceptable.
Customers also want transactions, such as this, recorded so they
can be viewed later.
Main Success Scenario:
1. The customer arrives at the teller with some amount of money
(cash or cheque) to deposit, and provides the account ID of the
account they wish to use
2. The teller accepts the money and verifies the account ID
3. The teller prepares a deposit slip including the account ID and
amount
4. The customer signs the deposit slip, and keeps a copy
A Sample Use Case Description
5. The teller files the deposit slip
6. The teller updates the balance of the account with the provided
account ID
7. A transaction record is generated, including transaction details
Alternative Flows:
2a. If the account ID is invalid, the teller asks the customer to verify.
If unable to correct the account ID, the teller returns the money
and cancels the transaction.
6a. The customer asks for a printout of the account balance. The
teller prints an account balance summary, and gives it to the
customer.
Technical Considerations:
 Many customers provide their debit card instead of their account
ID. A card reading device is used to get the account ID from the
debit card.
Use Case Diagrams
 A use case diagram is a diagram depicting use
cases, the actors involved
 In the second iteration of Elaboration, we also add possible
relationships between use cases
 Use cases are shown as ellipses with the use case
name inside
 Actors are shown as stick figures, with the actor
name underneath
 Actors that are non-human may also be shown as
rectangles with the actor name inside, including the
stereotype «actor»
 A non-human actor would be used to represent an external
system (e.g. a credit card company)
A Sample Use Case Diagram
In-Branch Services

Deposit

Teller Withdraw

Transfer Customer

Apply for Loan

Loan Manager Credit Card «actor»


Credit Card
Payment Services
A Sample Use Case Diagram
In-Branch Services

Deposit

Teller Withdraw

Transfer Customer

Apply for Loan

Loan Manager Credit Card «actor»


Credit Card
Payment Services

Primary actors
go on the left
A Sample Use Case Diagram
In-Branch Services

Deposit

Teller Withdraw

Transfer Customer

Apply for Loan

Loan Manager Credit Card «actor»


Credit Card
Payment Services

Secondary
actors on the
right
A Sample Use Case Diagram
In-Branch Services

Deposit

Teller Withdraw

Transfer Customer

Apply for Loan

Loan Manager Credit Card «actor»


Credit Card
Payment Services

Use cases may


be grouped
like this
Elaboration Phase Checkpoint
 This is usually where the first iteration of the
Elaboration phase ends
 So far we’ve started the use case model:
 We’ve created use case descriptions
 We’ve drawn a simple use case diagrams
 The next iteration will involve the improvements of
the use case model:
 Improvements to the use case diagrams, and the addition
of use case contracts and system sequence diagrams
 We will also create a domain model, which describes the
objects and classes in the application domain
Use Case Contracts
 A use case contracts is like any other contract: an
agreement between the producer and consumer
 In this case, the producer is the use case, and the
consumer is the actor using it
 The contract outlines pre-conditions and post-
conditions
 Pre-conditions: A description of the context prior to the
execution of the use case
 Post-conditions: A description of the context after the
execution of the use case
A Sample Use Case Contract

Use Case: Deposit into Account


Pre-conditions:
 The account exists and is active

Post-conditions:
 For a deposit of N dollars, the balance of the
account is increased by N
 A transaction record is recorded for
accountability, tracing, and customer
information
Another Format of Use Case
Contract
Use Case: Deposit into Account
Input: Account, Amount
Output: transaction successful?
Pre-conditions:
 ValidAccount(Account)

Post-conditions:
 Account.balance = Account.balance + Amount

 create Transaction(“Deposit”, Account, Amount)


A Warning

 The second format is very specific, but is


difficult to read for non-programmers
 Analysts are typically not programmers
 It might sound strange, but a good way to
approach this course (and OOAD projects) is
to forget about programming during analysis!
 This way you can become an analyst
Best Practice

 A common theme in analysis and design is to


do what is necessary
 Some organizations do not put enough effort into
analysis and design
 Inadequate analysis can often lead to unhappy
customers, since the system is not exactly what
they wanted
 Inadequate design can often lead to difficult to
maintain software (finding bugs, functional and
performance enhancements, etc.)
Best Practice

 A common theme in analysis and design is to


do what is necessary
 Some organizations will put too much effort into
artifacts like use case contracts
 These are not necessary for most use cases
 However, one must always evaluate the cost/gain
relationship
 How much benefit do we gain from all that effort?
 In some cases, not much!!
Best Practice
 For a while a fad in software was to specify software
 This means using mathematical notation to specify how
software would work (using languages such as Z)
 e.g. ∑∆x , ∆x ← (A ∩ B)
 This was instead of using diagrams
 Aren’t you glad this fad didn’t stick around?
 This technique is still important in some technical
applications, where proving correctness is necessary
 For example, if a software failure could lead to physical injury
(e.g. robotics, respiratory machines)
 Even in these apps, it is more common to look to software to
verify the correctness of a program, using proof techniques
Best Practice
 Do not follow fads in software; instead learn the principles
 Even UML can be considered a fad
 Thus, this course should not be considered a course about UML

 UML is merely used to illustrate the principles

 It is common for students to say things like “I don’t need to know


all this stuff, I know ASP.NET, and that is what gets me the job”
 ASP.NET is a technological breakthrough today, but it will be

obsolete in a few years


 Are you planning to retire when you are 23? (lucky you!)

 These are the reasons why a University degree prepares you for
your entire career
 Even if you don’t learn all the technologies and languages you

may need to get your first job


System Sequence Diagrams (SSDs)

 A system sequence diagram is a diagram


showing how actors and the system interact
to complete the behaviour of a use case
 A sequence diagram is a UML diagram depicting
message passing over time
 A sequence diagram is perfect for this sort of
modeling, since it shows the passage of time as
the y-axis of the diagram
A Sample SSD
: System

Teller

verifyAccount(Account)

increaseBalance(Account, Amount)

createTransactionRecord(“Deposit”, Account, Amount)


A Sample SSD
: System

Teller

verifyAccount(Account)

increaseBalance(Account, Amount)

createTransactionRecord(“Deposit”, Account, Amount)

The passage of
time goes down
A Sample SSD
: System

Teller

verifyAccount(Account)

increaseBalance(Account, Amount)

createTransactionRecord(“Deposit”, Account, Amount)

The primary actor


goes on the left
A Sample SSD
: System

Teller

verifyAccount(Account)

increaseBalance(Account, Amount)

createTransactionRecord(“Deposit”, Account, Amount)

The system on
the right
A Sample SSD
: System

Teller

verifyAccount(Account)

increaseBalance(Account, Amount)

createTransactionRecord(“Deposit”, Account, Amount)

These are
lifelines
A Sample SSD
: System

Teller

verifyAccount(Account)

increaseBalance(Account, Amount)

createTransactionRecord(“Deposit”, Account, Amount)

These are
activity
blocks
A Sample SSD
: System

Teller

verifyAccount(Account)

increaseBalance(Account, Amount)

createTransactionRecord(“Deposit”, Account, Amount)

This is a
message
Domain Model
 A domain model is a representation of the classes in
the application domain
 The application domain is the area of business for which
the application is intended
 For our example, the application domain is banking
 For this model, we use a simple class diagram
 Class diagrams are diagrams showing classes, attributes,
operations, and class relationships
 Operations are typically not included in the domain model
class diagrams, however
Domain Model

 The first step in creating a domain model is


class identification
 We look through the requirements document for
nouns
 Here are some examples for our bank application:
 People: Customer, Teller, Loan Manager
 Entities (tangible or conceptual): Account, Transaction
Domain Model
 Next, for each class, we determine the relevant
information (attributes and relationships):
 For Account:
 Balance (Amount) (e.g. $1000.00)
 Type (Name) (e.g. Chequing, Credit, RRSP)
 Owner (Customer) (e.g. Barb Smith)
 Information that can be represented with atomic
types are attributes
 The first two examples above are attributes
 Information that is expressed in terms of other
classes are relationships with those classes
 We can call these relationships associations for now
A Partial Domain Class Diagram

owner
Account Customer
balance: Amount
type: Name
A Partial Domain Class Diagram

owner
Account Customer
balance: Amount
type: Name

These are
classes
A Partial Domain Class Diagram

owner
Account Customer
balance: Amount
type: Name

The name of
the class goes
in the top box
A Partial Domain Class Diagram

owner
Account Customer
balance: Amount
type: Name

Attributes go in
the second box
A Partial Domain Class Diagram

owner
Account Customer
balance: Amount
type: Name

Attributes types
go on the right
A Partial Domain Class Diagram

owner
Account Customer
balance: Amount
type: Name

Attribute types
are conceptual,
not programming
language types
A Partial Domain Class Diagram

owner
Account Customer
balance: Amount
type: Name

Attributes names
go on the left
A Partial Domain Class Diagram

owner
Account Customer
balance: Amount
type: Name

withdraw(a: Amount)
deposit(a: Amount)

Operations would
go in the third box
A Partial Domain Class Diagram

owner
Account Customer
balance: Amount
type: Name

Associations are
shown as lines
A Partial Domain Class Diagram

owner
Account Customer
balance: Amount
type: Name

Association role
names are also
included
A Partial Domain Class Diagram

1..* owner 1..*


Account Customer
balance: Amount
type: Name

Multiplicity can
indicate how many
objects are involved
Other Elaboration Artifacts

 Architects will begin working with the


Architectural Model in Elaboration
 Architects will map out the overall system
structure:
 For distributed systems, they will determine on which
network nodes to deploy which components
 They will also break the system into modules, often
using one of the common architectures
 e.g. MVC, Layers, Tiers
Other Elaboration Artifacts
 The designers may also work on the Design Model
in Elaboration
 Designers will figure out what classes will be used to
implement a module, and how instances of these classes
will interact to provide behaviour
 Often, designers will employ design patterns (discussed
later) and best practices to ensure they use proven
solutions
 This ensures that the system will work, since design pattern
solutions and best practices have been used many times
before
 Design patterns and best practices are decades worth of
experience, that even novices can employ effectively
Other Elaboration Artifacts
 Developers will also starting working on the
Implementation Model (code) in Elaboration
 Critical system components will be developed before
anything else
 These are components that represent core behaviour that is
necessary for the system
 Often, a user interface prototype will be developed next (in
Elaboration and continued in Construction)
 This is so the customer can examine the user interface and
make changes as early as possible
 Earlier changes have less impact on the development process
as a whole
Implementation Model Comments
 In UP, the Implementation Model is built around the
functionality of the system
 This is similar to the older “use case-driven” approach developed
by Ivar Jacobson (also one of the UP developers)
 This is quite different than other approaches:
 Data-centric design (worst):
 The database (or file system) is designed first
 The software components are built around them, until the user
interface is reached (last)
 This often leads to poorly designed user interfaces, since there is
often little flexibility by the time they are developed
 User-centric design (not great):
 The user interface is designed first
 The software components are built around them, until the database is
reached (last)
 This might lead to poorly designed databases, as well as software
components which are tightly coupled to user interface components
Unified Process – A Clarification
 In UP, everything flows using similar rules to the
Waterfall model
 Once requirements analysis is done, we can begin to
create an architecture
 Architecture allows us to design, then implement the
software
 Remember the difference with UP, however:
 We do not need to complete the entire requirements
analysis before the architecture and design can begin
 Often we draw an SSD for one use case, it can be
immediately designed and implemented
Elaboration Checkpoint

 As this point:
 The Use Case Model is at 80-90% complete
 The Domain Model is fairly detailed
 The Architectural Model is nearly complete
 The Design Model is at least 60% complete
 The Implementation Model has been started, and
significant progress made (10-20%)
 This is around where Elaboration leaves off

You might also like