Software applications are becoming increasingly large and complex. For example, some (dated) reports of Mac Office state that it contains 30,000,000 lines of code. Windows XP was reported as consisting of 45,000,000! Considering that there are 40 lines of text on an average book-page, that means that Mac Office is a 750,000 page epic while XP comes in at a block-busting 1,125,000 pages.
To make matters worse, these lines of code are not quite as palatable as the English lines of text you will find in most novels. And yet these systems must still be effectively managed as a whole across their initial development and subsequent evolution. These are typically the concerns of software architects: members of the development team whose core job is to structure the system to maximize its ability to meet these system-wide concerns.
Dr Jim Buckley leads an Architecture Recovery and Consistency (ARC) team in Lero that endeavours to raise consistency between the intended and the implemented architecture of the sotware systems. As part of this effort, Dr Jacek Rosik (a post-doctorate researcher on the team) has created a tool (JITTAC) that provides developers with real-time information on the location of inconsistencies between the intended architecture and the implemented architecture. It does this by allowing developers build a nodes-and-edges diagram of the architecture of their system. The architect can then map pieces of the existing source code to the nodes in the diagram. The result is a diagram that allows architects identify where developers have drifted from their intended architecture. The tool allows them to navigate to the lines of code responsible and assess the inconsistency more fully.
The approach has been trialled in a number of companies including IBM, QAD Ireland and several Irish-based Financial Services companies. In each case the approach identified several violations that surprised the architect involved and led to further exploration.
The effects of this work are significant: architectural issues off concern are better reflected in the implementation or, when they are not, the team is more aware of the issues. In addition developer insight-led changes to the architecture are now made explicit and the resultant system is easier to maintain going forward.
In their more recent work, Dr Sebastian Herold has explored the possibility of automatically deducing the underlying causes of the violations identified by JITTAC and suggesting remedial actions. This has resulted in an approach and an associated prototype tool called JITTACMedic, that aims to support architects in increasing the architectural consistency of their systems.