1 0 Introduction 4pp
1 0 Introduction 4pp
• Definition
• Why software architecture
Introduction • Architecting software
• What is a Software Architecture
• Examples
Olivier Boissier • Architectural assets
Mines Saint-Etienne • References
Olivier.Boissier@emse.fr
Fall 2019
1 2
Software Architecture
Abstraction
Software Architecture (2)
High-level design of a software
• Its role is about the:
system, showing which desired
• Function (or purpose): mission, as described by some use cases in
system properties are achieved,
some scenario, functional or logical elements
and the reasons for their
• Form (or structure): model of the system, physical or structural
achievement. components of the system and their relationships
• Principles or patterns
‘‘set of structures needed to reason about the system, which • It is about:
Manage complexity in the design
comprise software elements, relations among them, and • the concern of the stakeholders,
properties of both’’ Swebok v3 • the gap between a current system's design and its future design
• Notes: • the evaluation of the properties which govern the design and the
• it refers also to the discipline concerned with the study of software evolution of a system
structures and architectures in a more generic way. • the fundamental decisions that contribute to its utility, cost, effort to
• It refers also to the documentation of a system’s software architecture build, and risk to use within its environment
3 • what is hard to change 4
Short History Agenda
• The basics of software architecture were introduced by Dijkstra
(1968) and Parnas (1970). They studied: • Definition
• The key role of the structure of a software system, and
• Why software architecture
• How tricky the definition of the right structure for a given system is
• Architecting software
• A great deal of research has been conducted on software • What is a Software Architecture
architectures starting from the 90’s, mainly focusing on:
• How to solve recurrent architectural problems (patterns) • Examples
• Which architectural forms are more common (styles)
• Architectural assets
• Defining languages to describe software architectures (ADL)
• How to document the architecture of a system (views) • References
• ... claimed to give rise to the definition of a discipline
• See: Shaw and Garlan Software Architecture: Perspectives on an Emerging
Discipline, 1996 5 6
• New projects start with high risks, scarcely analyzed • Effort/Cost and Time
• Development
• Maintenance
Wrong decisions in crafting the software architecture of a
system are a major cause of project cancellation 9 10
?
• What determines whether these requirements are met?
Which requirements do you think would be
• Which requirements do you think
negatively impacted would
by this be ? negatively impacted by
“design”?
this “design”? 17 18
After Architecting Software the SEI Way After Architecting Software the SEI Way
After Architecting Software the SEI Way 19 After Architecting Software the SEI Way 20
Architecture is a source of Architectural Design
influences Context
Context andandArchitecture
design
Requirements
Context and architecture
https://www.iasaglobal.org/on-making-architectural-decisions/
Architectural Software
s Design Architecture
ce
lu en
Technical in f
Business
influences
Social
Understanding this cycle of influences helps us to plan for and manage
change throughout the lifetime of a system.
After Architecting Software the SEI Way 21 22
8
Two
requests requests
Architectures
...
network
switch
Big server
Cluster of
commodity
How does architecture affect system properties?
Two Architectures for Sending Email
• Modifiability / ease of change
servers
sendmail qmail
• Consistency of results
Modules
• Systemwithin sendmail process
cost Processes implementing qmail
• Scalability of system
• Reliability of system
Two
Architectures
26 27
Which architecture was better in 1980? Which was better in 2000?
Factors to consider
• Simplicity
• Efficiency
ANo
taleUnique and Definitive Architecture
of two systems No Unique and Definitive Architecture
• Rackspace (https://www.rackspace.com/)
• Hosting provider
• Huge growth in customers, mail servers – and problems
• Re-designs: 3 major versions (6 total versions)
• All 3 systems they build had the same functionality (!) … but
different architectures
28 29
MTAT.03.094 / Lecture 07 / © Dietmar Pfahl 2014
Software Architecture Prescriptive Architecture
Principal design decisions vs Descriptive Architecture
A software system’s architecture is the set of principal design
decisions made about the system (N. Taylor et al.) • Prescriptive architecture is the Descriptive architecture is
system’s as-intended or as- the system’s as-realized
conceived architecture architecture
Design decisions encompass every aspect of the system under
• It may captured in a notation such
development, including:
architecture description language
• System structure (e.g. the architectural elements should be organized and
composed exactly like this)
• Functional behavior (e.g. data processing, storage, and visualization will
be performed in strict sequence)
• Interaction, relationships (e.g. communication among all system elements
will occur only using event notifications)
• Non functional properties (e.g. the system’s dependability will be ensured
by replicated processing modules)
• Implementation, physical (e.g. the user interface components will be built
using the Java Swing Toolkit) 30 31
Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission. Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.
45 46
Architecture Document Architectural Description
Template Languages (ADLs)
• Architectural goals • Hundreds of ADLs are used to describe software
• Significant requirements architectures
• Functional & Non functional • ACME (ACMEStudio), Darwin, Archimate, …
• Decisions and justifications • An ADL
• is a formal means of representing architectures
• Key abstractions (Domain model)
• provides solid support for formal verification and correction but it is
• Architectural descriptions considerably more difficult to use than UML
• Logical component model • is usually domain-specific language
• Process model
• Some ADLs can even support auto generation of software
• Physical components
• UML like languages are developed
• Development model
• sysML extension of UML for architectural descriptions
• Deployment model
47 49
Basic elements of a
Agenda
• Definition
Software Architecture
• Why software architecture • A software system’s architecture typically is not (and should not
be) a uniform monolith. It should be an interplay of:
• Architecting software • Processing
• Data, also referred as information or state
• What is a Software Architecture • Interaction
• Architecture X Function • Basic elements are:
• Components
• Views and Viewpoints on Architecture
• Connectors
• Basic Elements • Constraints
• Rationale
• Examples
• Architectural configuration, or topology: set of specific
• Architectural assets associations between the components and connectors in the
• References 50 architecture to accomplish the system’s objective 51
Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.
Component (cont’d)
Component
Example
• A component is an architectural entity that
• encapsulates a subset of the system’s functionality and/or data
• restricts access to that subset via an explicitly defined interface
• has explicitly defined dependencies on its required execution
context
52 53
Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.
Component Component
Components vs Objects vs Modules Component Interface
• Components Provided Interfaces
• Provided Interfaces
• Encapsulate state and functionality • Specify and document the externallySpecify
visible
features features
(or public (orcomponent
API) offered by the public API)
and document the externally visible
•
Properties -
• Objects/Classes • Properties
• Encapsulate state and functionality • Events and call-backs
Compatible Interfaces
• Fine-grained • Required Interfaces Required Interface
• Can “move” across components • Specify the conditions upon which a component can be (re)used
• Identifiable unit of instantiation • The platform is compatible
• Modules • The environment is setup correctly
• Rarely exist at run time Adapter Wrapper • Specify the conditions upon which a com
• May require other modules to compile can be (re)used
54 55
The platform is compatible
• Package the code
-
Connector Connector
Conceptual vs Implementation Why do we need them?
• In software architectures, connectors: • Separate computation from interaction
• Are first-class entities and have identity • Interaction abstraction and/or parameterization
• Describe all system interaction • Localization of interaction definition
• Entitled to their own specifications & abstractions • Specification of complex interactions
• Binary vs. N-ary
• Asymmetric vs. Symmetric
• In software system implementations, connectors: • Interaction protocols
• Frequently have no dedicated code, no identity • Minimize component interpendencies
• Typically do not correspond to compilation units • Extra-component system (interaction) information
• Are distributed across multiple modules and interaction mechanisms • Component independence
• Component interaction flexibility
• Support software evolution
• At component-, connector-, and system-level
• Facilitate heterogeneity, dynamism, distributions
58 59
Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission. Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.
Constraints Agenda
• Definition
• Components must be constrained to ensure that: • Why software architecture
• the requirements are met
• the required functionality is achieved • Architecting software
• no functionality is duplicated
• What is a Software Architecture
• the required performance is achieved
• modularity is realized • Examples
• Architectural assets
• References
60 61
68 69
Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission. Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; © 2008 John Wiley & Sons, Inc. Reprinted with permission.
Architectural Pattern
Architectural Patterns
Example: Layers
Architectural pattern – Layers
Named collection of architectural design decisions that are
applicable to a recurring design problem parameterized to
account for different software development contexts in which ISO OSI 7-Layer Model
Domain Specific
Reference Architecture
Software Architecture (DSSA)
• A DSSA is the combination of:
A reference architecture:
• Reference architecture for an application domain
• is an architecture • A library of components for that architecture containing reusable chinks of
representation of a particular domain expertise,
domain of interest. • A method of choosing and configuring components to work within an instance
• typically includes many of the reference architecture
different architectural • A DSSA is thus an assemblage of software components
• Specialized for a particular type of task (domain), generalized for effective use
patterns, applied in different
across that domain,
areas of its structure possibly • and composed in a standardized structure (topology) effective for building
partially or completely successful applications.
instantiated • Since DSSAs are specialized for a particular domain they are only of
value if one exists for the domain wherein the engineer is tasked with
building a new application.
Example reference architecture for the development of web applications
• DSSAs are the pre-eminent means for maximal reuse of knowledge and
from the Microsoft Application Architecture Guide (Key: UML) 78 prior development and hence for developing a new architectural design79
Reference Model Application Framework
A reference model is an abstract representation of entities, An application framework represents the partial
their relationships and behavior, in a given domain of interest, implementation of a specific area of an application
and which typically forms the conceptual basis for the
development of more concrete elements • Most widely-known frameworks support user interfaces
• Java Server Pages
• ASP.NET
• Examples: a business model, an information model, or a
glossary of terms
80 81
82 83
Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; (C) 2008 John Wiley & Sons, Inc. Reprinted with permission.
Architectural Styles, DSSAs,
Domains vs. Product Lines
Product Lines
Domains are in the problem space, product lines are in • Architectural Styles
the solution space • Can be general or domain-specific
• Provides general guidelines for diverse kinds of applications; focus
• Domain • Product Line on –ility development
• Consumer electronics • Sony WEGA TVs • Domain Spec. Soft. Architectures (DSSA)
• Avionics • Boeing 747 Family • Domain specific; includes elaborate domain model and specific
• Compilers • GNU compiler suite reference architecture
• Video games • Suite of games built on • Product lines
same engine • Explicit set of related products with common aspects
84 85
Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; (C) 2008 John Wiley & Sons, Inc. Reprinted with permission. Software Architecture: Foundations, Theory, and Practice; Richard N. Taylor, Nenad Medvidovic, and Eric M. Dashofy; (C) 2008 John Wiley & Sons, Inc. Reprinted with permission.
References
Books
• Architecture Styles
• Institutions
• http://www.iso-architecture.org/ieee-1471/ (Systems and software engineering —
• Buschmann et al.: Pattern-Oriented Software Architecture, Vol. 1, 2, 4
Architecture description ISO/IEC/IEEE 42010) • Fowler: Patterns of Enterprise Application Architecture
• https://iasaglobal.org/ (International Association of Software Architects) • http://www.aosabook.org/ (Book on Architectures of Open Source Systems)
• https://www.sei.cmu.edu/architecture (Software Engineering Institute / • http://www.softwarearchitecturebook.com/ (Slides from the book “Software
Architecture) Architecture: Foundations, Theory and Practice” by: Richard N. Taylor,
• http://www.softwarearchitectureportal.org/ (The Software Architecture Portal) Nenad Medvidovic, and Eric M. Dashofy Publisher: Wiley ISBN-10:
• http://www.bredemeyer.com/papers.htm (Software Architecture Resources) 0470167742)
• People • https://www.viewpoints-and-perspectives.info/ (Software Systems
• http://handbookofsoftwarearchitecture.com/ (Software Architecture Grady Booch) Architecture, Rozanski, Woods)
• https://www.martinfowler.com/bliki/ (Martin Fowler’s blog and wiki) • https://docs.microsoft.com/en-us/previous-versions/msp-n-
• http://stal.blogspot.com/ (Michael Stal Blog) p/ee658093(v=pandp.10) (Software Architecture and Design Microsoft)
• http://www.ivencia.com/index.html?/softwarearchitect/ (ivencia) • http://www.ece.ubc.ca/~matei/EECE417/BASS/ (Software Architecture in
• http://softwarearchitecturezen.blogspot.com/ (Peter Crips Blog) Practice)
• Software Architecture in Practice, Second Edition, Len Bass, Paul Clements,
90 Rick Kazman, Addison Wesley, 2003 91
Videos / Podcasts Tools
• Archimate (Standard Notation for Enterprise Architecture)
• Eclipse (IDE): http://www.eclipse.org/
• George Fairbanks: Introduction to Software Architecture 2012
(Video: https://www.youtube.com/watch?v=x30DcBfCJRI) • Enterprise architect (IDE):
• http://codingblocks.net/ http://www.sparxsystems.com/products/ea/index.html
• http://www.se-radio.net/tag/architecture • Modelio (IDE for software modeling in UML and Archimate):
• https://softwareengineeringdaily.com/ https://www.modelio.org/
• https://player.oreilly.com/videos/9781491901137 • Archi (Archimate Modeling Tool)
• https://player.oreilly.com/videos/9781491901137 (Software Architecture
Fundamentals Understanding the basics) https://www.archimatetool.com/
• https://www.ibm.com/developerworks/rational/library/feb06/eeles • AcmeStudio (IDE for modeling Software Architecture)
http://www.cs.cmu.edu/~acme/
92 93