Research Internship

I’ll be spending the next ten weeks doing a full-time research internship at my university (University of Groningen). In the software engineering research group they work on a so-called Architecture Description Language (ADL) based on Java called “Archium”: This language is based on the idea that the design process of software actually consists of a sequence of design decissions. Examples of design decissions are the database server you’re going to use, whether your server is going to be single or multi-threaded, or even what the base colour of your GUI will be.

When you design your software a lot of such decisssions are made, however hardly ever well-documented. What you end up with is an architecture document showing the end-result saying that you’ll be using SQL Server, a multi-threaded server and a pink GUI. The reasons behind those decissions are often not written down.

If the architect gets run-over by a truck you’ll lose all the reasoning behind the decissions made. Why did he choose to use SQL Server and not MySQL? What would happen if you change it? Was his choice for a pink GUI only based on his gayness or did the customer specifically request it? Nobody knows. Archium lets you write down the rationales behind such decissions so that they are kept for the next generation of architects, or even for the architect himself when he has to change something in the design, a couple of years later.

Because software architectures often are quite complex, people developed different ways of looking at it. It’s like normal architecture, somebody who has to paint the walls is interested in very different things than somebody who has to make sure the building won’t collapse. Sometimes you’re interested in getting a very global overview of what the different parts of the systems are, sometimes you want to know which components are connected, sometimes you want to know exactly which class is in which file. Right now Archium only supports the component and connector viewtype. This view shows the different components and how they are connected; who talks to whom.

My job is to add an additional viewtype: the module viewtype. The module viewtype is a lot like namespaces in C++ and C# and packages in Java. My job is to figure out how Java’s package system differs from the module viewtype and how to bridge this gap. Then I have to figure out how this will affect the Archium system. Today (and this weekend) I’ve been reading the first five chapters of “Documenting Software Architectures, Views and Beyond”, some papers written about Archium. I’ve also made a list of the views that Archium will have to support and which are already supported by Java.

Because this is a 9–5 job I might not have much energy left to post every day. Oh, and for those ever being near the IWI building, pop in some time. I’ll be in IWI 10 most of the time.