, University of Arizona
, University of Maribor
, Athens University of Economics and Business
Pages: pp. 15-18
The landscape of software engineering is littered with languages that were supposedly the next great thing but failed to take the development world by storm. In contrast, many tools actually have changed the technical space in which certain domains expect to operate. Simulink and LabView are touchstones for designers in signal processing and in control. SolidWorks is the lingua franca of mechanical engineers and roboticists building physical devices. Embedded-hardware developers passionately support either VHDL (VHSIC Hardware Description Language)
or Verilog. Some of these tools use textual languages, whereas others follow graphical notations.
Most of us outside these domains have never used these tools or languages, and more than a few of us might never have heard of them. Yet these tools are successful in their niches because each one
Domain-specific techniques, languages, tools, and models aren't new: Fortran and Cobol can easily be viewed as domain-specific languages for scientific and business computing, respectively. Their domain is just very wide. What has changed is the technology for creating domain-specific languages (DSLs). Now it's easier to define languages and get tool support for narrower domains—for example, specifying insurance products or developing home automation systems. Such focus offers increased abstraction, making development faster and easier.
In domain-specific approaches, developers construct solutions from concepts representing things in the problem domain, not concepts of a given general-purpose programming language. Ideally, a DSL follows the domain abstractions and semantics as closely as possible, letting developers perceive themselves as working directly with domain concepts. The created specifications might then represent simultaneously the design, implementation, and documentation of the system, which can be generated directly from them. The mapping from the high-level domain concepts to implementation is possible because of the domain specificity: the language and code generators fit the requirements of a narrowly defined domain.
Here's a checklist for determining whether a problem merits a DSL&M (domain-specific languages and modeling) approach:
The more of these characteristics the problem exhibits, the more likely it will merit a DSL&M solution. However, in some cases, only one characteristic might apply to a problem, but that characteristic is significant enough for the problem to merit a DSL&M solution. Such a trade-off must be carefully considered.
DSL&M allows raising the level of abstraction to hide today's programming languages, in the same way that today's programming languages hide an assembler. Two issues, though, are how much effort goes into developing the domain-specific infrastructure and how long you can use it with your domain.
When amortizing the effort of using DSL&M solutions, you must consider the entire life cycle:
You must also weigh that entire effort against these issues:
If you determine that DSL&M is an appropriate choice, you're ready to select from the various tools to make your design and implementation plan concrete.
The key way to leverage the benefits of DSL&M approaches is to look for opportunities to employ them. Refuse the bland conformity of a general-purpose language, and always search for a better way to code a specific requirement. If you find that the general-purpose language's abstractions can't provide the expressiveness you need, it's probably because a DSL is trying to get your attention. Similarly, if you find that you frequently describe your designs using visualizations that are clear to implementers but aren't part of the UML standard, you're itching for a form of domain-specific modeling.
Common DSL&M tools include
Designing and implementing a small DSL from scratch is often quite easy. Scripting languages make it straightforward to parse a simple line or XML–based format into a general-purpose language (or another DSL) for existing compilers. In the right hands, this approach can be extremely powerful.
Talking about how good a technology could be is nothing compared to showing results. DSL&M solutions have produced many significant results in various domains, including automotive manufacturing, digital signal processing, mobile devices, telecommunications, home automation, and electrical utilities. In terms of quantifiable improvements, Nokia has reported 10× productivity improvement from coding to DSM, 1 Panasonic has reported 5× improvement, 2 Lucent has reported 5× to 10× improvement depending on the domain, 3 and empirical studies have reported 3× improvement—with a significance level of 99 percent. 4
DSL&M technologies are also qualitatively improving design and implementation by reducing development resources, increasing capability, and changing how systems interact. This rec-ord extends past academic problems to include large-scale US government acquisitions, 5 automotive 6,7 and avionics 8 software, command and control systems, 4 secure networks, 9 information-integrated education, 10 medical treatment, 11 autonomous-vehicle development, 12 and many other domains (for examples, see www.dsmforum.org/cases.html). This extends the information technology impact of DSL&M approaches, which has spawned innovations in software product lines.
… but when DSL&M approaches are applicable, they can greatly decrease the cost of developing software and systems. DSL&M technologies aren't a panacea, and in many cases the initial effort required to create a DSL&M solution might exceed the effort to apply the general-purpose solution. However, the effort that goes beyond the code's development, including maintenance and documentation, often outweighs initial cost estimates. When calculating a DSL&M solution's costs, you must consider the whole development lifetime. Such issues need careful examination, to determine whether the DSL&M infrastructure's contributions can be amortized past the initial development.
As new application areas embrace the impact of software, the need exists for more and different kinds of nails. This opens the door to different kinds of languages, models, and tools that can make an immediate impact in the area. Given the low overhead needed to create DSL&M solutions, they can enable innovative designers to rapidly develop high-impact solutions.