>>MICROSOFT, DSLs AND THE OMG
For years, I've stated that the Unified Modeling Language (UML) isn't sufficient for business application development. Every single application I've ever built had a user interface on the front end and a database on the back end, and implemented a large number of business rules. Still, after all these years, we have no standard way to model these aspects using UML -- and this is just the tip of the modeling iceberg. To be fair, many proprietary approaches have been suggested over the years, including my own physical data modeling profile, and the OMG currently has a task force working on a business rule profile. However, many basic modeling needs still aren't addressed by UML, and it's unlikely they will any time soon.
Luckily, the OMG isn't the only modeling game in town. Microsoft has struck out on its own, a strategy that has clearly served it well in the past, and is suggesting a new approach to modeling: Domain Specific Languages (DSLs). As the name implies, a DSL is aimed at addressing a specific task. For example, you could define a DSL to model a Web services-based architecture or the physical schema of a relational database. This is a far different approach than UML's general, wide-purpose models. For example, UML class diagrams can be used for conceptual modeling, object-oriented analysis modeling, object-oriented design modeling, logical data modeling and physical data modeling. DSLs can be visual or textual, and are described in detail in the book Software Factories (see review below), and the concept is being implemented in the upcoming version of Visual Studio.
You probably produce informal DSLs all of the time. Those whiteboard sketches that you create to explore portions of your system design are arguably DSLs, as are the freeform Visio diagrams you design because your UML-based modeling tool just doesn't support what you need to do.
A physical data model (PDM) describing a relational database schema is a good example of a formal DSL. A good PDM is narrowly focused, specifying the schema of a single database. It also models specific database features: An Oracle PDM will differ slightly in notation and usage than a DB2 PDM because each product offers slightly different features.
Will DSLs be successful? I suspect so. More and more people in the industry are realizing that UML just doesn't reflect the true needs of application developers, and that OMG is struggling to evolve UML in a timely manner. Yes, UML class diagrams and sequence diagrams are useful -- at least subsets of the notation are -- but the rest of UML seems to be used infrequently.
I believe that the growing popularity of DSLs reflects the normal lifecycle of modeling techniques. In the 1970s, methodologists introduced a plethora of diagramming techniques for building systems using procedural technologies. Various forms of process diagrams, flow charts, data diagrams and structure charts evolved over time. The 1980s was a time of Darwinism for modeling techniques in the IT marketplace -- our structured analysis and design notations were consolidated down to a mere handful. In the late 1980s and early 1990s, we saw an explosion of object-oriented modeling techniques, in part due to the changing technology base as well as to a growing realization that structured modeling techniques weren't as effective as we'd hoped. The mid- to late 1990s saw the emergence of the UML because we realized that we didn't need 20 different object notations, nor did we need a handful -- instead, we needed just one. Fast forward to today. We've come to realize that UML isn't as effective as we'd hoped, but have yet to witness another explosion of modeling techniques.
I suspect that over the next five years, we'll see the emergence of a wide range of DSLs. Many will be based on UML subsets and older structured techniques -- after all, why reinvent the modeling wheel? We'll also see several completely new ideas, approaches that would probably never have been developed via a committee but instead could emerge only through practice. Eventually, we'll realize that we have many versions of the same thing. I've already seen several different ways to do user-interface flow diagramming and Web services diagramming, for example. Will the inevitable consolidation process be driven by market forces, as we saw in the 1980s, or via an industry group, as occurred in the 1990s? Or perhaps open source will provide a third alternative. Time will tell.
--Scott W. Ambler
Software Factories describes a strategy for industrializing software development, viewing the process as a configuration of languages, patterns, frameworks and tools for building and deploying systems. Interestingly, the book considers models as first-class development artifacts, not just documents. Unlike other approaches to Model Driven Development (MDD), such as OMG's Model Driven Architecture (MDA), software factories use DSLs and not the more general UML. To me, the book's value lies in its description of a viable development strategy supported by Microsoft, a company with a proven track record in successful software development and the ability to support the methodology via its Visual Studio toolset. If you're a Microsoft shop, you need to take this book seriously.
Software Factories: Assembling Applications With Patterns,
Models, Frameworks, and Tools by Jack Greenfield,
Keith Short, Steve Cook and Stuart Kent (Wiley, 2004)
The UML and Beyond
The Unofficial UML Physical Data Modeling Profile shows that
it's possible to open source the development of a UML profile.
I've posted a summary of all 13 UML 2 diagrams. Think of it
as a free online version of UML Distilled.
For a more comprehensive lists of potential models available
to you, visit the Agile Models Distilled page at
Find MS Visual Studio home page at
For tips on software modeling on whiteboards, read the essay
The Agile Alliance homepage is the best starting point for
anyone interested in learning more about agile software
The principles of Agile Modeling are described at
The practices of Agile Modeling are described at
Check out the Agile Modeling mailing list at
Get agile modeling training resources at