SlideShare a Scribd company logo
1 of 64
Fundamentalsof Software Architecture Lookingbeyondthehype MarkusVölter (voelter@acm.org)
1 Introduction
Frustratedbyall thehype? Frustrated by all the hype?
If sothispresentationisforyou.
Otherwiseyoushouldleave
People oftentalk abouttechnologiesinsteadofarchitecturalconcepts.
Technology-discussionscreate a lotofaccidentalcomplexity.
Architecturalessenceishiddenbehindtechgobbledygook
Conceptschangemuch More slowlythanthe Hype-driventechno marketing
Thispresentation: Thispresentation: Timeless concepts
Thispresentation: Thispresentation: Relationships betweenthem
Thispresentation: Thispresentation: Exampleslanguages architecture technology
awarenesswhenbuildingsystems Goals
checklistsforreviewingsystems Goals
educationofdevelopersandarchitects Goals
ConceptsAtomicCombinable	Technology NeutralDescribableNamed	(Patterns, Laws, Principles)
CombinatorsB ! A B  A BA
Ok, let‘sgo… Ok, let‘sgo…
2 Breaking Things Down
Modularize Procedures, Classes, Components, Services, User Stories
! Modularize Encapsulate Private Members Frameworks  Facade Pattern  Components Layers/Rings/Levels Packed Data Wrapper
 !  Modularize Contracts Interfaces Pre/Post Conditions  Protocol State Machines  Message Exchange Patterns Published APIs
Decoupling CompensatingTx Message Queues ! Modularization
 Modularize Handle Crosscuts Aspect Orientation Interceptors Application Servers Exception Handling
Go Down Encapsulate  !   Modularize Assembler in C C in Python/Ruby SQL in Java
Isolate Pure functional vs. Impure Safety Critical Parts Real-Time Kernel OS Processes  !  Modularize
IsolateTechnology   !  Modularize  Isolate POJOs HALs JBI/SCA Code Gen/MDSD
3 Scalingthingsup
Parametrization Function Arguments Command-Line Args Configuration Files ! Modularization
Simplicity Web Lisp XML
Decentralization ! Contracts EmergentBehaviour The Internet Service-OrientedArchitecture
Bootstrapping Languages Compilers IDEs
Standard  Library Lisp (Grow A Language) AutosarSysComponentsMicrokernel OSs ! Modularize ! Types & Instances
Orthogonality Closures, Program As Data, Macros, Higher-Order Functions
Identity Pointers GUIDs MAC-Address URI QualifiedNames
4 Conceptualization
Abstraction Operating Systems High-Level Languages Models, DSLs
Types & Instances ProgrammingLanguages Components Models & Metamodels RDBMS/XML Schemas
Hierarchical Decomposition  Modularize Procedures/Methods State Machines, Components
Specialize Currying Inheritance State Machines
 !  Abstraction Formalize Languages Contracts Models State Machines
Viewpoints ! Formalization Configuration Files 4+1 Model Blackbox/Whitebox Types/Instances/Deployment
 !  Formalization Notation UML Lisp Java Ruby
 !  Modularize Go Meta Translators, Reflection,  Meta Programming, AOP
Reflection ! Go Meta Languages (Lisp, Smalltalk, Ruby) Embedded Systems (Static)
 !  Formalization  !  Go Meta Translate Compilers, Transformers, Generators, Macros (Lisp, Converge)
 !  Formalization  !  Go Meta Formalize Interpret Business Process Engines Data Driven Systems (Dynamic) Languages
Tracking Impurity in Haskell: io(…) Tainting (Static Analysis) Session State ACT Pattern
Automate Build, Test, Translate !  Formalization
5 DosandDon‘ts
!  Formalization Protocols Transctions Locking/Synchronization Resource Access
Make Explicit DOC Middleware Orthogonal Persistence (OR Mappers) DOC Middleware Orthogonal Persistence (OR Mappers) Make Transparent
Make Transparent Make Explicit Dependencies SOA, Messaging FunctionalProgramming PLE Variabilities Persistence: Loading Data
Software Architecture DSL: expressiveness MDSD: skeletons Scade/SystemC LimitFreedom
 !  Formalization  !  Go Meta Declaration Implementation App Servers (EJB), Plugin RT (Eclipse) Models, TransaactionalMemory
Test semantics, not syntax (code gen) Higher Order Functions (map, foreach) Transactional Memory Don‘t Overspecify
  Limit Freedom AvoidSideeffects FunctionalProgramming Concurrency (Sharing) Distribution
6 Process
Iterate Algorithms Refactoring Agile Processes
Capture Best Practices Patterns, DSLs, Models, Translators
More I Ownership vs. Reference BuildLanguages CohesionandCoupling (do onethingright, composability) Indirection (polymorphism, memreferencesforcompaction, namingservice) Prevention vs. Compensation
More II BuildPlatforms Versioning Pessimistic/Optimistic/Compensating Localize (Sync in MP, UML-M2M) Container (AppServer) Lazy/On-demand, Eager SelfModification (MetaProg, MOPs,       Embedded Optimization Measure: metrics, performance tuning, scalability,     test coverage
What do youthink? More Fundamentals? More Examples? Pleaseletmeknow! voelter@acm.org
THE END. THE END.

More Related Content

What's hot

Basic software-testing-concepts
Basic software-testing-conceptsBasic software-testing-concepts
Basic software-testing-concepts
medsherb
 
Pressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-modelsPressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-models
saurabhshertukde
 

What's hot (20)

Software Engineering : Requirement Analysis & Specification
Software Engineering : Requirement Analysis & SpecificationSoftware Engineering : Requirement Analysis & Specification
Software Engineering : Requirement Analysis & Specification
 
Requirements analysis and modeling
Requirements analysis and modelingRequirements analysis and modeling
Requirements analysis and modeling
 
Software design
Software designSoftware design
Software design
 
REQUIREMENT ENGINEERING
REQUIREMENT ENGINEERINGREQUIREMENT ENGINEERING
REQUIREMENT ENGINEERING
 
Basic software-testing-concepts
Basic software-testing-conceptsBasic software-testing-concepts
Basic software-testing-concepts
 
Software requirement and specification
Software requirement and specificationSoftware requirement and specification
Software requirement and specification
 
Pressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-modelsPressman ch-3-prescriptive-process-models
Pressman ch-3-prescriptive-process-models
 
Software architecture and software design
Software architecture and software designSoftware architecture and software design
Software architecture and software design
 
Software Engineering (Introduction to Software Engineering)
Software Engineering (Introduction to Software Engineering)Software Engineering (Introduction to Software Engineering)
Software Engineering (Introduction to Software Engineering)
 
Software requirements specification
Software requirements specificationSoftware requirements specification
Software requirements specification
 
Software Architecture and Design
Software Architecture and DesignSoftware Architecture and Design
Software Architecture and Design
 
Cocomo model
Cocomo modelCocomo model
Cocomo model
 
Agile development, software engineering
Agile development, software engineeringAgile development, software engineering
Agile development, software engineering
 
Software architecture
Software architectureSoftware architecture
Software architecture
 
Lecture 19 design concepts
Lecture 19   design conceptsLecture 19   design concepts
Lecture 19 design concepts
 
Ch2 sw processes
Ch2 sw processesCh2 sw processes
Ch2 sw processes
 
Software testing
Software testingSoftware testing
Software testing
 
TestOps and Shift Left
TestOps and Shift LeftTestOps and Shift Left
TestOps and Shift Left
 
Software metrics
Software metricsSoftware metrics
Software metrics
 
Software architectural patterns - A Quick Understanding Guide
Software architectural patterns - A Quick Understanding GuideSoftware architectural patterns - A Quick Understanding Guide
Software architectural patterns - A Quick Understanding Guide
 

Similar to Fundamentals Of Software Architecture

.NET Architecture for Enterprises
.NET Architecture for Enterprises.NET Architecture for Enterprises
.NET Architecture for Enterprises
Wade Wegner
 

Similar to Fundamentals Of Software Architecture (20)

Pharo: A Reflective System
Pharo: A Reflective SystemPharo: A Reflective System
Pharo: A Reflective System
 
EclipseConEurope2012 SOA - Models As Operational Documentation
EclipseConEurope2012 SOA - Models As Operational DocumentationEclipseConEurope2012 SOA - Models As Operational Documentation
EclipseConEurope2012 SOA - Models As Operational Documentation
 
The Impact of Emerging Technology on Digital Transformation
The Impact of Emerging Technology on Digital TransformationThe Impact of Emerging Technology on Digital Transformation
The Impact of Emerging Technology on Digital Transformation
 
Software Modeling and Artificial Intelligence: friends or foes?
Software Modeling and Artificial Intelligence: friends or foes?Software Modeling and Artificial Intelligence: friends or foes?
Software Modeling and Artificial Intelligence: friends or foes?
 
System Dynamics and FOSS
System Dynamics and FOSSSystem Dynamics and FOSS
System Dynamics and FOSS
 
Dsm presentation (english)
Dsm presentation (english)Dsm presentation (english)
Dsm presentation (english)
 
Interoperability
InteroperabilityInteroperability
Interoperability
 
Agile Development with OSGi
Agile Development with OSGiAgile Development with OSGi
Agile Development with OSGi
 
Domain oriented development
Domain oriented developmentDomain oriented development
Domain oriented development
 
Designing for the Cloud Tutorial - QCon SF 2009
Designing for the Cloud Tutorial - QCon SF 2009Designing for the Cloud Tutorial - QCon SF 2009
Designing for the Cloud Tutorial - QCon SF 2009
 
Smalltalk and Business
Smalltalk and BusinessSmalltalk and Business
Smalltalk and Business
 
DSL Best Practices
DSL Best PracticesDSL Best Practices
DSL Best Practices
 
Jared Whitlock Open Source In The Enterprise Plone @ Novell
Jared Whitlock   Open Source In The Enterprise    Plone @ NovellJared Whitlock   Open Source In The Enterprise    Plone @ Novell
Jared Whitlock Open Source In The Enterprise Plone @ Novell
 
Let's talk about... Microservices
Let's talk about... MicroservicesLet's talk about... Microservices
Let's talk about... Microservices
 
Semantische interoperabiliteit met behulp van een bedrijfsbrede taxonomie
Semantische interoperabiliteit met behulp van een bedrijfsbrede taxonomieSemantische interoperabiliteit met behulp van een bedrijfsbrede taxonomie
Semantische interoperabiliteit met behulp van een bedrijfsbrede taxonomie
 
Evolving as a professional software developer
Evolving as a professional software developerEvolving as a professional software developer
Evolving as a professional software developer
 
Semantic Model-driven Engineering
Semantic Model-driven EngineeringSemantic Model-driven Engineering
Semantic Model-driven Engineering
 
Django in enterprise world
Django in enterprise worldDjango in enterprise world
Django in enterprise world
 
.NET Architecture for Enterprises
.NET Architecture for Enterprises.NET Architecture for Enterprises
.NET Architecture for Enterprises
 
Druid Adoption Tips and Tricks
Druid Adoption Tips and TricksDruid Adoption Tips and Tricks
Druid Adoption Tips and Tricks
 

More from Markus Voelter

Deklarative Smart Contracts
Deklarative Smart ContractsDeklarative Smart Contracts
Deklarative Smart Contracts
Markus Voelter
 
Generic Tools, Specific Laguages
Generic Tools, Specific LaguagesGeneric Tools, Specific Laguages
Generic Tools, Specific Laguages
Markus Voelter
 
Domain Specific Language Design
Domain Specific Language DesignDomain Specific Language Design
Domain Specific Language Design
Markus Voelter
 

More from Markus Voelter (20)

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

Recently uploaded

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Recently uploaded (20)

Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 

Fundamentals Of Software Architecture