SlideShare uma empresa Scribd logo
1 de 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.

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Hexagonal architecture for java applications
Hexagonal architecture for java applicationsHexagonal architecture for java applications
Hexagonal architecture for java applications
 
Introduction to Microsoft Azure Cloud
Introduction to Microsoft Azure CloudIntroduction to Microsoft Azure Cloud
Introduction to Microsoft Azure Cloud
 
Cloud Application Development – The Future is now
Cloud Application Development – The Future is nowCloud Application Development – The Future is now
Cloud Application Development – The Future is now
 
Software Development Standard Operating Procedure
Software Development Standard Operating Procedure Software Development Standard Operating Procedure
Software Development Standard Operating Procedure
 
Refactoring
RefactoringRefactoring
Refactoring
 
Java Script
Java ScriptJava Script
Java Script
 
Object Modeling Techniques
Object Modeling TechniquesObject Modeling Techniques
Object Modeling Techniques
 
Introduction to Design Pattern
Introduction to Design  PatternIntroduction to Design  Pattern
Introduction to Design Pattern
 
Azure Cloud PPT
Azure Cloud PPTAzure Cloud PPT
Azure Cloud PPT
 
Serverless computing and Function-as-a-Service (FaaS)
Serverless computing and Function-as-a-Service (FaaS)Serverless computing and Function-as-a-Service (FaaS)
Serverless computing and Function-as-a-Service (FaaS)
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Design pattern & categories
Design pattern & categoriesDesign pattern & categories
Design pattern & categories
 
Software engineering : Layered Architecture
Software engineering : Layered ArchitectureSoftware engineering : Layered Architecture
Software engineering : Layered Architecture
 
COMPUTER NETWORK_OSI & TCP/IP
COMPUTER NETWORK_OSI & TCP/IPCOMPUTER NETWORK_OSI & TCP/IP
COMPUTER NETWORK_OSI & TCP/IP
 
Identity and Access Management Reference Architecture for Cloud Computing
Identity and Access Management Reference Architecture for Cloud ComputingIdentity and Access Management Reference Architecture for Cloud Computing
Identity and Access Management Reference Architecture for Cloud Computing
 
Tomcat
TomcatTomcat
Tomcat
 
SE2018_Lec 18_ Design Principles and Design Patterns
SE2018_Lec 18_ Design Principles and Design PatternsSE2018_Lec 18_ Design Principles and Design Patterns
SE2018_Lec 18_ Design Principles and Design Patterns
 
Waterfall model ppt final
Waterfall model ppt  finalWaterfall model ppt  final
Waterfall model ppt final
 
Presentation on Visual Studio
Presentation on Visual StudioPresentation on Visual Studio
Presentation on Visual Studio
 
Active browser web page
Active browser web pageActive browser web page
Active browser web page
 

Semelhante a Fundamentals Of Software Architecture

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

Semelhante a 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)
 
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
 
Brownfield Domain Driven Design
Brownfield Domain Driven DesignBrownfield Domain Driven Design
Brownfield Domain Driven Design
 

Mais de 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
 

Mais de 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
 

Último

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
 

Último (20)

Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
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
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
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
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
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
 
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
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
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...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 

Fundamentals Of Software Architecture