Non-functional Requirement Patterns for Agile Software Development
Methinee Amorndettawin, Twittie Senivongse · 2019
Following the agile principles, agile software development is popular among software developing organizations. The attractive characteristics of agile development are that it embraces frequent changes and that it gives high priority to users. Due to such characteristics, non-functional requirements are usually not identified in the requirements elicitation process. They are often neglected in an early phase, and even overlooked in the later stages of software development. This results in poor quality software. To enhance non-functional requirements identification in agile development, this paper proposes a development of a set of non-functional requirement patterns in the form of requirement templates for agile development. The set is composed of 10 security requirement patterns and 13 fault tolerance requirement patterns, which are derived from an analysis of security and fault tolerance design patterns. The proposed non-functional requirement patterns can facilitate non-functional requirements gathering and help agile team members in writing the requirements. In an experiment on a Scrum team, the team members took less time to write security and fault tolerance requirements for a number of given problems when using the proposed patterns, compared with the case of not using the patterns. In addition, the non-functional requirement patterns helped the team members to write more complete security and fault tolerance requirements. Despite the effort they had to spend in learning the proposed requirement patterns, the team also agreed that the patterns are useful in practice.