There has been a lot of recent discussion about MDA, SOA, UML, graphical notations, etc.:
Radovan, JJ, and Edwin are talking about some presentations from Microsoft.
There is a separate discussion about graphical modeling, UML, and MDA between Eric (also this and this) and Stefan.
Gregor Hohpe has thought about this space, too.
My perspective is that there are a lot of "right" answers.
Domain-Specific Languages
The presentation from Keith Short entitled "Solution Architecture for the Service-Oriented Enterprise" (look part way down the list) got my attention. Keith's presentation covers a lot of familiar ground: BPEL, web services, model-driven architecture, aspect-oriented programming, ..., but he's the first person I've heard talking about domain-specific languages ("DSLs"). (The presentation is roughly equivalent to this article from October 2003.)Here is Keith's definition of domain-specific (modeling) language (slide 14):
Domain Specific Modeling Language
Domain-Specific Abstractions
Narrow Scope
Graphical
Highly Expressive
Coarse-Grained Abstractions
May Be Translated into:
General-purpose programming languages
Specific framework completion
Other modeling languages
For comparison, Martin Fowler has a narrative definition with examples.The idea of a domain-specific language is that there is a trade-off between choosing the right tool for description and choosing the right tool for execution. Complexity comes from ill-matched description and execution, and for common problem domains, it makes sense to build and use special-purpose tools - like using a set of sockets instead of readjusting a crescent wrench. I have a broad perspective on DSLs. A DSL need not be graphical. DSLs can be technical in nature, like the XML-based software build descriptors of Ant or Maven, or a DSL can be higher level, like RosettaNet PIPs or CellML. (DSLs have been created for financial services and device drivers, among other domains.) One way or another, a DSL should be specific to a problem domain and should provide a set of useful, coarse abstractions for working in that problem domain.In the future, there will be many DSLs suited to many different purposes along the software value chain that starts at the business level, and there will be a relatively small number of execution environments (JVM, CLR, etc.) that sit at the end of that chain.
DSLs and BPEL: BPEL is Not Intrinsically Special
This may sound strange coming from the CEO of a company selling a BPEL engine, but there is nothing intrinsically special about BPEL. On the one hand, BPEL is interesting as a DSL for dealing with web services composition by abstracting the mechanics of communication and the flow of control. On the other hand, BPEL is interesting as an export format from modeling environments that will "compile" higher-level (probably graphical) DSLs into BPEL.There is talk of what's left out of BPEL in terms of human interaction, data handling, transformations, etc., and some of that (data handling in particular) needs to be fixed, but the rest of it belongs in some higher-level DSL that maps onto BPEL at the service level.BPEL is special as the industry-affirmed choice of DSL for dealing with web services composition, and it should be developed and assessed with that in mind.
Interaction is Fundamental
Independent of standards and specifications, the interesting question is what abstractions sit at the next-to-last step in the chain above the JVM or CLR, and those abstractions, as opposed to any specific specification, hold the value because any DSL should be a relatively thin addition. In my mind, the next set of fundamental abstractions focus on interaction, specifically defining new interactive capabilities in terms of existing interactive capabilities. (See 2004-04-03.)
Appendix: Viewing the Microsoft Presentations
Viewing the Microsoft presentations can, apparently, be troublesome. For those of you on non-Windows, like me, the transcripts from Keith's talk are available, and thismkdir keithshort
cd !$
curl -O http://www.microsoft.com/seminar/en/20040213solarch04/img\[001-051\].jpgwill fetch the slides for you. (I watched the presentation in VirtualPC without issue.)