Using automated tests for communicating and verifying non-functional requirements
Robert Lagerstedt · 2014
In software development the code often must comply to a number of non-functional requirements, like architectural requirements. These requirements are often communicated and verified by writing guidelines and creating reports of the non-compliance. This way of communicating and verifying non-functional requirements is very costly since all developers needs to understand all requirements. It is also very hard for a developer to remember all requirements and it is easy to make mistakes. In software development much of the work is done in a tool-chain. The tool-chain contains tools like text editors, compilers, linkers, static analysis tools, automatic test frameworks etc. An alternative way to communicate and verify non-functional requirements is to add them to the tool-chain as automated tests and checkers, so the developers get fast automated feedback when they do mistakes. I have worked many years as a software architect defining and writing architectural requirements and my observations and experiences shows that the productivity is increased and number of non-compliant non-functional requirements is lower using the tool-chain feedback instead of using guidelines and reports.