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”.