Introduction To RE
Introduction To RE
Introduction To RE
Introduction
Learning Outcomes
By the end of this lecture, YOU should be able to:
To define RE and its subcomponents To classify requirements
Introduction
Introduction
Requirements Engineering
Requirements Development
Requirements Management
Elicitation
Analysis
Specification
Validation
Introduction
Requirements Development
Involves: Identifying the products expected user classes Eliciting needs from user class Understanding user tasks, goals and business objectives Analyzing user information, distinguishing task goals, functional and non-functional requirements Transforming user needs to requirements specification
Introduction
Requirements Management
Is the establishing and maintaining an agreement with the customer on the requirements for the software project The agreement is embodies in the written requirement specification Req. Mgt. Activities : Define requirements baseline Review proposed changes Incorporate approved requirements Keeping project plans Tracing individual requirements, from design to source code Tracking requirements status
Introduction
Requirements Engineering
The process of establishing the services that the customer requires from a system and the constraints under which it operates and is developed. The requirements themselves are the descriptions of the system services and constraints that are generated during the requirements engineering process.
Ian Sommerville
Introduction
Requirements Engineering (def) Requirements Engineering (RE) is a set of activities concerned with identifying and communicating the purpose of a software intensive system, and the contexts in which it will be used. Hence, RE acts as the bridge between the real-world needs of users, customers, and other constituencies affected by a software system, and the capabilities and opportunities afforded.
[Easterbrook, Chapter 1]
CT056-3-2 Requirements Engineering Introduction
Introduction
can be defined as the systematic process of developing requirements through an iterative co-operative process of analyzing the problem, documenting the resulting observations in a variety of representation formats, and checking the accuracy of the understanding gained.
"The hardest single part of building a software system is deciding precisely what to build. No other part of the conceptual work is as difficult as establishing the detailed technical requirements, including all the interfaces to people, to machines, and to the software systems. No other part of the work so cripples the resulting system if done wrong. No other part is more difficult to rectify later".
Fred Brooks, "No Silver Bullet", IEEE Computer,1987 Author of The Mythical Man-mon
Introduction
Introduction
Introduction
Introduction
Users, customers, managers, domain experts, and developers share different skills, backgrounds, and expectations.
Introduction
Requirements emerge from a process of co-operative learning in which they are explored, prioritized, negotiated, evaluated, and documented.
Introduction
I held my entire program up for 4+ weeks due to unclear, unwritten requirements. Took some heat for that in the beginning, but the deep dive requirements effort is highlighting a Silicon spin we didn't know about, standards that we don't support, other post launch requirements nobody consideredall of this causing us and mgmt to question the viability of the product. BTW, this is all stuff we wouldn't have realized until it smacked us in the face 6 months from now. Spending a month now prevented us from spending millions before a conscious decision.
From : Reflections on a Successful Corporate Requirements Engineering Training Curriculum, Erik Simmons, Intel Corporation, 2005
Introduction
Stakeholders issues
Steve McConnell, in his book Rapid Development, details a number of ways users can inhibit requirements gathering:
Users don't understand what they want or users don't have a clear idea of their requirements Users won't commit to a set of written requirements Users insist on new requirements after the cost and schedule have been fixed. Communication with users is slow Users often do not participate in reviews or are incapable of doing so. Users are technically unsophisticated Users don't understand the development process. Users don't know about present technology.
Introduction
Introduction
Introduction
Scope the problem Understand the problem for the client as well as the architect Basis for design Contract between client/user and builders agreement on what has to be built
Introduction
What is important?
Which things are stable and which change?
Introduction
What are the drivers? Stakeholders & concerns What are the constraints? Economical/technical/organisational
Introduction
Progressing understanding of architecture & design provides a basis for discovering further system requirements and vice versa There is interaction between available solutions and requirements
CT056-3-2 Requirements Engineering Introduction
What is a Requirement ?
A statement about the proposed system that all stakeholders agree must be made true in order for the customers problem to be adequately solved.
Short and concise piece of information
Says something about the system All the stakeholders have agreed that it is valid It helps solve the customers problem Contract between customer and builder
CT056-3-2 Requirements Engineering Introduction
Introduction
Errors
Up to 30-50% of the errors found further downstream the development process are due to errors in the requirements. Requirements errors are typically non-clerical.
incorrect facts omissions inconsistencies ambiguities 49% 31% 13% 5%
Introduction
Introduction
Types of Requirements
User requirements: The description of the functions that the system has to fulfil for its environment in terms of the users interacting with the system, e.g. in the form of use cases. Software requirements: The software requirements are a translation and a more precise description of the user requirements, in terms for software engineers.
Introduction
Functional requirements
Statements of services the system should provide, how the system should react to particular inputs and how the system should behave in particular situations. constraints on the services or functions offered by the system such as timing constraints, constraints on the development process, standards, Availability, Security, Reliability, Timeliness, etc.
Domain requirements
Requirements that come from the application domain of the system and that reflect characteristics of that domain. Requirements other than specific needs of the user standard user interfaces to all databases
Introduction
Functional requirements
Describe functionality or system services. Depend on the type of software, expected users and the type of system where the software is used. Functional user requirements may be highlevel statements of what the system should do but functional system requirements should describe the system services in detail.
CT056-3-2 Requirements Engineering Introduction
Introduction
Introduction
Non-functional requirements
These define system properties and constraints e.g. reliability, response time and storage requirements. Constraints are I/O device capability, system representations, etc. Process requirements may also be specified mandating a particular CASE system, programming language or development method. Non-functional requirements may be more critical than functional requirements. If these are not met, the system is useless.
Introduction
Introduction
Non-functional classifications
Product requirements
Requirements which specify that the delivered product must behave in a particular way e.g. execution speed, reliability, etc.
Organisational requirements
Requirements which are a consequence of organisational policies and procedures e.g. process standards used, implementation requirements, etc.
External requirements
Requirements which arise from factors which are external to the system and its development process e.g. interoperability requirements, legislative requirements, etc.
Introduction
Availability
The average person time required to fix a category 3 defect (including testing and documentation upgrade) shall not exceed two person days.
Introduction
Constraints
Constraints are not negotiable
Constraints concerning the environment and technology of the system. Platform Technology to be used Constraints concerning the project plan and development methods Development process (methodology) to be used Cost and delivery date Often put in contract or project plan instead
Introduction
Constraints
Constraint restrict how the requirements are to be implemented.
Interface Requirements. How external interfaces with other systems must be done. Communication Interfaces. The networks and protocols to be used.
Introduction
Expressed using a clear and consistent notation at the same level of detail
Without duplication
Introduction
Introduction
Lets consider
Introduction
Requirements Prioritization
Introduction
Introduction
Prioritizing Requirements
MIL STD: Must have, will have, may have RUP: MoSCoW Must have Should have Could have Wont have
Introduction
Cost-Value Prioritization of Requirements Motivation for Prioritization: Focus development effort Allocate resources based on importance Make trade-offs between conflicting goals, such as quality, cost and time-tomarket
Introduction
Process:
1. 2. 3. 4. 5. 6. Review requirements for clarity and completeness (by Requirements Engineers) Assess relative value of requirements in pair wise manner (Customers and users) Assess relative cost of realizing requirements in pair wise manner (by experienced SW Engineers) Calculate (value, cost)-pairs (using AHP*) Plot requirements as (value, cost)-pairs Prioritize
Introduction
Introduction
Key points
Requirements set out what the system should do and define constraints on its operation and implementation Functional requirements set out services the system should provide Non-functional requirements constrain the system being developed or the development process User requirements are high-level statements of what the system should do
Introduction
Key points
User requirements should be written in natural language, tables and diagrams System requirements are intended to communicate the functions that the system should provide System requirements may be written in structured natural language, a PDL or in a formal language A software requirements document is an agreed statement of the system
Introduction