The Evolution of Software Development

Teleogic Innovate has an article on the future of software development. Software and System Development Megatrends (requires registration).

The key point Heyhoe makes is that the development of software visualization tools are on the brink of reducing the amount of time needed to complete programming projects.

Up to and including 3GLs, we’d been crafting our solution in what amounted to textual or mathematical notation. Of course this was tough for someone else to read and understand and maintain (fix or change). Humans are much better at grasping concepts when presented with a visual representation. Visual design notations such as those defined by Yourdon and Jackson became a popular way to describe the kind of programs that we were trying to write. Some tools (often called Computer Aided Software Engineering or CASE tools) supported the generation of C or Ada from visual designs. Other, so-called ”object oriented”, visual design notations such as Booch, Objectory, OMT, Shlaer-Mellor and so on followed. This plethora of notations was brought together in 1997 into one notation called the Unified Modeling Language. This UML, and another notation called the Specification and Description Language (SDL) that is de facto in the real-time and telecommunications industries, are today the dominant visual design notations.

The initial reactions of programmers to these visual languages is skepticism. Can we really trust computers to interpret our visual diagrams correctly? Heyhoe rejects this skepticism by saying it is equivalent to the skepticism that greeted the first compilers and replaced assembly language. I’m not familiar with the tools enough to gauge their accuracy but the thesis is intriguing.

I will say one thing in favor of text and mathematical notations. Part of what makes text files really useful for configuration on Unix and other systems is the ability for people and computers to share an immediate interface for automation. Programmers and the computer can both understand the concept of moving onto the next line or searching for a particular string of text. Our language for identifying the structure of a visual diagram seems much poorer. It may be the case that I am unaware of how easily it is for the computer to represent our diagrams but are those digital codes as easy for humans to read? In other words there needs to be a format that is readable by both computers and humans in order for the easy internetworking of tools to work and for those tools to build upon each other in synergistic ways. Where are the pipes that link one UML document to another?