Post on 07-Aug-2021
Software ArchitectureS
choo
lof C
omp
ute
rS
cien
ceU
niv
ersi
tyof
Ovi
edo
Architecturetechniques
Jose E. Labra GayoCourse 2020/21
Software ArchitectureS
choo
lof C
omp
ute
rS
cien
ceU
niv
ersi
tyof
Ovi
edo Software architect
Discipline evolvesArchitect must be aware of
New development techniquesStyles and patterns
Best tool = experience (no silver bullet)Self experience Experience from community
Architect
Software ArchitectureS
choo
lof C
omp
ute
rS
cien
ceU
niv
ersi
tyof
Ovi
edo
Role of software architect
TacticsStyles
PatternsAnti-patterns
. . .
Software ArchitectCommunity
Experience
Stakeholders
Technology
Architecture
ObjectivesFunctionalrequirements
Quality attributesConstraintsConcerns
Software ArchitectureS
choo
lof C
omp
ute
rS
cien
ceU
niv
ersi
tyof
Ovi
edo Tactics
Design techniques to achieve a response to some quality attributes
Tactics focus on a single quality attribute responseThey may compromise other quality attributes
Tactics are intended to control responses to stimuli
Tactics to control responseStimulus Response
Software ArchitectureS
choo
lof C
omp
ute
rS
cien
ceU
niv
ersi
tyof
Ovi
edo Tactics depend on QA
AvailabilityFault Fault masked or
repair made
ModifiabilityChanges arrive Changes made, tested and
deployed within time and budget
PerformanceEvents arrive Response generated within
time constraints
SecurityAttack System detects, resists, or
recovers from attack
TestabilityFaults detectedCompletion of an
increment
UsabilityUser given appropriate feedback and assistance
User request
Software ArchitectureS
choo
lof C
omp
ute
rS
cien
ceU
niv
ersi
tyof
Ovi
edo Where can we find tactics?
Architect's own experienceDocumented experience from community
Books, conferences, blogs,...Tactics evolve with time and trends
Book "Software architecture in practice" contains a list of tactics for some quality attributes
http://www.ece.ubc.ca/~matei/EECE417/BASS/ch05lev1sec1.htmlhttps://www.cs.unb.ca/~wdu/cs6075w10/sa2.htm
Software ArchitectureS
choo
lof C
omp
ute
rS
cien
ceU
niv
ersi
tyof
Ovi
edo Architectural styles
Define the general shape of a systemThey contain:
Elements: Components that carry out functionalityConstraints: define how to integrate elementsList of attributes:
Advantages/disadvantages of a style
Software ArchitectureS
choo
lof C
omp
ute
rS
cien
ceU
niv
ersi
tyof
Ovi
edo Are there pure styles?
Pure styles = idealizationIn practice, pure styles rarely appearUsually, systems deviate from pure styles......or combine several architectural stylesIt is important to understand pure styles in order to:
Understand pros and cons of a styleAssess the consequences of a deviation from the style
Software ArchitectureS
choo
lof C
omp
ute
rS
cien
ceU
niv
ersi
tyof
Ovi
edo Architectural pattern
Reusable and general solution to some recurring problem that appears in a given contextImportant parameter: problem
3 types:Structural: Build time
Example: LayersRuntime (behaviour)
Example: Pipes & filtersDeployment
Example: Load-balanced cluster
Software ArchitectureS
choo
lof C
omp
ute
rS
cien
ceU
niv
ersi
tyof
Ovi
edo Pattern vs style
Pattern = solution to a problemStyle = generic
Does not have to be associated with a problemStyle defines general architecture of an
applicationUsually, an application has one style
...but it can have several patternsPatterns can appear at different scales
High level (architectural patterns)Design (design patterns)Implementation (idioms). . .
Software ArchitectureS
choo
lof C
omp
ute
rS
cien
ceU
niv
ersi
tyof
Ovi
edo Pattern vs Style
Styles, in general, are independent of each otherA pattern can be related with other patterns
A pattern composed of several patternsInteractions between patterns
Software ArchitectureS
choo
lof C
omp
ute
rS
cien
ceU
niv
ersi
tyof
Ovi
edo Pattern languages and catalogs
Pattern catalogA set of patterns about a subjectIt does not have to be exhaustive
Pattern languageA full pattern catalog about some subject
Goal: document all the possibilitiesThey usually include relationships between patterns
Graphical map
Software ArchitectureS
choo
lof C
omp
ute
rS
cien
ceU
niv
ersi
tyof
Ovi
edo
Example of pattern languageSource: "SOA with REST" book
Software ArchitectureS
choo
lof C
omp
ute
rS
cien
ceU
niv
ersi
tyof
Ovi
edo Build vs reuse
In some domains, reusing existing architectures may be more eficientReference architecturesExternally developed components
Quality/scope
Effort/Cost Time
Product
Software ArchitectureS
choo
lof C
omp
ute
rS
cien
ceU
niv
ersi
tyof
Ovi
edo Reference architectures
Blueprints that provide the overall structure for particular types of applicationsThey contain several
patternsCan be the de-facto
standard in some domains
Fuente: Microsoft Application Architecture Guide, 2nd Ed.
Software ArchitectureS
choo
lof C
omp
ute
rS
cien
ceU
niv
ersi
tyof
Ovi
edo Domain Specific Software architecture
Combination of:• Reference architecture for an application domain• A library of components for that architecture• A method of choosing and configuring
components to work within an instance of the reference architecture
Specialized for a specific domainExamples:
ADAGE, MetaH
Software ArchitectureS
choo
lof C
omp
ute
rS
cien
ceU
niv
ersi
tyof
Ovi
edo Externally developed components
Technology stacks or familiesMEAN (Mongo,Express,Angular,Node), LAMP (Linux,Apache,MySQL,PHP),...
ProductsCOTS: Commercial Off The SelfFOSS: Free Open Source Software
Be careful with licensesApplication frameworks
Partial implementation of a specific area of an applicationVery popular for UIs
PlatformsComplete infrastructure to build & run applications
Example: JEE, Google Cloud