-
Notifications
You must be signed in to change notification settings - Fork 2
Home
provides an overview on how conformance checking works
The CNL toolchain supports software architects and developers in specifying and in verifying architectural rules of their software system.
The main idea of the approach is to flexibly capture the architecture language with which the software architecture is described. Existing conformance checking approaches normally provide an architecture language with which the intended software architecture is specified. This language is based on a meta model which predefines the concepts and relations. For example, concepts are layer, component, module, or interface. Exemplary relations are use (a module is allowed to use another module), dependsOn (a component depends on another component), or provides (a component provides an interface). However, the provided concept language might not be appropriate in a specific project context and other concepts and relation are needed to describe the intended architecture. Additionally, the defined meaning of concepts and relations might not fit the intention needed in the project, e.g. the tool has another definition of a component than used in the project at hand. Basically, it can be observed that existing approaches are not flexible enough in terms of architecture language definition. The approach proposed and implemented in this tool chain aims for break up this inflexibility.
The approach is based on so-called ontologies and, in particular, description logics as an ontology language. Architectural concepts and relations are described as ontology concepts and relations, respectively. This allows architectural rules to be formalized as class axioms. Using reasoning services, the architectural rules can be automatically verified against the source code. Since ontologies are not bound to domain-specific concepts and relations, they can be freely defined by software architects and developers. This makes up the flexibility of the approach. Software architects are not restricted to concepts and relations of a concept language provided by a conformance checking tool, e.g., module, component, or layer. Additionally, they can customize the meaning of the concepts and relations they define for the language.
Architectural rules are specified using a so-called Controlled Natural Language (CNL). The CNL acts as a frontend for the underlying formalism, i.e., description logics. It aims for a more understandable and usable specification of architectural rules that can be - at the same time - integrated into architecture documentations. The approach provides a parser for arc42 and Architecture Decision Record templates. In this way, architectural rules can be simply documented in asciidoc documentation and automatically extracted for further analysis.
TODO rule types and sentence structures