Architecture As Language

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    Architecture As Language - Presentation Transcript

    1. Architecture As Language
      MarkusVoelter
      www.voelter.devoelter@acm.org
    2. About
      Markus Voelter
      Independent Consultant
    3. About
      Markus Voelter
      Independent Consultant
      Software Architecture
      DSLs & MDSD
      ProductLines
    4. About
      Markus Voelter
      Independent Consultant
      http://www.voelter.de
      voelter@acm.org
      skype: schogglad
    5. Architecture
    6. Architecture
      DSLs/MDSD
    7. Architecture
      DSLs/MDSD
      ProductLines
    8. Architecture
      DSLs/MDSD
      ProductLines
      This Talk
    9. Architecture
      Whatever has to be consistent throughout a system to satisfy
      requirements and -ilities.
      != granularity
      evolves over time
    10. DSLs/MDSD
      Modeling
      Language Design
      Code Generation
       UML, SysML or ADLs
      here: Textual
    11. ProductLines
      Managing the Variability
      between a family of related,
      but not identical products
    12. Based on actualpracticalexperience
    13. Currently in usewithfourofmycustomers
    14. Benchmarkedby
      suitabilityforuse in today‘sprojects
    15. 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

    16. 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

    17. 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
    18. 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
    19. 1
      A Real-World Story
    20. Customer
      Consultant
    21. Requirements
      Domain Expertise
      Solution Approach
    22. 1.1
      A Real-World Story
      System Background
    23. Flight
      Management
      System
    24. Monitors
      Website
      Aircraft-Module
      Data Center
    25. Distributed
      System
    26. A lotofexperiencewithsystemslikethese
    27. Evolveover 15 – 20 years
    28. Multiple Languages
      Java
      C++
      C#
    29. Technology
      Abstraction
    30. Cannot update
      everythingatonce
    31. Loose coupling
      Versioning
    32. Different Installations
      have different features
    33. Variants
      ProductLines
    34. 1.2
      A Real-World Story
      The Starting Point
    35. Backbone:Messaging
      [Good]
    36. Technology Evaluated
    37. BusinessObject Model
      [Not so good]
    38. Problem:Consistence?
      Big Picture?
      Technology Abstraction?
    39. Huge & Typical
      Problem
    40. Language!
    41. Formal
      Language!
    42. 1.3
      A Real-World Story
      Whatis a language?
    43. INFORMAL
      Set of well-definedterms
    44. INFORMAL
      Stakeholders
      agree on meaning
    45. FORMAL
      Metamodel
    46. FORMAL
      Metamodel
      Grammar
    47. FORMAL
      Metamodel
      Grammar
      Notation
    48. 1.4
      A Real-World Story
      Developingthe Language
    49. Let‘sdefine a formal languagetodescribethesystem‘sarchitecture
    50. Components
    51. Component:SmallestArchitecturally Relevant Building Block
    52. Component:Piece offunctionality
    53. Component:Can beinstantiated
    54. Initial Components:
      Delay Calculator
      Info Screen
      Aircraft Module
    55. componentDelayCalculator{}
      componentInfoScreen {}
      componentAircraftModule {}
    56. Language
      ==
      ConceptualArchitecture
    57. „Program“
      ==
      Application
      Architecture
    58. Conceptual:
      Component
      Application:
      DelayCalculator, InfoScreen, Aircraft Module
    59. DelayCalculator
      receivesdatafrom
      Aircraft Module
    60. DelayCalculator
      forwardsdata
      to InfoScreens
    61. Interfaces
    62. componentDelayCalculatorimplementsIDelayCalculator {}
      componentInfoScreenimplementsIInfoScreen {}
      componentAircraftModuleimplementsIAircraftModule {}
      interfaceIDelayCalculator {}
      interfaceIInfoScreen {}
      interfaceIAircraftModule {}
    63. But wedon‘t
      express interface
      requirements!
    64. Interface provision +
      Interfacerequirement
       Dependencygraph
    65. Essentialfor
      understanding
      andtool-based
      Analysis
    66. componentDelayCalculator {
      providesIDelayCalculator
      requiresIInfoScreen
      }
      componentInfoScreen {
      providesIInfoScreen
      }
      componentAircraftModule {
      providesIAircraftModule
      requiresIDelayCalculator
      }
      interfaceIDelayCalculator {}
      interfaceIInfoScreen {}
      interfaceIAircraftModule {}
    67. Therearemany
      InfoScreens andAircraftModules
    68. Components
      needtobeinstantiated
    69. Instantiation:
      veryimportant
      conceptwhendefininglanguages
    70. componentInfoScreen {
      providesIInfoScreen
      }
      instance screen1: InfoScreen
      instance screen2: InfoScreen

    71. Componets (types)
      arealreadycompatible
      viatheirinterfaces.
    72. OneDelayCalculatortypicallytalkstomany InfoScreens
    73. Ports
    74. Port:
      CommunicationEndpoint
    75. Port:
      OwnedbyComponent
    76. Port:
      Instantiatedalong
      withComponent
    77. Port:
      Can havecardinality
    78. componentDelayCalculator {
      provides default: IDelayCalculator
      requires screens[0..n]: IInfoScreen
      }
      componentInfoScreen {
      provides default: IInfoScreen
      }
      componentAircraftModule {
      provides default: IAircraftModule
      requires calculator[1]: IDelayCalculator
      }
    79. Weshould separate
      portsand interfaces
      byroles!
    80. componentDelayCalculator {
      provides aircraft: IAircraftStatus
      providesmanagementConsole: IManagementConsole
      requires screens[0..n]: IInfoScreen
      }
      component Manager {
      requires backend[1]: IManagementConsole
      }
      componentInfoScreen {
      provides default: IInfoScreen
      }
      componentAircraftModule {
      requires calculator[1]: IAircraftStatus
      }
    81. Enrichmentof Language
       BetterApplicationArchitecture
    82. Howtoactuallyconnectinstances
      andtheirports?
    83. Connectors
    84. Connector:
      Connectstwoormoreportinstances
    85. 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)
    86. How do westructure/organizetheoverallsystem?
    87. Namespaces
    88. namespacecom.mycompany {
      namespace datacenter {
      componentDelayCalculator {
      provides aircraft: IAircraftStatus
      providesmanagementConsole: IManagementConsole
      requires screens[0..n]: IInfoScreen
      }
      component Manager {
      requires backend[1]: IManagementConsole
      }
      }
      namespace mobile {
      componentInfoScreen {
      provides default: IInfoScreen
      }
      componentAircraftModule {
      requires calculator[1]: IAircraftStatus
      }
      }
      }
    89. Systems are a separate viewpoint
    90. namespacecom.mycompany.test {
      systemtestSystem {
      instance dc: DelayCalculator
      instance screen1: InfoScreen
      instance screen2: InfoScreen
      connectdc.screens
      to (screen1.default, screen2.default)
      }
      }
    91. Wedon‘tknowthe InfoScreens statically
      whenthesystemisdesigned!
    92. Dynamic
      Connectors
    93. Dynamic Connector:Discovers target(s) atruntimeusing a naming/trader/registryservice
    94. namespacecom.mycompany.production {
      instance dc: DelayCalculator
      // InfoScreen instances are created and
      // started in other configurations
      dynamicconnectdc.screensevery 60 query {
      type = IInfoScreen
      status = active
      }
      }
    95. Dynamic Wiring
      does not invalidate
      theoverallapproach
    96. Similar Approach
      canbeusedfor redundant connectors
    97. Registration
      Properties forinstances
      used in lookup
    98. namespacecom.mycompany.datacenter {
      registeredinstance dc1: DelayCalculator {
      parameters {role = primary}
      }
      registeredinstance dc2: DelayCalculator {
      parameters {role = backup}
      }
      }
    99. Interfaces aren‘treallydefinedyet
    100. Interface:setofrelated
      messages
    101. interfaceIInfoScreen {
      messageexpectedAircraftArrivalUpdate (id: ID, time: Time)
      messageflightCancelled(flightID: ID)

      }
    102. Data Structures
    103. typedef long ID
      struct Time {
      hour: int
      min: int
      seconds: int
      }
    104. Different kinds
      ofmessages:
      oneway, req/resp
    105. Message Interaction Patterns
    106. interfaceIAircraftStatus {
      onewaymessagereportPosition
      (aircraft: ID, pos: Position )
      request-replymessagereportProblem {
      request (aircraft: ID, problem: Problem,
      comment: String)
      reply (repairProcedure: ID)
      }
      }
    107. Is itreally
      Messages?
    108. ?
    109. Status Updates!
      Flight Plans…!
    110. WrongAbstraction!
    111. Messages aretheimplementation,
      notthearchitecturalintent.
    112. Data Replication
    113. Data Replication
      Define Data
      Updated byfew, readbymany
      Full update, incremental update,invaldation…
    114. New architecturalabstractionisadded
      tothelanguage
    115. structFlightInfo {
      from: Airport
      to: Airport
      scheduled: Time
      expected: Time

      }
       
      replicatedsingleton flights {
      flights: FlightInfo[]
      }
       
      componentDelayCalculator {
      publishes flights
      }
       
      componentInfoScreen {
      consumes flights
      }
    116. More Concise
    117. System derives
      Messages for (full & partial) update, invalidation, etc.
    118. More specifics
    119. componentDelayCalculator {
      publishes flights { publication = onchange }
      }
       
      componentInfoScreen {
      consumes flights { init = all update = every(60) }
      }
    120. We stillneedmessages.
      Semantics?
    121. Pre- and Post-
      Conditions
    122. interfaceIAircraftStatus {
      onewaymessagereportPosition(aircraft: ID, pos: Position ) {
      pre aircraft != null: “aircraft not specified”
      pre pos != null: “position not specified”
      }
      request-replymessagereportProblem {
      request (aircraft: ID, problem: Problem, comment: String)
      reply (repairProcedure: ID)
      pre aircraft != null: “aircraft not specified”
      pre problem != null: “problem not specified”
      postrepairProcedure != null
      }
      }
    123. Common Constraints: Shorter Syntax
    124. interfaceIAircraftStatus {
      onewaymessagereportPosition(aircraft: ID!, pos: Position! )
      request-replymessagereportProblem {
      request (aircraft: ID!, problem: Problem!, comment: String!)
      reply (repairProcedure: !ID)
      }
      }
    125. Message Sequences:
      Protocol State Machines
    126. 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
      }
      }
      }
    127. Invariantsfor Data Structures
    128. 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”
      }
    129. Widelydistributed!Versioning?
    130. Mark upversionsofcomponents
      (andotherstuff)
    131. componentDelayCalculator {
      publishes flights { publication = onchange }
      }
      newImplOfcomponentDelayCalculator: DelayCalculatorV2
    132. componentDelayCalculator {
      publishes flights { publication = onchange }
      }
      newVersionOfcomponentDelayCalculator: DelayCalculatorV3 {
      publishes flights { publication = onchange }
      providessomethingElse: ISomething
      }
    133. TheEnd !
      ofthe Story :-)
    134. None ofthosethingsisnew
      orunique.
    135. But everything
      isexpressedexplicitlyandconsistently, all in oneplace.
    136. 2
      TheoryandConcepts
    137. 2.1
      TheoryandConcepts
      Whatwedid in a Nutshell
    138. As you understand
      anddevelopyour
      Architecture…
    139. Develop a languageto express it!
    140. Language resemblesarchitecturalconcepts
    141. We express theapplication(s) withthelanguage.
    142. Architecture
      DSL
    143. 2.2
      TheoryandConcepts
      Domain SpecificLanguages
    144. Definition
    145. 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.
    146. focussed
    147. processable
    148. language
    149. concern/viewpoint
    150. domain
    151. abstractions
    152. notation
    153. stakeholders
    154. Dimensions
    155. internal
      vs.
      external
    156. compiled
      vs.
      interpreted
    157. customization
      vs.
      configuration
    158. graphical
      vs.
      textual
    159. 2.3
      TheoryandConcepts
      The ImportanceofViewpoints
    160. viewpoint
      A „perspective“ towardsthesystem
    161. Based on a slideby Steve Cook and IEEE 1471
    162. Type
      Deployment
      Composition
    163. 2.4
      TheoryandConcepts
      Benefits
    164. Clear Understanding
      frombuildingthelanguage
    165. Unambigious
      Vocabulary
    166. Conceptsindependent
      from Technology
    167. Programming Model canbedefinedbased on ConceptualArcitecture
    168. Architecture„executable“
      (i.e. morethanrulesanddocs)
    169. 2.4
      TheoryandConcepts
      WhyTextual?
    170. 2.4
      TheoryandConcepts
      … or:why not graphical?
    171. Languagesand Editors
      areeasiertobuild
    172. Languagesand Editors
      areeasiertobuild
      Evolve Language and simple editorasyou understand anddiscussthearchitecture, in real time!
    173. Integrateseasilywithcurrentinfrastructure:
      CVS/SVN diff/merge
    174. Model evolutionistrivial, youcanalwaysusegrep.
      adaptingexistingmodelsasthe DSL evolves
    175. Many Developers
      prefertextualnotations
    176. When a graphical
      notation
      isbetter, youcanvisualize.
    177. Via M2M
      Read-Only
      Auto-Layout
      Drill-Down
    178. Textual DSLs
      vs.
      Graphical
      vs.
      Visualization
    179. Graphviz
    180. Prefuse
    181. 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.
    182. 2.5
      TheoryandConcepts
      Tooling
    183. Severaltoolsavailable.
      Example:oAWXtext
    184. SpecifyGrammar
    185. AntlrGrammarandParserisgeneratedfromthisspecification
    186. Generated Metamodel
    187. SpecifyConstraints
    188. Generated Editor
    189. Generated Editor
      Code Completion
    190. Generated Editor
      Syntax Coloring
      Custom KeywordColoring
    191. Generated Editor
      RealtimeConstraintValidation
    192. Generated Editor
      Customizable
      Outlines
    193. Generated Editor
      Code Folding
    194. Generated Editor
      Goto Definition
      Find References
      Cross-File References
      Model as EMF
    195. Generated Editor
    196. XtextOverview
    197. GrapVizOverview
    198. GrapVizTrafo Code
    199. Another Tool…?
      OSLO
    200. Another Tool…?
      Jetbrains MPS
    201. Another Tool…?
    202. 2.6
      TheoryandConcepts
      Model Validation
    203. Grammaris not
      expressiveenough
    204. More Validation
      Rules Required:Constraints
    205. Simple Examples:
      Name-Uniqueness
      Type Checks
      Non-Nullness
    206. More ComplexExamples:
      Version Compatibility
      Overall completeness
      Quality of Service
    207. context Interface ERROR"interface names must start "+ "with a capital I":
      name.startsWith("I");
      context Component ERROR"Qualified Name "+qualifiedName()+" must be unique" :
      allComponents(). select( c | c.qualifiedName() == qualifiedName() ) .size == 1;
      context Attribute ERROR"no type defined: "+
      type.name:
      visibleInstancesOfType(this, DataType) .contains(type);
      context Connector ERROR"target must be provided port":
      ProvidedPort.isInstance( u);
    208. Precondition I:
      AlgorithmforConstraint
    209. Precondition II:
      All Data Available
    210. 2.7
      TheoryandConcepts
      Generating Code
    211. Sincewealready
      have a formal model….
    212. Generate API
      MapsArchitecturalConceptsto
      Implementationlanguage (non-trivial!)
    213. Implementation
      Implementationonlydepends onthegeneratedprogramming model API
    214. Programming Model
      Generated API + Usage Idioms
      Completely Technology-Independent
    215. Runtime Infrastructure
      Select based on fit wrt. toarchitectural
      conceptsand non-functionalrequirements
    216. Glue Code
      Aka Technology Mapping Code
      Maps API toselectedplatform
    217. Glue Code
      ContainsConfiguration Files forPlatform
      Mightrequire „mix in models“
    218. SeveralPlatforms
      Different Platforms, not Languages
      Support forScaling (non-functionalreq)
      Testing!
    219. Benefits:More EfficientImpl.
      Technology Independent
      Consistence/Quality
      Architecture-Conformance
    220. Code Gen Sequence
      1) Generate API
      2) Write Impl Code
      3) Select Platform
      4) GenerateGlue Code
    221. Separate Models
      forstuff relevant forthe API
      vs. system/deploymentstuff
    222. 2.8
      TheoryandConcepts
      Architecture Analysis Tools
    223. SoftwareTomographySonarJ
      Structure 101
      … andthelike
    224. How do youdescribe
      Architecture?
    225. Constraint-Driven:
      AssemblePackagesinto Components
      Definelayers/columns
      Defineand Check valid Dependencies
    226. You do not get a
      waytodefineandexpress architectural
      abstractionsbeyondthose!
    227. Dependency Analysis
      Anti Pattern Detection
      Metrics
      [Trend Analysis]
      [Visualization]
    228. Police Approach:
      Detect Problems
      After thefact!
    229. Anti Pattern Detection
      Metrics
      Usefulformanuallywrittenpartsofthesystem
    230. Dependency Analysis
      Usefulformanuallywrittenpartsofthesystem
      Constraintsgenerated
      fromthe model.
    231. 2.9
      TheoryandConcepts
      Standards,UML and ADLs
    232. FormalArchitecture Description is not new:
      ADLs, UML
    233. But allofthoseuseexisting, genericlanguages!
    234. Thismissesthepoint!
    235. Tryingto express yourspecificarchitecturewithpredefinedabstractionsis not useful!
    236. Youwanttobuild a languagetocaptureyourownarchitecturalabstractionsasyourlearnthings.
    237. Wherearestandardsuseful?
    238. Peoplehavetolearnarchitecturalconcepts anyway.
    239. Is UML with a profilestill a standardlanguage?
    240. On whichmetaleveldo I wanttostandardize?
      M2 (UML), M3 (MOF)?
    241. Isn‘t a DSLbased on MOFas „standard“ as a profilebased on UML?
    242. UMLProfilesinstead?
      You‘llthinkmoreabout UML-itiesthanyourownconcepts
    243. UMLProfilesinstead?
      Tool integrationissues (repository, diff/merge, versioning)
    244. UMLProfilesinstead?
      Tools areoftencomplex, heavyweight, bloated. Acceptance limited.
    245. UML Generally Useless?
      No. UML canbeusedfordocu-mentation (sequencediagrams, eg)
    246. NB: Youcando all ofthiswith UML!
      However, myexprienceshowsitismuchlessproductiveand agile.
      Ifyouhave a UML-basedorganization, use UML.
    247. 2.10
      TheoryandConcepts
      Why not use a 3GL?
    248. ArchitecturalAbstractionsarenotfirstclasscitizensin 3GLs
    249. Classescanrepresenteverything– especiallywithannotations (metadata)
    250. Problems:shoehorningintoclasses; like UML
    251. Problems:annotations = stereotypes
    252. Problems:limited analyzability(not a model)
    253. Problems:mix architecturalandimplementationconcerns
    254. 2.11
      TheoryandConcepts
      My Notion of Components
    255. DefinitionsAbound:
      A Building Block forsoftwaresystems
    256. DefinitionsAbound:
      Something withexplicitcontextdependenciesonly
    257. DefinitionsAbound:
      Something thatcontainsbusinesslogicandruns in a container
    258. My Understanding:
      Smallestarchitecturally
      relevant building block
    259. My Understanding:
      Black Box - Architecturally
    260. My Understanding:
      All architecturally relevant aspectsspecifieddeclaratively (model)
    261. My Understanding:
      Analyzable, Composablebytools
    262. My Understanding:
      Running in container, providestechnicalservicesatcomponentboundary
    263. The specificstructureandmetadataof a componentdefinedspecificallyforeachproject/system/ productline
    264. Thisiswhatwe do withthe …
      Architecture
      DSL
    265. 2.12
      TheoryandConcepts
      ComponentImplementation
    266. By Default:
      ManualyProgrammingagainsttheProgMod API
    267. Alternatives:
      Generate, based on config
    268. Alternatives:
      Generate, based on config
      State Machines
    269. Alternatives:
      Generate, based on config
      State Machines
      RuleLanguages + Engines
    270. Alternatives:
      Generate, based on config
      State Machines
      RuleLanguages + Engines
      Specific DSL
    271. Tointegratebehavior, createspecificabstractionsin thearchitecture DSL.
      ADD THE CASCADING STUGGF HERE
    272. Note:
      A lotofimplementationcanbegeneratedautomatically (noconfig) fromthe model
      (persistence, serialization, …)
    273. 2.13
      TheoryandConcepts
      The Roleof Patterns
    274. Pattern:
      Proven solutions to recurring problems, including their applicability, trade-offs and consequences.
    275. Architecture Patterns:
      “Blueprint” for a specific architectural style
    276. Architecture Patterns:
      “Blueprint” for a specific architectural style
       Inspires the concepts for architecture DSL
    277. Design Patterns:
      More concrete, moreimplementation-relatedthanarch. patterns
    278. Design Patterns:
      More concrete, moreimplementation-relatedthanarch. patterns
      Typicallydoes not end up in the DSL, but …
    279. Design Pattern:
      More concrete, moreimplementation-relatedthanarch. patterns
      putintothecodegenerator
    280. It‘s not thecodegeneratorwhodecidesabouttheimplementationof a pattern – it‘s still the (generator) developer!
      A Pattern ismorethanthesolution UML diagram!
    281. 2.14
      TheoryandConcepts
      Documentation
    282. The DSL andthe „programs“ aredocumentation.
    283. So I don‘thavetowrite…
      … moredocs?
    284. Not quite.
    285. 1
    286. Grammaris a good formal definition, but not a teachingtool.
    287. Grammaris a good formal definition, but not a teachingtool.
      Tutorials
    288. Tutorials:
      ArchitecturalConcepts (Meta Model)
      Howtousethelanguage
      Howtousetheprogramming model
      (Howtogeneratecode)
      (Howtoaddmanualcode)
    289. Tutorials:
      ArchitecturalConcepts (Meta Model)
      Howtousethelanguage
      Howtousetheprogramming model
      (Howtogeneratecode)
      (Howtoaddmanualcode)
      ExampleDriven!
    290. 2
    291. Grammardescribeswhatthearchitecturelookslike.
    292. Grammardescribeswhatthearchitecturelookslike.
      But: Whyisitthatway?
    293. Rationales
    294. Rationales
      ConceptualArchitecture
      RelatetoGrammar
    295. Rationales
      ConceptualArchitecture
      RelatetoGrammar
      Technological Decisions
      Non-Func. Req.
    296. 2.15
      TheoryandConcepts
      ExpressingVariability
    297. Different Variants
      ofthe System
      for different customers.
    298. How do I
      express
      this in themodels?
    299. Negative Variability:
      Conditionallytakingsomethingaway
    300. Negative Variability:
      Conditionallytakingsomethingaway
      Feature Models
    301. componentDelayCalculator {
      provides default: IDelayCalculator
      requires screens[0..n]: IInfoScreen
      providesmon: IMonitoringfeature monitoring
      }
    302. componentDelayCalculator {
      provides default: IDelayCalculator
      requires screens[0..n]: IInfoScreen
      providesmon: IMonitoringfeature monitoring
      }
    303. namespacemonitoringStufffeature monitoring {
       
      componentMonitoringConsole {
      requires devices:[*]: IMonitor
      }
      instance monitor: MonitoringConsole
      dynamicconnectmonitor.devicesquery {
      type = IMonitor
      }
       
      }
    304. Positive Variability:Conditionallyaddingsomethingto a minimal core
    305. Positive Variability:Conditionallyaddingsomethingto a minimal core
      Aspects
    306. namespacemonitoring {
       
      componentMonitoringConsole …
      instance monitor: …
      dynamicconnectmonitor.devices …
       
      aspect (*) component {
      providesmon: IMonitoring
      }
      }
    307. componentDelayCalculator {

      }
      componentAircraftModule {

      }
      componentInfoScreen {

      }
    308. componentDelayCalculator {

      }
      componentAircraftModule {

      }
      componentInfoScreen {

      }
      componentDelayCalculator {

      providesmon: IMonitoring
      }
      componentAircraftModule {

      providesmon: IMonitoring
      }
      componentInfoScreen {

      providesmon: IMmonitoring
      }
      aspect (*) component {
      providesmon: IMonitoring
      }
    309. Weaver isgeneric:
      workswith all (container)
      model elements
    310. aspect (*) <type>
      all instancesoftype
      aspect (tag=bla)<type>
      all instanceswith tag bla
      aspect (name=S*) <type>
      all instanceswhosenamestartswith S
    311. AO + Features
      namespacemonitoring feature monitoring {
       
      componentMonitoringConsole …
      instance monitor: …
      dynamicconnectmonitor.devices …
       
      aspect (*) component {
      providesmon: IMonitoring
      }
      }
    312. 2.16
      TheoryandConcepts
      PLE – Big Picture
    313. Configuration
      vs. Customization
    314. Customization
      vs. Configuration
    315. Customization
      vs. Configuration
    316. MDSD - Thumbnail
    317. MD-PLE - Thumbnail
      fewer!
    318. MD-PLE: Models
    319. MD-PLE – Thumbnail II
      moreoptions
    320. Variability in theprocesschain
      Transformation AO (oAW)
    321. Variability in theprocesschain
      Generator AO (oAW)
    322. 2.17
      TheoryandConcepts
      Process
    323. Iterate!
    324. Iterate!
      Concepts
    325. Iterate!
      Concepts
      GrammarConstraints
    326. Iterate!
      Examples
      Concepts
      GrammarConstraints
    327. Iterate!
      Generator
      Examples
      Concepts
      GrammarConstraints
    328. Iterate!
      Generator
      Code Completion, etc.
      Examples
      Concepts
      GrammarConstraints
    329. Reviews
      still necessary!
    330. Reviews
      still necessary!
      but simplified, becausearchitectureismore explicit
    331. Architect
      (Team)
      ArchitecturalConcepts
      Grammar, Constraints
      Examples
      Programming Model
    332. Tool
      Engineer
      Editor Customization
      (API) Code Generator
    333. Platform
      Expert
      Glue Code Generator
    334. Application
      Developer
      Uses Language
      Generates Code
      Writes Manual Code against gen. API Code
    335. New
      language
      foreach
      system?
    336. Common
      Base?
    337. Reusable
      Language
      Modules?
    338. LanguageFamily?PLE?
    339. AnotherTalk!
    340. 2.18
      TheoryandConcepts
      Underlying Concepts
    341. Abstraction
    342. Formalize
    343. LimitFreedom
    344. Declaration
      Implementation
    345. Notation
    346. Types & Instances
    347. Viewpoints
    348. Hierarchical
      Decomposition
    349. Translate
    350. Handle
      Crosscuts
    351. Go Meta
    352. Reflection
    353. Automate
    354. Orthogonality
    355. Contracts
    356. IsolateTechnology
    357. Don‘t
      Overspecify
    358. Make Explicit
    359. Platforms
    360. THE END.
      Thankyou.
      Questions?
    SlideShare Zeitgeist 2009

    + Markus VoelterMarkus Voelter Nominate

    custom

    206 views, 1 favs, 0 embeds more stats

    Software Architecture is often either imprecise and more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 206
      • 206 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 0
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories