Cube-omatic
Anybody who has ever been working with Sun has probably at some point in time been confronted with the ubiquitous Cube, the simplified architectural reference model that came out of the Java Center practice. (If you never ran into the Cube, well, then you have been talking to the wrong people.)
The good thing about the Cube is that it is simple. Simple = good. To quote Calvin: "if you can't say it in just a few words, then it's probably not worth talking about it at all". That's what the cube was all about: idenfitying the different concerns in your architecture, and mapping those concerns to different dimensions on a 3D model.
The bad thing about the Cube is that it didn't always feel very comfortable where your components would fit in. As Clemens Szyperski ("Component Software") already pointed out: a strictly layered architecture is seldomly found. But that's not all: our ideas on "different concerns" have also been shifting during the last few years.
Because of this, a couple of people within Sun have been discussing some alternative reference models. Most of those options still remind us of the old Cube. Problem is, we didn't have anything to play around with these different views. I don't have a 3D cube model tool that we could use for that purpose.
Since most of the architectural documentation that we create today is linked to the different concerns mentioned in the cube, and since we have been building a lot of documentation from DocBook lately, I figured that having an XML grammar for 3D architectural models and a mechanism to build the PNG images from XML documents would be quite handy. So I created a Maven plug-in to do exactly that.
The Maven plug-in will look into a certain directory, and covert all files it finds into SVG, using a simple (!) XSLT stylesheet. After that, the plug-in will kick off Batik, and Batik will perform the conversion of SVG to PNG. That's all. The result looks like this:
And this is the kind of files that you feed into it. I must admit, the DTD is crummy, but hey - what you can expect from a hour of work.
<?xml version="1.0"?>
<!DOCTYPE cube SYSTEM "../dtd/cube.dtd">
<cube zaxis="dimension-qualities"
xaxis="dimension-tiers"
yaxis="dimension-layers">
<space>
<dimension id="dimension-tiers">
<name>Tiers</name>
<value>Client</value>
<value>Presentation</value>
<value>Business</value>
<value>Integration</value>
<value>Resources</value>
</dimension>
<dimension id="dimension-layers">
<name>Layers</name>
<value>Application Layer</value>
<value>Virtual Platform Layer</value>
<value>Upper Platform Layer</value>
<value>Lower Platform Layer</value>
</dimension>
<dimension id="dimension-qualities">
<name>Qualities</name>
<value>Security</value>
<value>Performance</value>
<value>Scalability</value>
</dimension>
</space>
</cube>
( Jun 02 2005, 02:16:56 PM CEST )
Permalink
Comments [1]


