requirements engineering Flashcards
requirements engineering
idea is to find out what client needs
1. identify condition or capabilities needed by a user to solve a problem or achieve objective
2. a condition or capability that must be met or possessed by a system or system component to satisfy a contract, standard, specification or other formally imposed documents
3. a documented representation of a condition or capability as in 1 or 2 - must build software that is maintainable
functional requirements
- an action the product must take to be useful
- ie, collision avoidance system will provide warning when two aircrafts are too close
non
non functional requirements
- property or quality the product must have
- ie, product should be accessible in multiple languages
- ie, system should provide a response in under 3 sec when utilised by 1000 users at the same time
- depends on setting in which system is being used
constraints
- global requirements -> on the project or the product
- must be obeyed rather than implemented
- ie, product should be available before set date
- ie, collision avoidance system will not enterfere with ground proximity alert system
- ie, vehicle will operate at temperatures between -30C and 40C
Requirements Analysis
- involves a lot of studies
- prototypes are important to see how client uses system
- the process of studying user needs to arrive at a definition of system, hardware or software requirements
- the process of studying and refining system, hardware or software requirements
Inception
identify stakeholders
- persons or organisations who: have valid interest in system, are affected by the system
- anyone who operates the system: normal and maintenance operators
- anyone who benefits from the system: functional, political, financial and social beneficiaries
- anyone involved in purchasing or procuring the system
- organisations which regulate aspects of the system: financial, safety and other regulators; must convince companies your software is safe to run
- organisations responsible for systems which interface with the system under design
- people or organisation opposed to the system: negative stakeholders
- personas: can be used to give personality to users of a system, make it possible to talk of users not in terms of abstract profiles but in terms of people who devs can think of, can think of scenarios that would answer questions about usability and setting of applicability of software
- recognise multiple viewpoints
- ask first Q&A
Elicitation
- collaborate with stakeholders
- address problems - scope, understanding, volatility
- understand each stakeholder
- help stakeholders understand themselves - have clear goal, no ambiguity
- help stakeholders understand each other - devs are responsible to deliver working system satisfying both parties
user interviews - user and developer spend time to understand what user wants
- managers might not know is happening in reality
- employer might be too afraid
- time consuming
questionnaires - can send to many different users
- viewpoints might be biased - info might not be representative
observation - can see why some things are occuring
- ie, nurses inputting incomplete information due to program timing out
- can find workarounds based on real life observation
- brainstorming
- story writing workshops
volatility
requirements change over time
scope
what is the boundary of the system
Elaboration
- expand and refine information
five W and one H - who - will be using the software
- what - does the customer need application to do
- when - is the application needed
- where - where will the application be used
- why - does the customer need the application
Negotiation
- reconcile conflicts - need to figure out how to make both clients happy
- ranking of requirements - scope might change, identify most important features to build first
- risk estimation (very rough) - are new regulations/laws going to change
- MOSCOW method
MOSCOW method
- common system to prioritise requirements
- must - required features
- should - important features
- could - desirable features
- won’t - optional features
Specification
- Written document - contract style
- use cases
- UML diagram
- user stories
- natural language issues
use cases
- graphical forms to describe requirements
- agile compared to contract allows for it to be dynamic
- instead of fixed price → pay by time
- different type of relationship with client
- an actor is something that can act - a person, system or organisation
- scenario is a specific sequence of actions and interactions between actors - where at least one actor is a system
- use case is a collection of related scenarios
- useful for clients as well as developers
- example safe home
- initial scenario
- use case - display camera views
- actor - homeowner
- useful as it tells you how user will use the system
- clauses would specify system requirements and such
- refined scenario
- homeowner logs on to site
- homeowner enters their id
- system displays all major function button
- refined scenario illustrates potential problems
- alternative interactions
- can the actor take some other action at this point?
- have to identify potential inadvertent issues within the system design
- is it possible the actor encounters some error condition? if so, which one?
- what if server does not respond?
- helps identify requirements in cases where error is encountered
- exceptions have to be accounted for in requirements
- is it possible that some other behaviour is encountered? if so, which one?
- can the actor take some other action at this point?
- initial scenario
written document
- make sure to state what is going to be implemented or not
- ensures client doesn’t ask for more than what was agreed for
- have to be able to contest what client has written
- need to very specific with requirements
- classify product features as:
- must have features, may have features, must not have, provides a contract between sponsors and developers, can run to hundreds of pages, agile makes it possible to build this at a fixed rate but not all finance companies would be happy with paying this way