1 / 54

A Family of Languages for Architecture Description

A Family of Languages for Architecture Description. DSM’08 @ OOPSLA 2008. Markus Voelter ( voelter@acm.org , www.voelter.de ). . Context. Architecture is often non tangible or technology specific. Architecture DSL. As you understand a nd develop your Architecture ….

rollin
Download Presentation

A Family of Languages for Architecture Description

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. A Family of Languages for Architecture Description DSM’08 @ OOPSLA 2008 Markus Voelter(voelter@acm.org, www.voelter.de)

  2. Context

  3. Architecture is often non tangible or technology specific

  4. Architecture DSL

  5. As you understand anddevelopyour Architecture…

  6. Develop a languageto express it!

  7. Language resemblesarchitecturalconcepts

  8. We express theapplication(s) withthelanguage.

  9. Textual Syntax: We know how this works from our experience with code.

  10. Textual Syntax: We know how this works from our experience with code. Editors areeasy to build.

  11. Textual Syntax: We know how this works from our experience with code. Editors areeasy to build. Integrates well with existing Version Control Systems etc.

  12. componentDelayCalculator { providesIDelayCalculator requiresIInfoScreen } componentInfoScreen { providesIInfoScreen } componentAircraftModule { providesIAircraftModule requiresIDelayCalculator } interfaceIDelayCalculator {} interfaceIInfoScreen {} interfaceIAircraftModule {}

  13. componentDelayCalculator { requires screens[0..n]: IInfoScreen … } componentInfoScreen { provides default: IInfoScreen } instance dc: DelayCalculator instance screen1: InfoScreen instance screen2: InfoScreen connectdc.screens to (screen1.default, screen2.default)

  14. interfaceIAircraftStatus { onewaymessagereportPosition (aircraft: ID, pos: Position ) request-reply message reportProblem { request (aircraft: ID, problem: Problem, comment: String) reply (repairProcedure: ID) } }

  15. structFlightInfo { from: Airport to: Airport scheduled: Time expected: Time … } replicatedsingleton flights { flights: FlightInfo[] } componentDelayCalculator { publishes flights } componentInfoScreen { consumes flights }

  16. interfaceIAircraftStatus { onewaymessageregisterAircraft(aircraft: ID! ) onewaymessageunregisterAircraft(aircraft: ID! ) onewaymessagereportPosition(aircraft: ID!, pos: Position! ) request-replymessagereportProblem { request (aircraft: ID!, problem: Problem!, comment: String!) reply (repairProcedure: !ID) } protocolinitial = new { state new { registerAircraft => registered } state registered { unregisterAircraft => new reportPosition reportProblem } } }

  17. When a graphical notation isbetter, youcanvisualize.

  18. Graphviz

  19. Via M2M Read-Only Auto-Layout Drill-Down

  20. Textual DSLs vs. Graphical vs. Visualization

  21. I‘vedone real project workthisway!

  22. Currently in usewithfourofmycustomers

  23. Challenge

  24. New language foreach system?

  25. Common Base?

  26. Reusable Language Modules?

  27. LanguageFamily?PLE?

  28. Solution Approach

  29. Identify common, reusable architectural abstractions(Experience, Patterns)

  30. Define syntax

  31. Use PLE to configurecustom DSL

  32. ComponentsHierarchical, Stateless/ful, Persistent, Threadsafe, Parameters, RuntimeInstantiation, Active

  33. Interfaces RPC, Messaging,Async, Pub/Sub, Exceptions, Data Types, DBC, Protocol State Machines

  34. Ports • Uni/Bidirectional, Caridinalities, Optional/Required

  35. Connectors • Static, Dynamic, Lookup, • Failover, Backup, Multi

  36. Data Replication • Realtime, On Demand, 1..1, 1..n

  37. Solution Tooling

  38. DSL Editors BuiltwithEclipseoAWXtext

  39. Variability is expressed as a feature model in pure::variants

  40. Select Features for your language variant

  41. Results in a DSL incl. fancy editor (code completion, constraint checks, outline, folding, cross-file nav)

  42. Customization: Add you own specific Language elements (beyond what the configuration supports)

  43. Tool Implementation

  44. Grammar Elements connected to feature models

  45. Joinpoints to which more grammar can be “advised”

More Related