Jochen Seemann's Blog

The first technical preview

Today, we are making available the first installment of our Domain-Specific Language tools as a technical preview. Please note that this is work in progress and not a beta or even a final release. To put this all in context, let’s examine how we got here ...

Developers who are using UML, data modeling or business process modeling tools are often faced with the need to personalize or customize these tools. They turn them into domain-specific, company-specific and even project-specific modeling tools. They modify what a diagram shows and what it means, and they add code generators, report generators, and functionality to do useful things with their models. Often they will write custom code to import and export their models. In some cases, they even devise their own interpretation of standard languages like UML. But in other cases, a developer may simply be reusing a pattern of code with a template language or XML schema for which he writes a code generator for specific projects. Developers who are interested in using models and generators like this are indulging in model-driven development as a way to achieve higher productivity. We believe that for this development approach to be successful, it is necessary to enable developers, both tool builders and tool users, to create their own custom and problem-specific modeling tools with little effort.

Our 'Domain-Specific Language (DSL) Concepts Editor' is the first step along this path. Today, you can download a tool that you can use to describe the concepts in a problem domain as the basis for a modeling tool or graphical designer. It is itself a graphical tool built on top of our designer platform and it is completely integrated into Visual Studio. For example, if you need a business process modeling tool, this editor allows you to describe the concepts specific to the way you like to model your business processes. If you are building a statechart tool, you can describe what a state is, the properties a state has, what kinds of states exist, how transitions between states are defined, etc. Of course, the notion of a statechart used to describe the status of contracts in an insurance company and the notion of a statechart used to describe user interaction amongst pages on a website are similar, but different. With the ‘DSL Concepts Editor’ you can specify exactly the definition of statechart concepts you need in your tool.

Our intention is to provide you with tools to build graphical designers that are focused on specific aspects of application building. However, this does not necessarily mean that you need to invent entirely new notations. You can use the same well-known notations for statecharts in these custom tools, but you will have the freedom to extend or redefine the notation, and describe precisely what the notation means in your problem domain. The 'DSL Concepts Editor' also enables you to define concept models that are not necessarily used in graphical designers or modeling tools. We will explain these scenarios and how this can be achieved in a white paper later this year.

Today is the first step. Over the next few months, we will make more white papers, documentation and additional tools available.

Published Friday, November 05, 2004 7:51 PM by JochenS
Filed under:

Comments

 

Rob Caron's Blog said:

November 5, 2004 7:58 PM
 

saurabh nandu said:

Sounds very intresting!! Link to the download?
November 6, 2004 1:19 AM
 

David Boschmans' Weblog said:

First Technical Preview of DSL-tools available
November 6, 2004 5:59 AM
 

Damon Carr, CEO agilefactor said:

Jochen,

As a long time advocate of 'Software Product Line' and 'Software Factory' concepts, I can say this is a historic moment. Before I understood the magnitude of what you were achieving I was rather confused about your decision to move away from UML. Now I know better. You had no choice if you were to succeed in the strategic moves you are making here I believe.

We plan to leverage as a company the DSL in possible an all-encompassing way, depending on the realization of the possibilities, especially in Financial Services, our CORE domain. We have been waiting for this day for a long, long time.

We are a .NET company that hires an incredibly select few (about 1 in 100) who have mastered .NET (C#) in all deployment scenarios, Software Engineering best practices such as a complete dedication to the teaching and application of Design (and Analysis Patterns) from the GoF and far beyond, Refactoring to Patterns (and of course Refactoring itself), UML as an enabler for many unintended applications (we offer a free .NET Assembly to XMI File Creator tool on our site for example which will soon be offered as a web service), Aspect Oriented Programming, etc. My book will be published in a few months that will offer significant advancements based on over 8 years of dedicated Agile Focused development, 21 years of software development, and a fundamentally new Agile process that we believe will gain high penetration in the market. For more details contact me directly as most of the breakthroughs we have proven are highly confidential.

This technology that you have unleashed has the potential to bring us out of the horror of the statistics that plague our industry and have the potential to actually move software development into being the repeatable, high-quality, low-cost, strategic asset it has tried to be for decades. This could fundamentally shift the probability distribution curve (it is now logarithmic with a high peak and a long right tail – “Waltzing with Bears,” Demarco and Lister) as well as a fundamental shift in scope achievable by very small teams. Scope, Time, Cost, and Quality will be redefined, and custom software may never be the same, if your objectives are achieved.

My company has successfully made breakthroughs that are mere slivers of what your ambitious foundation could become. I am facing an interesting decision as I am finishing the book I mentioned above and I am not sure if this information should make it in. The book is technology agnostic, but this is clearly a Microsoft technology. I think I have no choice but to mention it, but not give it the attention I would want, as it is too early (DSL), as it is not shipping technology. I need to think more on this. However, the book addresses the same problems you are addressing, using very similar techniques to what you describe (but not 100%). As mentioned the book is an Agile process book and I believe will be on the ‘short list’ of the usual suspects in the Agile family (this is an opinion shared by many others with names you know far better then mine).

You say:

"In some cases, they even devise their own interpretation of standard languages like UML. But in other cases, a developer may simply be reusing a pattern of code with a template language or XML schema for which he writes a code generator for specific projects."

I am not a fan of code generators. There are cases where they make sense (say generating type specific collections using CodeSmith in .NET 1.1 SP1, or Typed Datasets) as Intellisence offers great advantages. But when I see 20 Interfaces that all have the same basic ‘contract’, yet differ only in name (say ICustomerSearch, IEquitySearch, etc.) and methods such as (CustomerSearchByID and EquitySearchByID) all generated through some CodeGen tool, I just cringe. All to often code generation is misused, where good Object Oriented Design should be present (for example, the items above are a good example of a Refactoring to Pattern instance covered in the excellent book “Refactoring to Patterns” by Joshua Kerievsky. See (1) for more details.

We have devised something very similar with XML Schema's as mini-rule engines for a particular domain class type. This is occasionally preferable to using a typical factory pattern (for one example) as the XSD can be edited with no recompile (even by business analysts), and we can persist state in XML, transform using XSLT and FO, etc.

Reading your comments just now was exactly what I had hoped to be reading about now.

"We believe that for this development approach to be successful, it is necessary to enable developers, both tool builders and tool users, to create their own custom and problem-specific modeling tools with little effort."

Absolutely. We are always trying to create higher-level abstractions that are domain specific by bending what we have to work with. We now have an incredibly powerful technique which will be clearly superior when done in your environment, as we create as participants in an SOA, individual 'Web Parts' which as knowledge enabled ‘applications’ that can be used by non-UI Web Service participants as well as more typical Web and WinForms users. I believe in my book and in my practice, we have pushed this as far as current technologies allow, yet we are always scanning the landscape to do better. This technology is our next logical leap (not step).

I think the mainstream will have a hard time with this, and I am hoping the economics will be so compelling that it will drive this into the mainstream quickly. It is such a sad state of affairs that today the average developer in say C#, coming from a C++ background with a degree in Computer Science cannot tell you the difference between a Strategy and a Factory. Or the Standish Group studies. It is just so, so bad, where your chances of success as a development manager are stacked against you before you even start. Having a culture of upper management wanting fixed deadlines in project plans and actually believing they are meaningful (which infers their managers can predict the future – which if true, would likely negate the managers need to work in such a hostile environment as they would be likely on a beach somewhere being fanned while drinking a Corona if that were true) must stop.

For example, in my company and process it is never acceptable to talk about a future date without a ‘confidence percentage’. Anyway, off topic but we are just building on the excellent work of others here.



So we have:
• Obvious fallacies of logic
• A lack of taking advantage of what I call the ‘low hanging fruit’ benefit of hiring top developers (shown to offer up to a 28x gain in developer productivity) and loosing a top performer over say 10K a year
• An utter lack of a culture that embraces patterns
• A reliance on Code and Fix environment and a reliance on ’Heroic Efforts’ STILL!

• re not problems for leading Software Engineering organizations, but for the mid-market and the slow to innovate global industries (and amazingly even the highly competitive Financial Services Industry where we focus) I see this almost universally across my work in the US and Western Europe.

"Today is the first step. Over the next few months, we will make more white papers, documentation and additional tools available."

I am devoting a massive strategic effort at my firm around this technology. I plan on nothing less then being a top global partner for Microsoft in this space.

If you ever need feedback 'from the trenches' I am willing to contribute whatever I can to help you succeed, including staff, real-world, examples, training, speaking engagements, etc. I spoke at the ‘Financial Services Developers Conference’ in Redmond and via the groups I list below reach a wide audience.



(1) Unify the interfaces to one interface, create an abstract class that implements it, mark all implementations as virtual in the abstract class and create child classes for your CustomerSearch and EquitySearch (and the others) leveraging as much common code as possible in the parent abstract class, adding a static factory to the abstract class to get the concrete instance, which returns it casted into the type as the abstract class). I do not think I need to elaborate but if anyone is not following this then email me.



Kind Regards,
Damon Carr, CEO and Chief Technologist
agilefactor

Inventor of the Patent-Pending Core Agility Ratio (CAR), a Metric for Agility in Object-Oriented Software
C# Design Patterns Association - Founder and Leader - http://groups.yahoo.com/group/csharpdesignpatterns/
.NET SIG Leader - New York Software Industry Association (NYSIA www.nysia.org)
Professional Member - Association for Computing Machinery (www.acm.org)
Microsoft Certified Partner and Visual Studio Industry Partner Affiliate

agilefactor
80 Broad St.
5th Floor
New York, NY 10004

V 212.837.7788
F 212.859.7359

http://www.agilefactor.com/ http://agiledamon.blogspot.com/
November 7, 2004 12:54 AM
 

Mickey Gousset said:

Finally, an explanation that makes all this DSL talk make sense to me. Thank you!
November 8, 2004 1:34 PM
 

Tech Guru said:

November 8, 2004 10:29 PM
 

Walter Lounsbery said:

Thanks for the Technical Preview!

I am very interested in applying your tools to the domain of Engineering simulation and analysis. If the tools can help model systems from the low-level empirical data to describing constraints and sub-systems, it will be a huge leap forward for a unified way to model systems. Some real-world applications: electrical distribution networks, aircraft simulation, avionics systems, and water distribution networks.

Nearly 15 years ago I lead improvements to aircraft and systems simulation at General Dynamics that are now used every day for the F-22, F-35 and other programs. If you would like some thoughts from the engineering domain, I'd be happy to contribute.
November 18, 2004 9:32 AM
 

christhuraj Fernando said:

I'd be happy to contribute from Insurance Domain.
November 19, 2004 12:43 AM
 

public void Chris() {} said:

December 5, 2004 10:50 PM
 

public void Chris() {} said:

December 16, 2004 9:42 PM
 

Jochen Seemann s Blog The first technical preview | Paid Surveys said:

May 29, 2009 8:12 PM
 

Jochen Seemann s Blog The first technical preview | Portable Greenhouse said:

June 1, 2009 6:23 AM
 

Jochen Seemann s Blog The first technical preview | Portable Greenhouse said:

June 1, 2009 3:39 PM
 

Jochen Seemann s Blog The first technical preview | Cellulite Creams said:

June 8, 2009 11:17 PM
Anonymous comments are disabled

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