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

Object Oriented Analysis and Design
Object Oriented Analysis and DesignObject Oriented Analysis and Design
Object Oriented Analysis and Design
Haitham El-Ghareeb
 
Software Development Life Cycle
Software Development Life CycleSoftware Development Life Cycle
Software Development Life Cycle
Slideshare
 
Quality attributes in software architecture
Quality attributes in software architectureQuality attributes in software architecture
Quality attributes in software architecture
Himanshu
 

What's hot (20)

Software architecture patterns
Software architecture patternsSoftware architecture patterns
Software architecture patterns
 
Design Patterns.ppt
Design Patterns.pptDesign Patterns.ppt
Design Patterns.ppt
 
How to build Micro Frontends with @angular/elements
How to build Micro Frontends with @angular/elementsHow to build Micro Frontends with @angular/elements
How to build Micro Frontends with @angular/elements
 
Solid principles, Design Patterns, and Domain Driven Design
Solid principles, Design Patterns, and Domain Driven DesignSolid principles, Design Patterns, and Domain Driven Design
Solid principles, Design Patterns, and Domain Driven Design
 
Software Architecture Patterns
Software Architecture PatternsSoftware Architecture Patterns
Software Architecture Patterns
 
SDLC
SDLCSDLC
SDLC
 
Software Evolution
Software EvolutionSoftware Evolution
Software Evolution
 
Object Oriented Analysis and Design
Object Oriented Analysis and DesignObject Oriented Analysis and Design
Object Oriented Analysis and Design
 
Scaling agile
Scaling agileScaling agile
Scaling agile
 
PROTOTYPE MODEL
PROTOTYPE MODELPROTOTYPE MODEL
PROTOTYPE MODEL
 
4+1 view model
4+1 view model4+1 view model
4+1 view model
 
Software Development Life Cycle
Software Development Life CycleSoftware Development Life Cycle
Software Development Life Cycle
 
Agile Metrics
Agile MetricsAgile Metrics
Agile Metrics
 
Design Patterns Presentation - Chetan Gole
Design Patterns Presentation -  Chetan GoleDesign Patterns Presentation -  Chetan Gole
Design Patterns Presentation - Chetan Gole
 
Software engineering project management
Software engineering project managementSoftware engineering project management
Software engineering project management
 
Agile model
Agile modelAgile model
Agile model
 
Quality attributes in software architecture
Quality attributes in software architectureQuality attributes in software architecture
Quality attributes in software architecture
 
software development life cycle(SDLC)
software development life cycle(SDLC)software development life cycle(SDLC)
software development life cycle(SDLC)
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Software Architecture and Design
Software Architecture and DesignSoftware Architecture and Design
Software Architecture and Design
 

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

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Recently uploaded (20)

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
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
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
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
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
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

Fundamentals Of Software Architecture