SlideShare a Scribd company logo
Ivano Malavolta
Introduction to
SOFTWARE
ARCHITECTURE
[2015/2016] Introduction to software architecture
Roadmap
Definitions and concepts
Architectural styles
Some contents of this part of lecture extracted from Henry Muccini’s lecture on
software architecture at the University of L’Aquila (Italy)
Definitions and concepts
Outline
Definitions
Static descriptions
Dynamic descriptions
Why software architecture?
Context
© David Garlan, lecture @GSSI, a.y., 2013/2014
Context
© David Garlan, lecture @GSSI, a.y., 2013/2014
Context
© David Garlan, lecture @GSSI, a.y., 2013/2014
Context
© David Garlan, lecture @GSSI, a.y., 2013/2014
Refresh
Example: software architecture
The software architecture of a program or computing system is the
structure or structures of the system, which comprise software
components, the externally visible properties of those components and
the relationships among them
   
 L. Bass, P. Clements, R. Kazman, Software Architecture In Practise, Addison Wesley, 1998
System
subsystem Subsystem
component component component
Software Architecture definitions
Perry and Wolf, ’92 (aspects):
–“Architecture is concerned with the selection of architecturalelements,
their interactions, and the constraints on those elements and their
interactions necessary to provide a frameworkin which to satisfy the
requirements and serve as a basis for the design.”
–Elements are divided into processing elements, data elements and
connection elements
Garlan and Shaw, ’93 (elements):
– Architecture for a specific systemmay be captured as “a collection of
computationalcomponents - or simply components - together witha
descriptionof the interactions betweenthese components - the
connectors -”
Sommerville, 7th edition, ’04 (process):
– The design process for identifying the sub-systems making up a system and
the framework for sub-system control and communication is architectural
design. The output of this design process is a description of the SA.
Develop systems “architecturally”
– Design at an architectural level of abstraction
– Build systems compositionally from parts
– Assure that the system will satisfy critical requirements before it is
constructed
– Recognize and reuse standard architectures patterns & styles
– Reuse codified architectural design expertise à reduce costs
through product-lines
If you think good architecture is
expensive,
try bad architecture.
... Brian Foote and JosephYoder
In general terms…
SA describes (in a more or less “formal” notation) how a system
is structured into components and connectors…
– Components
– Connectors
– Channels and Ports
… and how these components interact
– Scenarios
– State Diagrams
–…
SA Structure (topology)
SA Dynamics (behavior)
Outline
Definitions
Static descriptions
Dynamic descriptions
Why software architecture?
Components
A component is a building block that is
– A unit of computation or a data store, with an
interface specifying the services it provides and
requires
– A unit of deployment
– A unit of reuse
• e.g., client, server, database, filters, ...
C1
S1
S2
S3
S’x
S’Y
provided
services
required
services
Example
Components vs Objects
The level of abstraction is usually different
• Size
– Objects tend to be small
– Components can be small (one object) or large (a library of
objects or a complete application)
• An architectural component may be implemented by
several objects
• Lifecycle
– Objects are created and destroyed constantly
– Components are created and destroyed infrequently
Connectors
A connector is a building block that enables interaction
among components
– Events
– Client/server middleware
– Messages and message buses
– Shared variables
– Procedure calls (local or remote)
– Pipes
Connectors may be implicit or explicit
– Connectors sometimes are just channels
– Connectors sometimes have their own logic and
complexity
Components and Connectors
A component is (or should be) independent of the
context in which it is used to provide services
A connector is (or should be) dependent on the
context in which it is used to connect components
Connectors sometimes are modeled as special kinds
of components
Interfaces
An interface is the external connection of a component
(or connector) that describes how to interact with it
Provided and required interfaces are important
Spectrum of interface specification
– Loosely specified (events go in, events go out)
– API style (list of functions)
– Very highly specified (event protocols across the interface in
CSP)
Example
GUI
FeedService
FeedService
Common
Action
NewsFeeder
Action
Admin
Action
Factory
FeedDelegate
POJOs
NewsFeeder
DAO
FeedDAO
NewsFeederDAO FeedDAO
FeedDelegate
Transfer
Object
ValidatorService
NewsFeeder
DelegatePOJOs
NewsFeederDelegate
Browser
(html
javascript)
Web
Services
DATABASE
Trasformation
Validation
BusinessFactory
Validation
Service
BusinessExtensionIn
BusinessExtensionOut
PresentationExtensionOut
PresentationExtensionIn
Outline
Definitions
Static descriptions
Dynamic descriptions
Why software architecture?
SA dynamics
The SA dynamics is expressed in terms of component
interactions via connectors
- Labeled Transition Systems
- Automata
- UML StateCharts, Sequence Diagrams, Activity Diagrams
- State Diagrams
- Message Sequence Charts
- …
Customer Interface
Customer Process
Web Server
Customer Server
Order Server
Cart Server
Catalog Server
Delivery Order
Process
SA Static Description
An example : e-commerce system
SA Dynamic Description :
Browse Catalogue Sequence Diagram
CustomerInterface
Registered Customer
CustomerProcess CatalogServer
Catalog DB
Involved
BrowseCatalog
BrowseCatalog
ReadStatus
Catalog Page
Output Page
Catalog Info
An example : e-commerce system
CustomerInterface
Registered Customer
CustomerProcess CartServer
PlaceOrderReq
PlaceOrder
ReadStatus
Cart DB
Involved
pageOrder
OutputPage
Order DB
Involved
OrderServer
EmptyCart
Cart DB
Involved
CustomerServer
ReadInfo
Customer
DB Involved
DeliveryOrderProcess
createNewOrder
OrderInfo
newOrder
CartInfo
CustomerInfo
OrderInfo
SA Dynamic Description :
Place Order Sequence Diagram (success)
An example : e-commerce system
SA Dynamic Description :
Place Order Sequence Diagram (empty cart)
CustomerInterface
Registered Customer
CustomerProcess CartServer
PlaceOrderReq
PlaceOrder
ReadStatus
Cart DB
Involved
errorPage
OutputPage
emptyCart
An example : e-commerce system
Outline
Definitions
Static descriptions
Dynamic descriptions
Why software architecture?
Advantages of explicit architecture
System analysis
– Analysis of the system before it has been built
– Costs saving and risks mitigation
Large-scale reuse
– The architecture (or part of it) may be reusable across a range
of systems
– Design decisions reuse à saves design costs + less risks
Stakeholders communication
– Architecture may be used as a focus of discussion by system
stakeholders
– Early design decisions reasoning, when it is still relatively easy
to adapt
Architecture and software qualities
Performance
– Localise criticaloperations and minimise communications
Security
– Use a layered architecture with criticalassets in the inner layers
Safety
– Localise safety-criticalfeatures in a small number of sub-systems
Availability
– Include redundant components and mechanisms for fault tolerance
Maintainability
– Use fine-grain, replaceable components
These are all examples of TACTICS
Tactics
A tactic is a design decision that refines a high level style
and is influential in the control of a quality attribute response
Tactics complement and refine styles that make up the
architecture
Design decision Quality attribute
promotes
tactic
Example: tactics for availability
© David Garlan, lecture @GSSI, a.y., 2013/2014
Tactics may originate conflicts
For example:
• Using large-grain components improves performance
but reduces maintainability
• Introducing redundant data improves availabilitybut
makes security more difficult
• Localising safety-related features may mean more
communication so degraded performance
© Len Bass, Paul Clements, Rick Kazman, Software Architecture in Practice, 3rd edition
Architectural styles
(aka patterns)
Outline
What is an architectural style?
Styles catalogue
What is an architectural style?
An architectural style establishes a relationship between:
• Context
– A recurring situation in the world that gives rise to a problem
• Problem
– The problem, appropriately generalized, that arises in the context
• Solution:
– a set of element types
• e.g., data repositories,processes, and objects
– a set of interaction mechanisms or connectors
• e.g., method calls, events, or message bus
– a topological layout of the components
– a set of semantic constraints
Common styles catalogue
• MVC
• Publish-subscribe
• Layered
• Shared-data
• Client-server
• Peer to peer
• Pipes and filters
Model-View-Controller style
Context: User interface software is typically the most frequently modified
portion of an interactive application. Users often wish to look at data
from different perspectives, such as a bar graph or a pie chart. These
representations should both reflect the current state of the data.
Problem: How can user interface functionality be kept separate from
application functionality and yet still be responsive to user input, or to
changes in the underlying application’s data? And how can multiple views
of the user interface be created, maintained, and coordinated when the
underlying application data changes?
Solution: The model-view-controller (MVC) style separates application
functionality into three kinds of components:
– A model, which contains the application’s data
– A view, which displays some portion of the underlying data and
interacts with the user
– A controller, which mediates between the model and the view and
manages the notifications of state changes
MVC Example
MVC Solution - 1
The MVC pattern breaks system functionality into three
components: a model, a view, and a controller that mediates
between the model and the view
• Elements:
– The model is a representation of the application data or state, and
it contains (or provides an interface to) application logic
– The viewis a user interface component that either produces a
representation of the model for the user or allows for some form of
user input, or both
– The controller manages the interaction between the model and
the view, translating user actions into changes to the model or
changes to the view
MVC Solution - 2
Relations: The notifies relation connects instances of model,
view, and controller, notifying elements of relevant state
changes
Constraints:
– There must be at least one instance of each of model, view, and
controller
– The model component should not interact directly with the
controller
Weaknesses:
– The complexity may not be worth it for simple user interfaces
– The model, view, and controller abstractions may not be good fits
for some user interface toolkits
Publish-Subscribe style
Context
– There are a number of independent producers and consumers
of data that must interact. The precise number and nature of
the data producers and consumers are not predetermined or
fixed, nor is the data that they share.
Problem
– How can we create integration mechanisms that support the
ability to transmit messages among the producers and
consumers so they are unaware of each other’s identity, or
potentially even their existence?
Solution
– Components interact via announced messages, or events.
Components subscribe to a set of events.
– Publisher components place events on the bus by announcing
them; the connector then delivers those events to the
subscriber components that have registered an interest in those
events.
Publish-Subscribe Solution – 1
Elements:
– Any component with at least one publish or subscribe port
– The publish-subscribe connector, which will have announce and
listen roles for components that wish to publish and subscribe to
events
Relations:
– The attachment relation associates components with the publish-
subscribe connector by prescribing which components announce
events and which components are registered to receive events
Weaknesses:
– Typically increases latency and has a negative effect on scalability
and predictability of message delivery time
– Less control over ordering of messages
– Delivery of messages is not guaranteed
Publish-subscribe example 1
© Len Bass, Paul Clements, Rick Kazman,
Publish-subscribe example 2
topics nodes
Layered Style (Virtual Machine Example)
Java Virtual Machine
Processor
Operating
System
Java
Virtual Machine
Java
Application
(Virtual Machine Style)
The Layered System Style
A layered system is organized hierarchically, each layer providing
service to the layer above and below
• Components
– Programs or subprograms deployed in a layer
• Connectors
– Protocols
• Procedure calls or system calls
• Stylistic invariants
– Each layer provides a service only to the immediate layer “above”
(at the next higher level of abstraction) and uses the service only of
the immediate layer “below” (at the next lower level of abstraction)
Layered System Example: OSI Protocol Stack
Application
Presentation
Session
Transport
Network
Data Link
Physical
Application
Presentation
Session
Transport
Network
Data Link
Physical
Network
Data Link
Physical
Network
Data Link
Physical
Layered System Advantages and Disadvantages
Advantages
– Decomposability: Effective separation of concerns and different
level of abstractions
– Maintainability: Changes that do not affect layer interfaces are easy
to make
– Adaptability/Portability: Can replace inner layers as long as
interfaces remain the same
– Understandability: Strict set of dependencies allow you to ignore
outer layers
Disadvantages
– Not all systems are easily structured in a layered fashion
– Performance degrades with too many layers
– Can be difficult to cleanly assign functionality to the “right” layer
Shared-Data style
Context
Various computational components need to share and manipulate
large amounts of data. This data does not belong solely to any one
of those components.
Problem
How can systems store and manipulate persistent data that is
accessed by multiple independent components?
Solution
In the shared-data pattern, interaction is dominated by the
exchange of persistent data between multiple data accessors and
at least one shared-data store. Exchange may be initiated by the
accessors or the data store. The connector type is data reading
and writing.
Shared Data Solution
Elements:
– Shared-data store
• Concerns include types of data stored, data
performance-oriented properties, data distribution, and
number of accessors permitted
– Data accessor component
– Data reading and writing connector
Shared Data Example
Advantages and disadvantages
Advantages
– Simplicity: Only one connector (the blackboard) that everyone
uses
– Evolvability: New types of components can be added easily
Disadvantages
– Blackboard becomes a bottleneck with too many clients
Client-server
• One component is a server offering a service
• The other components are clients using the service
• Server implementation is transparent but can be centralized or
distributed, single-threaded or multi-threaded
– Single interface point with physically distributed implementation
– Dynamic, transparent selection from among multiple interface
points
Client/Server Style example
3-tier client-server systems
3-tier client-server systems are a common class of distributed
business systems
• First tier: Client (user interface) tier
– Presentation logic
• Second (middle, “business logic”) tier: Servers acting as “business
objects”, encapsulating abstract, integrated models of multiple,
disparate data sources
– Computation
• Third (back-end, database) tier: Legacy business applications
providing data services
– Database
Weaknesses:
Substantial up-front cost and complexity
3-Tier Client-server systems (example)
Key
Web
browser
SignOnFilter
*.do
*.screen
Main
Servlet
Template
Servlet
Screen
JSP
index.jsp
Sign On
Notifier
mappings.xml
screen
definitions.xml
sign-on-
config.xml
Order
Facade
EJB tier Back endWeb tierClient tier
Catalog
Facade
OPC
Adventure
Catalog
DB
User
Mgmt
Facade
OpcOrder
TrackingService
OpcPurchase
OrderService
Client-side
application
Java
EE
filter
Stateless
session
bean
Java EE
application
Context
listener
Data
store
File
Servlet
ContainerWeb services
endpoint
SOAP
call
File
I/O
Java
call
HTTP/
HTTPS
JDBC
Peer-to-peer style
Context: need to cooperate and collaborate to provide a service to a
distributed community of users
Problem: How can a set of “equal” distributed computational entities be
connected to each other via a common protocol so that they can
organize and share their services with high availability and scalability?
Solution: components directly interact as peers. All peers are “equal” and
no peer or group of peers can be critical for the health of the system.
Peer-to-peer communication is typically a request/reply interaction
without the asymmetry found in the client-server pattern
Example: Napster
Example: Gnutella
Example: Skype
Advantages and Disadvantages
Advantages
– Interoperability A natural high-level architectural style for
heterogeneous distributed systems
– Scalability: Powerful enough server tiers can accommodate many
clients
– Distributability: Components communicate over a network
Disadvantages
– Visibility, Maintainability: Difficult to analyze and debug
• Distributed state
• Potential for deadlock, starvation, race conditions, service outages
– Require sophisticated interoperability mechanisms
• Data marshalling and unmarshalling
• Proxies and stubs for RPC
• Legacy wrappers
Pipe and Filter Pattern
Context: Many systems are required to transform streams of
discrete data items, from input to output. Many types of
transformations occur repeatedly in practice, and so it is desirable
to create these as independent, reusable parts
Problem: Such systems need to be divided into reusable, loosely
coupled components with simple, generic interaction
mechanisms. The components, being generic and loosely
coupled, are easily reused. The components, being independent,
can execute in parallel
Solution: The pattern of interaction in the pipe-and-filter pattern is
characterized by successive transformations of streams of data.
Data arrives at a filter’s input port(s), is transformed, and then is
passed via its output port(s) through a pipe to the next filter. A
single filter can consume data from, or produce data to, one or
more ports
Pipe and Filter Solution
Data is transformed from a system’s external inputs to its external outputs
through a series of transformations performed by its filters connected by
pipes
Elements:
– Filter, which is a component that transforms data read on its input port(s) to data
written on its output port(s)
– Pipe, which is a connector that conveys data from a filter’s output port(s) to another
filter’s input port(s). A pipe preserves the sequence of data items, and it does not
alter the data passing through
Relations: The attachment relation associates the output of filters with the
input of pipes and vice versa
Constraints:
– Pipes connect filter output ports to filter input ports
– Connected filters must agree on the type of data being passed along the
connecting pipe
Pipe-and-filter example
Many similarities between patterns and styles
– Goal: packaged engineering experience
– Formulation: organization and interaction among “key”
components
Differences:
Architectural styles vs design patterns
Architecturalstyles Design patterns
few many
large-scale system
organization
localized, small-scale
design solutions
Relationships between tactics and
styles
Styles are built from tactics
à if a style is a molecule, a tactic is an atom
MVC, for example utilizes the tactics:
– Increase semantic coherence
– Encapsulation
– Use an intermediary
– Use run-time binding
What this lecture means to you?
Software architecture is the main instrument for reasoning
about
– high level of system design
– system-levelproperties and qualities
• e.g., modularity, evolvability, etc.
– large-scale reuse
Architectural style: reusable pattern
– for solving recurrent problems
– for obtaining qualities “out-of-the-box”
Suggested readings
1. David Garlan. “Software architecture: a travelogue.” ICSE '14
Proceedings of the Conference on The Future of Software
Engineering, ACM Press, 2014.
1. Perry, D. E.; Wolf, A. L. (1992). "Foundations for the study of software
architecture". ACM SIGSOFT Software Engineering Notes 17 (4):
40.doi:10.1145/141874.141884.
2. Garlan & Shaw (1994). "An Introduction to Software Architecture".
Retrieved 2012-09-13.
References
Contact
Ivano Malavolta |
Post-doc researcher
Gran Sasso Science Institute
iivanoo
ivano.malavolta@gssi.infn.it
www.ivanomalavolta.com
Ad

More Related Content

What's hot (20)

Software Architecture vs design
Software Architecture vs design Software Architecture vs design
Software Architecture vs design
Arslan Anwar
 
Software Architecture Taxonomies - Behaviour: Components & Connectors
Software Architecture Taxonomies - Behaviour: Components & ConnectorsSoftware Architecture Taxonomies - Behaviour: Components & Connectors
Software Architecture Taxonomies - Behaviour: Components & Connectors
Jose Emilio Labra Gayo
 
[2017/2018] Introduction to Software Architecture
[2017/2018] Introduction to Software Architecture[2017/2018] Introduction to Software Architecture
[2017/2018] Introduction to Software Architecture
Ivano Malavolta
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
Majong DevJfu
 
[2015/2016] Collaborative software development with Git
[2015/2016] Collaborative software development with Git[2015/2016] Collaborative software development with Git
[2015/2016] Collaborative software development with Git
Ivano Malavolta
 
Architecture: where do you start?
 Architecture: where do you start? Architecture: where do you start?
Architecture: where do you start?
Skills Matter
 
Software Patterns
Software PatternsSoftware Patterns
Software Patterns
Sudarsun Santhiappan
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software Architecture
Markus Voelter
 
Software Architecture: introduction to the abstraction
Software Architecture: introduction to the abstractionSoftware Architecture: introduction to the abstraction
Software Architecture: introduction to the abstraction
Henry Muccini
 
ASAS 2014 - Simon Brown
ASAS 2014 - Simon BrownASAS 2014 - Simon Brown
ASAS 2014 - Simon Brown
Avisi B.V.
 
Introduction to ARCHITECTURAL LANGUAGES
Introduction to ARCHITECTURAL LANGUAGESIntroduction to ARCHITECTURAL LANGUAGES
Introduction to ARCHITECTURAL LANGUAGES
Ivano Malavolta
 
The Modern Software Architect
The Modern Software ArchitectThe Modern Software Architect
The Modern Software Architect
Niels Bech Nielsen
 
Layered Software Architecture
Layered Software ArchitectureLayered Software Architecture
Layered Software Architecture
Lars-Erik Kindblad
 
Object Oriented, Design patterns and data modelling worshop
Object Oriented, Design patterns and data modelling worshopObject Oriented, Design patterns and data modelling worshop
Object Oriented, Design patterns and data modelling worshop
Mohammad Shawahneh
 
Design engineering
Design engineeringDesign engineering
Design engineering
Vikram Dahiya
 
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
Mozaic Works
 
Software Architecture Course - Part III Taxonomies - Definitions
Software Architecture Course - Part III Taxonomies - DefinitionsSoftware Architecture Course - Part III Taxonomies - Definitions
Software Architecture Course - Part III Taxonomies - Definitions
Jose Emilio Labra Gayo
 
4+1 view model
4+1 view model4+1 view model
4+1 view model
Shobana Chokkalingam
 
05 architectural styles
05 architectural styles05 architectural styles
05 architectural styles
Majong DevJfu
 
Software design
Software designSoftware design
Software design
Syed Muhammad Hammad-ud-Din
 
Software Architecture vs design
Software Architecture vs design Software Architecture vs design
Software Architecture vs design
Arslan Anwar
 
Software Architecture Taxonomies - Behaviour: Components & Connectors
Software Architecture Taxonomies - Behaviour: Components & ConnectorsSoftware Architecture Taxonomies - Behaviour: Components & Connectors
Software Architecture Taxonomies - Behaviour: Components & Connectors
Jose Emilio Labra Gayo
 
[2017/2018] Introduction to Software Architecture
[2017/2018] Introduction to Software Architecture[2017/2018] Introduction to Software Architecture
[2017/2018] Introduction to Software Architecture
Ivano Malavolta
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
Majong DevJfu
 
[2015/2016] Collaborative software development with Git
[2015/2016] Collaborative software development with Git[2015/2016] Collaborative software development with Git
[2015/2016] Collaborative software development with Git
Ivano Malavolta
 
Architecture: where do you start?
 Architecture: where do you start? Architecture: where do you start?
Architecture: where do you start?
Skills Matter
 
Fundamentals Of Software Architecture
Fundamentals Of Software ArchitectureFundamentals Of Software Architecture
Fundamentals Of Software Architecture
Markus Voelter
 
Software Architecture: introduction to the abstraction
Software Architecture: introduction to the abstractionSoftware Architecture: introduction to the abstraction
Software Architecture: introduction to the abstraction
Henry Muccini
 
ASAS 2014 - Simon Brown
ASAS 2014 - Simon BrownASAS 2014 - Simon Brown
ASAS 2014 - Simon Brown
Avisi B.V.
 
Introduction to ARCHITECTURAL LANGUAGES
Introduction to ARCHITECTURAL LANGUAGESIntroduction to ARCHITECTURAL LANGUAGES
Introduction to ARCHITECTURAL LANGUAGES
Ivano Malavolta
 
Object Oriented, Design patterns and data modelling worshop
Object Oriented, Design patterns and data modelling worshopObject Oriented, Design patterns and data modelling worshop
Object Oriented, Design patterns and data modelling worshop
Mohammad Shawahneh
 
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
Mozaic Works
 
Software Architecture Course - Part III Taxonomies - Definitions
Software Architecture Course - Part III Taxonomies - DefinitionsSoftware Architecture Course - Part III Taxonomies - Definitions
Software Architecture Course - Part III Taxonomies - Definitions
Jose Emilio Labra Gayo
 
05 architectural styles
05 architectural styles05 architectural styles
05 architectural styles
Majong DevJfu
 

Viewers also liked (20)

[2015/2016] Local data storage for web-based mobile apps
[2015/2016] Local data storage for web-based mobile apps[2015/2016] Local data storage for web-based mobile apps
[2015/2016] Local data storage for web-based mobile apps
Ivano Malavolta
 
[2015/2016] AADL (Architecture Analysis and Design Language)
[2015/2016] AADL (Architecture Analysis and Design Language)[2015/2016] AADL (Architecture Analysis and Design Language)
[2015/2016] AADL (Architecture Analysis and Design Language)
Ivano Malavolta
 
[2015/2016] Apache Cordova APIs
[2015/2016] Apache Cordova APIs[2015/2016] Apache Cordova APIs
[2015/2016] Apache Cordova APIs
Ivano Malavolta
 
[2015/2016] The REST architectural style
[2015/2016] The REST architectural style[2015/2016] The REST architectural style
[2015/2016] The REST architectural style
Ivano Malavolta
 
[2015/2016] Mobile thinking
[2015/2016] Mobile thinking[2015/2016] Mobile thinking
[2015/2016] Mobile thinking
Ivano Malavolta
 
[2015/2016] Require JS and Handlebars JS
[2015/2016] Require JS and Handlebars JS[2015/2016] Require JS and Handlebars JS
[2015/2016] Require JS and Handlebars JS
Ivano Malavolta
 
[2015/2016] Backbone JS
[2015/2016] Backbone JS[2015/2016] Backbone JS
[2015/2016] Backbone JS
Ivano Malavolta
 
Design patterns for mobile apps
Design patterns for mobile appsDesign patterns for mobile apps
Design patterns for mobile apps
Ivano Malavolta
 
[2015/2016] User-centred design
[2015/2016] User-centred design[2015/2016] User-centred design
[2015/2016] User-centred design
Ivano Malavolta
 
[2015/2016] Geolocation and mapping
[2015/2016] Geolocation and mapping[2015/2016] Geolocation and mapping
[2015/2016] Geolocation and mapping
Ivano Malavolta
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache Cordova
Ivano Malavolta
 
SKA Systems Engineering: from PDR to Construction
SKA Systems Engineering: from PDR to ConstructionSKA Systems Engineering: from PDR to Construction
SKA Systems Engineering: from PDR to Construction
Joint ALMA Observatory
 
Architectural Engineering - Brief Introduction and Case Studies
Architectural Engineering - Brief Introduction and Case StudiesArchitectural Engineering - Brief Introduction and Case Studies
Architectural Engineering - Brief Introduction and Case Studies
Hitech CADD Services
 
[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES
Ivano Malavolta
 
[2015/2016] JavaScript
[2015/2016] JavaScript[2015/2016] JavaScript
[2015/2016] JavaScript
Ivano Malavolta
 
PhoneGap: Accessing Device Capabilities
PhoneGap: Accessing Device CapabilitiesPhoneGap: Accessing Device Capabilities
PhoneGap: Accessing Device Capabilities
Ivano Malavolta
 
Handlebars & Require JS
Handlebars  & Require JSHandlebars  & Require JS
Handlebars & Require JS
Ivano Malavolta
 
Apache Cordova APIs version 4.3.0
Apache Cordova APIs version 4.3.0 Apache Cordova APIs version 4.3.0
Apache Cordova APIs version 4.3.0
Ivano Malavolta
 
Local data storage for mobile apps
Local data storage for mobile appsLocal data storage for mobile apps
Local data storage for mobile apps
Ivano Malavolta
 
The Mobile ecosystem, Context & Strategies
The Mobile ecosystem, Context & StrategiesThe Mobile ecosystem, Context & Strategies
The Mobile ecosystem, Context & Strategies
Ivano Malavolta
 
[2015/2016] Local data storage for web-based mobile apps
[2015/2016] Local data storage for web-based mobile apps[2015/2016] Local data storage for web-based mobile apps
[2015/2016] Local data storage for web-based mobile apps
Ivano Malavolta
 
[2015/2016] AADL (Architecture Analysis and Design Language)
[2015/2016] AADL (Architecture Analysis and Design Language)[2015/2016] AADL (Architecture Analysis and Design Language)
[2015/2016] AADL (Architecture Analysis and Design Language)
Ivano Malavolta
 
[2015/2016] Apache Cordova APIs
[2015/2016] Apache Cordova APIs[2015/2016] Apache Cordova APIs
[2015/2016] Apache Cordova APIs
Ivano Malavolta
 
[2015/2016] The REST architectural style
[2015/2016] The REST architectural style[2015/2016] The REST architectural style
[2015/2016] The REST architectural style
Ivano Malavolta
 
[2015/2016] Mobile thinking
[2015/2016] Mobile thinking[2015/2016] Mobile thinking
[2015/2016] Mobile thinking
Ivano Malavolta
 
[2015/2016] Require JS and Handlebars JS
[2015/2016] Require JS and Handlebars JS[2015/2016] Require JS and Handlebars JS
[2015/2016] Require JS and Handlebars JS
Ivano Malavolta
 
Design patterns for mobile apps
Design patterns for mobile appsDesign patterns for mobile apps
Design patterns for mobile apps
Ivano Malavolta
 
[2015/2016] User-centred design
[2015/2016] User-centred design[2015/2016] User-centred design
[2015/2016] User-centred design
Ivano Malavolta
 
[2015/2016] Geolocation and mapping
[2015/2016] Geolocation and mapping[2015/2016] Geolocation and mapping
[2015/2016] Geolocation and mapping
Ivano Malavolta
 
[2015/2016] Apache Cordova
[2015/2016] Apache Cordova[2015/2016] Apache Cordova
[2015/2016] Apache Cordova
Ivano Malavolta
 
SKA Systems Engineering: from PDR to Construction
SKA Systems Engineering: from PDR to ConstructionSKA Systems Engineering: from PDR to Construction
SKA Systems Engineering: from PDR to Construction
Joint ALMA Observatory
 
Architectural Engineering - Brief Introduction and Case Studies
Architectural Engineering - Brief Introduction and Case StudiesArchitectural Engineering - Brief Introduction and Case Studies
Architectural Engineering - Brief Introduction and Case Studies
Hitech CADD Services
 
[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES[2015/2016] Software systems engineering PRINCIPLES
[2015/2016] Software systems engineering PRINCIPLES
Ivano Malavolta
 
PhoneGap: Accessing Device Capabilities
PhoneGap: Accessing Device CapabilitiesPhoneGap: Accessing Device Capabilities
PhoneGap: Accessing Device Capabilities
Ivano Malavolta
 
Apache Cordova APIs version 4.3.0
Apache Cordova APIs version 4.3.0 Apache Cordova APIs version 4.3.0
Apache Cordova APIs version 4.3.0
Ivano Malavolta
 
Local data storage for mobile apps
Local data storage for mobile appsLocal data storage for mobile apps
Local data storage for mobile apps
Ivano Malavolta
 
The Mobile ecosystem, Context & Strategies
The Mobile ecosystem, Context & StrategiesThe Mobile ecosystem, Context & Strategies
The Mobile ecosystem, Context & Strategies
Ivano Malavolta
 
Ad

Similar to [2015/2016] Introduction to software architecture (20)

Slides chapter 9
Slides chapter 9Slides chapter 9
Slides chapter 9
Priyanka Shetty
 
3 analysis and design overview
3 analysis and design overview3 analysis and design overview
3 analysis and design overview
Châu Thanh Chương
 
Design engineering
Design engineeringDesign engineering
Design engineering
Vikram Dahiya
 
Unit_4_Software_Design.pptx
Unit_4_Software_Design.pptxUnit_4_Software_Design.pptx
Unit_4_Software_Design.pptx
taxegap762
 
Software Architecture Design for Begginers
Software Architecture Design for BegginersSoftware Architecture Design for Begginers
Software Architecture Design for Begginers
Chinh Ngo Nguyen
 
SA_UNIT_1.pptx
SA_UNIT_1.pptxSA_UNIT_1.pptx
SA_UNIT_1.pptx
ShwetaGajbhiye12
 
DESIGN CONCEPTS
DESIGN CONCEPTSDESIGN CONCEPTS
DESIGN CONCEPTS
VigneshSridhar17
 
Design Concepts software engineering.ppt
Design Concepts software engineering.pptDesign Concepts software engineering.ppt
Design Concepts software engineering.ppt
RohanMalik45
 
Ch09
Ch09Ch09
Ch09
Humberto Bruno Pontes Silva
 
Ch09
Ch09Ch09
Ch09
guest50f28c
 
Software design
Software designSoftware design
Software design
Zulqarnaintayyab
 
Design concepts in concepts of engineering design
Design concepts in concepts of engineering designDesign concepts in concepts of engineering design
Design concepts in concepts of engineering design
SureshvSuri1
 
Design Engineering is a topic of software engineering of second year fourth s...
Design Engineering is a topic of software engineering of second year fourth s...Design Engineering is a topic of software engineering of second year fourth s...
Design Engineering is a topic of software engineering of second year fourth s...
38aartidhage
 
Unit 5 design engineering ssad
Unit 5 design engineering ssadUnit 5 design engineering ssad
Unit 5 design engineering ssad
Preeti Mishra
 
Software Architecture
Software Architecture Software Architecture
Software Architecture
ssuser9d62d6
 
Fostering MBSE in Engineering Culture
Fostering MBSE in Engineering CultureFostering MBSE in Engineering Culture
Fostering MBSE in Engineering Culture
Obeo
 
Software architecture
Software architectureSoftware architecture
Software architecture
Ahmad Raza Aslam
 
Software Architecture in Architecture design .ppt
Software Architecture in Architecture design .pptSoftware Architecture in Architecture design .ppt
Software Architecture in Architecture design .ppt
guruswamyd785
 
Technical Architecture
Technical ArchitectureTechnical Architecture
Technical Architecture
scmiyer
 
Software design
Software designSoftware design
Software design
Inocentshuja Ahmad
 
Unit_4_Software_Design.pptx
Unit_4_Software_Design.pptxUnit_4_Software_Design.pptx
Unit_4_Software_Design.pptx
taxegap762
 
Software Architecture Design for Begginers
Software Architecture Design for BegginersSoftware Architecture Design for Begginers
Software Architecture Design for Begginers
Chinh Ngo Nguyen
 
Design Concepts software engineering.ppt
Design Concepts software engineering.pptDesign Concepts software engineering.ppt
Design Concepts software engineering.ppt
RohanMalik45
 
Design concepts in concepts of engineering design
Design concepts in concepts of engineering designDesign concepts in concepts of engineering design
Design concepts in concepts of engineering design
SureshvSuri1
 
Design Engineering is a topic of software engineering of second year fourth s...
Design Engineering is a topic of software engineering of second year fourth s...Design Engineering is a topic of software engineering of second year fourth s...
Design Engineering is a topic of software engineering of second year fourth s...
38aartidhage
 
Unit 5 design engineering ssad
Unit 5 design engineering ssadUnit 5 design engineering ssad
Unit 5 design engineering ssad
Preeti Mishra
 
Software Architecture
Software Architecture Software Architecture
Software Architecture
ssuser9d62d6
 
Fostering MBSE in Engineering Culture
Fostering MBSE in Engineering CultureFostering MBSE in Engineering Culture
Fostering MBSE in Engineering Culture
Obeo
 
Software Architecture in Architecture design .ppt
Software Architecture in Architecture design .pptSoftware Architecture in Architecture design .ppt
Software Architecture in Architecture design .ppt
guruswamyd785
 
Technical Architecture
Technical ArchitectureTechnical Architecture
Technical Architecture
scmiyer
 
Ad

More from Ivano Malavolta (20)

On-Device or Remote? On the Energy Efficiency of Fetching LLM-Generated Conte...
On-Device or Remote? On the Energy Efficiency of Fetching LLM-Generated Conte...On-Device or Remote? On the Energy Efficiency of Fetching LLM-Generated Conte...
On-Device or Remote? On the Energy Efficiency of Fetching LLM-Generated Conte...
Ivano Malavolta
 
Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...
Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...
Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...
Ivano Malavolta
 
The H2020 experience
The H2020 experienceThe H2020 experience
The H2020 experience
Ivano Malavolta
 
The Green Lab - Research cocktail @Vrije Universiteit Amsterdam (October 2020)
The Green Lab - Research cocktail  @Vrije Universiteit Amsterdam (October 2020)The Green Lab - Research cocktail  @Vrije Universiteit Amsterdam (October 2020)
The Green Lab - Research cocktail @Vrije Universiteit Amsterdam (October 2020)
Ivano Malavolta
 
Software sustainability and Green IT
Software sustainability and Green ITSoftware sustainability and Green IT
Software sustainability and Green IT
Ivano Malavolta
 
Navigation-aware and Personalized Prefetching of Network Requests in Android ...
Navigation-aware and Personalized Prefetching of Network Requests in Android ...Navigation-aware and Personalized Prefetching of Network Requests in Android ...
Navigation-aware and Personalized Prefetching of Network Requests in Android ...
Ivano Malavolta
 
How Maintainability Issues of Android Apps Evolve [ICSME 2018]
How Maintainability Issues of Android Apps Evolve [ICSME 2018]How Maintainability Issues of Android Apps Evolve [ICSME 2018]
How Maintainability Issues of Android Apps Evolve [ICSME 2018]
Ivano Malavolta
 
Collaborative Model-Driven Software Engineering: a Classification Framework a...
Collaborative Model-Driven Software Engineering: a Classification Framework a...Collaborative Model-Driven Software Engineering: a Classification Framework a...
Collaborative Model-Driven Software Engineering: a Classification Framework a...
Ivano Malavolta
 
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...
Ivano Malavolta
 
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...Modeling objects interaction via UML sequence diagrams [Software Design] [Com...
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...
Ivano Malavolta
 
Modeling behaviour via UML state machines [Software Design] [Computer Science...
Modeling behaviour via UML state machines [Software Design] [Computer Science...Modeling behaviour via UML state machines [Software Design] [Computer Science...
Modeling behaviour via UML state machines [Software Design] [Computer Science...
Ivano Malavolta
 
Object-oriented design patterns in UML [Software Design] [Computer Science] [...
Object-oriented design patterns in UML [Software Design] [Computer Science] [...Object-oriented design patterns in UML [Software Design] [Computer Science] [...
Object-oriented design patterns in UML [Software Design] [Computer Science] [...
Ivano Malavolta
 
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...
Ivano Malavolta
 
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...Requirements engineering with UML [Software Design] [Computer Science] [Vrije...
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...
Ivano Malavolta
 
Modeling and abstraction, software development process [Software Design] [Com...
Modeling and abstraction, software development process [Software Design] [Com...Modeling and abstraction, software development process [Software Design] [Com...
Modeling and abstraction, software development process [Software Design] [Com...
Ivano Malavolta
 
[2017/2018] Agile development
[2017/2018] Agile development[2017/2018] Agile development
[2017/2018] Agile development
Ivano Malavolta
 
Reconstructing microservice-based architectures
Reconstructing microservice-based architecturesReconstructing microservice-based architectures
Reconstructing microservice-based architectures
Ivano Malavolta
 
[2017/2018] AADL - Architecture Analysis and Design Language
[2017/2018] AADL - Architecture Analysis and Design Language[2017/2018] AADL - Architecture Analysis and Design Language
[2017/2018] AADL - Architecture Analysis and Design Language
Ivano Malavolta
 
[2017/2018] Architectural languages
[2017/2018] Architectural languages[2017/2018] Architectural languages
[2017/2018] Architectural languages
Ivano Malavolta
 
[2017/2018] RESEARCH in software engineering
[2017/2018] RESEARCH in software engineering[2017/2018] RESEARCH in software engineering
[2017/2018] RESEARCH in software engineering
Ivano Malavolta
 
On-Device or Remote? On the Energy Efficiency of Fetching LLM-Generated Conte...
On-Device or Remote? On the Energy Efficiency of Fetching LLM-Generated Conte...On-Device or Remote? On the Energy Efficiency of Fetching LLM-Generated Conte...
On-Device or Remote? On the Energy Efficiency of Fetching LLM-Generated Conte...
Ivano Malavolta
 
Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...
Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...
Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...
Ivano Malavolta
 
The Green Lab - Research cocktail @Vrije Universiteit Amsterdam (October 2020)
The Green Lab - Research cocktail  @Vrije Universiteit Amsterdam (October 2020)The Green Lab - Research cocktail  @Vrije Universiteit Amsterdam (October 2020)
The Green Lab - Research cocktail @Vrije Universiteit Amsterdam (October 2020)
Ivano Malavolta
 
Software sustainability and Green IT
Software sustainability and Green ITSoftware sustainability and Green IT
Software sustainability and Green IT
Ivano Malavolta
 
Navigation-aware and Personalized Prefetching of Network Requests in Android ...
Navigation-aware and Personalized Prefetching of Network Requests in Android ...Navigation-aware and Personalized Prefetching of Network Requests in Android ...
Navigation-aware and Personalized Prefetching of Network Requests in Android ...
Ivano Malavolta
 
How Maintainability Issues of Android Apps Evolve [ICSME 2018]
How Maintainability Issues of Android Apps Evolve [ICSME 2018]How Maintainability Issues of Android Apps Evolve [ICSME 2018]
How Maintainability Issues of Android Apps Evolve [ICSME 2018]
Ivano Malavolta
 
Collaborative Model-Driven Software Engineering: a Classification Framework a...
Collaborative Model-Driven Software Engineering: a Classification Framework a...Collaborative Model-Driven Software Engineering: a Classification Framework a...
Collaborative Model-Driven Software Engineering: a Classification Framework a...
Ivano Malavolta
 
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...
Ivano Malavolta
 
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...Modeling objects interaction via UML sequence diagrams [Software Design] [Com...
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...
Ivano Malavolta
 
Modeling behaviour via UML state machines [Software Design] [Computer Science...
Modeling behaviour via UML state machines [Software Design] [Computer Science...Modeling behaviour via UML state machines [Software Design] [Computer Science...
Modeling behaviour via UML state machines [Software Design] [Computer Science...
Ivano Malavolta
 
Object-oriented design patterns in UML [Software Design] [Computer Science] [...
Object-oriented design patterns in UML [Software Design] [Computer Science] [...Object-oriented design patterns in UML [Software Design] [Computer Science] [...
Object-oriented design patterns in UML [Software Design] [Computer Science] [...
Ivano Malavolta
 
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...
Ivano Malavolta
 
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...Requirements engineering with UML [Software Design] [Computer Science] [Vrije...
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...
Ivano Malavolta
 
Modeling and abstraction, software development process [Software Design] [Com...
Modeling and abstraction, software development process [Software Design] [Com...Modeling and abstraction, software development process [Software Design] [Com...
Modeling and abstraction, software development process [Software Design] [Com...
Ivano Malavolta
 
[2017/2018] Agile development
[2017/2018] Agile development[2017/2018] Agile development
[2017/2018] Agile development
Ivano Malavolta
 
Reconstructing microservice-based architectures
Reconstructing microservice-based architecturesReconstructing microservice-based architectures
Reconstructing microservice-based architectures
Ivano Malavolta
 
[2017/2018] AADL - Architecture Analysis and Design Language
[2017/2018] AADL - Architecture Analysis and Design Language[2017/2018] AADL - Architecture Analysis and Design Language
[2017/2018] AADL - Architecture Analysis and Design Language
Ivano Malavolta
 
[2017/2018] Architectural languages
[2017/2018] Architectural languages[2017/2018] Architectural languages
[2017/2018] Architectural languages
Ivano Malavolta
 
[2017/2018] RESEARCH in software engineering
[2017/2018] RESEARCH in software engineering[2017/2018] RESEARCH in software engineering
[2017/2018] RESEARCH in software engineering
Ivano Malavolta
 

Recently uploaded (20)

AI-proof your career by Olivier Vroom and David WIlliamson
AI-proof your career by Olivier Vroom and David WIlliamsonAI-proof your career by Olivier Vroom and David WIlliamson
AI-proof your career by Olivier Vroom and David WIlliamson
UXPA Boston
 
AI 3-in-1: Agents, RAG, and Local Models - Brent Laster
AI 3-in-1: Agents, RAG, and Local Models - Brent LasterAI 3-in-1: Agents, RAG, and Local Models - Brent Laster
AI 3-in-1: Agents, RAG, and Local Models - Brent Laster
All Things Open
 
Developing System Infrastructure Design Plan.pptx
Developing System Infrastructure Design Plan.pptxDeveloping System Infrastructure Design Plan.pptx
Developing System Infrastructure Design Plan.pptx
wondimagegndesta
 
Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Everything You Need to Know About Agentforce? (Put AI Agents to Work)Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Cyntexa
 
Design pattern talk by Kaya Weers - 2025 (v2)
Design pattern talk by Kaya Weers - 2025 (v2)Design pattern talk by Kaya Weers - 2025 (v2)
Design pattern talk by Kaya Weers - 2025 (v2)
Kaya Weers
 
Com fer un pla de gestió de dades amb l'eiNa DMP (en anglès)
Com fer un pla de gestió de dades amb l'eiNa DMP (en anglès)Com fer un pla de gestió de dades amb l'eiNa DMP (en anglès)
Com fer un pla de gestió de dades amb l'eiNa DMP (en anglès)
CSUC - Consorci de Serveis Universitaris de Catalunya
 
machines-for-woodworking-shops-en-compressed.pdf
machines-for-woodworking-shops-en-compressed.pdfmachines-for-woodworking-shops-en-compressed.pdf
machines-for-woodworking-shops-en-compressed.pdf
AmirStern2
 
Q1 2025 Dropbox Earnings and Investor Presentation
Q1 2025 Dropbox Earnings and Investor PresentationQ1 2025 Dropbox Earnings and Investor Presentation
Q1 2025 Dropbox Earnings and Investor Presentation
Dropbox
 
The No-Code Way to Build a Marketing Team with One AI Agent (Download the n8n...
The No-Code Way to Build a Marketing Team with One AI Agent (Download the n8n...The No-Code Way to Build a Marketing Team with One AI Agent (Download the n8n...
The No-Code Way to Build a Marketing Team with One AI Agent (Download the n8n...
SOFTTECHHUB
 
AsyncAPI v3 : Streamlining Event-Driven API Design
AsyncAPI v3 : Streamlining Event-Driven API DesignAsyncAPI v3 : Streamlining Event-Driven API Design
AsyncAPI v3 : Streamlining Event-Driven API Design
leonid54
 
Dark Dynamism: drones, dark factories and deurbanization
Dark Dynamism: drones, dark factories and deurbanizationDark Dynamism: drones, dark factories and deurbanization
Dark Dynamism: drones, dark factories and deurbanization
Jakub Šimek
 
Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?
Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?
Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?
Christian Folini
 
IT488 Wireless Sensor Networks_Information Technology
IT488 Wireless Sensor Networks_Information TechnologyIT488 Wireless Sensor Networks_Information Technology
IT488 Wireless Sensor Networks_Information Technology
SHEHABALYAMANI
 
May Patch Tuesday
May Patch TuesdayMay Patch Tuesday
May Patch Tuesday
Ivanti
 
Building the Customer Identity Community, Together.pdf
Building the Customer Identity Community, Together.pdfBuilding the Customer Identity Community, Together.pdf
Building the Customer Identity Community, Together.pdf
Cheryl Hung
 
Smart Investments Leveraging Agentic AI for Real Estate Success.pptx
Smart Investments Leveraging Agentic AI for Real Estate Success.pptxSmart Investments Leveraging Agentic AI for Real Estate Success.pptx
Smart Investments Leveraging Agentic AI for Real Estate Success.pptx
Seasia Infotech
 
AI x Accessibility UXPA by Stew Smith and Olivier Vroom
AI x Accessibility UXPA by Stew Smith and Olivier VroomAI x Accessibility UXPA by Stew Smith and Olivier Vroom
AI x Accessibility UXPA by Stew Smith and Olivier Vroom
UXPA Boston
 
Zilliz Cloud Monthly Technical Review: May 2025
Zilliz Cloud Monthly Technical Review: May 2025Zilliz Cloud Monthly Technical Review: May 2025
Zilliz Cloud Monthly Technical Review: May 2025
Zilliz
 
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptxTop 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
mkubeusa
 
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Markus Eisele
 
AI-proof your career by Olivier Vroom and David WIlliamson
AI-proof your career by Olivier Vroom and David WIlliamsonAI-proof your career by Olivier Vroom and David WIlliamson
AI-proof your career by Olivier Vroom and David WIlliamson
UXPA Boston
 
AI 3-in-1: Agents, RAG, and Local Models - Brent Laster
AI 3-in-1: Agents, RAG, and Local Models - Brent LasterAI 3-in-1: Agents, RAG, and Local Models - Brent Laster
AI 3-in-1: Agents, RAG, and Local Models - Brent Laster
All Things Open
 
Developing System Infrastructure Design Plan.pptx
Developing System Infrastructure Design Plan.pptxDeveloping System Infrastructure Design Plan.pptx
Developing System Infrastructure Design Plan.pptx
wondimagegndesta
 
Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Everything You Need to Know About Agentforce? (Put AI Agents to Work)Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Everything You Need to Know About Agentforce? (Put AI Agents to Work)
Cyntexa
 
Design pattern talk by Kaya Weers - 2025 (v2)
Design pattern talk by Kaya Weers - 2025 (v2)Design pattern talk by Kaya Weers - 2025 (v2)
Design pattern talk by Kaya Weers - 2025 (v2)
Kaya Weers
 
machines-for-woodworking-shops-en-compressed.pdf
machines-for-woodworking-shops-en-compressed.pdfmachines-for-woodworking-shops-en-compressed.pdf
machines-for-woodworking-shops-en-compressed.pdf
AmirStern2
 
Q1 2025 Dropbox Earnings and Investor Presentation
Q1 2025 Dropbox Earnings and Investor PresentationQ1 2025 Dropbox Earnings and Investor Presentation
Q1 2025 Dropbox Earnings and Investor Presentation
Dropbox
 
The No-Code Way to Build a Marketing Team with One AI Agent (Download the n8n...
The No-Code Way to Build a Marketing Team with One AI Agent (Download the n8n...The No-Code Way to Build a Marketing Team with One AI Agent (Download the n8n...
The No-Code Way to Build a Marketing Team with One AI Agent (Download the n8n...
SOFTTECHHUB
 
AsyncAPI v3 : Streamlining Event-Driven API Design
AsyncAPI v3 : Streamlining Event-Driven API DesignAsyncAPI v3 : Streamlining Event-Driven API Design
AsyncAPI v3 : Streamlining Event-Driven API Design
leonid54
 
Dark Dynamism: drones, dark factories and deurbanization
Dark Dynamism: drones, dark factories and deurbanizationDark Dynamism: drones, dark factories and deurbanization
Dark Dynamism: drones, dark factories and deurbanization
Jakub Šimek
 
Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?
Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?
Crazy Incentives and How They Kill Security. How Do You Turn the Wheel?
Christian Folini
 
IT488 Wireless Sensor Networks_Information Technology
IT488 Wireless Sensor Networks_Information TechnologyIT488 Wireless Sensor Networks_Information Technology
IT488 Wireless Sensor Networks_Information Technology
SHEHABALYAMANI
 
May Patch Tuesday
May Patch TuesdayMay Patch Tuesday
May Patch Tuesday
Ivanti
 
Building the Customer Identity Community, Together.pdf
Building the Customer Identity Community, Together.pdfBuilding the Customer Identity Community, Together.pdf
Building the Customer Identity Community, Together.pdf
Cheryl Hung
 
Smart Investments Leveraging Agentic AI for Real Estate Success.pptx
Smart Investments Leveraging Agentic AI for Real Estate Success.pptxSmart Investments Leveraging Agentic AI for Real Estate Success.pptx
Smart Investments Leveraging Agentic AI for Real Estate Success.pptx
Seasia Infotech
 
AI x Accessibility UXPA by Stew Smith and Olivier Vroom
AI x Accessibility UXPA by Stew Smith and Olivier VroomAI x Accessibility UXPA by Stew Smith and Olivier Vroom
AI x Accessibility UXPA by Stew Smith and Olivier Vroom
UXPA Boston
 
Zilliz Cloud Monthly Technical Review: May 2025
Zilliz Cloud Monthly Technical Review: May 2025Zilliz Cloud Monthly Technical Review: May 2025
Zilliz Cloud Monthly Technical Review: May 2025
Zilliz
 
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptxTop 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
Top 5 Benefits of Using Molybdenum Rods in Industrial Applications.pptx
mkubeusa
 
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Enterprise Integration Is Dead! Long Live AI-Driven Integration with Apache C...
Markus Eisele
 

[2015/2016] Introduction to software architecture

  • 4. Some contents of this part of lecture extracted from Henry Muccini’s lecture on software architecture at the University of L’Aquila (Italy) Definitions and concepts
  • 6. Context © David Garlan, lecture @GSSI, a.y., 2013/2014
  • 7. Context © David Garlan, lecture @GSSI, a.y., 2013/2014
  • 8. Context © David Garlan, lecture @GSSI, a.y., 2013/2014
  • 9. Context © David Garlan, lecture @GSSI, a.y., 2013/2014
  • 10. Refresh Example: software architecture The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components and the relationships among them      L. Bass, P. Clements, R. Kazman, Software Architecture In Practise, Addison Wesley, 1998 System subsystem Subsystem component component component
  • 11. Software Architecture definitions Perry and Wolf, ’92 (aspects): –“Architecture is concerned with the selection of architecturalelements, their interactions, and the constraints on those elements and their interactions necessary to provide a frameworkin which to satisfy the requirements and serve as a basis for the design.” –Elements are divided into processing elements, data elements and connection elements Garlan and Shaw, ’93 (elements): – Architecture for a specific systemmay be captured as “a collection of computationalcomponents - or simply components - together witha descriptionof the interactions betweenthese components - the connectors -” Sommerville, 7th edition, ’04 (process): – The design process for identifying the sub-systems making up a system and the framework for sub-system control and communication is architectural design. The output of this design process is a description of the SA.
  • 12. Develop systems “architecturally” – Design at an architectural level of abstraction – Build systems compositionally from parts – Assure that the system will satisfy critical requirements before it is constructed – Recognize and reuse standard architectures patterns & styles – Reuse codified architectural design expertise à reduce costs through product-lines If you think good architecture is expensive, try bad architecture. ... Brian Foote and JosephYoder
  • 13. In general terms… SA describes (in a more or less “formal” notation) how a system is structured into components and connectors… – Components – Connectors – Channels and Ports … and how these components interact – Scenarios – State Diagrams –… SA Structure (topology) SA Dynamics (behavior)
  • 15. Components A component is a building block that is – A unit of computation or a data store, with an interface specifying the services it provides and requires – A unit of deployment – A unit of reuse • e.g., client, server, database, filters, ... C1 S1 S2 S3 S’x S’Y provided services required services
  • 17. Components vs Objects The level of abstraction is usually different • Size – Objects tend to be small – Components can be small (one object) or large (a library of objects or a complete application) • An architectural component may be implemented by several objects • Lifecycle – Objects are created and destroyed constantly – Components are created and destroyed infrequently
  • 18. Connectors A connector is a building block that enables interaction among components – Events – Client/server middleware – Messages and message buses – Shared variables – Procedure calls (local or remote) – Pipes Connectors may be implicit or explicit – Connectors sometimes are just channels – Connectors sometimes have their own logic and complexity
  • 19. Components and Connectors A component is (or should be) independent of the context in which it is used to provide services A connector is (or should be) dependent on the context in which it is used to connect components Connectors sometimes are modeled as special kinds of components
  • 20. Interfaces An interface is the external connection of a component (or connector) that describes how to interact with it Provided and required interfaces are important Spectrum of interface specification – Loosely specified (events go in, events go out) – API style (list of functions) – Very highly specified (event protocols across the interface in CSP)
  • 23. SA dynamics The SA dynamics is expressed in terms of component interactions via connectors - Labeled Transition Systems - Automata - UML StateCharts, Sequence Diagrams, Activity Diagrams - State Diagrams - Message Sequence Charts - …
  • 24. Customer Interface Customer Process Web Server Customer Server Order Server Cart Server Catalog Server Delivery Order Process SA Static Description An example : e-commerce system
  • 25. SA Dynamic Description : Browse Catalogue Sequence Diagram CustomerInterface Registered Customer CustomerProcess CatalogServer Catalog DB Involved BrowseCatalog BrowseCatalog ReadStatus Catalog Page Output Page Catalog Info An example : e-commerce system
  • 26. CustomerInterface Registered Customer CustomerProcess CartServer PlaceOrderReq PlaceOrder ReadStatus Cart DB Involved pageOrder OutputPage Order DB Involved OrderServer EmptyCart Cart DB Involved CustomerServer ReadInfo Customer DB Involved DeliveryOrderProcess createNewOrder OrderInfo newOrder CartInfo CustomerInfo OrderInfo SA Dynamic Description : Place Order Sequence Diagram (success) An example : e-commerce system
  • 27. SA Dynamic Description : Place Order Sequence Diagram (empty cart) CustomerInterface Registered Customer CustomerProcess CartServer PlaceOrderReq PlaceOrder ReadStatus Cart DB Involved errorPage OutputPage emptyCart An example : e-commerce system
  • 29. Advantages of explicit architecture System analysis – Analysis of the system before it has been built – Costs saving and risks mitigation Large-scale reuse – The architecture (or part of it) may be reusable across a range of systems – Design decisions reuse à saves design costs + less risks Stakeholders communication – Architecture may be used as a focus of discussion by system stakeholders – Early design decisions reasoning, when it is still relatively easy to adapt
  • 30. Architecture and software qualities Performance – Localise criticaloperations and minimise communications Security – Use a layered architecture with criticalassets in the inner layers Safety – Localise safety-criticalfeatures in a small number of sub-systems Availability – Include redundant components and mechanisms for fault tolerance Maintainability – Use fine-grain, replaceable components These are all examples of TACTICS
  • 31. Tactics A tactic is a design decision that refines a high level style and is influential in the control of a quality attribute response Tactics complement and refine styles that make up the architecture Design decision Quality attribute promotes tactic
  • 32. Example: tactics for availability © David Garlan, lecture @GSSI, a.y., 2013/2014
  • 33. Tactics may originate conflicts For example: • Using large-grain components improves performance but reduces maintainability • Introducing redundant data improves availabilitybut makes security more difficult • Localising safety-related features may mean more communication so degraded performance
  • 34. © Len Bass, Paul Clements, Rick Kazman, Software Architecture in Practice, 3rd edition Architectural styles (aka patterns)
  • 35. Outline What is an architectural style? Styles catalogue
  • 36. What is an architectural style? An architectural style establishes a relationship between: • Context – A recurring situation in the world that gives rise to a problem • Problem – The problem, appropriately generalized, that arises in the context • Solution: – a set of element types • e.g., data repositories,processes, and objects – a set of interaction mechanisms or connectors • e.g., method calls, events, or message bus – a topological layout of the components – a set of semantic constraints
  • 37. Common styles catalogue • MVC • Publish-subscribe • Layered • Shared-data • Client-server • Peer to peer • Pipes and filters
  • 38. Model-View-Controller style Context: User interface software is typically the most frequently modified portion of an interactive application. Users often wish to look at data from different perspectives, such as a bar graph or a pie chart. These representations should both reflect the current state of the data. Problem: How can user interface functionality be kept separate from application functionality and yet still be responsive to user input, or to changes in the underlying application’s data? And how can multiple views of the user interface be created, maintained, and coordinated when the underlying application data changes? Solution: The model-view-controller (MVC) style separates application functionality into three kinds of components: – A model, which contains the application’s data – A view, which displays some portion of the underlying data and interacts with the user – A controller, which mediates between the model and the view and manages the notifications of state changes
  • 40. MVC Solution - 1 The MVC pattern breaks system functionality into three components: a model, a view, and a controller that mediates between the model and the view • Elements: – The model is a representation of the application data or state, and it contains (or provides an interface to) application logic – The viewis a user interface component that either produces a representation of the model for the user or allows for some form of user input, or both – The controller manages the interaction between the model and the view, translating user actions into changes to the model or changes to the view
  • 41. MVC Solution - 2 Relations: The notifies relation connects instances of model, view, and controller, notifying elements of relevant state changes Constraints: – There must be at least one instance of each of model, view, and controller – The model component should not interact directly with the controller Weaknesses: – The complexity may not be worth it for simple user interfaces – The model, view, and controller abstractions may not be good fits for some user interface toolkits
  • 42. Publish-Subscribe style Context – There are a number of independent producers and consumers of data that must interact. The precise number and nature of the data producers and consumers are not predetermined or fixed, nor is the data that they share. Problem – How can we create integration mechanisms that support the ability to transmit messages among the producers and consumers so they are unaware of each other’s identity, or potentially even their existence? Solution – Components interact via announced messages, or events. Components subscribe to a set of events. – Publisher components place events on the bus by announcing them; the connector then delivers those events to the subscriber components that have registered an interest in those events.
  • 43. Publish-Subscribe Solution – 1 Elements: – Any component with at least one publish or subscribe port – The publish-subscribe connector, which will have announce and listen roles for components that wish to publish and subscribe to events Relations: – The attachment relation associates components with the publish- subscribe connector by prescribing which components announce events and which components are registered to receive events Weaknesses: – Typically increases latency and has a negative effect on scalability and predictability of message delivery time – Less control over ordering of messages – Delivery of messages is not guaranteed
  • 44. Publish-subscribe example 1 © Len Bass, Paul Clements, Rick Kazman,
  • 46. Layered Style (Virtual Machine Example) Java Virtual Machine Processor Operating System Java Virtual Machine Java Application (Virtual Machine Style)
  • 47. The Layered System Style A layered system is organized hierarchically, each layer providing service to the layer above and below • Components – Programs or subprograms deployed in a layer • Connectors – Protocols • Procedure calls or system calls • Stylistic invariants – Each layer provides a service only to the immediate layer “above” (at the next higher level of abstraction) and uses the service only of the immediate layer “below” (at the next lower level of abstraction)
  • 48. Layered System Example: OSI Protocol Stack Application Presentation Session Transport Network Data Link Physical Application Presentation Session Transport Network Data Link Physical Network Data Link Physical Network Data Link Physical
  • 49. Layered System Advantages and Disadvantages Advantages – Decomposability: Effective separation of concerns and different level of abstractions – Maintainability: Changes that do not affect layer interfaces are easy to make – Adaptability/Portability: Can replace inner layers as long as interfaces remain the same – Understandability: Strict set of dependencies allow you to ignore outer layers Disadvantages – Not all systems are easily structured in a layered fashion – Performance degrades with too many layers – Can be difficult to cleanly assign functionality to the “right” layer
  • 50. Shared-Data style Context Various computational components need to share and manipulate large amounts of data. This data does not belong solely to any one of those components. Problem How can systems store and manipulate persistent data that is accessed by multiple independent components? Solution In the shared-data pattern, interaction is dominated by the exchange of persistent data between multiple data accessors and at least one shared-data store. Exchange may be initiated by the accessors or the data store. The connector type is data reading and writing.
  • 51. Shared Data Solution Elements: – Shared-data store • Concerns include types of data stored, data performance-oriented properties, data distribution, and number of accessors permitted – Data accessor component – Data reading and writing connector
  • 53. Advantages and disadvantages Advantages – Simplicity: Only one connector (the blackboard) that everyone uses – Evolvability: New types of components can be added easily Disadvantages – Blackboard becomes a bottleneck with too many clients
  • 54. Client-server • One component is a server offering a service • The other components are clients using the service • Server implementation is transparent but can be centralized or distributed, single-threaded or multi-threaded – Single interface point with physically distributed implementation – Dynamic, transparent selection from among multiple interface points
  • 56. 3-tier client-server systems 3-tier client-server systems are a common class of distributed business systems • First tier: Client (user interface) tier – Presentation logic • Second (middle, “business logic”) tier: Servers acting as “business objects”, encapsulating abstract, integrated models of multiple, disparate data sources – Computation • Third (back-end, database) tier: Legacy business applications providing data services – Database Weaknesses: Substantial up-front cost and complexity
  • 57. 3-Tier Client-server systems (example) Key Web browser SignOnFilter *.do *.screen Main Servlet Template Servlet Screen JSP index.jsp Sign On Notifier mappings.xml screen definitions.xml sign-on- config.xml Order Facade EJB tier Back endWeb tierClient tier Catalog Facade OPC Adventure Catalog DB User Mgmt Facade OpcOrder TrackingService OpcPurchase OrderService Client-side application Java EE filter Stateless session bean Java EE application Context listener Data store File Servlet ContainerWeb services endpoint SOAP call File I/O Java call HTTP/ HTTPS JDBC
  • 58. Peer-to-peer style Context: need to cooperate and collaborate to provide a service to a distributed community of users Problem: How can a set of “equal” distributed computational entities be connected to each other via a common protocol so that they can organize and share their services with high availability and scalability? Solution: components directly interact as peers. All peers are “equal” and no peer or group of peers can be critical for the health of the system. Peer-to-peer communication is typically a request/reply interaction without the asymmetry found in the client-server pattern
  • 62. Advantages and Disadvantages Advantages – Interoperability A natural high-level architectural style for heterogeneous distributed systems – Scalability: Powerful enough server tiers can accommodate many clients – Distributability: Components communicate over a network Disadvantages – Visibility, Maintainability: Difficult to analyze and debug • Distributed state • Potential for deadlock, starvation, race conditions, service outages – Require sophisticated interoperability mechanisms • Data marshalling and unmarshalling • Proxies and stubs for RPC • Legacy wrappers
  • 63. Pipe and Filter Pattern Context: Many systems are required to transform streams of discrete data items, from input to output. Many types of transformations occur repeatedly in practice, and so it is desirable to create these as independent, reusable parts Problem: Such systems need to be divided into reusable, loosely coupled components with simple, generic interaction mechanisms. The components, being generic and loosely coupled, are easily reused. The components, being independent, can execute in parallel Solution: The pattern of interaction in the pipe-and-filter pattern is characterized by successive transformations of streams of data. Data arrives at a filter’s input port(s), is transformed, and then is passed via its output port(s) through a pipe to the next filter. A single filter can consume data from, or produce data to, one or more ports
  • 64. Pipe and Filter Solution Data is transformed from a system’s external inputs to its external outputs through a series of transformations performed by its filters connected by pipes Elements: – Filter, which is a component that transforms data read on its input port(s) to data written on its output port(s) – Pipe, which is a connector that conveys data from a filter’s output port(s) to another filter’s input port(s). A pipe preserves the sequence of data items, and it does not alter the data passing through Relations: The attachment relation associates the output of filters with the input of pipes and vice versa Constraints: – Pipes connect filter output ports to filter input ports – Connected filters must agree on the type of data being passed along the connecting pipe
  • 66. Many similarities between patterns and styles – Goal: packaged engineering experience – Formulation: organization and interaction among “key” components Differences: Architectural styles vs design patterns Architecturalstyles Design patterns few many large-scale system organization localized, small-scale design solutions
  • 67. Relationships between tactics and styles Styles are built from tactics à if a style is a molecule, a tactic is an atom MVC, for example utilizes the tactics: – Increase semantic coherence – Encapsulation – Use an intermediary – Use run-time binding
  • 68. What this lecture means to you? Software architecture is the main instrument for reasoning about – high level of system design – system-levelproperties and qualities • e.g., modularity, evolvability, etc. – large-scale reuse Architectural style: reusable pattern – for solving recurrent problems – for obtaining qualities “out-of-the-box”
  • 69. Suggested readings 1. David Garlan. “Software architecture: a travelogue.” ICSE '14 Proceedings of the Conference on The Future of Software Engineering, ACM Press, 2014. 1. Perry, D. E.; Wolf, A. L. (1992). "Foundations for the study of software architecture". ACM SIGSOFT Software Engineering Notes 17 (4): 40.doi:10.1145/141874.141884. 2. Garlan & Shaw (1994). "An Introduction to Software Architecture". Retrieved 2012-09-13.
  • 71. Contact Ivano Malavolta | Post-doc researcher Gran Sasso Science Institute iivanoo ivano.malavolta@gssi.infn.it www.ivanomalavolta.com
  翻译: