Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Wouter Brissinck
2005
Managing Software Requirements : Ch 1-The Requirements Problem
Spiral Model
Managing Software Requirements : Ch 3-Requirements and the Software Lifecycle
Key Points
– The team’s development process defines who is doing
what, when and how
– In the waterfall model, software proceeded through a
sequence of steps, and requirements were fixed early
– In the spiral model, the first steps were taken to a more
risk driven and incremental approach to development
– The iterative approach, a hybrid of the waterfall and
spiral models, decouples the lifecycle phases from the
software activities that take place in each phase
– The iterative model is a more robust model and
provides for successive refinement of the requirements
over time
Software Requirements
Wouter Brissinck
2005
Bibliography
• Use Cases – Requirements in Context, D.Kulak,
Eamonn Guiney, Addison Wesley, 2000, ISBN 0-
201-65767-8
• Software Requirements – Styles and Techniques,
Soren Lauesen, Addison Wesley, 2002, ISBN 0-
201-74570-4
• Managing Software Requirements, Dean
Leffingwell, Don Widrig, Addison-Wesley, ISBN
0-321-12247
Managing Software Requirements : Ch 1-The Requirements Problem
The Numbers
• In 1994 in the US :
– $250,000,000,000 on 175,000 projects
– Average cost :
• $2,322,000 for a large company
• $1,331,000 for a medium company
• $434,000 for a small company
– 31% of the projects failed
– 52.7% cost 189% of the budget
– $81,000,000,000 is spent on failed projects
– $59,000,000,000 is spent too much on successful
projects
Managing Software Requirements : Ch 1-The Requirements Problem
What is Requirements
Management ?
– A systematic approach to eliciting, organizing, and
documenting the requirements of a system
– Organize = ?
• Store
• Prioritize
• Control access to
• Assign responsibilities (to the requirement’s documentation
itself)
• Requirement dependencies (what is affected if changed ?)
• Traceability (who develops when, which design doc, which
code, which test cases, …)
Purpose of requirements
• Validation : check that reqs==user needs
• Verification : check that product satisfies
requirements (e.g. acceptance test)
• Tracing ( demands ↔ reqs ↔ program )
• Requirements management
• Court cases (tacit reqs !!)
Requirements Gathering
• Job of the analyst :
– Elicit
– Analyze for consistency
– Analyze for feasibility
– Analyze for Completeness
– Write it down
Requirements Gathering
• Who is part of the req. gathering team ?
– Project managers
– Developers
– Expert users (customer !)
– Subcontractors
– + consultants, marketing, …
Requirements Gathering
Communicating with users …
• Improve your relationship with users
• Improve visibility of the project
• Have respect for user’s time, job content,
skills, …
Requirements Gathering
Write a requirements document
• Redundant ? Complete ?
• Detailed, but not too large ?
• Readable by the users and the IT people ?
Requirements : Challenges
• Reduce Risk
• Focus on Interactions (NOT Technology)
• Reduce Volume
• No Redundancy, No Conflicts
• Useful to User, Designer, Developer, Manager
• Traceable
• No Design
• Useful till the end of the project
Traceability
Everybody on the project should be able to
tell at each time during the lifetime of the
project what requirement he is working on
(analist, developer, tester, maintenance
developer, …)
The trouble with requirements
gathering
• They don’t know what an IT system could do for
them
• They don’t know what they want
• They have conflicting demands
• They don’t have time
• They change their minds
• They don’t understand IT
• Yes, but ...
• They want it all on paper before you start
Problems observed in practice
• Data and functional requirements
– Usually developers guess right
• Expectations not met
– Business goals not understood by developers
• Background and context
– Requirements’ purpose not understood by developers
• Quality requirements
– Get too little attention in reqs doc.
The basic rule of writing
requirements
Requirement : “It should be possible to start and stop the system with both
hands at the patient”
Requirements ≠ Design : Why ?
• Design excludes a lot of possibilities
• Requirements are context insensitive
• Different authors
• Requirements must be readable by users
Audiologist
Patient
Domain vs. Product
• Product
– Requirements can describe behavior
• Inner domain = product + direct
surroundings
– Requirements can describe supported activities
– Actor : first-level interaction with product
• Outer domain
– second-level interaction
The Goal-Design scale
• Goal level requirement
– e.g. “Device return rate must dimish from 25%
to 5%”
– Hard to accept for most software suppliers : not
their (sole) responsibility, too much risk
involved. (but …)
– Product is a concept, a strategy, not necessarily
a software. Supplier must be a specialist.
– Verification ? Validation ?
The Goal-Design scale
• Domain level requirement
– e.g. “The process must insure that components
fit prior to manufacturing”
– Outlines domain tasks to be performed, and
requires support for this task by the product
– Not restrictive to solution used (i.e. can use
customised COTS)
– Assumes supplier knows the domain
– Verification ? Validation ?
The Goal-Design scale
• Product level requirement
– e.g. “The software allows to automatically place the
selected component in the most optimal position, and to
manually adjust the position if necessary”
– Identifies a feature of the software
– Very specific on the product => harder to use COTS
– Assumes less domain knowledge
– Verification ? Validation ?
The Goal-Design scale
• Design level requirement
– e.g. “The component has three circular handles
that allow rotation around the three axes”
– Describes a product interface in detail
– Supplier usually better at designing interfaces
than customer. COTS is impossible.
– Useful if supplier doesn’t know domain at all
– Verification, validation ?
Choose which level ?
• Depends on supplier
– Management consultant
– Niche software supplier
– General software supplier
• How much responsibility for customer, how
much for supplier ?
Choose which level ?
• Goal level:
– include to improve understanding
– include so that the system can be verified against them
• Domain level :
– Include as requirements
– or included to explain purpose of requirement
• Design-level :
– Include as requirements
– Include as an example
Requirement document :
Contents
• Problem Statement
• Project overview
• Data requirements
• Functional requirements (level ?)
• Quality (non-func.) requirements
• Business rules
• Additional deliverables
• Managerial requirements (or : in contract)
• Clarification, context, background
Problem statement
• What is the purpose of the project/product ?
– e.g. : RSM intends to replace the entire manual
process of making hearing aid shells, including
canal impression, impression detailing, shell
design, and shell manufacturing, by a fully
digital process
• If it’s hard to write, everything in the
project will be hard.
Project overview
• Scope : what ? What not ?
• Business Goals/Objectives : What must be
Achieved ?
• Application Overview : Kind of App. ?
• User Demography : who will use ?
• Constraints : What IT must take into account
(Must run on a 386, ...)
• Assumptions : What customer will take care
of (e.g. training, deployment, ...)
Data requirements
Use Case
Use Case Name :
Use
Sell Property
case
Iteration : Filled
Agent
Sell Property
Buyer
Seller
Use Cases : Actors
• Use cases show interactions that provide
value to actors
– Actors can be
• users
• other systems (Database)
• external events (time-out,...)
– Actors initiate all interactions
Associations
• Generalizations of actors
– Superactor interacts when all subactors interact
in the same way
– Subactor interacts when different from
superactor
employee
• Stereotype <<include>>
<<include>>
Indicate plane
Planar project curve <<include>>
Iterations ≠ Phases
Steps to build a use case model
• Step 1 : Identify the actors
– Find everybody/everything that interacts with
the system
• Step 2 : Identify the use cases
– Find what the actor uses the system for
– Find what the actor needs to tell the system
– Find what the system needs to tell the actor
– Provide names and descriptions
Steps to build a use case model
• Step 3 : Identify Actor-Use Case relationships
– Which actor is involved in which use case ?
– Draw the UML diagram
• Step 4 : Fill the use cases
– Write the basic course of events
– Write alternate/exceptional flows
• Step 5 : Refine the use cases
– Add pre/post conditions
– Add detail
Scenarios
• Instance of a path
• Provides specific data
• Follows a specific path or exception
• Use :
– To illustrate use case functioning to the user
(validation)
– To provide test cases during testing
(verification)
Task Descriptions
• Structured text describing user tasks
• Domain level requirements
• Similar to use cases
– task = human and computer perform a common goal
together
– use case = what part is performed by computer ?
Task
use case
Human Computer
Task Descriptions
• Advantages :
– Easy validation and verification
– Domain level ( no detailed reqs necessary)
– Complex systems can be easily described
• Disadvantages
– Design is harder
Assignment
• Database for keeping track of company-
wide training
– Mission Statement : provide a system to
support the logistics involved in, and the
accounting of, training of company employees.
Assignment
• Some ideas :
– Employees can follow trainings. They often forget they
were invited or enrolled in a training.
– Trainers (=special employees or external companies)
organize trainings. They need to report to management
who took part.
– ISO9000 requires that trainings are budgetted and that
some kind of evaluation on the trainers is performed.
– Supervisors (“boss” of an employee) want to know
what an employee knows (was trained for) and what
not.
Assignment
• Write a requirements document
– using use cases
– using task descriptions
– using whatever else necessary