Thursday, 21 June 2012

What is Model Driven Software Development or Language Oriented Programming

The Language Oriented Programming (LOP) can be defined as follows.

The idea of developing software around the set of DSLs layered on the top of an application framework and auto-generate the framework completion code from the models/programs specified in DSLs using the Code Generator of LWB tools.

  • So LOP include following aspects in its definition 
  • Frameworks are core to LOP and software is developed by extending them. So, the frameworks provide foundation for the software developed by LOP.
  • Intent or requirements of the software are specified at higher level abstractions, closer to the domain, using the integrated set of DSLs.
  • The resultant higher level abstractions (models/programs in DSLs) are processed to generate the framework completion code.
  • Specialized software development IDE, called Language Workbench (LWB), is used to develop software in LOP. Along with the all features of a modern IDE, LWB provides built-in mechanism to define and use the DSLs and Code Generator for any framework.
  • The innovative parts of the framework completion code are hand crafted. The code generator support different mechanisms to preserve this hand crafted code during code regeneration process.


The last aspect clearly shows that LOP is preferred only for the patterned and familiar domains. By the previous software development experience in these domains, we have enough formalized knowledge about their domain concepts and how these concepts are represented in the software code. This domain knowledge will help us to define the DSLs and the Code Generator for the product families in that domain. Any attempts to applying the LOP to the innovative and least patterned domains will result in productivity loss and catastrophe and software failure is inevitable. The rule of thumb is that we must have experience of developing at least three products for a particular domain before we should go to set up a LWB for that domain and start LOP.


The LOP community differentiates between different types of DSLs like internal or external, graphical or textual or compiled or interpreted. The above notion of DSL refers to external compiled DSLs that may be graphical or textual but the textual DSLs are preferred as they are close to how we program software today and how our version control systems deals with 4GL source code now. In the same way most of the LWB tools use the template mechanism to implement their code generators.

No comments:

Post a Comment