I want to share with you yet another tool this one will help you with the architecture development. The tool is called Structure 101 and you can download a trial version here. That’s right, this tool is not free, but it does it’s job really well and at the time I can’t think of a free alternative that would be just as good. If you do know any good alternative, please, do leave a comment. The first thing you need to do is chose the version that’s right for you. There are three main flavours:
- JAVA – cross platform
- .NET – only for Windows
- Generic – cross platform
Also they have a C/C++ version available from their partners. While I mostly used the JAVA version, with the trial key they provide you can play around with all of the versions available for download.
To better understand what it does let me provide a simple example. Say you join a new project where you find that the architecture documentation is out-of-date or worse yet, missing. Some people say that the best documentation is the source code itself. But reading hundreds or thousands of source code files is usually not an option. What you could do though is get a quick overview of the whole project’s structure and design just by opening the compiled result of the project in Structure 101. It doesn’t matter whether you have packaged the classes in .jar files or have them in some directory. Just create a new project in Structure 101 and add them to the list. You’ll also be asked whether you want the detailed information i.e. if you’ll be examining the structure at the function level. Once you open it you’re presented with the ability to examine the project in a list of perspectives the more interesting of which you can see below.
Here you can analyze the packages and their dependencies.
See the project at different architectural levels and the level of entanglement on each level.
This is the place where you simulate the changes to the structure and immediately see the consequences without actually modifying any source code.
Class hierarchy perspective
This perspective helps you understand the dependencies between classes.
I’m still learning it so I won’t try to provide a tutorial or anything. If you need some help figuring this out be sure to see the screencasts.