Friday, January 25, 2008

DSL and Software Factories: Introducing a New Paradigm

The Standish Group has published a report to describe and analyze the projects in the software industry. Since this industry is so immature, the results presented in the report are so incredible. In that first report (1994) about 15% of the projects were classified as successful projects. Almost 15 year later, the successful projects are only a third of all projects in the software industry.

Considering that the global economy tends to demand more and more software over the next years, emerges the necessity for a new way of develop software, a new modus operandi (mode of operation) in which we can move the software industry from the prehistoric age, from the craftsmanship to a new context based on manufacturing.

The software factory approach leads us to put beyond all empiric methods that brought the software industry to this point. This approach address the economy of scope (completed by the economy of scale) in order to increase the Return on Investiment (ROI). A software factory also allows the introduction of systematic methods developing software. Greenfield defines a software factory as “A software factory is a software product line that configures extensible tools, processes and content, using a software factory template based on a software factory schema, automate the development and maintenance of variants of an archetypical product, assembling and configuring framework-based components (…)”.

Thus, since we know that specific approaches are more efficient (and more limited) than generic approaches, emerges the concept of Domain-Specific Languages (DSL). Deursen defines a DSL as a: “A domain-specific language (DSL) is a programming language or executable specification language that offers, through appropriate notations and abstractions, expressive power focused on, and usually restricted to, a particular problem domain”. Furthermore, in this context, the developers are focused in creating products based on the definition of the problem domain (not being worried about memory variables). So, it’s believed that the productivity, reliability, maintainability and portability of the software will increase so much. Then, the developers can associate semantic transformers to generated code from the models expressed in a DSL form.

Therefore, DSL can be an important tool to allow the software factoring become actually successful. However, we must be critic and introduce some questions:

- How efficient the DSL are to be used in the software factory context?
- Why using DSL instead executable models in UML+Semantics? (Circus? Z? OCL?)
- How many successful case exist using DSL in the industry?

These and many other questions related to DSL and Software Factories are handled by the seminar that I present in the “Advanced Seminars in Software Reuse”.


Yguarat� C. Cavalcanti said...

Good post Allan!
I believe that DSLs are a great and powerful tools to improve productivity on software development. However, as Vinícius commented in the class, to construct a DSL can be an arduous and expensive task.
According to few DLS examples i know, i think that when the domain is small and not much complex, it can be a great deal to construct a DSL. For example, the Bash (DSL for manipulating files in command line) of most Linux environments and Regular Expressions are good examples of succefull DSLs.

Allan Araujo said...

Hi Yguaratã,

I have a particular interest in the "Game" domain. There's a wide spectrum of different kinds of game, such as mobile, pc, console, sport, action, rpg, 2D, 3D, casual, triple A, ...

In this context, I'm focused in discovery an optimal solution to the game development considering many factors as ROI, reusability, reliability, mantainability, etc.

We cannot disconsider some solutions that are used by the industry today, like engines (e.g. Torque, Unreal, etc.)

DSL is only a new proposal to address the maturity that the software industry (game industry, in a particular way). I actually believe that we must try many different approaches to discover the best form and practices to our industry, to our work.