Alan Cameron Wills - Domain Specific Languages

Models, domain-specific languages, code generation, ....

Move to MSF

I’ve joined MSF – the Microsoft Solutions Framework.  MSF is about providing process “guidance”.

Software development processes are about who does what and in what order – role X writes a spec or a story, role Y writes the software, role Z tests it, etc.  There are heaps of variations: different companies have widely differing sets of roles and responsibilities. In some outfits the workflow is simple: there’s a list of tasks and people pick them off and do them; in some it’s complex, involving multiple stages of work and signoffs.

I put the quotes round process “guidance” because it used to mean a load of narrative text describing the responsibilities of each role – so if you’re a tester, you can look up what to do in each circumstance.  But these days – particularly with the software factories movement – we’re more interested in tooling up the guidance: “guidance” means everything in the user’s environment (particularly Visual Studio) that supports the locally-adopted process.  Work-tracking tools, tools for doing particular tasks like UI design, languages specific to the company’s business, constraints that help you remember to run your tests before you check in, queries that enable you to find how the project is progressing – everything that helps the team work together effectively; and everything that helps them work in the way that’s best tuned to their business.

Visual Studio already supports a lot of this customized process-oriented stuff. GAT provides a way to extend VS so that a developer working on a particular type of job – designing UI or databases or some specific aspect of your project – can invoke tools specific to that type of work.  The DSL Tools provide ways to generate projectfuls of code from notations specific to your business.   On a more process-oriented level, VS Team System lets you track progress of work items and set up a workflow that’s suited to your project’s way of working. 

Customizing and tuning the process to your company’s business is a very important aspect. So a good chunk of my job over the coming months is going to be improving the tools for doing the customization. We’re shifting the emphasis from the narrative style of guidance (though not losing it entirely) to the tooled-up style, and making it easy for people to make the tools suit them.