Structure 101 by Headway Software

If you care about software structure (and you should) then Structure 101 is the tool for you. This brilliant piece of software engineering by Chris Chedgey and the team at Headway Software has many facets, but in short, it helps you to understand, manage and control the design and architecture of your software.

I have yet to play with with much of the advanced functionality but I have used it several times now to assess the design complexity of smaller projects (including academic assignments) and it has helped enormously every time. For example, when implementing Design Patterns like Model-View-Controller). Using the Composition Perspective, you can clearly see whether the intended design of your product has been achieved or whether you have excessive inter-dependencies (tangles) between your packages. I took over a small desktop application from a colleague recently and the first thing I did was run it through Structure 101. Then, as I made changes, I was easily able to see whether or breaking/improving/adhering to the original design.

Version 3 (currently in Beta) will also offer an Architecture Perspective where you can define block-level diagrams of the architecture of your product and have it show you where and why the actual structure deviates from the intended architecture. I tried this out and it worked a treat – very useful addition indeed. Version 3 also adds an IDE plugin (Eclipse) although I have not tried this yet.

Building Loadable Modules for Apache on Solaris

We recently installed a version of Sun’s CoolStack software bundle on a SunFire T2000 server running Solaris 10 so that we could use its CoolThreads-optimised version of Apache instead of the regular Apache that came pre-installed on the box (highly recommended by Sun).

However, when we ran the new version of Apache against our configuration, we discovered that it does not include a number of key modules that we require (namely Proxy Balancer). Sun does not provide these in binary format so we had to build them by hand. Fortunately, Apache does provide a convenient tool (apxs) for building modules but unfortunately this requires you to install a Sun compiler, Sun Studio (now free though) which added some extra time to the process.

Anyway, I appreciate that this may not be rocket science to many of you but, despite the many articles already published on this topic, there were still some issues that we hit which were not documented. So, here is how we did it.

  1. Ensure that you have installed the latest version of the CoolStack software (installs to /opt/coolstack)
  2. Download, unpack and install Sun Studio 11 (installs to /opt/SUNWspro)
  3. Be patient, very patient … 600MB download, followed by a long unzip to 1.1GB followed by a long install …
  4. Download, unpack and install the CoolStack Source (installs to /opt/coolstack/src)
  5. Now, as a root user, follow the commands below

# export PATH=/opt/SUNWspro/bin:$PATH
# cd /opt/coolstack/src/httpd-2.2.3/modules/proxy
# /opt/coolstack/apache2/bin/apxs -i -a -c mod_proxy.c proxy_util.c

This will compile the module, copy it to the appropriate directory and update the Apache configuration file for you. If you leave out the proxy_util.c you will get "proxy_lb_worker: symbol not found" errors when you start Apache

# /opt/coolstack/apache2/bin/apxs -i -a -c mod_proxy_balancer.c

Once again, this will compile, copy and deploy the module for you

# /opt/coolstack/apache2/bin/apxs -i -a -c mod_proxy_http.c

If you forget to install this module, Apache will start, but the site will be inaccessible (saying you do not have permissions to view this page). You will also see errors like "proxy: No protocol handler was valid for the URL /" in the Apache error log file for your product.

Best of luck!