ABSTRACT

Computational Science . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 8.3 The Sprat Approach: Hierarchies of Domain-Specific Languages 179

8.3.1 The Architecture of Scientific Simulation Software . . . . . 179 8.3.2 Hierarchies of Domain-Specific Languages . . . . . . . . . . . . . . 181

8.3.2.1 Foundations of DSL Hierarchies . . . . . . . . . . . 182 8.3.2.2 An Example Hierarchy . . . . . . . . . . . . . . . . . . . . . 183

8.3.3 Applying the Sprat Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 8.3.3.1 Separating Concerns . . . . . . . . . . . . . . . . . . . . . . . 186 8.3.3.2 Determining Suitable DSLs . . . . . . . . . . . . . . . . 186 8.3.3.3 Development and Maintenance . . . . . . . . . . . . 188

8.3.4 Preventing Accidental Complexity . . . . . . . . . . . . . . . . . . . . . . 189 8.4 Case Study: Applying Sprat to the Engineering of a Coupled

Marine Ecosystem Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 8.4.1 The Sprat Marine Ecosystem Model . . . . . . . . . . . . . . . . . . . . 190 8.4.2 The Sprat PDE DSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 8.4.3 The Sprat Ecosystem DSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 8.4.4 The Ansible Playbook DSL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

8.5 Case Study Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 8.5.1 Data Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 8.5.2 Analysis Procedure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 8.5.3 Results from the Expert Interviews . . . . . . . . . . . . . . . . . . . . . 195

8.5.3.1 Learning Material for DSLs . . . . . . . . . . . . . . . . 195 8.5.3.2 Concrete Syntax: Prescribed vs. Flexible

Program Structure . . . . . . . . . . . . . . . . . . . . . . . . . 196

8.5.3.3 Internal vs. External Implementation . . . . . 197 8.6 Conclusions and Lessons Learned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

In this chapter, we present a Model-Driven Software Engineering (MDSE) approach called Sprat, which adapts traditional software engineering practices in order to employ them in computational science. The approach is based on the hierarchical integration of so-called Domain-Specific Languages (DSLs) to facilitate the collaboration of scientists from different disciplines in the development of complex simulation software. We describe how multiple DSLs can be integrated to achieve a clear separation of concerns among the disciplines and how to apply Sprat during the different phases of the software life cycle.