Prioritisation of Functional Requirements and Non-functional Requirements in Agile Software Development
Agile software development (ASD) has become a common practice that is used by many software development teams. However, due to the nature of being user centric and having a delivery oriented nature, teams often focus on fulfilling the functional requirements of a system and often neglect non-functional requirements. With common non-functional requirements such as performance, maintainability and security often overlooked, software systems quickly build up technical debt. With this tradeoff of having to balance the need to address non-functional requirements to prevent the overly quick build up of technical debt and the need to push out functional software requirements in a timely manner, we explore the question of prioritisation when it comes to functional requirements and non-functional requirements in ASD. Modelling the ASD process using NK fitness landscapes, we explore the differences in ASD project outcomes when placing varying levels of priority on non-functional requirements, alongside studying when would be the best point in the ASD cycle to introduce this focus on non-functional requirements.