The imminent public release of Structure101 v7 includes an entirely new kind of C/C++ source parser. Three years in the making, this parser feeds a high-fidelity “super-model” into our familiar visual desktop applications, as well as into our brand-new SQL … Read More
Dependency Management
Using Structure101 “modules” to control APIs in C/C++
Cross project API control can play a vital role in managing a well-organized codebase. In this post, we’ll take a look at how to achieve API control between projects using the Modules feature in Structure101 Studio. For a full walkthrough … Read More
Finding superfluous C/C++ #includes
Unnecessary #include statements can increase build times, make code harder to understand, and make restructuring more difficult. It is trivial to find these with Structure101 Studio, so you can remove them from the code, or from the model prior to … Read More
How to create a killer call graph for impact analysis
Sometimes you really want to cut through a code-base to discover all the functions that can get called in response to a specific function being invoked, with all the other code removed from the picture. Or you might be coming … Read More
Mapping Architecture Diagrams to Code – the “most specific pattern” rule
Architecture Diagrams in Structure101 are mapped to the physical code by patterns associated with each cell in the diagram. This enables the visual specification of rules that can then be applied to a specific version of your code so that … Read More
Travelin’ lite (the only way to fly)
Of course, you can’t code up a (meaningful) system without some number of building blocks. So even in a perfectly architected and layered system, you inevitably accumulate some baggage as you move up the stack. The trick, though, is to … Read More
Identifying transitive closures with Structure101
Here an interesting use case. I am currently working on a reuse project. We have a large legacy Java application that we are trying to farm for implementations of some high level functions in a new application. To do this … Read More
Package design matters – Part 1
Java packages are often used like file-system folders to organize source. But source files differ from “normal” files in that they are highly inter-dependent. Considering this interdependence as a package hierarchy evolves can have significant productivity benefits. Packages as Folders … Read More
Spring Framework 2.1 M3 Architecture
Here are some architecture diagrams for Spring Framework 2.1 M3 (released yesterday). You can point the (free) structure101 plug-in at these and get IDE warnings if your customizations break Jeurgen’s architecture. Here is the top level breakout of org.springframework: Structure101 … Read More
Code Organization Guidelines for Large Code Bases
In an excellent on-line presentation Juergen Hoeller gives rationale and guidelines for controlling the structure of large, evolving code-bases. Juergen is the chief architect of the Spring framework, which as I have previously pointed out is structurally almost perfect. This … Read More