Software Architecture is often either imprecise and hard to grasp or technology specific. What you really want is a succinct, precise, technology-independent and tool-processable description of an architecture. In this tutorial we illustrate how textual DSLs can be used to this end. The core idea is to actually develop an architecture language as you understand the architecture, formalizing the growing intuitive understanding into a formal language. This removes ambiguity from the discussion, requires answers to arising questions and results in a more consistent and (re-)usable architecture. The tutorial has three parts: we start with a role play where we showcase how an architecture DSL is developed as part of a discussion about a system's architecture. We actually build an example DSL in real time. In part two we look at some of the concepts, rationales and benefits of the approach, and briefly point to tools that can be used to build languages and associated tooling. The third part looks at how to use the approach for product lines: how to express variability in the architectural descriptions, and how to integrate the DSL with feature-modeling based variability management. The tutorial is for practitioners, by practitioners. It is guaranteed to contain only practice-oriented material.
20. Part 1 A real-word Story 1.1 System Background 1.2 The Starting Point 1.3 What is a language? 1.4 Developing the Language …
21. Part 2 TheoryandConcepts 2.1 What we did in a Nutshell 2.2 Domain Specific Languages 2.3 The Importance of Viewpoints 2.4 Benefits 2.5 Why Textual? 2.6 Model Validation 2.7 Generating Code 2.8 Architecture Analysis Tools 2.9 Standards, UML and ADLs …
22. Part 2 TheoryandConcepts 2.10 Why not use a 3GL? 2.11 My Notion of Components 2.12 Component Implementation 2.13 The Role of Patterns 2.14 Documentation 2.15 Expressing Variability 2.16 PLE – Big Picture 2.17 Process 2.18 Underlying Concepts
23. More Reading: Thispresentationis not suitableforreadingwithoutmetalking in parallel. Youcan find documentsdescribingthecontentat http://www.voelter.de/data/articles/ArchitectureAsLanguage-PDF.pdf http://www.voelter.de/data/articles/ArchitectureAsLanguage-Part2-PDF.pdf
104. namespacecom.mycompany.production { instance dc: DelayCalculator // InfoScreen instances are created and // started in other configurations dynamicconnectdc.screensevery 60 query { type = IInfoScreen status = active } }
138. struct Time { hour: int min: int seconds: int inv hour >= 0 && hour <= 23: “hour must be 0-23” inv min >= 0 && min <= 59: “min must be 0-59” inv seconds >= 0 && seconds <= 59: “seconds must be 0-59” }
157. A DSL is a focussed, processablelanguagefor describing a specific concernwhen building a system in a specific domain. Theabstractionsandnotationsused are natural/suitablefor the stakeholderswho specify that particular concern.
196. I am aware of the usefulness of graphical notations. I am exaggerating here a little bit. But: We’ve been building software with text only for a long time. We know it works.
338. aspect (*) <type> all instancesoftype aspect (tag=bla)<type> all instanceswith tag bla aspect (name=S*) <type> all instanceswhosenamestartswith S