The second reason, which is also inextricably linked into the application architecture work, is the unification of standards for describing what applications look like. The whole world has settled on a single modelling language to describe the innards of applications, known as the Unified Modelling Language (UML). The standard is now at 2.0, which means that it covers the vast majority of requirements. It's not perfect but it is certainly comprehensive.
All of these things together do not make reusable applications but they help. There is another knock-on effect: now the standards are virtually complete and universally accepted, the standards bodies themselves (such as the Object Management Group) have had to set their sights on new things to standardise. What they have come up with is rather intriguing. Essentially, having agreed the tools and techniques to be used, they have turned their attention to the process, defining what they call model driven architecture, or MDA.
The goal of MDA is quite straightforward: to enable applications to be specified entirely in modelling terms, which are platform independent, rather than in code, which varies depending on the target architecture. From the OMG's perspective this is largely a boon for application integrators, who spend (nay, waste) time converting perfectly good code to work on different systems. As it is defined, MDA enables such lower level programming to be automated by code generators, freeing up time to be spent on the more interesting stuff – the business logic.
Code generators are nothing new. Fourth-generation languages using code generators followed 3GL's (such as C, Pascal and FORTRAN) as sure as night followed day. Later, software tools such as software through pictures started a fashion in using models to represent code, continued into the land of UML by companies such as Togethersoft (now part of Borland). Indeed Borland's and IBM's Rational's as well as other companies' modelling tools have very quickly jumped on the MDA bandwagon. Fair enough – to an extent, they were doing it already.
There are a number of advantages to the MDA approach, not least that the design specification can never again be out of date, as it is the only thing that is changed. It also takes the onus well and truly away from the code and gives it to the design. One of the greatest flaws of the IT industry is the habit of implementing a solution before it has been specified or designed – if construction projects were treated in this way, we'd all be living in shacks.
This is not saying that there is a place for programming. Rather, that code-centric initiatives offer a carte blanche to less scrupulous development shops. In engineering, architects exist for a reason, which is perfectly applicable to software.
Analyst Jon Collins is with Quocirca, a business analyst firm based in Europe.