Content area
Full text
ABSTRACT
Domain-Specific Modelling is a powerful software engineering approach to building complex software systems. Domain-Specific Languages provide a powerful way of capturing and encapsulating the applications vocabulary and central ideas for whole families of software applications. We describe some domain-specific modelling approaches and techniques based around the application domain of family history or genealogy systems where the central data model is a near tree-like structure. We discuss how: querying; modification; and aggregation patterns of operation can be implemented in a number of ways for this domain application. We explore the scalability of the DSL approach and discuss wider issues in model and language development.
KEY WORDS
software design; tree data; genealogy applications; domainspecific languages.
1 Introduction
Domain specific modelling [23, 39] provides an important software engineering approach to formulating software designs based upon important features such as data models and key data structures for specific application areas. In this article we focus on the application area of family tree storage and analysis software.
Domain Specic Languages (DSLs) [13, 34] are little programming languages, that are often customizable [4] and are typically designed for use around exclusively around a chosen domain. Current popular general purpose languages such as C, C# and Java all focus on the implementation level [6, 18] of software at machine or virtual machine level. DSLs aim to provide what can be seen as a suitable compromise between hard to express concrete machine executions at implementation level and hard to execute vague human conversation at the solution level. The holy grail of a DSL project is to capture the essence of a family of applications within a DSL to allow separation of concerns from the implementation boilerplate and the solution creativity. This then allows multiple applications to be created without having to waste intellectual capital on the code intelligently automated by the DSLs back end. The separation can also allow for portability across different architectures through using different back ends. Popular examples of DSLs include CSS, Regex, Flex/Bison, Blitz++, Make and JMock expectations. DSLs are not a mere set of libraries allowing you to plug other peoples algorithms into your solution at implementation level but a language which allows writing new algorithms and reusing others in the domains level of abstraction....