Overview of the Cubitt Platform

Documentation of the architecture of software systems is crucial, especially for larger software systems. Currently there is a great gap between the whiteboard approach mostly used by architects and the documentation tools that exist. The goal of the cubitt framework is to bridge this gap.

Current architectural documentation tools are mostly image based. This approach is fast and easy to use, but does not allow for (semi-)automated formal analysis of the structures in the architecture. Formal analysis of an architecture requires a structured representation of an architecture. A natural choice would be a graph, like the boxes-and-arrows often drawn upon a whiteboard align well with the nodes and edges of a graph. This idea spawned the Cubitt architectural documentation framework.

The goal of the Cubitt framework is to provide a framework that is able to integrate the many architectural notations and allow for (formal) analysis of the architecture to be performed in any programming language. The second goal of Cubitt is to provide so called ‘inter-view views’, views that link multiple views together that might even have a different notation.

Many notations and even more design processes are used by software architects to create architectures of software systems. The notations might range from simple boxes and arrows models (on a whiteboard) to a formal specification. Since we believe that a perfect method to create architectures does not exist, we designed the Cubitt platform to be as flexible as possible.

Since many mature solutions already exist to analyse architectures in different ways, the goal of Cubitt is to provide a framework that is capable of integration as much of these tools as possible.
Secondly Cubitt is designed to be altered to your way of working and presenting architectures.

The overview picture

This section provides a very quick overview of the Cubitt platform.

First of all Cubitt uses a client-server pattern, in which the editor GUI or analysis tools are the client and the server provides the central backend. The GUI can be used to create the architecture using different architectural notations. Secondly third party tools can be integrated, that can for example perform (formal) analysis of the created models or link issues to the software architecture.