My approach to requirements tracking
Tags: requirements, discuss, workflow
Published: 2019-10-05 14:19:56

---
title: My approach to requirements tracking
published: true
description: What I've been doing to keep track of what my customers need
tags: requirements, discuss, workflow
---

Hi everyone,

I want to share my approach to track customer's needs, in order to:

1. Organize our work
2. Help the customer to prioritize
3. Provide to every stakeholder a clear view of the status of any project

So, I mapped what we call "Necesidades" (Needs in english) in a database:

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/9fur9kj5omchkpjfzvaz.png)

Every need has a header with an Id, the client (Cliente), the working contract (Contrato) and the person who is accountable for that need (Contacto). Also, there is a current state (Necesidad Estado) and an estimate of the hours needed to fullfil that need (Horas estimadas).

In the terms of software requirements, the need has the following information:

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/3krp83ehghdvc3csxmcy.png)

1. Descripcion: here we or the customer writes what does he want to achieve

2. Objetivos: this is the place where we write what bussines goals this need pretends to satisfy

3. Procedimiento actual: in this field we write how this need is being worked now

4. Reglas: here we write the bussines rules, constraints and politics that have impact on the need.

5. Requirente: here goes the main stakeholder, in organizational terms. For instance, Marketing, or Plant

6. Enfoque de implementacion: here goes the implementation approach, or how are we going to satisfy the need

7. Adaptaciones: here we write the impact on software. In our projects, we work with an ERP and several other softwares, and many of our costumers have an array of solutions. Some provided by us, some developed in-house and some provided by other vendors. Here we track the impact on the whole array.

As you can see, every field has a comment button. That comment generates a Change Request, where every user has to indicate if he/she wants to change something in the text of the field:

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/lfavu2cdw77ecu0v1rbb.png)

Then, the owner of the need can approve or reject every change request:

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/dqjkxdlkm7ah2pgv9pbg.png)

Only the owner of the need has permission to accept or reject change requests. This gives our workflow change control.

One as an user can interact with the list of needs of the firs image, or the Kanban board:

![Alt Text](https://thepracticaldev.s3.amazonaws.com/i/u7grf2i797qewhpo3t9d.png)

This last view gives a good sense of the status of a project. We have 4 columns:

1. Backlog, for everything that the customer has told us but it's not currently prioritized

2. En evaluacion, stands for the work being evaluated. The evaluation stage includes activities such as requirement writing, communication, discussion and approval (or not)

3. En progreso is the WIP stage.

4. Completadas is the column with the implemented needs

In order to have integration, this web app has a REST API that provides the following current capabilities:

1. The customers, contracts and contacts are created in our ERP backoffice and then replicated in the web app

2. Several steps of the workflow are reinforced with a mail to some interested user. That mail is sent by an email marketing tool linked with this app

3. Every time we have got to send a status report to a customer, we have a tool that gathers needs and presents them in the Kanban board and a full list. That tool also gathers the time tracking records from the ERP and generates a Markdown file with all the info. Then we complete some descriptive fields and convert that MD to a standard DOCX with template.

In the close future, I want to decorate this model with:

1. Giving structured detail to the components of each field.
2. Storing descriptive dimensions to the need. For instance, perceived risk and perceived value. This would be useful to create a risk-value matrix and give some tools to prioritize
3. Adding to-do detail to the need entity, so we can specify the workflow

So, do you people think this could be a good approach? I thought it could be a good fit for an open source project.

Saludos,