Richard Godfrey  
Bonjour mes amis! Bonne année! (I always knew my French O level would come in handy one day :-))

Software development is a funny old business - hard to estimate, often slow to build, sometimes error prone and typically expensive. When other 'crafts' have met the same issues they have 'industrialised' to overcome these hurdles, and it's certainly not unusual for people to compare the building of software with other construction or manufacturing industries, suggesting that the 'industrial revolution' of the software industry is well overdue.

'Software Factories' is Microsoft's approach, which aims to drive a 'mass customisation' of software development. The concept relies on the good old architecture principle of raising the level of abstraction and reducing the gap between the requirements and the platform by focusing on the specifics of the problem to be solved.

Whether it's English, French, C# or UML, we have a variety of languages which help us communicate in an efficient way for the particular circumstances (or domain) we're in.

Having a vocabulary and/or schematic that is specific to the problem in hand makes the problem much easier to deal with. For example, , building a graphical UI is made a lot easier when you have a platform and toolset such as Visual Studio which exposes pre-built controls, events and so on. Conversely, without the language, platform and tool support, the problem becomes very complex indeed.

So, what if we apply this thinking to other problem spaces? What if we want to provide languages, platforms and tools that are 'domain specific' to provide focus and simplification to the problems that we want to solve?

Visual Studio 2005 takes the first steps towards Domain Specific Languages (DSLs) with its built in designers such as the 'Logical Data Centre' designer. This provides a DSL for defining the logical layout of a Data Centre which can then be used to determine if a distributed system can be deployed effectively in that environment. This article can give you more details as to how this works.

If you're thinking that this is a feature of the tool and so has no impact in your particular business domain, then think again. We're working to make sure that you can build your own Domain Specific Language and model your problem space in its own terms. Take a look at the results coming out of the team based in Cambridge where you will find a link to our first community technology preview for building your own DSLs!

Best wishes for 2005!

Au Revoir!