As part of digitalization, more and more functionality of systems is realized through software. Areas that were previously decoupled are now interlinked using various types of software. Examples include web and mobile applications with social network integration, learning bots, services for managing business processes, up to embedded software in self-driving vehicles and production systems in Industry 4.0.
Quality assurance (QA) for software & systems in the era of digitalization therefore requires a comprehensive approach. A tight integration of flexibly transformable and incrementally verifiable models into the development process enables us to manage with a clear commitment to quality the rising complexity and heterogeneity of today's data- and software-intensive systems with increasing adaptivity requirements. Our approach to quality assurance is therefore based on the integration of the following research areas:
- model engineering: for the construction of models for systems
- transformation engineering: for the construction of automatic (from deterministic to search-based and randomized) methods for the transformation of systems
- verification engineering: for the construction of techniques (analysis, test, formal verification) that support quality assurance in the entire life cycle of systems.
Since the underlying structure of models can be described very well by graphs, graph transformation is a suitable means to specify model transformations. In addition, graph transformation also lends itself to the management and evolution of semi-structured data. We therefore use graph and graph transformation theory as a solid pioneer for the interaction of the above-mentioned research fields. In this focus, we develop the following foundations:
- graph logic: automated reasoning and sat solving for graph properties, automated graph repair
- graph transformation: analysis, test, formal verification
- category theory for transformation systems: consolidation and unification of transformation theory for different variants of high-level structures such as typed graphs, labeled graphs, triple graphs, hypergraphs, Petri nets, attributed graphs, algebraic specifications, etc.
Based on these foundations, we continuously strive to develop and implement QA techniques that take into account basic engineering principles such as expressiveness, efficiency, usability, and are generally applicable. The overall goal is to create QA techniques that are closely linked to the software development process and include an appropriate level of automation and human interaction. Selected examples of QA techniques that we are researching are the following:
- conflict and dependency detection in requirement specifications
- plausibility checking of executable models
- consistency and behavior preservation (resp. functional behavior) verification for model transformations (or model refactorings in particular)
- conformance testing of triple graph grammar implementations
- model-based testing of graph databases & graph database applications.
Our QA techniques can be used in different domains and applications. We apply them, for example, for quality assurance of:
- adaptable service-based applications, such as a personal mobility manager
- refactorings, e.g. of finite automata, state charts, or JAVA programs
- modernizations of legacy systems
- model synchronization, e.g. for the model-based development of automotive systems and flexible production systems
- query implementations in social network applications.
Finally, we investigate and support concepts and international initiatives for dissemination, training, and further education in "Quality assurance in software & systems engineering".