Dependency Management

New Hi-fi C/C++ Parser + Dependency DB

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

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