SlideShare ist ein Scribd-Unternehmen logo
1 von 31
Downloaden Sie, um offline zu lesen
Software Architecture
Software Architecture
Fritz Solms
November 7, 2014
Software Architecture
Is architecture a common concept?
Is Architecture a Common Concept?
We talk of architecture of
buildings, cities, organizations, equipment, software, education,
novels, . . .
Can we find a common definition for architecture which can be
applied across
Buildings: The art and science of designing and erecting buildings.
City:
Organizations:
Software: ???
. . .
Software Architecture
The purpose of architecture
Propose: Purpose of Architecture
To provide the specification of an appropriate software infrastructure
within which application functionality is specified, deployed and
executed, such that
1 the required access and integration channels are available
e.g. to humans, machines (trains, software systems, . . . )
2 the infrastructural concerns or responsibilities are addressed
e.g. to transport people, to store information, to provide resources,
. . .
3 the required quality attributes can be provided
e.g. scalability, reliability, security, performance, integrability,
monitorability, auditability, flexibility, portability, deployability, . . .
Architecture addresses non-functional requirements.
Application Design addresses the functional requirements.
e.g. business process design, domestic process design, system
functionality design, . . .
Software Architecture
Questions addressed by software architecture
Questions addressed by software architecture
1 What are the architectural components and what are their
responsibilities?
2 How do the architectural components communicate?
3 How will the system handle the number of concurrent users?
4 How will authentication, authorization, confidentiality be enforced?
5 How will we ensure reliability and fail-over safety?
6 Does the software architecture support pluggability, to what extend
and how?
7 Is logging supported by the software architecture, and if so, how?
8 What frameworks, technologies, protocols, . . . , will be used?
9 How does the software architecture support monitorability and
auditability?
10 How does is the system deployed or ported?
11 How is maintainability supported. Can the system support life
maintenance, and if so, how?
12 How is high-performance achieved?
13 What frameworks and technologies are used and why?
Software Architecture
What is software architecture?
Suggestions?
What is Software Architecture?
Suggestions?
What is the purpose of software architecture?
i.e. what are the responsibilities of software architecture?
Software Architecture
What is software architecture?
Definitions of software architecture
Many widely different definitions
No general consensus
5 architects = 7 definitions.
SEI has collected over 300 definitions.
No such problem in buildings architecture, quality assurance,
programming, . . .
Software Architecture
What is software architecture?
Definitions of software architecture
Different Between Software Architecture Definitions
Commonalities
components and connectors
Differences
Differ in what they specify
Whether only high level or across levels of granularity
Where is the boundary?
Separation of architectural and application responsibilities
distinguish betw architectural and application components
whether functionality/processes included
whether strategies/tactics are relevant (Aspect-Oriented ADLs)
Different definitions
Supported by different ADLs
Software Architecture
What is software architecture?
Definitions of software architecture
Choice of definition affects everything
Responsibilities and skills requirements for software architects.
The contents of the architecture requirements specification.
How we design an architecture.
How we document it.
How we evaluate/validate it.
Software Architecture
What is software architecture?
Definitions of software architecture
3 Classes of Software Architecture Definitions
3 classes:
1 High-level abstraction of software system.
Fowler, Nagl, . . .
2 Structure & externally visible properties of software system
IEEE-1471:2000, Bass-Clements-Katzman (SEI), . . .
Perhaps definition which is currently most widely used.
3 Fundamental concepts & constraints within which software
system is designed & developed
ISO/IEC 42010:2011, Ran, . . .
New version of IEEE 1471 (Oct 2011)
Many definitions
focus on components,
not on what software architecture semantically is.
Need to separate definition from components.
Software Architecture
What is software architecture?
Definitions of software architecture
SA as High-Level Abstraction of Software System
What is high level?
Where is the boundary?
If one starts with a component, is there still architecture?
How do we know?
Is there any difference between architecture & application
design?
Is it simply a matter of granularity.
Multiple views, e.g. Kruchten 4+1:
logical view → functionality provided to end user
class, component & sequence diagrams
development view → system modularization
package & component diagrams
process view → system processes
activity diagrams
physical view → physical deployment & physical connections
deployment diagrams
use case views → representative use cases & scenarios
use case & sequence diagrams
Architecture and technology neutral application design
typically not supported
View of deploying same functionality into different architectures.
Software Architecture
What is software architecture?
Definitions of software architecture
SA = Structure & externally visible properties of
software system
Definition (SEI, IEEE-1471)
Structure or structures of system which comprise software elements, their
externally visible properties, and the relationships amongst them.
Does not focus on application functionality
Main focus = structure:
Components & relationships
supported by most ADLs.
Secondary focus on properties = quality attributes
But is architecture the properties
or is it the tactics used to realize those properties?
Does not really allow for levels of granularity
Still no clear guideline for boundary between architecture &
application design
though separation not excluded
Architectural or application component? — How do we know?
Software Architecture
What is software architecture?
Definitions of software architecture
SA = Fundamental concepts & constraints within
which software system is designed & developed
Definition (ISO/IEC 42010:2011)
fundamental concepts or properties of a system in its environment
embodied in its elements, relationships, and the principles of its design
and evolution
Fundamental concepts:
services & pipes for SOA,
components & entities for Java-EE
commonly in form of architectural patterns
layering, pipes & filters, mikrokernel, blackboard, . . .
Constraints:
services must be stateless, self-healing, . . .
also includes components & relationships.
No strategies/tactics.
Software Architecture
What is software architecture?
Reference architectures
Reference Architectures, Frameworks & Instance
Architectures?
Definition
Domain-specific architectural template which aims to address
architectural concerns for a particular class of problems.
specifies infrastructure to address common architectural concerns for
that domain.
Examples:
Java-EE for enterprise systems,
AUTOSAR for vehicular software,
SOA for integrating many systems,
Space-Based for systems requiring complex decision making,
Implementing frameworks
JBoss, Apache Geronimo, . . . ,
Arctic Core, Continental Engineering Services, . . .
Apache Axis, Open-ESB, . . . ,
Gigaspaces, . . .
Instance architecture
May or may not be based on reference architecture and framework.
Software Architecture
What is software architecture?
Reference architectures
A Reference Architecture is Pure Architecture
Has no application functionality.
Java-EE does not specify any aspects specific to
banking, retail insurance, . . .
but can deploy banking, retail or insurance application into Java-EE
AUTOSAR does not contain elements for
controlling braking systems or engines,
but can deploy applications for monitoring and controlling those.
Addresses only non-functional requirements of users.
Can use them to reverse engineer what architecture really is.
Even have concrete implementations of “pure” architectures
frameworks
Software Architecture
What is software architecture?
Reference architectures
Java-EE: Overview
Software Architecture
What is software architecture?
Reference architectures
Java-EE: 1st level of granularity
Component = Application server
Core responsibilities:
1 Provide access to users (human & system)
→ web container
2 Infrastructure for processing business logic
→ EJB container
3 Integrate with backend providers (e.g. persistence).
→ JPA persistence context (O/R mapper)
Addresses quality requirements for enterprise systems:
Reliability, scalability, security, integrability, flexibility
Structural pattern:
Layering
Tactics/Strategies:
clustering, interception
No application components hosted at this level of granularity.
Software Architecture
What is software architecture?
Reference architectures
Java-EE: 2nd level of granularity
Components:
Web container, EJB container & JPA Persistence context
Patterns:
MVC, controller & layering
Tactics/strategies:
caching, resource reuse, interception, . . .
Application logic components:
Web container: facelets, backing & binding beans
EJB container: stateless & stateful session beans
Persistence context: entities
Software Architecture
What is software architecture?
Reference architectures
SOA: Overview
Software Architecture
What is software architecture?
Reference architectures
SOA: 2nd level of granularity
Focus on process execution engine:
Strategies/tactics:
clustering, messaging, thread pooling, . . .
Application logic concepts & constraints:
Pattern:
Pipes and filters
service
stateless
self-healing
published
implements services contract
independent/re-usable
Software Architecture
What is software architecture?
Reference architectures
Insights from reference architectures
Architectural vs functional components
do they address application functionality, or
non-functional requirements/architectural responsibilities
Need to specify architecture across levels of granularity.
Architectural responsibilities.
includes providing access and integration channels
Pattern for each level of granularity constraining structure
Strategies/tactics
Concepts, structure & constraints for both
architectural components, and
application logic components,
but only architectural components defined.
Software Architecture
What is software architecture?
Definition of software architecture
Definition of software architecture
Definition
Software architecture is the specification of the software infrastructure
within which application logic providing user functionality can be
specified, deployed and executed.
Application functionality
addresses functional requirements for application users
Architecture
addresses non-functional requirements
Software Architecture
What is software architecture?
Components of software architecture
Components of a Software Architecture
Across levels of granularity
1 Set of architectural responsibilities and components to which
these are assigned.
providing access and integration channels,
providing a computational environment,
providing a persistence infrastructure,
domain specific architectural responsibilities
addressing architectural responsibilities,
structural constraints
commonly in form of patterns,
integration channels between them.
2 Architectural strategies
used to concretely address quality requirements.
3 Integration channels to environment
Adapters
this includes access channels
GUI = human adapter.
4 Concepts & constraints within which application logic is to be
specified
e.g. service, content based router, . . .
Software Architecture
What is software architecture?
Typical responsibilities of architecture
Typical Responsibilities of Software Architecture
The purpose of software architecture is to
provide a suitable infrastructure for application components
providing user functionality
which addresses the non-functional requirements.
Typical examples of responsibilities include
providing access and integration channels to humans and systems,
managing resources effectively to achieve cost-effective scalability,
enforcing security including confidentiality, authentication,
authorization and non-repudiation,
provide fail-over safety across all components to ensure a level of
reliability,
providing an infrastructure for flexible, maintainable, application
development, and
providing an infrastructure for reliable, efficient and auditable process
execution.
Software Architecture
What is software architecture?
Pure application code
Pure Application Code
Application developers should be able to
focus on developing application functionality
leave technical concerns to software architecture.
e.g. “plumbing code”
mapping onto persistence infrastructure
integration (marshalling/demarshalling, request routing, . . . )
thread pooling, object caching, authorization, . . .
Address non-functional requirements.
Application functionality should be devoid of “plumbing code”.
Software Architecture
What is software architecture?
Architecture neutral design and implementation
Architecture-Neutral Design & Implementation
URDAD
method for architecture and technology neutral application design
Modern technologies:
movement to take architecture our of code
into metadata often specified as annotations
e.g. in Java-EE architecture taken out of code as of EJB 3.0.
Applications, at times,
annotated with meta-data for different architectures
deployed into different software architectures
e.g. Spring and Java-EE
Software Architecture
What is software architecture?
Interplay between architecture and application design
Interplay between Architectural and Application Design
The architecture does not address any of the functional
requirements of the user (application)
Infrastructure within which functionality is developed, deployed and
executed.
Concepts, patterns, strategies
But, to implement strategies
We require functionality.
but the functionality designed addresses non-functional requirements,
not functional requirements of the user.
Can use URDAD
Software Architecture
What is software architecture?
Architecture as a matter of perspective
Architecture is a matter of perspective
If we, say, design a banking system
Java-EE/Spring/SOA/Space-Based architecture = architecture
Specified to address non-functional requirements
incl integration requirements.
Defined architecture based on application server, . . . = architecture.
If my job is to design a framework (e.g. an application server)
application design addressing user’s functional requirements.
User = developer
mapping entities onto some persistence technology,
performing role-based authorization,
providing a handle to the transaction manager, . . .
Architectural requirements
portability
access to system resources (threads, memory, . . . )
May decide to use bridge (JRE)
Software Architecture
The bigger picture
The bigger picture
Software Architecture
Wish list
Wish List
Formalization of architecture methodology
Similar to URDAD
With DSL for methodology.
Usable ADL
Requires support for
Components & connectors.
Infrastructure constraints in the form of structural patterns.
Architectural strategies.
Specification of concepts & constraints for application components.
Tool support.
Software Architecture
Software architecture in the context of MDD
Software Architecture in Context of MDD
Software Architecture
Responsibilities of software architecture
Responsibilities of Software Architecture?
Assist client to specify architecture requirements.
Design and document a software architecture
Validate existing and proposed software architectures
Assist with non-functional testing
Recover software architectures
Evolve architectures / re-architect
Ensure software architecture compliance
Assist developers to understand
rationale behind the software architecture
technicalities around developing the software architecture.
includes identifying training needs within the development team.
Liase with client to ensure software architecture aligned with
business architecture

Weitere ähnliche Inhalte

Was ist angesagt?

Importance of software architecture
Importance of software architectureImportance of software architecture
Importance of software architectureHimanshu
 
Object Orientation Fundamentals
Object Orientation FundamentalsObject Orientation Fundamentals
Object Orientation FundamentalsPramod Parajuli
 
Software Architecture Design for Begginers
Software Architecture Design for BegginersSoftware Architecture Design for Begginers
Software Architecture Design for BegginersChinh Ngo Nguyen
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software ArchitectureMarkus Voelter
 
05 architectural styles
05 architectural styles05 architectural styles
05 architectural stylesMajong DevJfu
 
Software Architecture and Design Introduction
Software Architecture and Design IntroductionSoftware Architecture and Design Introduction
Software Architecture and Design IntroductionUsman Khan
 
Aspect oriented software development
Aspect oriented software developmentAspect oriented software development
Aspect oriented software developmentMaryam Malekzad
 
Software Architecture Taxonomies - Behaviour: Components & Connectors
Software Architecture Taxonomies - Behaviour: Components & ConnectorsSoftware Architecture Taxonomies - Behaviour: Components & Connectors
Software Architecture Taxonomies - Behaviour: Components & ConnectorsJose Emilio Labra Gayo
 
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015Mozaic Works
 
Software Architecture: Introduction to the abstraction (May 2014_Split)
Software Architecture: Introduction to the abstraction (May 2014_Split)Software Architecture: Introduction to the abstraction (May 2014_Split)
Software Architecture: Introduction to the abstraction (May 2014_Split)Henry Muccini
 
Software architecture for developers by Simon Brown
Software architecture for developers by Simon BrownSoftware architecture for developers by Simon Brown
Software architecture for developers by Simon BrownCodemotion
 
Object Oriented Analysis
Object Oriented AnalysisObject Oriented Analysis
Object Oriented AnalysisPramod Parajuli
 
Architectural structures and views
Architectural structures and viewsArchitectural structures and views
Architectural structures and viewsDr Reeja S R
 
25 architectural adaptation
25 architectural adaptation25 architectural adaptation
25 architectural adaptationMajong DevJfu
 
PhD defense: David Ameller
PhD defense: David AmellerPhD defense: David Ameller
PhD defense: David AmellerDavid Ameller
 
Architectural views
Architectural viewsArchitectural views
Architectural viewsSaleem Khan
 

Was ist angesagt? (20)

Importance of software architecture
Importance of software architectureImportance of software architecture
Importance of software architecture
 
Object Orientation Fundamentals
Object Orientation FundamentalsObject Orientation Fundamentals
Object Orientation Fundamentals
 
Software Architecture Design for Begginers
Software Architecture Design for BegginersSoftware Architecture Design for Begginers
Software Architecture Design for Begginers
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software Architecture
 
05 architectural styles
05 architectural styles05 architectural styles
05 architectural styles
 
Software Architecture and Design Introduction
Software Architecture and Design IntroductionSoftware Architecture and Design Introduction
Software Architecture and Design Introduction
 
Lq3620002008
Lq3620002008Lq3620002008
Lq3620002008
 
Aspect oriented software development
Aspect oriented software developmentAspect oriented software development
Aspect oriented software development
 
Software Architecture Taxonomies - Behaviour: Components & Connectors
Software Architecture Taxonomies - Behaviour: Components & ConnectorsSoftware Architecture Taxonomies - Behaviour: Components & Connectors
Software Architecture Taxonomies - Behaviour: Components & Connectors
 
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
 
Basics of se
Basics of seBasics of se
Basics of se
 
Software Architecture: Introduction to the abstraction (May 2014_Split)
Software Architecture: Introduction to the abstraction (May 2014_Split)Software Architecture: Introduction to the abstraction (May 2014_Split)
Software Architecture: Introduction to the abstraction (May 2014_Split)
 
L02 Architecture
L02 ArchitectureL02 Architecture
L02 Architecture
 
Software architecture for developers by Simon Brown
Software architecture for developers by Simon BrownSoftware architecture for developers by Simon Brown
Software architecture for developers by Simon Brown
 
Object Oriented Analysis
Object Oriented AnalysisObject Oriented Analysis
Object Oriented Analysis
 
Architectural structures and views
Architectural structures and viewsArchitectural structures and views
Architectural structures and views
 
Class notes
Class notesClass notes
Class notes
 
25 architectural adaptation
25 architectural adaptation25 architectural adaptation
25 architectural adaptation
 
PhD defense: David Ameller
PhD defense: David AmellerPhD defense: David Ameller
PhD defense: David Ameller
 
Architectural views
Architectural viewsArchitectural views
Architectural views
 

Ähnlich wie What is Software Architecture?

Software Architecture: introduction to the abstraction
Software Architecture: introduction to the abstractionSoftware Architecture: introduction to the abstraction
Software Architecture: introduction to the abstractionHenry Muccini
 
Software Architecture and Design
Software Architecture and DesignSoftware Architecture and Design
Software Architecture and DesignRa'Fat Al-Msie'deen
 
Software Architecture
Software Architecture Software Architecture
Software Architecture ssuser9d62d6
 
Unit_4_Software_Design.pptx
Unit_4_Software_Design.pptxUnit_4_Software_Design.pptx
Unit_4_Software_Design.pptxtaxegap762
 
Basics of Software Architecture for .NET Developers
Basics of Software Architecture for .NET DevelopersBasics of Software Architecture for .NET Developers
Basics of Software Architecture for .NET DevelopersDan Douglas
 
Lecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdfLecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdfAkilaGamage2
 
Object oriented sad-5 part i
Object oriented sad-5 part iObject oriented sad-5 part i
Object oriented sad-5 part iBisrat Girma
 
Technical Architecture
Technical ArchitectureTechnical Architecture
Technical Architecturescmiyer
 
Design Decisions For Understanding Software Architecture
Design Decisions For Understanding Software ArchitectureDesign Decisions For Understanding Software Architecture
Design Decisions For Understanding Software ArchitectureTiffany Graham
 
IRJET- Software Architecture and Software Design
IRJET- Software Architecture and Software DesignIRJET- Software Architecture and Software Design
IRJET- Software Architecture and Software DesignIRJET Journal
 
Reverse Engineering of Module Dependencies
Reverse Engineering of Module DependenciesReverse Engineering of Module Dependencies
Reverse Engineering of Module DependenciesDharmalingam Ganesan
 
Software architecture simplified
Software architecture simplifiedSoftware architecture simplified
Software architecture simplifiedPrasad Chitta
 
Software architecture Unit 1 notes
Software architecture Unit 1 notesSoftware architecture Unit 1 notes
Software architecture Unit 1 notesSudarshan Dhondaley
 
Introduction to Modern Software Architecture
Introduction to Modern Software ArchitectureIntroduction to Modern Software Architecture
Introduction to Modern Software ArchitectureJérôme Kehrli
 
Run-time Monitoring-based Evaluation and Communication Integrity Validation o...
Run-time Monitoring-based Evaluation and Communication Integrity Validation o...Run-time Monitoring-based Evaluation and Communication Integrity Validation o...
Run-time Monitoring-based Evaluation and Communication Integrity Validation o...Ana Nicolaescu
 
Fostering MBSE in Engineering Culture
Fostering MBSE in Engineering CultureFostering MBSE in Engineering Culture
Fostering MBSE in Engineering CultureObeo
 

Ähnlich wie What is Software Architecture? (20)

Chapter1
Chapter1Chapter1
Chapter1
 
SA_UNIT_1.pptx
SA_UNIT_1.pptxSA_UNIT_1.pptx
SA_UNIT_1.pptx
 
Sda 1
Sda   1Sda   1
Sda 1
 
Software Architecture: introduction to the abstraction
Software Architecture: introduction to the abstractionSoftware Architecture: introduction to the abstraction
Software Architecture: introduction to the abstraction
 
Software Architecture and Design
Software Architecture and DesignSoftware Architecture and Design
Software Architecture and Design
 
Software Architecture
Software Architecture Software Architecture
Software Architecture
 
Unit_4_Software_Design.pptx
Unit_4_Software_Design.pptxUnit_4_Software_Design.pptx
Unit_4_Software_Design.pptx
 
Basics of Software Architecture for .NET Developers
Basics of Software Architecture for .NET DevelopersBasics of Software Architecture for .NET Developers
Basics of Software Architecture for .NET Developers
 
Lecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdfLecture-2-Architectural_Concepts.pdf
Lecture-2-Architectural_Concepts.pdf
 
Object oriented sad-5 part i
Object oriented sad-5 part iObject oriented sad-5 part i
Object oriented sad-5 part i
 
Technical Architecture
Technical ArchitectureTechnical Architecture
Technical Architecture
 
Design Decisions For Understanding Software Architecture
Design Decisions For Understanding Software ArchitectureDesign Decisions For Understanding Software Architecture
Design Decisions For Understanding Software Architecture
 
IRJET- Software Architecture and Software Design
IRJET- Software Architecture and Software DesignIRJET- Software Architecture and Software Design
IRJET- Software Architecture and Software Design
 
020170482 x
020170482 x020170482 x
020170482 x
 
Reverse Engineering of Module Dependencies
Reverse Engineering of Module DependenciesReverse Engineering of Module Dependencies
Reverse Engineering of Module Dependencies
 
Software architecture simplified
Software architecture simplifiedSoftware architecture simplified
Software architecture simplified
 
Software architecture Unit 1 notes
Software architecture Unit 1 notesSoftware architecture Unit 1 notes
Software architecture Unit 1 notes
 
Introduction to Modern Software Architecture
Introduction to Modern Software ArchitectureIntroduction to Modern Software Architecture
Introduction to Modern Software Architecture
 
Run-time Monitoring-based Evaluation and Communication Integrity Validation o...
Run-time Monitoring-based Evaluation and Communication Integrity Validation o...Run-time Monitoring-based Evaluation and Communication Integrity Validation o...
Run-time Monitoring-based Evaluation and Communication Integrity Validation o...
 
Fostering MBSE in Engineering Culture
Fostering MBSE in Engineering CultureFostering MBSE in Engineering Culture
Fostering MBSE in Engineering Culture
 

Kürzlich hochgeladen

Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfproinshot.com
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech studentsHimanshiGarg82
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerThousandEyes
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionOnePlan Solutions
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 

Kürzlich hochgeladen (20)

Exploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdfExploring the Best Video Editing App.pdf
Exploring the Best Video Editing App.pdf
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 

What is Software Architecture?

  • 2. Software Architecture Is architecture a common concept? Is Architecture a Common Concept? We talk of architecture of buildings, cities, organizations, equipment, software, education, novels, . . . Can we find a common definition for architecture which can be applied across Buildings: The art and science of designing and erecting buildings. City: Organizations: Software: ??? . . .
  • 3. Software Architecture The purpose of architecture Propose: Purpose of Architecture To provide the specification of an appropriate software infrastructure within which application functionality is specified, deployed and executed, such that 1 the required access and integration channels are available e.g. to humans, machines (trains, software systems, . . . ) 2 the infrastructural concerns or responsibilities are addressed e.g. to transport people, to store information, to provide resources, . . . 3 the required quality attributes can be provided e.g. scalability, reliability, security, performance, integrability, monitorability, auditability, flexibility, portability, deployability, . . . Architecture addresses non-functional requirements. Application Design addresses the functional requirements. e.g. business process design, domestic process design, system functionality design, . . .
  • 4. Software Architecture Questions addressed by software architecture Questions addressed by software architecture 1 What are the architectural components and what are their responsibilities? 2 How do the architectural components communicate? 3 How will the system handle the number of concurrent users? 4 How will authentication, authorization, confidentiality be enforced? 5 How will we ensure reliability and fail-over safety? 6 Does the software architecture support pluggability, to what extend and how? 7 Is logging supported by the software architecture, and if so, how? 8 What frameworks, technologies, protocols, . . . , will be used? 9 How does the software architecture support monitorability and auditability? 10 How does is the system deployed or ported? 11 How is maintainability supported. Can the system support life maintenance, and if so, how? 12 How is high-performance achieved? 13 What frameworks and technologies are used and why?
  • 5. Software Architecture What is software architecture? Suggestions? What is Software Architecture? Suggestions? What is the purpose of software architecture? i.e. what are the responsibilities of software architecture?
  • 6. Software Architecture What is software architecture? Definitions of software architecture Many widely different definitions No general consensus 5 architects = 7 definitions. SEI has collected over 300 definitions. No such problem in buildings architecture, quality assurance, programming, . . .
  • 7. Software Architecture What is software architecture? Definitions of software architecture Different Between Software Architecture Definitions Commonalities components and connectors Differences Differ in what they specify Whether only high level or across levels of granularity Where is the boundary? Separation of architectural and application responsibilities distinguish betw architectural and application components whether functionality/processes included whether strategies/tactics are relevant (Aspect-Oriented ADLs) Different definitions Supported by different ADLs
  • 8. Software Architecture What is software architecture? Definitions of software architecture Choice of definition affects everything Responsibilities and skills requirements for software architects. The contents of the architecture requirements specification. How we design an architecture. How we document it. How we evaluate/validate it.
  • 9. Software Architecture What is software architecture? Definitions of software architecture 3 Classes of Software Architecture Definitions 3 classes: 1 High-level abstraction of software system. Fowler, Nagl, . . . 2 Structure & externally visible properties of software system IEEE-1471:2000, Bass-Clements-Katzman (SEI), . . . Perhaps definition which is currently most widely used. 3 Fundamental concepts & constraints within which software system is designed & developed ISO/IEC 42010:2011, Ran, . . . New version of IEEE 1471 (Oct 2011) Many definitions focus on components, not on what software architecture semantically is. Need to separate definition from components.
  • 10. Software Architecture What is software architecture? Definitions of software architecture SA as High-Level Abstraction of Software System What is high level? Where is the boundary? If one starts with a component, is there still architecture? How do we know? Is there any difference between architecture & application design? Is it simply a matter of granularity. Multiple views, e.g. Kruchten 4+1: logical view → functionality provided to end user class, component & sequence diagrams development view → system modularization package & component diagrams process view → system processes activity diagrams physical view → physical deployment & physical connections deployment diagrams use case views → representative use cases & scenarios use case & sequence diagrams Architecture and technology neutral application design typically not supported View of deploying same functionality into different architectures.
  • 11. Software Architecture What is software architecture? Definitions of software architecture SA = Structure & externally visible properties of software system Definition (SEI, IEEE-1471) Structure or structures of system which comprise software elements, their externally visible properties, and the relationships amongst them. Does not focus on application functionality Main focus = structure: Components & relationships supported by most ADLs. Secondary focus on properties = quality attributes But is architecture the properties or is it the tactics used to realize those properties? Does not really allow for levels of granularity Still no clear guideline for boundary between architecture & application design though separation not excluded Architectural or application component? — How do we know?
  • 12. Software Architecture What is software architecture? Definitions of software architecture SA = Fundamental concepts & constraints within which software system is designed & developed Definition (ISO/IEC 42010:2011) fundamental concepts or properties of a system in its environment embodied in its elements, relationships, and the principles of its design and evolution Fundamental concepts: services & pipes for SOA, components & entities for Java-EE commonly in form of architectural patterns layering, pipes & filters, mikrokernel, blackboard, . . . Constraints: services must be stateless, self-healing, . . . also includes components & relationships. No strategies/tactics.
  • 13. Software Architecture What is software architecture? Reference architectures Reference Architectures, Frameworks & Instance Architectures? Definition Domain-specific architectural template which aims to address architectural concerns for a particular class of problems. specifies infrastructure to address common architectural concerns for that domain. Examples: Java-EE for enterprise systems, AUTOSAR for vehicular software, SOA for integrating many systems, Space-Based for systems requiring complex decision making, Implementing frameworks JBoss, Apache Geronimo, . . . , Arctic Core, Continental Engineering Services, . . . Apache Axis, Open-ESB, . . . , Gigaspaces, . . . Instance architecture May or may not be based on reference architecture and framework.
  • 14. Software Architecture What is software architecture? Reference architectures A Reference Architecture is Pure Architecture Has no application functionality. Java-EE does not specify any aspects specific to banking, retail insurance, . . . but can deploy banking, retail or insurance application into Java-EE AUTOSAR does not contain elements for controlling braking systems or engines, but can deploy applications for monitoring and controlling those. Addresses only non-functional requirements of users. Can use them to reverse engineer what architecture really is. Even have concrete implementations of “pure” architectures frameworks
  • 15. Software Architecture What is software architecture? Reference architectures Java-EE: Overview
  • 16. Software Architecture What is software architecture? Reference architectures Java-EE: 1st level of granularity Component = Application server Core responsibilities: 1 Provide access to users (human & system) → web container 2 Infrastructure for processing business logic → EJB container 3 Integrate with backend providers (e.g. persistence). → JPA persistence context (O/R mapper) Addresses quality requirements for enterprise systems: Reliability, scalability, security, integrability, flexibility Structural pattern: Layering Tactics/Strategies: clustering, interception No application components hosted at this level of granularity.
  • 17. Software Architecture What is software architecture? Reference architectures Java-EE: 2nd level of granularity Components: Web container, EJB container & JPA Persistence context Patterns: MVC, controller & layering Tactics/strategies: caching, resource reuse, interception, . . . Application logic components: Web container: facelets, backing & binding beans EJB container: stateless & stateful session beans Persistence context: entities
  • 18. Software Architecture What is software architecture? Reference architectures SOA: Overview
  • 19. Software Architecture What is software architecture? Reference architectures SOA: 2nd level of granularity Focus on process execution engine: Strategies/tactics: clustering, messaging, thread pooling, . . . Application logic concepts & constraints: Pattern: Pipes and filters service stateless self-healing published implements services contract independent/re-usable
  • 20. Software Architecture What is software architecture? Reference architectures Insights from reference architectures Architectural vs functional components do they address application functionality, or non-functional requirements/architectural responsibilities Need to specify architecture across levels of granularity. Architectural responsibilities. includes providing access and integration channels Pattern for each level of granularity constraining structure Strategies/tactics Concepts, structure & constraints for both architectural components, and application logic components, but only architectural components defined.
  • 21. Software Architecture What is software architecture? Definition of software architecture Definition of software architecture Definition Software architecture is the specification of the software infrastructure within which application logic providing user functionality can be specified, deployed and executed. Application functionality addresses functional requirements for application users Architecture addresses non-functional requirements
  • 22. Software Architecture What is software architecture? Components of software architecture Components of a Software Architecture Across levels of granularity 1 Set of architectural responsibilities and components to which these are assigned. providing access and integration channels, providing a computational environment, providing a persistence infrastructure, domain specific architectural responsibilities addressing architectural responsibilities, structural constraints commonly in form of patterns, integration channels between them. 2 Architectural strategies used to concretely address quality requirements. 3 Integration channels to environment Adapters this includes access channels GUI = human adapter. 4 Concepts & constraints within which application logic is to be specified e.g. service, content based router, . . .
  • 23. Software Architecture What is software architecture? Typical responsibilities of architecture Typical Responsibilities of Software Architecture The purpose of software architecture is to provide a suitable infrastructure for application components providing user functionality which addresses the non-functional requirements. Typical examples of responsibilities include providing access and integration channels to humans and systems, managing resources effectively to achieve cost-effective scalability, enforcing security including confidentiality, authentication, authorization and non-repudiation, provide fail-over safety across all components to ensure a level of reliability, providing an infrastructure for flexible, maintainable, application development, and providing an infrastructure for reliable, efficient and auditable process execution.
  • 24. Software Architecture What is software architecture? Pure application code Pure Application Code Application developers should be able to focus on developing application functionality leave technical concerns to software architecture. e.g. “plumbing code” mapping onto persistence infrastructure integration (marshalling/demarshalling, request routing, . . . ) thread pooling, object caching, authorization, . . . Address non-functional requirements. Application functionality should be devoid of “plumbing code”.
  • 25. Software Architecture What is software architecture? Architecture neutral design and implementation Architecture-Neutral Design & Implementation URDAD method for architecture and technology neutral application design Modern technologies: movement to take architecture our of code into metadata often specified as annotations e.g. in Java-EE architecture taken out of code as of EJB 3.0. Applications, at times, annotated with meta-data for different architectures deployed into different software architectures e.g. Spring and Java-EE
  • 26. Software Architecture What is software architecture? Interplay between architecture and application design Interplay between Architectural and Application Design The architecture does not address any of the functional requirements of the user (application) Infrastructure within which functionality is developed, deployed and executed. Concepts, patterns, strategies But, to implement strategies We require functionality. but the functionality designed addresses non-functional requirements, not functional requirements of the user. Can use URDAD
  • 27. Software Architecture What is software architecture? Architecture as a matter of perspective Architecture is a matter of perspective If we, say, design a banking system Java-EE/Spring/SOA/Space-Based architecture = architecture Specified to address non-functional requirements incl integration requirements. Defined architecture based on application server, . . . = architecture. If my job is to design a framework (e.g. an application server) application design addressing user’s functional requirements. User = developer mapping entities onto some persistence technology, performing role-based authorization, providing a handle to the transaction manager, . . . Architectural requirements portability access to system resources (threads, memory, . . . ) May decide to use bridge (JRE)
  • 28. Software Architecture The bigger picture The bigger picture
  • 29. Software Architecture Wish list Wish List Formalization of architecture methodology Similar to URDAD With DSL for methodology. Usable ADL Requires support for Components & connectors. Infrastructure constraints in the form of structural patterns. Architectural strategies. Specification of concepts & constraints for application components. Tool support.
  • 30. Software Architecture Software architecture in the context of MDD Software Architecture in Context of MDD
  • 31. Software Architecture Responsibilities of software architecture Responsibilities of Software Architecture? Assist client to specify architecture requirements. Design and document a software architecture Validate existing and proposed software architectures Assist with non-functional testing Recover software architectures Evolve architectures / re-architect Ensure software architecture compliance Assist developers to understand rationale behind the software architecture technicalities around developing the software architecture. includes identifying training needs within the development team. Liase with client to ensure software architecture aligned with business architecture