Why Collect and Document Requirements 

Requirements are one of the first steps in ensuring a quality software development project.  Writing and managing requirements is a key in understanding what needs to be tested to ensure that the software functions properly when completed.  It also serves as a process for putting down what is in the customer's head and ensuring that the whole team is on the same page with what is to be created.  

How to Elicit Requirements 

One of the most common methods for eliciting requirements is to conduct interviews.  Other methods include creating user stories or scenarios about how the system will be used.  Regardless of the method(s) selected, an iterative approach generally works well.  Get input document it and then refine the documentation with more input.  

Resources and Templates 

Functional Specification Template (with examples).docx - This template can be used to document the expected behavior of the system.  It encompasses not only the requirements, but the design of what they system will look like and how it will behave.   

System Requirements Template (with examples)

Gherkin is also a "language" or a formatted process that is being used to define some feature specifications and requirements.  The DHIS2 team is capturing their feature files in GitHub.  Example feature file