Today's development tools and approaches emphasise ease of use. Although most tooling relies on visual tools that minimise coding, developers must still deal with a programming language. A new approach that bypasses the programming language altogether enabled a major global bank to significantly reduce development time.
Over the years, numerous approaches have been made to automate code generation in software development. The original computer-aided software engineering approaches of the 80's tried to generate code in language like C based on an enterprise data model.
Although that never proved workable, a decade later a consensus developed around the UML modelling language that defined basic objects or classes. The operable notion was that if you could model business logic, developing or generating code would become far more disciplined, systematic, and most importantly, re-usable.
So if you could model code, why not automatically generate it? Several years later, tools emerged that could generate code in a structured language such as Java or C# from a UML model.
When you use any programming language, whether it be Java or C#, or older languages such as Visual Basic or C, or legacy languages like Cobol, you still need it to compile down to lower level code that directly executes on the machine.
More recently, E2E, a Swiss software company, discovered that when it comes to integrating large, diverse systems, why not treat a UML diagram as a higher level language itself and just skip the code?
E2E is a 10-year old company that as a systems integrator had to figure a way to join several retail banking networks together as part of the initial UBS merger in 1998. It adopted Unified Modeling Language to rationalise development of the connective code. But as it did so, E2E realized that it could save development time by making the UML model executable. The result is the E2E Bridge, a technology that Gartner Group has just awarded as a 'cool' new technology, despite the fact that it is well over five years old.
According to Chris Henn, vice president of business development at E2E, the realisation occurred when the firm dealt with the task of documenting the code. It realised that, by developing a byte code that could be generated straight from UML, it could make the UML model the heart of the documentation and thereby skip a time-consuming step.
E2E's approach appears to be a typical model-driven development in most respects. It starts with a requirements phase and process design platforms such as IDS Scheer's ARIS modelling tool, and imports the process model into UML where the architecture of the application is developed. The last step is compilation to generate a UML byte code that is used to execute the application.
Yet, as the E2E Bridge dispenses with Java itself, it emulates Java's highly virtualised execution model. That is, Java compiles, not to native code of the machine, but to a virtual machine that abstracts Java from the underlying platform, and renders it platform-independent. The E2E Bridge does that too, except that it compiles to byte code from the model, not the language.
Specifically, the E2E Bridge only uses only a half dozen of UML 1.5's models to generate the executable, such as:
* Modelling, roles, services, systems, data and security as Use Cases.
* Defining semantic mappings and associations of metadata in Class diagrams.
* Defining service logic and orchestrate services via State and Activity diagrams.
* Specifying system landscape and physical bindings using Deployment diagrams.
* Performing service debugging and profiling via Sequence and Activity diagrams.
Henn said that, to keep the tool compatible with other commercial application lifecycle tools on the market, a subsequent release will support UML 2.0. But E2E will not make use of the new UML 2.0 constructs, which critics have accused as being far too fine-grained.
The approach was proven at UBS, where E2E reduced lead-time from design to deployment down to five weeks. And by using the model as documentation, it also reduced maintenance costs. In that case, it took an application that required 12 people supporting 200 manually configured services down to two people covering 800 UML-based services in production. That code base now supports a high-performance run time that allows up to 7 million daily transactions on a 12-node Sun server.
Obviously, this is a very specialised case. But if this development model could be applied more broadly, it could have implications for how software development teams might be staffed. Going directly from model to executable, you could either make your developers into architects (getting them to conceive software at a higher level), or dispense with programmers altogether.
Source: CIO Agenda MarketWatch, ComputerWire