Requirements Gathering using ChatGPT
Gathering requirements is hard. Often we do not have access to real users, just lack ideas on how to start or miss important aspects completely.
Wouldn’t it be great to have a co-author that helps to come up with ideas to kick-start the gathering?
Since ChatGPT is used right now for basically everything, let’s try to generate an initial set of requirements for a requirements management tool.
Generate a list of requirements for a requirements management tool.
Here is what it came up with:
Here are some potential requirements for a requirements management tool:
Ability to capture, organize, and track requirements: The tool should allow users to input requirements, categorize them, and track their status throughout the development process.
Version control: The tool should support version control, allowing users to track changes to requirements over time.
Collaboration features: The tool should allow multiple users to work on the same set of requirements and provide features such as commenting and task assignment to facilitate collaboration.
Traceability: The tool should provide traceability between requirements, allowing users to understand how individual requirements relate to one another and to the overall project.
Customization: The tool should allow users to customize fields and workflows to meet the specific needs of their projects.
Reporting: The tool should provide various reports and charts to help users understand the status of their requirements and identify any potential issues.
Integration with other tools: The tool should integrate with other tools used in the development process, such as project management and testing tools.
Security: The tool should have robust security measures in place to protect sensitive data.
User-friendly interface: The tool should have a user-friendly interface that is easy to navigate and use.
Scalability: The tool should be able to handle a large number of requirements and users without performance issues.
That list already looks quite good. Let’s dig a bit more into the details and analyze them.
According to the book Requirements Writing for Systems Engineering by George Koelsch, requirements “Define a need, desire, or want to be satisfied by a product or service.”
To be a bit more precise - and that is the real art behind writing good requirements - a requirement is a single, clear, verifiable statement that describes a need that the product or service must perform. it has 3 parts:
Function: The product/service or part of it
Verb: what the function shall do
Need: what must be fulfilled.
Let’s take the first generated requirement:
Ability to capture, organize, and track requirements: The tool should allow users to input requirements, categorize them, and track their status throughout the development process.
Function: The tool
Verb: should allow
Need: input requirements, categorize them, and track their status throughout the development process
Function:
Using the term “The tool” is quite imprecise. It is better to be a bit more specific. For this example, we are going to replace “The tool” with “The Requirements Management Tool” in the first iteration.
Verb:
According to Key words for use in RFCs to Indicate Requirement Levels
https://www.ietf.org/rfc/rfc2119.txt the verb “should” is defined as follows:
SHOULD This word, or the adjective "RECOMMENDED", mean that there may exist valid reasons in particular circumstances to ignore a particular item, but the full implications must be understood and carefully weighed before choosing a different course.
“Should” therefore indicates that this functionality “might” be supported which is confusing in itself. If we write requirements for a specific scope, they must be fulfilled, otherwise, they are not required and should be deleted.
Therefore I recommend not using “should”, but sticking to “shall”.
Need:
The requirements describe a lot of functionality: “to input requirements, categorize them, and track their status throughout the development process”. As soon as you find yourself writing an “and” inside a requirement, consider breaking it down into separate statements, like:
The tool should allow users to input requirements.
The tool should allow users to categorize requirements.
The tool should allow users to track the status of individual requirements throughout the development process.
With that learning, let’s try to get an improved result from ChatGPT:
Generate a list of requirements for a requirements management tool. Start each statement with "The Requirements Management Tool shall”
Here is the output:
Here are some potential requirements for a requirements management tool, starting each statement with "The Requirements Management Tool shall":
The Requirements Management Tool shall allow users to input, organize, and track requirements.
The Requirements Management Tool shall support version control.
The Requirements Management Tool shall allow multiple users to collaborate on the same set of requirements.
The Requirements Management Tool shall provide traceability between requirements.
The Requirements Management Tool shall allow users to customize fields and workflows.
The Requirements Management Tool shall provide various reports and charts.
The Requirements Management Tool shall integrate with other tools used in the development process.
The Requirements Management Tool shall have robust security measures in place.
The Requirements Management Tool shall have a user-friendly interface.
The Requirements Management Tool shall be able to handle a large number of requirements and users without performance issues.
That looks a bit better. We now have generated an initial list of statements that fulfill the desired form.
Unfortunately, we now lack the list of aspects from the first version, like:
Ability to capture, organize, and track requirements
Version Control
Security
…
This list is quite important because it already describes different aspects of the tool we have to consider. When analyzing the functionality, we can use this list to detail every aspect of this list.
Let’s try to drill down on the topic “Ability to capture, organize, and track requirements”:
Generate a list of requirements for a requirements management tool with a focus on the Ability to capture, organize, and track requirements. Start each statement with "The Requirements Management Tool shall”
Here is the result.
Here are some potential requirements for a requirements management tool with a focus on the ability to capture, organize, and track requirements, starting each statement with "The Requirements Management Tool shall":
The Requirements Management Tool shall allow users to input requirements into the system.
The Requirements Management Tool shall provide a way for users to categorize and tag requirements for easier organization.
The Requirements Management Tool shall allow users to assign requirements to specific individuals or teams for further action.
The Requirements Management Tool shall allow users to track the status of requirements, including whether they are open, in progress, or complete.
The Requirements Management Tool shall provide alerts or notifications when the status of a requirement changes.
The Requirements Management Tool shall allow users to add notes, comments, or attachments to requirements to provide additional context or information.
The Requirements Management Tool shall allow users to set due dates for requirements and track progress towards meeting those deadlines.
The Requirements Management Tool shall provide a search function to help users quickly find specific requirements within the system.
The Requirements Management Tool shall allow users to create custom views or filters to easily see a subset of requirements that are relevant to their work.
The Requirements Management Tool shall provide a history of changes made to requirements, allowing users to see how requirements have evolved over time.
This worked quite well. When we would now do this for each aspect mentioned in the first list, we can easily generate tens of requirements within minutes.
ChatGPT makes it easy to gather a draft list of requirements. Now we do not have to stare at an empty sheet but already have a starting point to work on.