Uml As Blueprint
28 May 2003
For a long time engineering influenced software processes have looked for a way to express software designs in such a way that the designs can be handed off to a separate group to write the code, much as blueprints are used in building bridges. This would allow rare and expensive software designers to concentrate on the blueprints while many cheaper coders concentrate on construction.
As a result UmlAsBlueprint is a UmlMode that focuses on completeness. In forward engineering the idea is that blueprints are developed by a designer whose job is to build a detailed design for a programmer to code up. That design should be sufficiently complete that all design decisions are laid out and the programming should follow as a pretty straightforward activity that requires little thought. The designer may be the same person as the programmer, but usually the designer is a more senior developer who designs for a team of programmers.
In reverse engineering, blueprints aim to convey detailed information about the code, either in paper documents or as an interactive graphical browser. The blueprints can show every detail about a class in a graphical form that's easier for developers to understand.
Blueprints require much more sophisticated tools than sketches in order to handle the details required for the task. Specialized CASE (Computer Aided Software Engineering) tools fall into this category (although the term CASE has become a dirty word and vendors try to avoid it now.) Forward engineering tools support diagram drawing and back it up with a repository to hold the information. Reverse engineering tools read source code and interpret from it into the repository and generate diagrams. Tools that can do both forward and reverse engineering like this are referred to as round-trip tools.
Some tools use the source code itself as the repository and use diagrams as a graphic viewport on the code. These tie much more closely into programming and often integrate directly with programming editors. I like to think of these as tripless tools.