SlideShare a Scribd company logo
Architecture As Language
Architecture As Language
Architecture As LanguageMarkusVoelterwww.voelter.devoelter@acm.org
Architecture As Language
AboutMarkus VoelterIndependent Consultant
AboutMarkus VoelterIndependent ConsultantSoftware ArchitectureDSLs & MDSDProductLines
AboutMarkus VoelterIndependent Consultanthttp://www.voelter.devoelter@acm.orgskype: schogglad
Architecture
ArchitectureDSLs/MDSD
ArchitectureDSLs/MDSDProductLines
ArchitectureDSLs/MDSDProductLinesThis Talk
ArchitectureWhatever has to be consistent throughout a system to satisfyrequirements and -ilities.!= granularityevolves over time
DSLs/MDSDModeling Language DesignCode Generation UML, SysML or ADLshere: Textual
ProductLinesManaging the Variabilitybetween a family of related,but not identical products
Architecture As Language
Based on actualpracticalexperience
Currently in usewithfourofmycustomers
Benchmarkedbysuitabilityforuse in today‘sprojects
Architecture As Language
Part 1A real-word Story1.1   		System Background1.2   		The Starting Point1.3   		What is a language?1.4   		Developing the Language…
Part 2TheoryandConcepts2.1   		What we did in a Nutshell2.2   		Domain Specific Languages2.3 		The Importance of Viewpoints2.4   		Benefits2.5   		Why Textual?2.6   		Model Validation2.7   		Generating Code2.8 		Architecture Analysis Tools2.9    	Standards, UML and ADLs…
Part 2TheoryandConcepts2.10    	Why not use a 3GL?2.11    	My Notion of Components2.12  	Component Implementation2.13 	The Role of Patterns2.14 	Documentation2.15 	Expressing Variability2.16		PLE – Big Picture2.17		Process2.18 	Underlying Concepts
More Reading:Thispresentationis not suitableforreadingwithoutmetalking in parallel. Youcan find documentsdescribingthecontentathttp://www.voelter.de/data/articles/ArchitectureAsLanguage-PDF.pdfhttp://www.voelter.de/data/articles/ArchitectureAsLanguage-Part2-PDF.pdf
Architecture As Language
1A Real-World Story
CustomerConsultant
RequirementsDomain ExpertiseSolution Approach
Architecture As Language
1.1A Real-World StorySystem Background
FlightManagementSystem
MonitorsWebsiteAircraft-ModuleData Center
DistributedSystem
A lotofexperiencewithsystemslikethese
Evolveover 15 – 20 years
Multiple LanguagesJavaC++C#
TechnologyAbstraction
Cannot update everythingatonce
Loose couplingVersioning
Different Installationshave different features
VariantsProductLines
Architecture As Language
1.2A Real-World StoryThe Starting Point
Backbone:Messaging[Good]
Technology Evaluated
BusinessObject Model[Not so good]
Problem:Consistence?Big Picture?Technology Abstraction?
Huge & TypicalProblem
Language!
FormalLanguage!
Architecture As Language
1.3A Real-World StoryWhatis a language?
INFORMALSet of well-definedterms
INFORMALStakeholdersagree on meaning
FORMALMetamodel
FORMALMetamodelGrammar
FORMALMetamodelGrammarNotation
Architecture As Language
1.4A Real-World StoryDevelopingthe Language
Let‘sdefine a formal languagetodescribethesystem‘sarchitecture
Components
Component:SmallestArchitecturally Relevant Building Block
Component:Piece offunctionality
Component:Can beinstantiated
Initial Components:Delay CalculatorInfo ScreenAircraft Module
componentDelayCalculator{}componentInfoScreen {}componentAircraftModule {}
Language==ConceptualArchitecture
„Program“==ApplicationArchitecture
Conceptual:ComponentApplication:DelayCalculator, InfoScreen, Aircraft Module
DelayCalculatorreceivesdatafromAircraft Module
DelayCalculatorforwardsdatato InfoScreens
Interfaces
componentDelayCalculatorimplementsIDelayCalculator {}componentInfoScreenimplementsIInfoScreen {}componentAircraftModuleimplementsIAircraftModule {}interfaceIDelayCalculator {}interfaceIInfoScreen {}interfaceIAircraftModule {}
But wedon‘texpress interfacerequirements!
Interface provision +Interfacerequirement Dependencygraph
Essentialforunderstandingandtool-basedAnalysis
componentDelayCalculator {providesIDelayCalculatorrequiresIInfoScreen}componentInfoScreen {providesIInfoScreen}componentAircraftModule {providesIAircraftModulerequiresIDelayCalculator}interfaceIDelayCalculator {}interfaceIInfoScreen {}interfaceIAircraftModule {}
TherearemanyInfoScreens andAircraftModules
Componentsneedtobeinstantiated
Instantiation:veryimportantconceptwhendefininglanguages
componentInfoScreen {providesIInfoScreen}instance screen1: InfoScreeninstance screen2: InfoScreen…
Componets (types)arealreadycompatibleviatheirinterfaces.
OneDelayCalculatortypicallytalkstomany InfoScreens
Ports
Port:CommunicationEndpoint
Port:OwnedbyComponent
Port:InstantiatedalongwithComponent
Port:Can havecardinality
componentDelayCalculator {provides default: IDelayCalculatorrequires screens[0..n]: IInfoScreen}componentInfoScreen {provides default: IInfoScreen}componentAircraftModule {provides default: IAircraftModulerequires calculator[1]: IDelayCalculator}
Weshould separateportsand interfacesbyroles!
componentDelayCalculator {provides aircraft: IAircraftStatusprovidesmanagementConsole: IManagementConsolerequires screens[0..n]: IInfoScreen}component Manager {requires backend[1]: IManagementConsole}componentInfoScreen {provides default: IInfoScreen}componentAircraftModule {requires calculator[1]: IAircraftStatus}
Enrichmentof Language  BetterApplicationArchitecture
Howtoactuallyconnectinstancesandtheirports?
Connectors
Connector:Connectstwoormoreportinstances
componentDelayCalculator {  requires screens[0..n]: IInfoScreen  …}componentInfoScreen {provides default: IInfoScreen}instance dc: DelayCalculatorinstance screen1: InfoScreeninstance screen2: InfoScreen connectdc.screensto (screen1.default, screen2.default)
How do westructure/organizetheoverallsystem?
Namespaces
namespacecom.mycompany {namespace datacenter {componentDelayCalculator {provides aircraft: IAircraftStatusprovidesmanagementConsole: IManagementConsolerequires screens[0..n]: IInfoScreen    }component Manager {requires backend[1]: IManagementConsole    }  }namespace mobile {componentInfoScreen {provides default: IInfoScreen    }componentAircraftModule {requires calculator[1]: IAircraftStatus    }  }}
Systems are a separate viewpoint
namespacecom.mycompany.test {systemtestSystem {instance dc: DelayCalculatorinstance screen1: InfoScreeninstance screen2: InfoScreenconnectdc.screensto (screen1.default, screen2.default)  }}
Wedon‘tknowthe InfoScreens staticallywhenthesystemisdesigned!
DynamicConnectors
Dynamic Connector:Discovers target(s) atruntimeusing a  naming/trader/registryservice
namespacecom.mycompany.production {instance dc: DelayCalculator  // InfoScreen instances are created and   // started in other configurations dynamicconnectdc.screensevery 60 query {    type = IInfoScreen    status = active  }}
Dynamic Wiringdoes not invalidatetheoverallapproach
Similar Approachcanbeusedfor redundant connectors
RegistrationProperties forinstancesused in lookup
namespacecom.mycompany.datacenter {registeredinstance dc1: DelayCalculator {parameters {role = primary}  }registeredinstance dc2: DelayCalculator {parameters {role = backup}  }}
Interfaces aren‘treallydefinedyet
Interface:setofrelatedmessages
interfaceIInfoScreen {messageexpectedAircraftArrivalUpdate          (id: ID, time: Time)messageflightCancelled(flightID: ID)  …}
Data Structures
typedef long IDstruct Time {  hour: int  min: int  seconds: int}
Different kindsofmessages:oneway, req/resp
Message Interaction Patterns
interfaceIAircraftStatus {onewaymessagereportPosition                 (aircraft: ID, pos: Position )request-replymessagereportProblem {request (aircraft: ID, problem: Problem,              comment: String)reply (repairProcedure: ID)   }}
Is itreallyMessages?
?
Status Updates!Flight Plans…!
WrongAbstraction!
Messages aretheimplementation,notthearchitecturalintent.
Data Replication
Data ReplicationDefine DataUpdated byfew, readbymanyFull update, incremental update,invaldation…
New architecturalabstractionisaddedtothelanguage
structFlightInfo {  from: Airport  to: Airport  scheduled: Time  expected: Time  …} replicatedsingleton flights {  flights: FlightInfo[]} componentDelayCalculator {publishes flights} componentInfoScreen {consumes flights}
More Concise
System derivesMessages for (full & partial) update, invalidation, etc.
More specifics
componentDelayCalculator {publishes flights { publication = onchange }} componentInfoScreen {consumes flights { init = all update = every(60) }}
We stillneedmessages. Semantics?
Pre- and Post-Conditions
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  }}
Common Constraints: Shorter Syntax
interfaceIAircraftStatus {onewaymessagereportPosition(aircraft: ID!,                  pos: Position! ) request-replymessagereportProblem {request (aircraft: ID!, problem: Problem!,              comment: String!)reply (repairProcedure: !ID)   }}
Message Sequences:Protocol State Machines
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 => newreportPositionreportProblem    }  }}
Invariantsfor Data Structures
struct Time {  hour: int  min: int  seconds: intinv 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”}
Widelydistributed!Versioning?
Mark upversionsofcomponents(andotherstuff)
componentDelayCalculator {publishes flights { publication = onchange }}newImplOfcomponentDelayCalculator: DelayCalculatorV2
componentDelayCalculator {publishes flights { publication = onchange }}newVersionOfcomponentDelayCalculator:               DelayCalculatorV3 {publishes flights { publication = onchange }providessomethingElse: ISomething}
TheEnd !ofthe Story :-)
 None ofthosethingsisneworunique.
But everythingisexpressedexplicitlyandconsistently, all in oneplace.
Architecture As Language
2TheoryandConcepts
2.1TheoryandConceptsWhatwedid in a Nutshell
As you understandanddevelopyourArchitecture…
Develop a languageto express it!
Language resemblesarchitecturalconcepts
We express theapplication(s) withthelanguage.
ArchitectureDSL
Architecture As Language
2.2TheoryandConceptsDomain SpecificLanguages
Definition
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.
focussed
processable
language
concern/viewpoint
domain
abstractions
notation
stakeholders
Dimensions
internalvs.external
compiledvs.interpreted
customizationvs.configuration
graphicalvs.textual
2.3TheoryandConceptsThe ImportanceofViewpoints
viewpointA „perspective“ towardsthesystem
Based on a slideby Steve Cook and IEEE 1471
TypeDeploymentComposition
Architecture As Language
Architecture As Language
2.4TheoryandConceptsBenefits
Clear Understandingfrombuildingthelanguage
UnambigiousVocabulary
Conceptsindependentfrom Technology
Programming Model canbedefinedbased on ConceptualArcitecture
Architecture„executable“(i.e. morethanrulesanddocs)
Architecture As Language
2.4TheoryandConceptsWhyTextual?
2.4TheoryandConcepts… or:why not graphical?
Languagesand Editorsareeasiertobuild
Languagesand EditorsareeasiertobuildEvolve Language and simple editorasyou understand anddiscussthearchitecture, in real time!
Integrateseasilywithcurrentinfrastructure:CVS/SVN diff/merge
Model evolutionistrivial, youcanalwaysusegrep.adaptingexistingmodelsasthe DSL evolves
Many Developers prefertextualnotations
When a graphicalnotationisbetter, youcanvisualize.
Via M2MRead-OnlyAuto-LayoutDrill-Down
Textual DSLs       vs.     Graphical         vs.       Visualization
Graphviz
Prefuse
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.
Architecture As Language
2.5TheoryandConceptsTooling
Severaltoolsavailable.Example:oAWXtext
SpecifyGrammar
AntlrGrammarandParserisgeneratedfromthisspecification
Generated Metamodel
SpecifyConstraints
Generated Editor
Generated EditorCode Completion
Generated EditorSyntax ColoringCustom KeywordColoring
Generated EditorRealtimeConstraintValidation
Generated EditorCustomizableOutlines
Generated EditorCode Folding
Generated EditorGoto Definition Find ReferencesCross-File ReferencesModel as EMF
Generated Editor
XtextOverview
GrapVizOverview
GrapVizTrafo Code
Another Tool…?OSLO
Another Tool…?Jetbrains MPS
Another Tool…?
Architecture As Language
2.6TheoryandConceptsModel Validation
Grammaris notexpressiveenough
More ValidationRules Required:Constraints
Simple Examples:Name-UniquenessType ChecksNon-Nullness
More ComplexExamples:Version CompatibilityOverall completenessQuality of Service
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);
Precondition I:AlgorithmforConstraint
Precondition II:All Data Available
Architecture As Language
2.7TheoryandConceptsGenerating Code
Sincewealreadyhave a formal model….
Generate APIMapsArchitecturalConceptstoImplementationlanguage (non-trivial!)
ImplementationImplementationonlydepends onthegeneratedprogramming model API
Programming ModelGenerated API + Usage IdiomsCompletely Technology-Independent
Runtime InfrastructureSelect based on fit wrt. toarchitecturalconceptsand non-functionalrequirements
Glue CodeAka Technology Mapping CodeMaps API toselectedplatform
Glue CodeContainsConfiguration Files forPlatformMightrequire „mix in models“
SeveralPlatformsDifferent Platforms, not LanguagesSupport forScaling (non-functionalreq)Testing!
Benefits:More EfficientImpl.Technology IndependentConsistence/QualityArchitecture-Conformance
Code Gen Sequence1) Generate API2) Write Impl Code3) Select Platform4) GenerateGlue Code
Separate Modelsforstuff relevant forthe APIvs. system/deploymentstuff
Architecture As Language
2.8TheoryandConceptsArchitecture Analysis Tools
SoftwareTomographySonarJStructure 101… andthelike
How do youdescribeArchitecture?
Constraint-Driven:AssemblePackagesinto ComponentsDefinelayers/columnsDefineand Check valid Dependencies
You do not get a waytodefineandexpress architecturalabstractionsbeyondthose!
Dependency AnalysisAnti Pattern DetectionMetrics[Trend Analysis][Visualization]
Police Approach:Detect ProblemsAfter thefact!
Anti Pattern DetectionMetricsUsefulformanuallywrittenpartsofthesystem
Dependency AnalysisUsefulformanuallywrittenpartsofthesystemConstraintsgeneratedfromthe model.
Architecture As Language
2.9TheoryandConceptsStandards,UML and ADLs
FormalArchitecture Description is not new:                          ADLs, UML
But allofthoseuseexisting, genericlanguages!
Thismissesthepoint!
Tryingto express yourspecificarchitecturewithpredefinedabstractionsis not useful!
Youwanttobuild a languagetocaptureyourownarchitecturalabstractionsasyourlearnthings.
Wherearestandardsuseful?
Peoplehavetolearnarchitecturalconcepts anyway.
Is UML with a profilestill a standardlanguage?
On whichmetaleveldo I wanttostandardize?M2 (UML), M3 (MOF)?
Isn‘t a DSLbased on MOFas „standard“ as a profilebased on UML?
UMLProfilesinstead?You‘llthinkmoreabout UML-itiesthanyourownconcepts
UMLProfilesinstead?Tool integrationissues (repository, diff/merge, versioning)
UMLProfilesinstead?Tools areoftencomplex, heavyweight, bloated. Acceptance limited.
UML Generally Useless?No. UML canbeusedfordocu-mentation (sequencediagrams, eg)
NB: Youcando all ofthiswith UML! However, myexprienceshowsitismuchlessproductiveand agile.Ifyouhave a UML-basedorganization, use UML.
Architecture As Language
2.10TheoryandConceptsWhy not use a 3GL?
ArchitecturalAbstractionsarenotfirstclasscitizensin 3GLs
Classescanrepresenteverything– especiallywithannotations (metadata)
Problems:shoehorningintoclasses; like UML
Problems:annotations = stereotypes
Problems:limited analyzability(not a model)
Problems:mix architecturalandimplementationconcerns
Architecture As Language
2.11TheoryandConceptsMy Notion of Components
DefinitionsAbound:A Building Block forsoftwaresystems
DefinitionsAbound:Something withexplicitcontextdependenciesonly
DefinitionsAbound:Something thatcontainsbusinesslogicandruns in a container
My Understanding:Smallestarchitecturallyrelevant building block
My Understanding:Black Box - Architecturally
My Understanding:All architecturally relevant aspectsspecifieddeclaratively (model)
My Understanding:Analyzable, Composablebytools
My Understanding:Running in container, providestechnicalservicesatcomponentboundary
The specificstructureandmetadataof a componentdefinedspecificallyforeachproject/system/ productline
Thisiswhatwe do withthe …ArchitectureDSL
Architecture As Language
2.12TheoryandConceptsComponentImplementation
By Default:ManualyProgrammingagainsttheProgMod API
Alternatives:Generate, based on config
Alternatives:Generate, based on configState Machines
Alternatives:Generate, based on configState MachinesRuleLanguages + Engines
Alternatives:Generate, based on configState MachinesRuleLanguages + EnginesSpecific DSL
Tointegratebehavior, createspecificabstractionsin thearchitecture DSL.ADD THE CASCADING STUGGF HERE
Note:A lotofimplementationcanbegeneratedautomatically (noconfig) fromthe model(persistence, serialization, …)
Architecture As Language
2.13TheoryandConceptsThe Roleof Patterns
Pattern:Proven solutions to recurring problems, including their applicability, trade-offs and consequences.
Architecture Patterns:“Blueprint” for a specific architectural style
Architecture Patterns:“Blueprint” for a specific architectural style Inspires the concepts     for architecture DSL
Design Patterns:More concrete, moreimplementation-relatedthanarch. patterns
Design Patterns:More concrete, moreimplementation-relatedthanarch. patternsTypicallydoes not end up in the DSL, but …
Design Pattern:More concrete, moreimplementation-relatedthanarch. patternsputintothecodegenerator
It‘s not thecodegeneratorwhodecidesabouttheimplementationof a pattern – it‘s still the (generator) developer!A Pattern ismorethanthesolution UML diagram!
Architecture As Language
2.14TheoryandConceptsDocumentation
The DSL andthe „programs“ aredocumentation.
So I don‘thavetowrite…… moredocs?
      Not quite.
1
Grammaris a good formal definition, but not a teachingtool.
Grammaris a good formal definition, but not a teachingtool.Tutorials
Tutorials:ArchitecturalConcepts (Meta Model)HowtousethelanguageHowtousetheprogramming model  (Howtogeneratecode)  (Howtoaddmanualcode)
Tutorials:ArchitecturalConcepts (Meta Model)HowtousethelanguageHowtousetheprogramming model  (Howtogeneratecode)  (Howtoaddmanualcode)ExampleDriven!
2
Grammardescribeswhatthearchitecturelookslike.
Grammardescribeswhatthearchitecturelookslike.But: Whyisitthatway?
Rationales
RationalesConceptualArchitectureRelatetoGrammar
RationalesConceptualArchitectureRelatetoGrammarTechnological DecisionsNon-Func. Req.
Architecture As Language
2.15TheoryandConceptsExpressingVariability
Different Variantsofthe Systemfor different customers.
How do I expressthis in themodels?
Negative Variability:Conditionallytakingsomethingaway
Negative Variability:ConditionallytakingsomethingawayFeature Models
Architecture As Language
componentDelayCalculator {provides default: IDelayCalculatorrequires screens[0..n]: IInfoScreenprovidesmon: IMonitoringfeature monitoring}
componentDelayCalculator {provides default: IDelayCalculatorrequires screens[0..n]: IInfoScreenprovidesmon: IMonitoringfeature monitoring}
namespacemonitoringStufffeature monitoring { componentMonitoringConsole {requires devices:[*]: IMonitor  }instance monitor: MonitoringConsoledynamicconnectmonitor.devicesquery {    type = IMonitor  } }
Architecture As Language
Positive Variability:Conditionallyaddingsomethingto a minimal core
Positive Variability:Conditionallyaddingsomethingto a minimal coreAspects
namespacemonitoring { componentMonitoringConsole …instance monitor: …dynamicconnectmonitor.devices … aspect (*) component {providesmon: IMonitoring  }}
componentDelayCalculator {  …}componentAircraftModule {  …}componentInfoScreen {  …}
componentDelayCalculator {  …}componentAircraftModule {  …}componentInfoScreen {  …}componentDelayCalculator {  …providesmon: IMonitoring}componentAircraftModule {  …providesmon: IMonitoring}componentInfoScreen {  …providesmon: IMmonitoring}aspect (*) component {providesmon: IMonitoring }
Weaver isgeneric:workswith all (container)model elements
aspect (*) <type>    all instancesoftype aspect (tag=bla)<type>  all instanceswith tag blaaspect (name=S*) <type>all instanceswhosenamestartswith S
AO + Featuresnamespacemonitoring feature monitoring { componentMonitoringConsole …instance monitor: …dynamicconnectmonitor.devices … aspect (*) component {providesmon: IMonitoring  }}
Architecture As Language
2.16TheoryandConceptsPLE – Big Picture
Configurationvs. Customization
Customizationvs. Configuration
Customizationvs. Configuration
MDSD - Thumbnail
MD-PLE - Thumbnailfewer!
MD-PLE: Models
MD-PLE – Thumbnail IImoreoptions
Variability in theprocesschainTransformation AO (oAW)
Variability in theprocesschainGenerator AO (oAW)
Architecture As Language
2.17TheoryandConceptsProcess
Iterate!
Iterate!Concepts
Iterate!ConceptsGrammarConstraints
Iterate!ExamplesConceptsGrammarConstraints
Iterate!GeneratorExamplesConceptsGrammarConstraints
Iterate!GeneratorCode Completion, etc.ExamplesConceptsGrammarConstraints
Reviewsstill necessary!
Reviewsstill necessary!	but simplified, becausearchitectureismore explicit
Architect(Team)ArchitecturalConceptsGrammar, ConstraintsExamplesProgramming Model
ToolEngineerEditor Customization(API) Code Generator
PlatformExpertGlue Code Generator
ApplicationDeveloperUses LanguageGenerates CodeWrites Manual Code against gen. API Code
New languageforeachsystem?
CommonBase?
ReusableLanguageModules?
LanguageFamily?PLE?
AnotherTalk!
Architecture As Language
2.18TheoryandConceptsUnderlying Concepts
Abstraction
Formalize
LimitFreedom
DeclarationImplementation
Notation
Types & Instances
Viewpoints
HierarchicalDecomposition
Translate
HandleCrosscuts
Go Meta
Reflection
Automate
Orthogonality
Contracts
IsolateTechnology
Don‘tOverspecify
Make Explicit
Platforms
Architecture As Language
THE END.Thankyou.Questions?
Architecture As Language

More Related Content

PPT
COM Introduction
PDF
Component Object Model (COM, DCOM, COM+)
PDF
Comparing IDL to C++ with IDL to C++11
PPT
DCOM Comparison
PPTX
Component object model and
PPTX
Dependency Injections in Kotlin
PDF
D1 from interfaces to solid
COM Introduction
Component Object Model (COM, DCOM, COM+)
Comparing IDL to C++ with IDL to C++11
DCOM Comparison
Component object model and
Dependency Injections in Kotlin
D1 from interfaces to solid

Viewers also liked (7)

PDF
Semiotics in architecture
PPTX
ART100_Fall2016_Class15.1
PDF
Introduction to ARCHITECTURAL LANGUAGES
PPTX
language in architecture
PPTX
Semiotics of architecture
PPTX
ARCH417ArchitectureasSymbolicForm
PPT
Semiotics for Beginners
Semiotics in architecture
ART100_Fall2016_Class15.1
Introduction to ARCHITECTURAL LANGUAGES
language in architecture
Semiotics of architecture
ARCH417ArchitectureasSymbolicForm
Semiotics for Beginners
Ad

Similar to Architecture As Language (20)

PDF
An Introduction to Software Architecture - Summary
PDF
What Makes Objective C Dynamic?
PPT
Oo Design And Patterns
PDF
Design and Implementation in Software Engineering
PDF
Architecture Description Languages: An Overview
PDF
PDF
Platforms and the Semantic Web
PPT
10 modeling and_notations
PPTX
UNIT 3-DEMONSTRATING A COMPREHENSIVE UNDERSTANDING OF SOFTWARE DESIGN.pptx
PPT
Ooad sequence diagram lecture
PPT
Sw Software Design
PDF
18BIT41C-SE Metrics Will Need to Learn U4.pdf
PPTX
Systems Design Experiences or Just Some War Stories…
PPTX
Object oriented and function oriented design
PPT
iOS Application Development
PPTX
WINSEM2022-23_SWE2004_ETH_VL2022230501954_2023-02-01_Reference-Material-I.pptx
PPT
Ch14
PDF
Reflection.pdfReflection.pdfReflection.pdf
PPT
08 choosing connectors
An Introduction to Software Architecture - Summary
What Makes Objective C Dynamic?
Oo Design And Patterns
Design and Implementation in Software Engineering
Architecture Description Languages: An Overview
Platforms and the Semantic Web
10 modeling and_notations
UNIT 3-DEMONSTRATING A COMPREHENSIVE UNDERSTANDING OF SOFTWARE DESIGN.pptx
Ooad sequence diagram lecture
Sw Software Design
18BIT41C-SE Metrics Will Need to Learn U4.pdf
Systems Design Experiences or Just Some War Stories…
Object oriented and function oriented design
iOS Application Development
WINSEM2022-23_SWE2004_ETH_VL2022230501954_2023-02-01_Reference-Material-I.pptx
Ch14
Reflection.pdfReflection.pdfReflection.pdf
08 choosing connectors
Ad

More from Markus Voelter (20)

PPTX
Consulting
PDF
Build your own Language - Why and How?
PDF
Deklarative Smart Contracts
PDF
Using language workbenches and domain-specific languages for safety-critical ...
PDF
What's Missing in Language Workbenches
PDF
How Domains Shape Languages
PDF
Why Modeling Suck Sucks
PDF
Fusing Modeling and Programming into Language-Oriented Programming
PDF
The future of DSLs - functions and formal methods
PDF
Lessons Learned from building mbeddr
PDF
The Design, Evolution and Use of KernelF
PDF
Envisioning the Future of Language Workbenches
PPTX
Architecting Domain-Specific Languages
PPTX
Generic Tools - Specific Languages (PhD Defense Slides)
PPTX
Language-Oriented Business Applications
PPTX
Generic Tools, Specific Laguages
PPTX
Domain Specific Language Design
PPTX
From Programming to Modeling And Back Again
PPTX
Faszination Segelfliegen
PPTX
Introduction To MDD
Consulting
Build your own Language - Why and How?
Deklarative Smart Contracts
Using language workbenches and domain-specific languages for safety-critical ...
What's Missing in Language Workbenches
How Domains Shape Languages
Why Modeling Suck Sucks
Fusing Modeling and Programming into Language-Oriented Programming
The future of DSLs - functions and formal methods
Lessons Learned from building mbeddr
The Design, Evolution and Use of KernelF
Envisioning the Future of Language Workbenches
Architecting Domain-Specific Languages
Generic Tools - Specific Languages (PhD Defense Slides)
Language-Oriented Business Applications
Generic Tools, Specific Laguages
Domain Specific Language Design
From Programming to Modeling And Back Again
Faszination Segelfliegen
Introduction To MDD

Recently uploaded (20)

PPTX
OMC Textile Division Presentation 2021.pptx
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
PDF
A novel scalable deep ensemble learning framework for big data classification...
PPTX
TLE Review Electricity (Electricity).pptx
PDF
August Patch Tuesday
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
Approach and Philosophy of On baking technology
PPTX
Tartificialntelligence_presentation.pptx
PDF
Web App vs Mobile App What Should You Build First.pdf
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
Zenith AI: Advanced Artificial Intelligence
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
Getting Started with Data Integration: FME Form 101
PPTX
A Presentation on Artificial Intelligence
PDF
Hindi spoken digit analysis for native and non-native speakers
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf
OMC Textile Division Presentation 2021.pptx
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
A novel scalable deep ensemble learning framework for big data classification...
TLE Review Electricity (Electricity).pptx
August Patch Tuesday
MIND Revenue Release Quarter 2 2025 Press Release
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Approach and Philosophy of On baking technology
Tartificialntelligence_presentation.pptx
Web App vs Mobile App What Should You Build First.pdf
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Zenith AI: Advanced Artificial Intelligence
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Building Integrated photovoltaic BIPV_UPV.pdf
Getting Started with Data Integration: FME Form 101
A Presentation on Artificial Intelligence
Hindi spoken digit analysis for native and non-native speakers
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
Microsoft Solutions Partner Drive Digital Transformation with D365.pdf

Architecture As Language