Quocirca's Straight Talking: Is programming dead?

MDA takes craft to new highs

By Quocirca, 23 April 2004 09:50

COMMENT Programming and re-programming for various platforms has come a long way. But, asks Quocirca's Jon Collins, is model driven architecture the big leap IT's been waiting for?

In the beginning, there were programmers. They wrote software and, mostly, people found it was good. Then the platform changed, so they wrote it again. And again and again. Software was rewritten through changes of operating systems, databases and architectures. Sometimes there were even improvements on the time before but often it was little more than a port.

This is being a little glib. All those changes were part and parcel of the technological evolution we have experienced over the past thirty years, punctuated from time to time by leaps in understanding that gave us client/server applications, say, or the commercial potential of the web.

Functionality such as shopping baskets wasnÂ’t even a twinkle in the eyes of the first programmers. The fact remains, however, that much functionality that exists today has changed very little over the decades. Payroll is still payroll. Customer records are still customer records. Insurance policies remain insurance policies and so on. There remains scope for improvement but certain business logic exists as it should and is likely to continue to exist for some time to come. And why not, if it works.

Given this continuity, in programming circles, the quest has long been to make things so such functionality could be used again, either in other applications or on other platforms. It was not to be – apart from some exceptional cases where code has been reused, most organisations have decided it was more cost effective to rewrite. There are libraries - and there have been since the beginning - but these have rarely stretched all the way to the heart of the business logic.

Perhaps things are finally getting there, for a number of reasons. The first, most press-worthy reason is web services, the generic term for a set of standards for how application software elements talk to each other. Web services wouldn’t exist without all the work that’s gone into the development of application architectures that take most of the work out of the software plumbing – Enterprise Java (J2EE) and Microsoft’s .Net architecture. One gave rise to the other, catalysed by other standardisation efforts such as the adoption of XML and the acceptance of programming, design and analysis patterns that dictate common structures and where they should best be used.

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.

Part 2...

  • 1
  • 2

Comments

There are 9 comments. Join the discussion

  1. 1. Terry Bollinger

    A SKEPTIC'S LOOK AT MDA
    Terry Bollinger - 2004-04-23
    terrybollinger@erols.com

    Avatars of Software Design

    In web-based virtual worlds, users who have worn out their welcome in a region often can start a new simply by choosing a new avatar that others will not recognize immediately. Humans are by nature more inclined to give the benefit of the doubt to a new image with a new sounding set of claims, until they learn the hard way that it is really the same old package with a bright new wrapper.

    Visual programming is a concept that has been around for quite some time, and it too has had multiple avatars over the years. Arguably, Model Driven Architectures (MDA), with its emphasis on creating high-level models from which traditional code is generated, is the latest avatar for visual programming. The danger is that by focusing too much on this new external presentation of visual programming concepts that a number of intransigent and decades-old limitations of this approach may be overlooked.

    Visual Programming: The Good

    Without doubt, visual programming has value in the right set of circumstances, and the remarkable capabilities of the human visual system make this style of programming a required part of any overall understanding of how humans develop this strange stuff called software. A good example of where visual programming outperforms traditional text programming by orders of magnitude is in the creation of graphical user interfaces through direct manipulation of screen images.

    Visual Programming: The Bad

    But here is another scenario to consider: You create a general architecture using an MDA tool or one of its older code-generator analogs, and the MDA tool converts that high-level view into a specific framework that makes use of, say, J2EE and Java. So far so good.

    Then you notice that you must do a little "extra" coding within the framework to add the details of your specific situation and environment. The MDA framework accommodates this need readily, so the added work doe not seem that odious. You fill out the framework and, in time, are able to release the resulting system to you user community.

    Your customers immediately suggest changes, of course. Some of the changes affect your overall model, but most of them affect your direct code additions. If start with the changes that affect the model, you discover that you have disrupted the code you added, since the generated framework is no longer the same. If you start with the code changes first, you lose the benefits of the model viewpoint and still cannot add in the framework level changes. Frustrated, after a couple of weeks of indecision you decide to abandon the MDA tool and framework and switch to direct code maintenance. The decision is effectively irreversible, since once you begin making the needed framework-level changes, there is no longer any practical way (or even a good reason) to make it backwards compatible with the original model and tool. Besides, after working more with the code and changes you have realized that your development team can produce a much more sophisticated and more efficient framework that the very basic, non-customer-specific code generated by the original MDA tool, which of course had no understanding of your customer’s needs.

    Visual Programming: The Ugly

    You add up the benefits of having used the MDA tool, and find that they were... non-existent, or possibly even negative. While the MDA tool did reduce the amount of coding you needed to do for the very first version of the tool, in retrospect you realize that the resulting design was both overly constraining and inefficient, and so had to be analyzed and then significantly modified by your design team. Even more importantly, the tool proved too painful to use during long-term support of the software - which for your package, as with most software, proved over time to be more costly by a wide margin than originally creating the software. You decide that MD

  2. 2. ssk

    Next generation applications need to be much smarter than what can be built using MDA.

    MDA is good only for a streamlined and repetitive work, but it can not generate new ideas or even improvements over existing ones...for now! There is plenty of high qualify programming market in the future.

  3. 3. anonymous

    Creating applications by diagrams instead of code was tried in the 1980s. It was called CASE (Computer Aided Software Engineering).

    It didn't work then. It won't work now.

    The problems are: 1) you need new code for new features, and 2) the tools never allow applications to move to new platforms, as the underlying technical concepts are often different.

  4. 4. Put Down Pete

    As a Computing Scientist who quit programming 20 years ago, I hear what this guy is saying, but ...

    All it will take to knock this guy's barrel of apples over is the emergence of an alternative nanoprocessor that's cheap, really fast and allows for some wonderful AI (artificial intelligence) techniques to be brought, by programming, to the application level.

    Artificial Speech processing cards? Financial verification and encryption hardware at the user end? Speech synthesis? Animation cards?

    Even existing graphics cards could pose a definite threat to his notion. They won't, but that's another issue.

  5. 5. Paul P

    The article fails to note that every five years there is a new trend that threatens to eliminate programming. COBOL was supposed to be a "business language" rather than a "programming language" and then there were expert systems and other AI stuff and then CASE tools and now it is all about MDA code generators. Fool me once, shame on you. Fool me twice, shame on me.

    I do not believe that those who constantly proclaim the end of programming exactly know what programming is.

  6. 6. Vijay

    We have had many false starts at model dirven programming. But I have reasons to belive that this time we may be hitting on something that would be a serious contender to the traditional programming.

    Big Blue is behind it:
    IBM's Rational Rapid Developer, Borland, and Compuware tool are able to generate code applications that are non-trivial. These companies will not put serious money into it if it was not a promising technology.

    The Middleware Company study:
    The Middleware company did a study last year, and still measuring the maintainability of that code, which shows that it tooks 1/3 less time to develop code with MDA tools than traditional tools. This application had over 40 pages of specification.

  7. 7. Ian Savell

    Visual programming puts the cart before the horse.

    If the application area is fast moving the rules are in a state of flux and you can't build a stable system from existing components. If the application area is static, it is laden down with business specifics and again the component model fails.

    An entirely component-based approach will always be late, underspecified or outdated compared to a coded solution produced by an inspired team, and that's why some businesses excel and others flop.

    Of course, a coded solution produced by an ill-led and uninspired team will be late, underspecified and outdated, while a component-based system can, in the right hands, produce brilliant business software in double-quick time.

    I guess it all comes down to skill and leadership - the rest is just tools. Even the best tools can't create a craftsman.

  8. 8. Dharmesh Mistry

    The author should be clearer about what type of programming is dead. I can't see a code generator being able to create platform specific device drivers for example.

    Then we need clarity on "what is programming", is using a graphical rules editor programming?

    On MDA specifically, solving the issue being platform/implementation agnostic, is only solving an IT issue, which in itself is not enough. And have we not learnt from CASE that business people can't "feel" what is system is like from modelling, only early visualisation of the front end applications provides this. Hence the popularity of RAD approaches (DSDM, XP etc...). However again with programmers in the loop the end systems for RAD development often did not provide for future flexibility as requirements change, and change was difficult.

    What we need an approach that allows the business users not to just model the application, but to build it. This can be done via a tool without them having to be programmers. And until web services are proliferant, such an approach would leave complex business logic and integration to programmers only.

    So yes, in the world of business processes, it should and is possible to build systems "without programming".

  9. 9. Jon Collins

    Thanks for the comments - sorry for the response time! Some very valid points made, realistically however much of programming is repetition, and anything that removes the repeatable steps leaves time that can be spent on the innovative stuff (and should be applauded imho). I totally agree with the person who said it is down to the craftsman, but then, what would I know about programming, I've only been working in computing for the past sixteen years, and not all of them as a programmer neither ;-)

Post your comment

In order to post a comment you need to be registered and logged in.

Log in or create your silicon.com account below

Will not be displayed with your comment

By signing up for this service, you indicate that you agree to our Terms and Conditions and have read and understood our Privacy Policy.

Questions about membership? Find the answers in the Membership FAQ