Requirements elicitation and analysis is a development phase carried out at the initial stages of the development life cycle of every professional software solution. Historically, and by virtue of its nature, this development phase is prone to subjectivity and lack of rigorous structure. It is also considered by many developers as a relatively tedious phase. This project aims to study the requirements process itself, analyse its various constituent actions and properties, extract commonalities and propose aspects that may benefit from automated support, i.e. with as little human intervention and interpretation as possible. The use of automated tools for gathering requirements has become essential to the requirements-management process as it streamlines it, making it easier to track, test, analyse, visualise, and consequently to communicate to stakeholders [1].
Requirements could be categorised into two types: high- level and low-level. Preliminary research was carried out in this area to obtain a good understanding of the categorisation of requirements by type. It was noted that when low-level requirements are well understood, this would facilitate the understanding of related high-level requirements [2]. However, the communicating of requirements and understanding between stakeholders could, at times, be subjective [3]. Therefore, research was also carried out regarding how such issues could be identified and managed, and if user experience might be a factor influencing this [4]. Further research was carried out concerning the manner in which human interaction could be mimicked in an automated fashion, and if any tools for this purpose exist. In order to gain a deeper understanding of any such tools, this study investigated the ways/methods in which requirements are elicited. Techniques involving computational aspects such as expert systems, fuzzy logic, machine learning applications and neural networks (alongside hash functions to reduce the data load) were subsequently considered when specifying the behaviour of the proposed solution. It was concluded that the most appropriate way to address the issue of automated requirements systems engineering would be through the use of a convolutional neural network (CNN). The requisite CNN, which acts as a binary classifier, could detect whether a requirement is ‘good’ or ‘bad’, according to a set criteria as to what constitutes a good requirement [5].
Like any other supervised machine learning design, the proposed solution could be divided into two parts: firstly, the training of the model, and secondly the testing (i.e. application) of the trained model. In simple terms, training is performed by passing the training data through the entire model, then comparing the predictions given by the model for the training data to the ground-truth labels. Once the model has finished training, the test data is then passed through. At this instance, the weights remain unchanged and the model would be evaluated on how well it managed to successfully classify the data. A dataset of raw system requirements was provided by KPMG. This dataset was then manually annotated according to a set of criteria that qualifies a requirement (i.e. indicates whether it is good or bad) [5].
The model performed very well on the test data, achieving high scores on metrics such as accuracy (0.90), precision (0.85), recall (0.88) and F-measure (0.86). When comparing the results to similar studies mentioned within the literature review, the model performed similarly and even better, in some cases. The manual checking of requirements is highly time-consuming and costly activity. The solution proposed within this study allows for the process to be carried out effectively and efficiently, with far less resources.
References/Bibliography:
[1] S. Aithal and P. Desai, An Approach towards Automation of Requirements Analysis.
[2] “Low-Level Requirements Software | Pi Innovo ProcessPi Innovo.” https://www.pi-innovo.com/low- level-requirements-software/ (accessed Apr. 02, 2020).
[3] N. M. Azhari, “Conduct your Usability Testing As Soon As Possible (and How to Do it Properly) | Medium.” https://medium.com/@ nizarmaulana/conduct-your-usability-testing-as-soon-as-possible-and- how-to-do-it-properly-b61b643e6ee4.
[4] R. Thiayagarajan, “User Experience in Software Engineering,” 2016, Accessed: Apr. 05, 2020. [Online]. Available: http://publications.lib.chalmers.se/records/fulltext/235397/235397.pdf.
[5] P. Zielczynski, Requirements management using IBM Rational RequisitePro. IBM Press, 2008.
Student: Matthew Schembri
Course: B.Sc. IT (Hons.) Software Development
Supervisor: Prof. Ernest Cachia