Thursday, November 17, 2005
Our human civilization rests on the power of abstraction, insofar as the volume of specific cases handled by an abstraction is typically much greater than the overhead of the abstraction mechanism itself.  Charles Simonyi

In part 1 of raising the level of abstraction, I discussed a computer-assisted business process management tool that provided Business Analysts the capability, through a modeling tool, to completely define an application integration solution.  This modeling tool sits on top of Microsofts BizTalk Server integration server product. 
 
The modeling tool is actually a Domain Specific Language (DSL) which is used to configure a software factory schema for a particular application integration scenario.  This software factory schema is then used as input to a software factory template, which configures MSFTs Visual Studio IDE to automatically generate (with minimal coding) and build the application integration solution.  This raising the level of abstraction increases programmer productivity through systematic reuse of pre-built components and for the customer, increases product time to market, increases product quality, and introduces predictability and repeatability to an otherwise CHAOS process.  I call this software industrialization.
 
Whats my point?  DSLs are a key enabler to raising the level of abstraction.  Yet, DSLs are not well known in the software development world.  In my observations as someone that has been in the software development industry for15 years, we typically still code (by hand) at a very low level.  My intent here is to raise the level of awareness of DSLs to programmers to help raise the level of abstraction for producing quality software products through programming with models.  As such, I will introduce some links to help facilitate this awareness.
 
I have a lot of respect for Martin Fowler.  He has written many great books and one of my favorites is, Refactoring: Improving the Design of Existing Code."  Martin has written an excellent paper called, Language Workbenches: The Killer-App for Domain Specific Languages?.  I would suggest this as a starting point for any programmer to grok the idea of what DSLs are and why we, as programmers, should be using them.
 
In Visual Studio 2005, MSFT have added a DSL Toolkit (SDK), which is the same infrastructure used for their Visual Class Designer and Distributed Designers.  With respect to the DSL Toolkit, there are samples that can be downloaded along with an on-line virtual lab  that allows you try it out for yourself at no cost.  Alan Cameron Wills has an excellent site for DSL FAQs  (thanks Alan!).
 
As a final thought to why we should be raising the level of abstraction:
 
The value of an abstraction increases with its specificity to some problem domain.  Michael Jackson 
Thursday, November 17, 2005 12:21:54 AM (Pacific Standard Time, UTC-08:00)  #    Comments [0]
Comments are closed.