In today's rapidly changing software world, the ability to adapt and evolve the software architecture is for success. The readiness for change is a factor in ensuring a product can meet evolving business and product requirements in the high-tech industry. crucial key However, uncontrolled and pose significant risks to a product's success. These drifts can result in the loss of expected extensibility and hinder the adoption of a product as the user base grows. Identifying and addressing these drifts is often done through complex and time-consuming manual architecture reviews, relying on experienced architects to assess the software architecture. architecture drifts erosions Despite the importance of , they have limitations in terms of efficiency and coverage. Human factors can influence the identification of architectural issues, leading to inconsistencies and potentially missing critical problems. manual reviews To overcome these challenges, there is a need for automated solutions that can detect and more effectively. By leveraging automated tools and processes, organizations can achieve better outcomes in terms of identifying and preventing architectural issues. architecture drift erosion This white paper explores the concept of . It covers the impact of and on the business, the limitations of , and the benefits of automating architecture checks. Additionally, it discusses specific considerations related to , , , and more when evaluating architecture review solutions. The paper also provides use case scenarios to illustrate what automated architecture checks can look like in practice. detecting architectural gaps with automation architecture drift erosion manual reviews compliance data security DevOps By adopting solutions, organizations can improve their ability to identify and address architectural gaps, ensuring the stability, scalability, and maintainability of their software systems. automated architecture review Detecting Architectural Gaps with Automation Please read before proceeding to the next chapters. this paper You will gain insights into the following: : Learn what architecture drift and erosion are and how they can impact the business. Gain an understanding of the risks and challenges associated with uncontrolled architectural changes. Understanding architecture drift and erosion : Explore the role of dependency analysis, peer reviews, and other manual inspections in detecting architectural issues. Understand why manual reviews, while important, may not be the ideal solution due to their limitations. Manual inspections and their limitations : Discover the benefits of automating architecture checks and how they can complement manual reviews. Learn how automation can provide more efficient and comprehensive detection of architectural gaps. The need for automated architecture review : Explore specific considerations to keep in mind when evaluating architecture review solutions. Topics covered include compliance, data security, DevOps integration, and more. Considerations for evaluating architecture review solutions : Gain insights into what automating architecture checks may look like through a series of example use case scenarios. Understand how automation can be applied in practical situations to enhance architecture review processes. Use case scenarios By reading this paper, you will develop a deeper understanding of , the limitations of , the benefits of , and important considerations when evaluating architecture review solutions. architecture drift and erosion manual reviews automation Solution requirements This section outlines the requirements for implementing the solution. It is important to note that these requirements are not exhaustive and can be extended based on the specific needs of the project. The requirements are categorized into solution , solution and , and with like modifiability, extendibility, and configurability. modes and inputs integration user interaction solution output quality attributes Solution modes The proposed solution should support the following modes: : The solution should be designed to run as a standalone application, allowing it to be executed on demand without any dependencies on the target environment. This mode provides flexibility for manual execution of the solution. Standalone application : The solution should have the capability to integrate seamlessly into a CI/CD pipeline as a separate step. This mode enables regular assessment of the architecture within the automated pipeline. Integration with CI/CD pipeline In the context of the mode, the following features should be supported: CI/CD : The solution should allow setting an initial architecture as a reference point. Any deviations from this reference architecture should be identified as architecture drifts. Initial architecture reference : When a drift is detected, the solution should provide an option to approve or decline the changes with comments. The description of the change should include an impact analysis, allowing the user to understand the cost associated with the proposed change. Drift reporting and approval process : The solution should provide the ability to save the documentation that describes drifts or erosions. This documentation can be useful for future analysis and reference. It should be easily accessible for review and analysis purposes. Documenting drifts and erosion : The solution should be easily integrated with widely used CI/CD tools such as Jenkins, Bamboo, etc. This ensures compatibility and seamless integration into existing CI/CD workflows. Integration with popular CI/CD tools Solution inputs The proposed solution can accept various inputs, including: : The solution should be able to analyze and process code files from the software being reviewed. Code from the solution under review : Configuration files used by the software should be compatible with the solution to extract relevant information. Configuration from the solution under review : The solution should support importing software designs created using ( ) tools. This allows for a comprehensive analysis of the software's architectural design. Software design from UML designing tools UML Unified Modeling Language : The solution should be capable of working with database scripts and configurations, enabling analysis of the database layer in the software. Database scripts and database configuration These inputs collectively provide the necessary information for the solution to perform its analysis and evaluation of the software architecture. Solution integration Integration of the proposed solution with various tools and systems allows for a comprehensive analysis of software architecture. Here are the possibilities mentioned: integration : The solution can be integrated with offline UML designing tools like OmniGraffle and Microsoft Visio. This integration enables the import of UML diagrams created using these tools for analysis and evaluation. Offline UML designing tools : Integration with online UML designing tools such as Enterprise Architect, LucidChart, , PlantUML, and provides the ability to import UML diagrams created in these platforms. This expands the range of tools that can be used for software design and analysis. Online UML designing tools Draw.IO Gliffy.com : Integration with source control management systems like SVN and Git allows the solution to access code and configuration files directly from the repository. This ensures that the latest version of the software is analyzed, and any changes made to the codebase are taken into account. Source control management systems By integrating the solution with these tools and systems, users can leverage existing software design and version control workflows to enhance the effectiveness of the automatic review process. As an example of the input code could be the code written in using . The other example could be the code written in for . C# microservices architecture JavaScript multi-tier applications The example of configuration might be the used in deployment. Another example could be the and . description of nodes configuration of VPN networks API gateways The example of input software design can be description of interfaces saved in . Enterprise Architect User interaction The proposed solution provides a web interface that allows users to with it from a desktop computer. The interface is designed to accommodate the content and functionality required for software architecture analysis, making it unsuitable for mobile devices such as smartphones or tablets due to their smaller screen size. interact There are two types of users supported by the solution: and . have the capability to configure the system according to the intended use. They can set up various parameters and customize the solution to meet specific requirements. administrators architects Administrators , on the other hand, have the ability to run the proposed solution for analysis and review the results. They can initiate the analysis process and examine the generated analysis reports. The solution provides dashboards that display relevant metrics and software architecture status, such as the count of components and dependencies. These dashboards offer a comprehensive overview of the software architecture and assist architects in understanding its structure and characteristics. Architects By catering to both and and offering dedicated functionalities for each role, the solution ensures that users can effectively configure and utilize the system for software architecture analysis and evaluation. administrators architects Solution output The proposed solution offers two formats for presenting the output: (plain text or table) and . text-based graphic The , particularly in a table structure, provides users with detailed information about identified issues. text-based format The table typically includes the following columns: : Indicates the severity or significance of the issue. Level of issue : Specifies the priority level assigned to address the issue. Issue priority : Provides a clear description of the identified issue. Issue description : Offers recommendations or guidelines on how to resolve the issue effectively. Suggested way to fix the issue Additionally, the table format includes separate sections that list various dependencies, such as , , , , , and . Each section provides a comprehensive inventory of the associated components used in the application. This allows users to gain insights into the technologies and resources utilized and understand their impact on the architecture. frameworks libraries APIs databases technology stack (languages) application layers Furthermore, the solution enables users to request inventories of specific , including , , , and , at any time. This feature provides a convenient way to access comprehensive information about the software application's underlying components and dependencies. elements languages frameworks libraries databases The is utilized to visually represent the software architecture, including graphic format the holistic application architecture, diagrams of all services, and data flows. Both and diagramming tools are employed to save and document the extracted software architecture. This graphic format allows users to annotate and tag components and inventory items using user-defined keywords. offline online UML Here's an example of a graphic output: In the representation above, and are identified within the software architecture. The diagram clearly illustrates the relationships between these components and the direction of communication between them. graphic four services one database Modifiability and extendibility are essential attributes for the proposed solution. The solution should be designed in a way that allows for easy extension and the addition of new features, such as new checks or levels. The scope of the solution should not restrict its ability to adapt to different project needs and requirements. Modifiability and extendibility By default, the solution should include a set of checks to verify the target architecture. However, for projects that already have an established architecture governance process, users should have the flexibility to extend and customize the set of checks according to their specific needs. Given the existence of various Static Code tools like and that handle low-level checks like indentation and formatting, it would be redundant to implement those checks in the proposed solution. Instead, the solution should focus on providing value through higher-level architectural checks and analysis. Coverity SonarQube Configurability is a crucial aspect of the proposed solution, allowing users to tailor the system to their specific needs and environment. The following configuration items can be supported: Configurability : The solution should offer different modes of operation, and users can configure the preferred mode during the deployment stage. For example, it can be run as a standalone application or integrated into the CI/CD pipeline. Solution Mode : Users should be able to specify the path to read architecture documents from offline UML design tools like OmniGraffle or Microsoft Visio. Path for Architecture Documents : The solution can integrate with online UML design tools like Enterprise Architect, LucidChart, , PlantUML, or . Users need to provide the API address to access and update architecture documents online. Online UML Design Tool API Draw.IO Gliffy.com : The proposed solution should be able to integrate with version control systems like SVN or Git. Users will configure the settings to access code and configuration from these repositories. Source Control Management System Configuration : Users should provide the addresses of databases to observe the data layer and perform analysis on database scripts and configurations. Database Addresses for Data Layer Observation : The solution should seamlessly integrate with popular CI/CD tools like Jenkins or Bamboo. Configuration options should enable easy integration into the CI/CD pipeline for regular architecture assessment. CI/CD Tool Integration : Users should be able to configure report plugins, including their format and storage settings. This allows customization of the generated reports based on individual preferences and requirements. Report Plugins Configuration By providing these configurability options, the proposed solution becomes versatile and adaptable, meeting the specific needs and workflows of different projects and organizations.