Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Using generative AI to assist requirement gathering and how requirements are related to user stories
Once your problem statement is defined, the next step is to gather requirements for the application. This could involve finding the key features and functionality required, as well as any technical constraints or limitations.
Generative AI, like ChatGPT, can play a valuable role in defining requirements for user stories, which helps streamline project planning and development. User stories are high-level descriptions of the desired functionality of a product from the perspective of a user or a customer. They describe the intended outcome but do not delve into the specifics of how that outcome will be achieved. Requirements, on the other hand, are more detailed and specific, outlining the exact features, functionality, and constraints of the system to be developed.
In the context of software development, requirements are critical for both the development team and stakeholders, as they serve as the foundation for understanding and agreeing upon the project's scope and objectives. Generative AI can assist in refining and elaborating on these requirements by providing insights, suggestions, and alternative perspectives.
Here are some examples of prompts that can be used with ChatGPT to further define business requirements:
"Given the user story about a customer renting a bicycle, what are some additional functional requirements that should be considered?"
"What non-functional requirements should be taken into account for a real-time messaging application?"
"Considering the user story of a bank customer transferring money between accounts, what security requirements should be in place?"
When gathering requirements, it's crucial to consider the human aspects, as these can have significant implications on the project's success. These aspects include legal, compliance, financial, and emotional requirements, which are often interrelated.
Legal requirements refer to the need for the project to adhere to applicable laws and regulations. For example, a financial application must comply with data privacy laws and financial regulations. ChatGPT could be used to generate prompts or questions that help identify relevant legal concerns, such as "What are the data privacy regulations that apply to our application?"
Compliance requirements involve ensuring that the project follows industry standards, best practices, and internal policies. Examples include accessibility standards, security certifications, or corporate guidelines. ChatGPT can assist in identifying these requirements by generating prompts such as "What industry standards should our project adhere to?"
Financial requirements pertain to the budgetary constraints and financial objectives of the project. ChatGPT can help to clarify financial aspects by generating questions like "What is the estimated total cost of ownership for this project?" or "How will this project generate revenue?"
Emotional requirements focus on the user experience and the emotional impact of the product on its users. These requirements may involve user satisfaction, ease of use, or the aesthetics of the interface. ChatGPT can be employed to explore these aspects, with prompts like "How can we design the user interface to evoke a sense of trust and reliability?"
In conclusion, generative AI, like ChatGPT, can be a powerful tool in defining requirements for user stories, taking into account various aspects such as legal, compliance, financial, and emotional factors. By providing targeted prompts and generating insightful responses, generative AI can help streamline the requirement gathering process, ensuring a more robust and well-rounded foundation for project development.
Leveraging prompts in generative AI to create and refine ideas
With the problem statement clear, requirements defined, and user stories groomed, you will be in an informed state to appropriately use generative AI to generate new ideas and concepts for the software application or requirements that should be met to ensure project success. This could involve providing LLM with a brief description of the software application and asking it to generate potential features, user stories, or use cases.
Real-time Availability and Reservation System: A feature that allows users to view the real-time availability of bicycles at various rental locations and reserve a bike in advance. This would involve integrating a map-based interface, displaying the number of available bikes at each location and offering a seamless reservation process.
Smart Pricing and Payment Integration: A dynamic pricing system that calculates rental fees based on factors such as duration, demand, and location. This feature would also include a secure and user-friendly payment integration, allowing customers to pay for their rentals using popular payment methods like credit cards, PayPal, or mobile wallets.
In-app Navigation and Route Planning: A feature that enables users to plan their bike routes by leveraging GPS and mapping services. The app could suggest optimal routes, taking into account factors such as distance, elevation, and estimated time of arrival. Additionally, the app could provide real-time navigation guidance, ensuring users reach their destinations safely and efficiently.
Social and Gamification Features: Introducing social features that allow users to share their rides, achievements, and favorite routes with friends or other users of the app. This could be complemented by gamification elements, such as earning points, badges, or rewards for reaching milestones, completing challenges, or participating in community events.
Maintenance and Support System: A feature that allows users to report issues with their rented bikes, such as flat tires or mechanical problems, directly within the app. The system would facilitate communication between the user and the support team, enabling quick resolution of issues and minimizing downtime. This feature could also include preventive maintenance reminders for the rental company, helping them keep their bikes in optimal condition.
These five potential features, when combined in a bicycle rental application built using React and Node.js, would create a user-friendly, efficient, and engaging platform that caters to the needs of both customers and the rental company.
Once ideas have been generated using GPT, they should be evaluated and refined based on feasibility, usability, and alignment with the requirements and problem statement. This could involve brainstorming sessions with stakeholders and subject matter experts to further develop and refine the ideas generated by GPT.
Generative AI can be a great tool for creating features, user stories, and even requirements. This process can be extremely beneficial for processes and projects that follow a standard methodology like existing payment processes or navigation features.
Planning and prioritizing features in given-when-then with generative AI
Once your problem statement and intended outcome is well defined. You'll want to create and prioritize the features that will be included in the bicycle rental application.
This involves breaking down the user stories into smaller tasks and estimating the time and effort required to complete each task. Features should be prioritized based on their importance to the customer and their impact on the overall project.
Test-driven feature development is one the best ways to write and identify features for an application.
Given-When-Then is a testing framework that helps to write and organize automated tests by breaking them down into three distinct parts:
Given: The setup or precondition for the test.
When: The action or event being tested.
Then: The expected outcome or result of the test.
This approach helps to create more readable, reusable, and maintainable test cases by making them easier to understand and debug. In the same way this is used to write test cases, we will use it to write the basis of our features.
Example features of a bicycle rental application web app using Given-When-Then:
User Registration
A user is on the registration page
The user enters their details and submits the form
The user should be redirected to the login page
Search Bicycles
A user is on the homepage
The user enters a location and a date range to search for available bicycles
The user should see a list of available bicycles with details such as location, type, and price.
Rent Bicycle
A user has selected a bicycle to rent
The user enters the rental duration and completes the payment process
The user should receive a confirmation email with the rental details and instructions.
Return Bicycle
A user has rented a bicycle
The rental duration has ended, and the user returns the bicycle to the designated location
The user should receive a notification confirming the return and the rental charges should be deducted from their account.
While the above provides a great starting place for the core features of our app, it needs further refinement. To refine these features further, we will turn them into user stories.
How to identify problem statements, write features, and gather requirements through generative AI
The below sections cover a broad scope of ideation and refinement approaches with references to concepts often discussed in product management, project management, and agile frameworks for developing an application. If you have leveraged these frameworks before, then some of content may be redundant, but the intent is to create new perspectives in how generative AI can be used to accelerate or improve the quality of these activities.
In relation to generative AI, you can use prompts to help identify problems, create new ideas to solve those problems, elaborate on existing solutions, or challenge your own thoughts through other suggestions.
Understanding how to identify a problem statement using AI
In order to make any informed decision, you should have a clear understanding of the intended outcome.
To identify differentiators, think not what you want to build, but what you want to solve. In developing new products or features to an existing product, focus should be put on how your product differentiates from existing providers (or lack there of). If existing providers exist, you should reevaluate whether the effort to build those features yourself is worth more than just buying it.
For example, in our bicycle rental application, how we accept payments in itself is not a key differentiator. All rental companies will need to take in payments. However a customer's payment experience and the processes that power that experience such as single sign on, integrated mobile pay, refund process, or scan a card could be differentiators.
To begin documenting, start with a brief description of the problem or challenge. Elaborate on pain points for users, a gap in the market, or an opportunity to improve an existing process. When thinking about these problems, think in terms in of qualitative or quantitative results. Ask yourself how do you measure whether or not your solution is solving the problem?
To expedite this process we have created a template as a start to capture the key points about this. You can view the template here. Finding balance between execution and research is a fine line and something to be mindful of. It is easy to end up in an endless cycle of analysis This can result in waiting too long to enter the market or ultimately not spending the development time needed to deliver a project at all. On the other hand, jumping into a project too quickly without the right level of research ends can result in products that already exist or do not solve a problem that really exists, often at a financial or time cost to the creator.
Everyone can have an idea, what and how you execute is what drives a successful delivery. Be prepared that it is a process that you are not likely to be successful on your first attempt. Keep going knowing that the journey itself is valuable. Whenever I struggle with this process I remember a lyric from “Always Wear Sunscreen”: “Whatever you do, don't congratulate yourself too much, or berate yourself either. Your choices are half chance. So are everybody else's.”
Let’s go through some prompts on how we can use AI to help build our bicycle rental application:
How many Americans own bikes?
How often do American ride bikes?
What are some problems with bike ownership?
How many bike rental business are there?
What are some problems with bike ownership?
How many bike rental businesses are there?
What is the growth projection for bike rental businesses?
What is a radical new idea for bike rentals?
List out ideas for a bike rental business.
What are some pain points for a bike rental business?
Some key considerations in responses during ideation, is when the data was last up to date. Markets, customer demands, and technologies change daily and a downside to large language models is they are often created "at a time". Meaning their data has a fixed end date and it cannot provide realtime information. To identify when a large language model was last updated, you could ask it or look at it's configuration.
A template to quickly document problem statements and their related requirements
The ideation template provides key areas to document in the largely human driven Ideation knowledge area.
Description of the problem
Clear and concise statement of the issue that needs to be solved
Impact of the problem
Explanation of the consequences of the problem
Scope of the problem
Description of the extent of the problem
Causes of the problem
Identification of the root causes of the problem
Constraints and limitations
Explanation of any limitations or constraints that may impact the solution
Goals and objectives
Clear statement of the desired outcome of the project
Functional requirements
Description of the specific features and functions that the product or system must have
Non-functional requirements
Description of the constraints and limitations that the product or system must meet
Use cases and scenarios
Detailed description of how the product or system will be used in real-world situations
User interface and user experience
Description of the design and layout of the user interface, including how users will interact with the system
Testing and validation
Description of how the requirements will be tested and validated to ensure that they meet the needs of the users or stakeholders
Documentation and training
Description of the documentation and training that will be provided to users to help them understand and use the product or system
Developing and refining user stories through generative AI
Now that we have features that describe the actions and interactions that users will have with the bicycle rental application, we will create user stories to develop from. User stories should be developed collaboratively with stakeholders and end-users, and should focus on delivering value to the customer.
User stories are defined work items that describe features and functionality that power an end user action.
User stories typically have the following characteristics :
Have a description that summarizes the use case the user story is solving
Have acceptance criteria that defines when a story is considered complete
Represent a single functioning piece of code
Assigned to a single developer
Moved through phases that track the status of the work item
Are reviewed in a QA process
Often have subtasks that are pieces of work needed to be completed for the user story to be completed
Given our features from the Plan and Prioritize Features section, let's elaborate on those and create some user stories.
As a new user, I want to register for an account so that I can start using the bicycle rental application.
The user should be able to navigate to the registration page from the login page.
The registration form should include fields for name, email, phone number, and password.
Upon submitting the registration form, the user's information should be stored securely in the database.
The user should be redirected to the login page upon successful registration.
If there is any error during the registration process, the user should be notified of the error and asked to correct it.
As a user, I want to search for available bicycles based on location and date range so that I can find a suitable bicycle for my needs.
The user should be able to access the search feature from the home page.
The search feature should include fields for location, start date, and end date.
The application should display a list of available bicycles based on the user's search criteria.
The list of available bicycles should include details such as location, type, and price.
The user should be able to filter and sort the list of available bicycles based on their preferences.
If there are no bicycles available for the given search criteria, the user should be notified accordingly.
As a user, I want to rent a bicycle for a specified duration and complete the payment process so that I can start using the rented bicycle.
The user should be able to select a bicycle from the list of available bicycles.
The application should display the details of the selected bicycle, including rental rates and terms.
The user should be able to specify the rental duration and see the total rental cost.
The application should guide the user through the payment process securely and reliably.
Upon successful payment, the user should receive a confirmation email with the rental details and instructions.
If there is any error during the rental or payment process, the user should be notified of the error and asked to correct it.
As a user, I want to return the rented bicycle to the designated location and receive confirmation of the return.
The user should be able to see the rental details, including the rental duration and the designated return location.
The user should receive reminders about the approaching return deadline via email or push notification.
The user should be able to navigate to the designated return location using the application's built-in map or directions feature.
Upon returning the bicycle, the user should receive a notification confirming the return and the rental charges should be deducted from their account.
If there is any dispute or issue related to the rental or return process, the user should be able to contact customer support through the application.
User stories will form the basis of our prompts and are a key input to the code generation knowledge.