: Maayan Goldstein, Itai SegallVenue
: International Conference on Software EngineeringDate
: 2015Type of Experiement
: OtherSample Size
: 5Class/Experience Level
: ProfessionalParticipant Selection
: open source projects, proprietary systemData Collection Method
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.