Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Patterns of Enterprise Application Architecture
Patterns of Enterprise Application Architecture
Large-Scale Software Architecture: A Practical Guide using UML
Large-Scale Software Architecture: A Practical Guide using UML
Version Control With Subversion - The Official Guide And Reference Manual
Version Control With Subversion - The Official Guide And Reference Manual
Documenting Software Architectures: Views and Beyond
Documenting Software Architectures: Views and Beyond
Software Architecture in Practice
Software Architecture in Practice
Hi-index | 0.00 |
Creating a software architecture is a critical task in the development of software systems. However, the architecture discussed and carefully created is often not entirely followed in the implementation. Unless the architecture is communicated effectively to all developers, divergence between the intended architecture (created by the architect) and the actual architecture (found in the source code) tends to gradually increase. Static analysis tools, which are often used to check coding conventions and best practices, can help. However, the common use of static analysis tools for architecture enforcement has two limitations. One is the fact that design rules specific to a software architecture are not known and hence not enforced by the tool. The other limitation is more of a practical issue: static analysis tools are often integrated to the IDE or to a continuous integration environment; they report violations but the developers may choose to ignore them. This paper reports a successful experience where we addressed these two limitations for a large codebase comprising over 50 Java applications. Using a free open source tool called checkstyle and its Java API, we implemented custom checks for design constraints specified by the architecture of our software systems. In addition, we created a script that executes automatically on the Subversion software configuration management server prior to any code commit operation. This script runs the custom checks and denies the commit operation in case a violation is found. When that happens, the developer gets a clear error message explaining the problem. The architecture team is also notified and can proactively contact the developer to address any lack of understanding of the architecture. This experience report provides technical details of our architecture enforcement approach and recommendations to employ this or similar solutions more effectively.