We're having a week long meeting for the Microsoft Architects from around the world, this week, and the first sessions started today; Sunday. I'll be speaking on Monday, then off to the SWIFT annual SIBOS conference to talk about convergence of Industry Standards, then back by then end of the week to sit in on the annual Microsoft Architectural Advisary Board.
This afternoon though I took in Jack Greenfield's talk on Domain Specific Languages (DSL) and Software Factories. Jack has been around this type of design space for a while, in fact he used to be the chief architect at Rational so he has seen the (sometimes not so pretty) inside of things like UML. Actually at Microsoft, working with Jack are folks like Keith Short, Steve Cook (formerly an IBM Distinguished Engineer and a major contributor to UML and UML2), and Stuart Kent who "knows his UML"; amongst many others on the Visual Studio team who are trying to make software architecture easier to do.
Anyway Jack was giving a great review of DSL's and Software Factories. Basically a DSL is a modeling language which models concepts found in a specific domain. A well defined DSL is a powerful implementation language, providing much greater rigor than a general purpose modeling language than UML. Now, before anyone starts ranting "another plot to not do standards", Jack and Steve and others were some of the key people who gave you UML! They know what UML really is and everyone agrees that UML has some good drawing tools (like class diagrams) but what these guys are talking about is more than UML. If anyone is going to OOPSLA in a few weeks, besides seeing a pretty large Microsoft contingent (and it wouldn't surprise me to see some announcements) you'll want to take in a couple of the sessions like the Tuesday afternoon Panel Discussion on Model Driven Architecture (MDA a Year Later) with Steve Cook on the panel, and the Thursday afternoon session "Panel: The Great J2EE vs. Microsoft .NET Shootout".
Back to Jack's presentation this afternoon, and the concept of Software Factories. A Software Factory is "a configuration of languages, patterns, frameworks, and tools that can be used to rapidly and cheaply produce an open-ended set of unique variants of a archetypical product. Software factories are not just about automating software development within an individual organization, however. Broad adoption of Software Factories will promote the formation of supply chains, distributing cost and risk across networks of specialized, and interdependent suppliers. It will also promote software mass customization by increasing value chain integration within each supplier." which is a direct quote from Jack and Keith's new book on Software Factories. It's a very complete book covering DSLs, an in depth review of UML and the total concept of Software Factories. This is a book you'll want on your shelf if you're trying to do more than simply produce some nice diagrams.