Abstract

The success of the software engineering process depends heavily on clear unambiguous software requirements. Ambiguity refers to the possibility to understand a requirement in more than one way. Unfortunately, ambiguity is an inherent property of the natural languages used to write the software user requirements. This could cause a final faulty system implementation, which is too expensive to correct. The basic requirements ambiguity resolution approaches in the literature are ambiguity detection, ambiguity avoidance, and ambiguity prevention. Ambiguity prevention is the least tackled approach because it requires designing formal languages and templates, which are hard to implement. The main goal of this paper is to provide full implementation of an ambiguity prevention tool and then study its effectiveness using real requirements. Towards this goal, we developed a set of Finite State Machine (FSMs) implementing templates of various requirement types. We then used Python to implement the ambiguity prevention tool based on those FSMs. We also collected a benchmark of 2460 real requirements and selected a random set of forty real requirements to test the effectiveness of the developed tool. The experiment showed that the implemented ambiguity prevention tool can prevent critical requirements ambiguity issues such as missing information or domain ambiguity. Nevertheless, there is a tradeoff between ambiguity prevention and the effort needed to write the requirements using the imposed templates.

Highlights

  • Software engineering passes through several subsequent stages

  • One of the most challenging issues is requirements ambiguity, which is an inherent characteristic of natural languages that are mostly used in writing software user requirements

  • There is no unified terminology in the literature for classifying techniques for ambiguity resolution

Read more

Summary

INTRODUCTION

Software engineering passes through several subsequent stages. One of the preliminary stages is requirements elicitation from stakeholders. One of the most challenging issues is requirements ambiguity, which is an inherent characteristic of natural languages that are mostly used in writing software user requirements. Paying attention to solving ambiguity problems in the requirements elicitation stage is much easier and less expensive than correcting later software errors. Ambiguity prevention: refers to forcing the users to write the requirements by filling in patterns or boilerplates corresponding to different types of requirements like the work of Stalhane and Wien [5] and Arora et al [6]. The reason is that this approach requires developing and implementing formal representations. This is the main concern of the paper. The experiment and discussion are provided; followed by the conclusion and future work

Ambiguity Avoidance
Ambiguity Prevention
Ambiguity Detection
Ambiguity Correction
AMBIGUITY PREVENTION TOOL
Requirements Classes
The Glossaries
Lexical Analysis
Syntactic Analysis
Experimental Settings
Results and Discussion
CONCLUSION AND FUTURE WORK
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call