Similar Tools
Although TangleGuard has a unique approach, software architecture is already actively enforced in software projects with the help of tools. These tools are discussed here with it’s strength, uniqueness and limitations.
Dependency Cruiser (JS/TS)
Section titled “Dependency Cruiser (JS/TS)”Dependency Cruiser made for JavaScript and TypeScript projects. It enforces boundaries by rules which are states in a configuration file. It includes graph visualization by creating an output file in DOT format.
ArchUnit (Java)
Section titled “ArchUnit (Java)”ArchUnit is an open-source tool for Java applications. Port exists for .NET and C#, too. It enforces dependency rules by defining them within Unit tests.
ImportLinter (Python)
Section titled “ImportLinter (Python)”Import Linter also allows to define and enforce dependency rules within and between python packages.
It’s a CLI tool and uses a configuration file (default .importlinte
), which contains one or more ‘contracts’.
It also possible to define layers.
No metrics get provided.
Konsist (Kotlin)
Section titled “Konsist (Kotlin)”A structural linter for Kotlin which works very similar to ArchUnit. It verifies the codebase in regards to user defined rules which can be created within Unit tests user the Konsist API.
Arkit (JS/TS)
Section titled “Arkit (JS/TS)”Arkit Associates source files with configured architectural components and creates grouped components and dependency graph diagrams including Node.js modules as local files.
jQAssistant (Java)
Section titled “jQAssistant (Java)”jQAssistant shows software analytics, verifies that current design is as indented using provided or user-defined rules. All in an XML file.
Sonargraph
Section titled “Sonargraph”A tool by Hello2Morrow. Supports C#, C/C++, Java/Kotlin, TypeScript and Python 3. It enforces layered architecture by a DSL, has metrics and visualizations like hotspots. It’s a heavy desktop app, acts more like an IDE with a steep learning curve.
Lattix
Section titled “Lattix”For multiple languages, like .NET, Java and C/C++. Has visualization via the “Conceptual Architecture Diagram” Does have metrics about coupling and get’s shipped as desktop app.
Summary
Section titled “Summary”They are a couple of tools out there to help with the architecture of a codebase. Each modern programming language seems to have a tool for rule enforcement. Visualization is rarely present. Also tools exists which do visualization. The configuration is done within a config file as text for all tools. None of them has a modern web application. It’s either package installed to the workspace without GUI, or a fat client.