Take the Next Step in Modeling
Apply aspect-oriented modeling to improve architect and developer productivity in high-level, distributed enterprise systems.
by Greg Gorman
December 22, 2006
The use of design patterns in software programming has been a standard industry practice for many years. Patterns are used to represent an entity's common characteristics and allow repeated application or re-creation of that entity. Patterns are used throughout engineering disciplines and have recently been used in software modeling.
In fact, many unified modeling language (UML) modeling tools today have some kind of pattern support built in or are available as an add-on module, such as a large, user-modifiable library of classic software and systems engineering patterns that an architect or designer can access when creating a new model or modifying an existing one.
The application of patterns to modeling makes sense; there are many very useful patterns that can be expressed and used to build architectural and design models of complex, distributed systems and enterprise applications. Using design patterns for model-driven development can increase the productivity of the architect, designer, and developer, much like the benefits from using patterns when programming.
Using design patterns also significantly increases the readability, understandability, and maintainability of the models themselves—especially when being viewed and interpreted by large, distributed design teams. There have been dozens of useful software patterns already identified, many of which are in common use today. One of the most common is the Observer pattern that is used in almost every modern user-interactive software application (see Figure 1).
Applying patterns to systems architecture is an emerging technique as well, with a few authors and researchers now investigating and documenting them. Rather than focusing on detailed algorithmic or procedural issues, patterns at the systems or enterprise-level work with high-level concepts and network structures. These kinds of patterns can assist architects in creating more understandable views of their enterprise, systems, and applications.
Ad Hoc Pattern Application
Currently, state of the art for most pattern use in modeling tools is a simple copy-and-paste technique. That is, when a model builder recognizes that a particular diagram or system component might be addressed with a known pattern, he or she selects an appropriate pattern from a library and uses the modeling tool to apply it onto the diagram. The modeling tool may automatically access the pattern's definition and prompt the user to fill in the names for placeholder items.
In more advanced cases, it may even analyze the existing diagram in an attempt to automatically apply the pattern to elements already displayed or preselected by the user. These attempts at automation return varying degrees of success, but in all cases it greatly complicates what was once a simple model. There is even more confusion if the tool tries to apply a copy-and-paste pattern to dynamic parts of a model, such as executable activity diagrams and state machine diagrams.
While the copy-and-paste approach has some degree of practicality and success, it falls apart when the same pattern needs to be applied to a large number of model elements and/or diagrams (sometimes called a crosscutting pattern). Even with the previously described automation, there just isn't enough rigor to formally ensure or prove accurate and thorough coverage. Just one missed or inappropriately applied pattern can be enough to seriously undermine the modeled application's accuracy and efficiency.
Back to top