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

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
 

Mais procurados (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
 

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)
 
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
 

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

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
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
 
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...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
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 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, ...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
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
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
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...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
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
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
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
 

Fundamentals Of Software Architecture