Steve Cook's WebLog

  • UML and DSLs

    So is UML really contradictory to DSLs?  Do they really represent different philosophies? I don’t think so.  After all, UML is just a set of domain specific languages.  If you want to model use cases, or state transition diagrams, what other DSLs would you use?

    Software architecture is all about tradeoffs, and there’s obviously one here. On the one hand UML is relatively standard, so that costs of implementation, documentation, training, deployment etc can be amortized across multiple installations.  On the other hand, it may not match your target problem very well.  There are plenty of domains that UML does not encompass.  That is why the OMG has branched out into business modelling.  Database design is another; user interface a third; and we could list many more, including vertical domains - the design of software radio, mobile phone, or insurance systems - and very platform-oriented domains, such as the direct visual depiction of code.

    The UML-oriented approach to DSLs is “profiles” – adding extra data to UML models so that they appear to target more specialized domains than the original UML definitions do.  A frequent question about the DSL approach is the danger of proliferation of different approaches to the same problem, and I think that’s a valid concern.  On the other hand, the UML+profile approach can end up with cumbersome solutions to essentially simple problems, and can lead to ghastly chimeras, like class diagrams with classes labelled “Web page” or “marketing department”.

    To resolve these issues long-term I think we need a new architecture for modelling languages in which the false distinction between UML and DSLs would evaporate.  Widely used languages would be standardized; new languages could emerge and evolve; different languages could be loosely-coupled yet interoperate. To achieve such architecture we first need to understand some basics about language anatomy, such as making an accurate distinction between syntax and semantics.  I'll talk more about this in future postings.

  • Rejoining the OMG – UML and beyond

    Last week I attended an OMG meeting for the first time in almost 6 years.  If you don’t know, the OMG – Object Management Group – is the organization that specifies UML, as well as a lot of related specifications such as BPMN and MOF, and some unrelated ones such as CORBA.  The last time I attended an OMG meeting I worked for IBM and was one of the authors of UML 2.

    I was made extremely welcome: one big hug, and lots of warm handshakes and friendly conversations with smart and committed people.  I gave a presentation about UML 2, which attempted to capture the improvements that I think are necessary to make it really fit for purpose.  This was no different from what I’ve been saying about it ever since I joined Microsoft, but now we’ve rejoined the organization there is a new opportunity to do something about it.  I’m hopeful that my involvement will help to re-energize the UML specification process and we can fix some of the things that people complain about.

    You might well ask why we didn’t do this five years ago.  What’s changed?  I think there are several points.

    Firstly, Microsoft has now made interoperability a priority, and supporting important standards is a reality, e.g. from Ray Ozzie’s keynote at Mix08 : “in today's world of loosely coupled systems, transparency, standards, and interoperability are key”. Another recent example is the Content Management Interoperability Services specification.

    Secondly, five years ago the market was naive about UML – it was often thought of as the “Universal Modelling Language” and surrounded by too much simplistic thinking.  Our entry into the debate with Software Factories and Domain Specific Languages was, I believe, extremely healthy and helped people to grapple with some of the real issues involved in the debate.  In case you wondered, we’re still as committed to those initiatives as we ever were.

    Thirdly, we’re now firmly in the Application Lifecycle Management business, listening hard to our enterprise customers, and they are telling us regularly, loudly and clearly that they want us to support UML in Visual Studio Team System.

    Finally, I think that in 2003 some of the key contributors were simply exhausted by the UML 2 effort.  It didn’t quite produce the lean, mean, powerful construct that many of us were hoping for, and it was very hard work.  It has taken a while for these folks (and quite frankly, for me) to regroup and look into the future.

  • Eyal joins the team

    A slightly belated hello to Eyal who has joined the DSL Tools team in Cambridge. Welcome Eyal!

  • Microsoft joins the OMG

    We've just announced our membership of the Object Management Group.  As Cameron says, I shall be at the upcoming Orlando meeting where I hope to meet up with quite a few old friends from the time when I represented IBM at OMG meetings!

  • Visual Studio 2008 SDK 1.1 has been released

    See the VSX team blog.
  • DSL Book Website updated

    The website for our DSL book has been updated - thanks Gareth.  This includes downloadable versions of the book examples for VS2008.
  • Code Generation 2008

    Slides from the CG2008 conference are posted hereClemens Reijnen blogged about it, and is posting about TeamArchitect UML, with some nice pictures.
  • I’ve got a new job working on DSLs and UML!

    Having spent a year in the Visual Studio Ecosystem team helping to integrate the DSL Tools deeper into the VS SDK, I am moving back to VSTS Architecture Edition to work on their new set of tools for architects, including UML tools, which are built on top of the DSL Tools.  Our leader is Cameron Skinner.  He’s recently blogged about DSL+UML = Pragmatic Modeling, and says 'So this is not a "DSL vs. UML" conversation. This is a "DSL + UML" conversation. And more importantly, this is about meeting our customers where they are and giving them tools that allow them to get to where they need to be. The true innovation in this space is going to be how we can seamlessly connect the two approaches, and how we can make modeling more central to a broader range of people.'

     

    That’s what I’ve been wanting to do for at least a decade now, so I’m really going to enjoy this.
  • Keeping busy

  • A new member of the team!

    Jean-Marc has joined our team!  He brings some great new ideas and energy to what we're doing and I'm already enjoying working with him.

  • Extra entries on the undo stack

    I spent some of this afternoon looking at a problem reported on the VSX forum.  The questioner has customized the designer and is getting multiple entries on the undo stack as a consequence of a single change.  I coded up his example, but in my case I only got a single entry on the undo stack.  What could the difference be?

    The answer may be that there are custom event handlers which listen to store changes and create new transactions.  In the IMS, events are fired when a transaction commits, and are intended for synchronizing state outside of the store, most likely a user interface.  You should not create new transactions in an event handler, because if you do you will indeed get multiple entries on the undo stack.  If you want to synchronize one part of the store with another, you should use Rules: these cause changes to be propagated across the store within a single transaction.  Rules do not need to run on undo or redo, because the complete state of the store, including changes propagated via rules, is undone/redone in one go.

     

  • Getting .NET Framework source code in your VS2008 debugger

    Shawn Burke's blog has full instructions on how to make the .NET reference source code available in your debugger.  I'm working with WPF and this will be really helpful.
  • Known issues in Microsoft Visual Studio 2008 SDK 1.0

    The VSX Team Blog  lists these issues, several of which affect the DSL Tools.

  • Storyboard designer

    The storyboard designer (http://www.codeplex.com/storyboarddesigner) is a great example of how DSL Tools can be used in conjunction with the Visual Studio Shell to create a useful and flexible stand-alone tool.  It says the target audience is VSX developers, VS Shell developers and Visual Studio enthusiasts, but I'd say the target audience is anybody who wants to create a storyboard!  You don't need VS to run it.
  • DSL Tools and Visual Studio eXtensibility are hiring in Cambridge and Redmond!

    If you have great software development skills and want to join the Visual Studio Extensibility team, in UK or USA, Gareth would like to hear from you.
More Posts Next page »

This Blog

Syndication

News

Locations of visitors to this page
Disclaimer

The information in this weblog is provided "AS IS" with no warranties, and confers no rights. This weblog does not represent the thoughts, intentions, plans or strategies of my employer. It is solely my opinion. Inappropriate comments will be deleted at the author’s discretion. All code samples are provided "AS IS" without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.


© 2008 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Microsoft
Page view tracker