The Unified Modeling Language (UML) is a standardized family of diagrams that create a visual language for describing and designing software systems. UML's use is analogous to that of blueprints in the construction and manufacturing industries. Developers of complex software systems can greatly improve their productivity by properly applying UML. Further, there is a subset of UML that purchasers of complex software systems should be familiar with, as well. See the UML Resources page for links to introductory information.

I am not a UML expert, and I was initially reluctant to learn UML as it seemed to favor a heavyweight approach to software development. However, I have always believed that there were serious limitations to informal block diagrams, and have seen too many projects where the same block diagram meant different things to different people. Thanks in part, to Martin Fowler, it has become clear that UML can be applied in a “lightweight” fashion, as well. This section is my attempt to share my “beginner's mind”, experiences, and pragmatic approach with colleagues, customers, and, hopefully, the Open Source community.

Creative Commons License
This work is licensed under a Creative Commons License.