Evaluation of software architectures

from Wikipedia, the free encyclopedia

The evaluation of software architectures ( Engl. Software architecture evaluation and software architecture analysis ) is a branch of software engineering and deals with the evaluation of software architectures . Software architecture assessments are typically performed by software architects .

target

The aim of the software architecture evaluation is to examine a software architecture for a certain quality feature (or several quality features at the same time). This can be done by:

  • Comparison of two alternative software architectures with regard to the quality characteristic (s)
  • Investigation of the extent to which a software architecture fulfills certain quality characteristics,
  • Investigation of risks that a software architecture entails with regard to certain quality characteristics,
  • Investigation of the extent to which the specified software architecture in the code was also adhered to.

Procedure

There are several approaches to evaluating software architectures:

Tools

There are tools for determining architecture metrics as well as tools that check compliance with the specified architecture in the code. In some cases the tools can do both.

Architectural metrics are usually obtained using static code analysis . The architecture metrics usually include metrics for design quality ( modularity , cohesion , coupling ...), such as cyclical dependencies between modules.

To check compliance with the specified architecture in the code, this must first be communicated to the tool (for example by graphically recording the layers and modules and their allowed and not allowed dependencies) and linked to the code (for example by assigning the classes and packages to the defined modules).

The following tools are available for checking the architecture metrics and compliance with the architecture specifications in the code:

  • Sonargraph, Sotoarc and Sotograph (Java, C, C ++, .Net, ABAP) - Commercial product which, in addition to a large number of metrics, also checks architecture metrics and compliance with the architecture specifications. The architecture violations can be prioritized in the development environment in the form of tasks and continuously checked for correct processing. The historical course of the metrics can be shown as well as the effects of potential architecture refactorings.
  • Macker and JDepend (Java) - open source tools for checking cycles and dependencies. The tests are carried out by means of module tests.
  • NDepend (.Net) - Commercial port from JDepend
  • Dependometer - Java, C ++, C #
  • ArchUnit - UnitTest framework for Java for the formulation and automated checking of architecture rules

See also

Individual evidence

  1. Product overview Sonargraph, Sotoarc, Sotograph
  2. Macker homepage
  3. JDepend homepage
  4. NDepend homepage
  5. ArchUnit Homepage