Projects and Research

Effort and Time Estimation on Agile Technonoly Projects using Transformer-Based Models

Role

For this project, I was part of a team of two people and for the lecture "CSI5137C: Applications of NLP and ML in Software Engineering" We decided to make use of a Large Language Model to tackle a real-life problem.

Problem

In the technology sector, a team should have a structured way to plan and develop a project , and there are different ways to do this depending on the team, the company and the type and size of the project. For some years, Agile and Scrum have gained popularity due to their efficiency and structure in developing and deploying production technology and software-based project. Now, this does not mean that Agile is the best solution for all projects, but in some cases, teams can obtain benefits if the structure is correctly followed.

One disadvantage of working in an Agile project is all the politics it has. For example, before the project starts or before each "sprint" (or chunk of the project) begins, the whole team has to propose and approve the "user stories," which are a quick and accurate description of the client's need. And also assign "story points" to each user story. A story point is a metric based on the Fibonacci sequence, which describes how much effort that specific task will require. This number is completely subjective, but it gives the team a good base to calculate how long the project will take and how to split certain tasks.

As you can imagine, writing down and assigning a value to each user story is a tedious task normally assigned to the development team. Which apart from planning, developing and sometimes even doing production support, it has to waste its time on this step. To avoid this time-consuming task, some researchers have been investing some time in feeding deep learning models with the descriptions of the tasks or user stories and then training Natural Language Processing models to try to estimate the amount of time they will require and also the number of story points it will also require. This is a complex task, as the technical language of each company is unique, and the complex words used in the software development world are difficult to interpret. In the past, some researchers have been using deep learning models such as Long Short Term Memory models LSTM and achieving a decent accuracy.

Solution

For this lecture, we proposed the use of transformers and, most importantly, the use of both BERT and DistilBERT to try to synthesize the features from the text and create an accurate model capable of understanding the context of the sentences which describe the tasks in a project, predict how much effort this task will require.

For our project, we found a vast dataset which contains several essential features, such as the user story, the title of the user story and the amount of story points. The good thing about this dataset is that it is divided into several CSV files, each containing the user stories of specific projects. This allowed the original authors to analyze the performance of the models by category. In our case, this was unnecessary, so you will find a merged CSV file within my repository. The image below shows an example of one of the files.

Before training the models, we had two baselines: the first one is a Gaussian guesser , and the second one was a Zero Rule, which predicts everything as the class with the most significant number of elements. In the graph below, you can see the F1 score of BERT's fine-tuning process.

Last but not least here is a compartive table of the accuracy obtained from our base lines and the fine-tuned BERT.

Code and Further Information

Please feel free to use our work citing us, in this link you will find our repository with the notebooks we used and the complete dataset link to data and code