Week 2 Flashcards
(22 cards)
What is a Software Requirement?
A requirement specifies the business functions that the user will be able to perform using the system-to-be in different “situations” or “contexts”, and the kind of experience the user will have during this work
May include concerns, such as how the system will manage the resources (computing, network,…), how the system will manage and protect user’s data, etc.
generally high level
What matters? What are the important considerations for software requirement
Features
Security
Data Sovereignty
Availability and Reliability?
User Personas
Requirements Engineering
Understanding what matters
What are functional requirements
Product features/ features essential to user’s task completion
what are nonfunctional requirements
requirements (AKA Quality requirements)
Usability (ease of use, efficiency, learning curve, etc)
Security (encryption, protection from viruses/malware, privacy, etc. )
Reliability (bug-free, not crashing, no hardware failures, etc.)
Performance (load times, CPU usage, etc.)
Availability (minimising the impact of maintenance/ downtime)
Scalability (handling more users, more data, more operations, etc.)
what is User Interface (UI):
On-screen appearance requirements (look & feel)
What are the 3 types of requirements
UI, func and non func
what are 3 types of artefacts we can produce for UI requirements gathering
Wireframes
Mockups
Prototypes
HOw do you do Requirements Engineering
Requirements Gathering
Requirements Analysis
Requirements Specification
.
what is Requirements Gathering
Helps the customer to define what is required: what is to be accomplished, how the system will fit into the needs of the business, and how the system will be used on a day-to-day basis
what is Requirements Analysis
Refining and modifying the gathered requirements
Not necessarily sequential – some back and forth between devs and client
what is Requirements Specification
Documenting the system requirements in a semi-formal or formal manner to ensure clarity, consistency, and completeness
e.g. User stories, UML diagrams, acceptance tests, etc.
Ensures traceability
How do we gather & express these requirements?
Use Cases
Example Requirements
User stories
What is a use case
A use case is a list of actions or event steps typically defining the interactions between a role and a system to achieve a goal
how do you represent a use case
Represented in UML with use case diagrams
Ovals = use cases
Stick figures = actors
Boxes = system boundary
Lines = associations
How do we know that a requirement has been met?
Acceptance testing
What is an Acceptance Test?
An acceptance test case specifies, for a given “situation” or “context” (defined by current system inputs), the output or behavior the system will produce in response
User Acceptance Test – Works for user (user focused)
Operational Acceptance Test – operational readiness (system focused)
what is a user acceptance test
Verifies that the software solution works for the user
Given-When-Then
Requirements should be ….
Documented – recorded for future use
Traceable – who said what, which meeting, when was this designed, etc.
Actionable – break requirements into tasks that can be implemented
Testable – acceptance tests
Related to business needs – user stories (who-what-why)
Requirements Analysis needs to do what
Refine Client Requirements
Evaluate Feasibility & Realism.
Identify Business Policies (Rules)
Engage Clients & Stakeholders
Anticipate Future Changes
Elicit Additional Requirements
Requirements
Prioritisation
Requirements prioritisation
can be difficult
* There is a difference
between “urgent” and
“important”
* Can be difficult to
assign “priority points”
to requirements
* Often easier to do a rank
ordering
Requirements
Sizing
Often a need to work out
which user stories and tasks
require the most effort
* Estimated using size points:
each user story is assigned
a number of points based on
its size
Total project size = sum of
all user story points
* Velocity (burn rate) is
estimated by looking at
number of points completed
per day
𝑃𝑟𝑜𝑗𝑒𝑐𝑡 𝑑𝑢𝑟𝑎𝑡𝑖𝑜𝑛 =
𝑇𝑜𝑡𝑎𝑙 𝑆𝑖𝑧𝑒/
𝑉𝑒𝑙𝑜𝑐𝑖𝑡