The core idea of the research project PQ4Agile is to enrich agile development processes with established software engineering activities in a way that enables holistic quality assessment and predictably high product quality in agile software development projects.
To do so, software engineering methods and related activities from the areas of requirements engineering, software architecture, and user experience engineering are decomposed into parts that can be executed separately. Then these activities are adapted to make them available as best practices to be used as easily as possible in agile projects:
For the adaptation of these best practices, seven principles have been defined that are based on the values, resp. principles, of the Agile Manifesto and are intended to serve as guidelines in PQ4Agile. These principles ensure that the best practices can be performed quickly, efficiently, and dynamically, and that they can be integrated self-determined and seamlessly into the development process. The principles for agile software engineering best practices are:
- Minimalism/Simplicity: The scope of the performance of a software engineering activity and the documentation of its results shall only comprise what is necessary for the given project situation in order to allow efficient further processing and maintenance.
- Closeness to People: It shall be possible to leverage the availability and close collaboration with customer stakeholders and among team members through software engineering activities.
- Closeness to Artifacts: Software engineering artifacts shall be produced and made available in such a way that they can be used as efficiently as possible by subsequent activities and that they are as close as possible to the target product.
- Timing: Software engineering activities shall always be performed exactly (the latest) at the point in time when this is most beneficial and efficient for the project’s progress.
- Scalability: If project factors such as stakeholders, system complexity, or team size increase, it must still be possible to perform software engineering activities in such a way that they do not contradict the basic principles of agile processes and still continue to provide enough support to achieve quality attributes.
- Change Affinity: Agile processes consider frequent changes to be an essential part of the performance of a project. Software engineering activities shall also comprehend changes and shall allow efficient changes affecting the areas of requirements engineering, software architecture, and user experience engineering, while providing support for the stakeholders.
- Integratability: The software engineering activities must be such that they will allow integration into existing agile development processes as seamlessly as possible.
When these principles are applied during the development of best practices, a series of research questions emerge. These research questions are stated in Figure 2 in a cross-disciplinary manner: