Sunday, September 2, 2007

The Future of UML and the American Programmer

The UML (Unified Modeling Language) has been in existence for some time now. As a developer I've been using Class Diagrams, Sequence Diagrams, and Activity Diagrams for years. In fact I just gave a presentation on UML to my team and I'm scheduled to give the same presentation again in a few weeks to some other interested developers in my company.

The OCL (Object Constraint Language), an extension of the UML, has been in existence for roughly the same amount of time and is a necessary ingredient to bring MDA (Model Driven Architecture) to fruition.

The vision of the OMG (the consortium that owns and maintains the UML) is that in the near future all applications will be written using only a modeling tool. There will be no "code base" to maintain (at least in the current sense of the term). Models will compile straight to machine language. Obviously we are not there yet. Jos Warmer & Anneke Kleppe in their book The Object Constraint Language: Getting Your Models Ready for MDA describe a series of five Modeling Maturity Levels (MML if you can stomach another three letter acronym) analogous to the CMMI levels. The most advanced MML, level 5, known as "Models Only" is achieved when "No adjustments need to be made to the resulting code." I assume this will be due to (1) development tools indicating to the developer that a model won't compile, (2) the abstraction levels being such that the mistakes we as developers make in our code today being nonexistant - we will have other problems to fix, and (3) the conceptual gap that exists today between code and the actual business model being reduced.

All of this raises some interesting questions. Although the MDA Initiative was announced by the OMG in 2000 (if memory serves correctly) how many more years will pass before a tool exists that allows MML Level 5 to be achieved? Will it ever happen? More importantly to those of us who are already feeling the squeeze from watching so many of our jobs go overseas to countries with lower labor rates, will business analysts soon be competing with us as well? Will tools advance to the point that many business people will be doing their own application development?

With regard to the MDA vision: Yes I think in some form, in some way, development tools will eventually achieve the abstraction level promised. Programming languages have progressed from machine languages to assembler languages through to today's high-level object oriented languages (with trade-offs at each transition) in the same way. Advances in hardware technology have contributed to this evolution as well. But how long this will take or whether the current MDA standard will be the winner are questions I don't have the answer to.

As to the plight of the North American programmer: Yes more people from different disciplines will indeed encroach on what was previously programmer territory. In the past application developers have been forced to change as staff cutbacks due to economic pressures have forced them to interact more with stakeholders and take on roles previously handled by project managers and business analysts. More and more, programmers are being forced into the corner of ROI (Return on Investment). Agile Methodologies are also working to change thinking about the Application Development Lifecycle and the programmer's role in it. Ten years from now the role of programmer will be different than it is today, no doubt impacted by new methodologies and tools. I think those who wish to remain on the same career path (corporate developer) must continue to learn the business they are supporting, continue to improve their rapport with business stakeholders through communication skills, and continuously retrain themselves as new technology lifecycles appear. This is not much different than what many of us have already been doing.

If you want to remain in the field of programming stay on top of UML, OCL, & MDA. Learn and be on the lookout for possible alternative paradigms such as Software Factories. Learn as much as you can about competing SDLC Methodologies (Process Models) and ALM tools. Learn how your company's business model works. Good night and good luck...