Automatic and continuous software architecture validation

Author(s): Maayan Goldstein, Itai Segall
Venue: International Conference on Software Engineering
Date: 2015

Type of Experiement: Other
Sample Size: 5
Class/Experience Level: Professional
Participant Selection: open source projects, proprietary system
Data Collection Method: Observation


Recent years, there has a been a huge shift into the agile development process as well as a push into continues integration and testing. Because of this, it pushes for rapid development and release cycles - hence, more and more changes to the existing software. Engineers are becoming more focus on fixing/improving a certain part of the software rather than thinking about the large picture, the architecture of the software system. Unfortunately, software architecture do not get enough attention as needed. This article is to present a solution for software architecture validation which will help maintain the architecture and reduce architectural problems in the long run.

The authors created a tool to solve the problem. The logic behind the solution includes two parts - parsing of the source code and detecting potential architectural violation through the use of patterns. The parsing of the source code is to figure out the software's dependencies between packages, folders, etc. Then, it will create a model that will display the relationships between the elements. The model will then be analyzed through the use of four patterns to help detect violations: Cyclic Dependency Detection, Layering Violations Detection, Factory Pattern Detection, User Defined Pattern Detection.

The tool essentially catches changes in dependencies - when a dependency is added to a package, when a dependency is removed, etc. From there, developers are able to look at the model and decide if the software architecture is how they imagined it to be.