A141 Mrigank SE Exp2
A141 Mrigank SE Exp2
2
Topic: Agile Requirements Gathering with User Stories (For NON-Functional
Requirement)
Aim: To identify Nonfunctional requirement for any software development project.
Learning Outcome: Study consists of learning the following concepts
S. No Functional Non-Functional
Defined by technical
Elicited by business analysts, specified
2 team like architects,
by the customer
developers etc
Documented as the
Documented as the requirements
3 technical document by
document by the business analyst
the team
Captured either as a
story or part of
5 Captured as a user story in agile
acceptance criteria of a
user story
Efficiency. The more efficient software is, the less it uses of CPU-time,
memory, disk space, network bandwidth and other resources. This
is important to customers in order to reduce their costs of running
the software, although with today’s powerful computers, CPU-time,
memory and disk usage are less of a concern than in years gone by.
Maintainability. This is the ease with which you can change the software. The
more difficult it is to make a change, the lower the maintainability. Software
engineers can design highly maintainable software by anticipating future
changes and adding flexibility. Software that is more maintainable can result
in reduced costs for both developers and customers.
Some of the questions to be prompted that may help the business analyst to ask
stakeholders how they want their system to function include the following aspects:
For example, for the following user story, “As an ecommerce website user, I want to
search for products, so that I can purchase them”. NFR as acceptance criteria would
be “application responds to search request within 5 seconds from the time request is
received”.
Performance – funds transfer transaction should not take more than 0.5
seconds
Availability – the system should be available for the users to use the system
anytime of the week they need
Security – payroll data is not visible to all the employees in the organization.
Only the authorized personnel should have access to the data
Data Retention – all healthcare data should reside in the system for 7 years.
Older data can be archived and should be accessible when required
Usability – the system navigation is easy for the end user and provides a
seamless journey while accessing the system
Stability – the code/system is stable when new changes are applied due to
dynamic business needs
Compliance – HIPAA compliance should be adhered when dealing with patients’
data in USA
Reliability – website users should be able to access the system 99% of the time
without any failure
Recoverability – In case of any major failures, the system should be restored
within 48 hours
Serviceability – the system should be serviceable immediately when there is a
failure
Data integrity – the system should not allow phone number to be entered in the
data field
Capacity – the system should be able to store 1 million records of basic
customer information
Scalability – the system should be scalable to support unlimited growth of the
employees
Accessibility - The system shall be accessible to people with disabilities in
accordance with the Americans with Disabilities Act
Confidentiality – The system shall not display the bank account number in full.
It should display only the last 4 digits of the account number while others can be
masked
Efficiency – The interface between the system and user should not take more
than 2 seconds
Portability – The system shall be developed for both windows and Mac
operating systems platforms
For performance requirements and many other nonfunctional requirements(NFR's), one can
use constraints and stories.
Usually create a story to document the NFR and
Define story tests for it.
Then, add the story tests as a "constraint."
A constraint is something that all implemented stories(features and functionality) must comply
with.
SAMPLE:
Step 1: Identify and quantify the constraint, put it in terms that your users and
business stakeholders will understand, and put it into one or more stories as Story
Tests (aka Acceptance Tests).
Story Title: System response time
Story Test #1: Test that the system responds to all non search requests
within 1 second of receiving the request
Story Test #2: Test that the system responds to all search requests within
10 seconds of receiving the request
If you cannot quantify the story in concrete terms, this should be a bad smell
that usually indicates a requirement that is too vague to be implemented.
Vague NRF's have the same problems that vague functional requirements do:
It is hard to answer the question "How will I know when this story is correctly
done?"
Be sure not to specify a technical solution or implementation in the story,
because stories are about "The What"("What the user wants") and they
are not about "The How" ("How this is implemented").
Plan, estimate, split(if necessary), and implement this story like all other
user stories, as part of the Product Backlog(Scrum).
Once this story is complete, the entire system will be in compliance with this
particular constraint.
Just add it as a story test for that story. But again, specify the
requirement, not the implementation, in terms the business stakeholders
will understand.
The decision to create a constraint or not will rest on whether the constraint should be
considered in at least several future stories(or system wide).
If it will apply to several future stories, then create a constraint.
If it won't apply to several future stories, then just add the NFR as a story test to the
stories that it applies to or create a separate story to comply with the NFR in the small
part of the system that requires it.
Step 2: Add the NFR related Story Tests to your list of constraints (and to your
Definition of Done if you're doing Scrum)
Publish your list of constraints (and/or DoD) somewhere that is highly visible. Even if you
keep your constraints electronically, print them out in large print and post them
somewhere on your Scrum board or in your team area.
Constraints
Test that the system responds to all non search requests within 1 second of receiving
the request.
Test that the system responds to all search requests within 10 seconds of receiving
the request.
Test that the system logs a user out after 10 seconds of inactivity and redirects their
browser to the home page.
Test that any update to a person's payment information(anywhere in the system) is logged
to the payment_preferences log, along with the following information:
o IP Address of logged in person
o Old preference value, new preference value
o Date/time of change
Test that any time a person's credit card number is shown in the application, that only the
last 4 digits display.
Definition of Done
All stories must comply with all of the story constraints<link to constraints page on
wiki>.
All code must be peer reviewed within 4 hours of checking.
If a change is made to the web services interface, the change must be documented on the
official web services api wiki page<link to api on wiki>.
All code must have automated testing that is consistent with the "Automated Testing
Guidelines"<link to guidelines on wiki>
Any change in of functionality that is visible in the GUI must be at least tested
manually(automated tests also acceptable) against the integration environment before
making the functionality available for a QA review.
Part B:
1. Introduction:
In this document we outline the NFD that we have to take care of for our tiffin service based
application, NFD are essential to ensure the platform performs efficiently and up to user
expectation in terms of quality, security, relaiability.
2. Non-Functional Requirements:
• Performance:
- The application should be responsive and fast enough with minimal latency
- The app should be efficient in handling a good amount of throughput of
atleast minimal amount of customer base
• UI:
- The app should have a basic and simple user interface that would help users
navigate through and provide a good service
• Reliability
& Security:
- The platform must be available for 99% of the user’s devices without any
technical issue
- The platform would provide verified tiffin service providers through our
applications security checkup
• Maintenance
& Updates:
- After the launch and deployment of the application we must look at any
potential errors or drawback that may occur that would disrupt the process in
the application
- If any error occur it must be solved in the subsequent maintenance updates
• Tie-ups:
- Communicating with tiffin service provides and inviting them to join our
platform provide their services
• Back up &
Recovery:
- Data Backup of daily activity and user data must be performed on daily basis
- Develop a recovery plan that can be performed in case of major failure
• Compliances:
- The app must comply with the applicable data protection regulations such as
GDPR, CCPA and industry application standards
• Localization:
- Provide Location based search for users and filters based on tiffin service
providers available nearest to the user
Scalability Solutions:
Security Measures:
Usability Enhancements:
- Conduct user testing and incorporate feedback to refine the user interface.
- Ensure design consistency and responsiveness across different devices and screen
sizes.