Redundanzen sind generiert (alle falsch oder alle richtig) → weniger Fehlerpotential
zweites Technologiemapping (Mockplatform) für Tests
wann lohnt es sicht
je größer das System je mehr Benefit
3 - 5 Leute für ein paar Monare → lohnt es sich
Produktlinien (es wäre leichtsinnig das dort nicht zu benutzen) → ist ja bei den meisten VW Systemen der Fall (sehr langer Lifecycle)
Vorgehen
Incrementelle Entstehung der Sprache
typisch
Komponenten
Komponenten bieten Service (Interface) an
Interfacebeschreibung
Komponenten benutzen Services
Komponenten instanzieren
instanziere Komponenten verknüpfen
Architecture description Language (generisch) vs. spezifisch (DSL)
mit DSL bin ich sehr viel näher an der Domäne
bei generischer Sprache habe ich mehr als ich brauche und mir fehlt eventuell noch was
generisch: wie verbiege ich die UML damit ich das ausdrücken kann was ich ausdrücken will (sterotypisieren)
auch ein Teil der Geschäftslogik kann mit der DSL beschrieben werden
grafische Beschreibung vs. textuell
textuelle sind erweiterbarer
versionierung (diff, merge, …)
man kann auch visualisieren (Bilder generieren)
produktiver
Umstrieg von JMS auf Webservice → Nachrichtenstruktue bleibt die gleiche → dann ändert sich nur der Generator und der generierte Code → der hangeschriebene Code nicht…
DSL
Archiktektur
Fahrkarten (mit Hund aber ohne Fahrrad)
Zustandsmaschinen
damit es sich lohnt muss es ausreichend oft vorkommen
Domain Specific Language
sich selber eine Sprache bauen die einen bei einem bestimmten Aspekt der Systementwicklung helfen
da Sprache genau auf das abgestimmt ist was man beschreiben will (die Domäne)
Verhalten, Strukturen, …, kurz und prägnant ausdrücken
Domänen
Architektur (-konzepte) per DSL beschreiben
fachliche Natur
Telefontarife, Abrechnungsmodalitäten
Beschreibung von Versicherungsverträgen
Enbedded SW Entwicklung
Zustandsmaschinen
Low Level Bitmanipulation
Kommunikation über verschiedene Bussysteme
Echtzeitanforderungen (Timing)
Domäne ist nicht ausschließlich fachlich sondern auch technisch (beides möglich)
von den Programmierern eingebracht
auch von Fachabteilung eingebracht
aber Domäne hat immer bestimmten Fokus (vs. general purpus)
DSL hat weniger code → besser lesbar
Trennung von Fachlichkeit und Technik
einfachere Integration der Fachler (Fachbereich) - könnte gemeinsam mit einem Entwickler die DSL aufschreiben
interne und externe DSL
intern: in Programmiersprache eingebettet (Ruby, Metaprogrammierung) → bei Java (noch-?) nicht möglich
extern: eigenständige Sprache → und dann generieren