SlideShare a Scribd company logo
Ganesh Samarthyam
ganesh@codeops.tech
www.codeops.tech
Software Architecture:
Principles, Patterns, and Practices
Why do you want to
become an
architect?
What skills are
required for an
architect?
Who is an architect?
What essential
knowledge is required
for an architect?
What is software
architecture?
How to evolve an
architecture?
What is the software
architecture
development process?
What factors influences
software architecture?
Generalist
Specialist
Source: Software Architecture for Developers, Simon Brown, LeanPub, 2014
What is software
architecture?
“The software architecture of a program
or computing system is the structure or
structures of the system, which comprise
software elements, the externally visible
properties of those elements, and the
relationships among them”
Source:	So)ware	Architecture	in	Prac2ce	(2nd	edi2on),	Bass,	Clements,	Kazman;	Addison-Wesley	2003:
“Architecture is a set of
principal design decisions
about a software system”
Source: R. N. Taylor, N. Medvidovic, and E. M. Dashofy. 2009. Software Architecture: Foundations, Theory, and Practice.
Wiley Publishing.
“The architecture of a
deployed software is
determined by those aspects
that are hardest to change”
Source: R. N. Taylor, N. Medvidovic, and E. M. Dashofy. 2009. Software Architecture: Foundations, Theory, and Practice.
Wiley Publishing.
Architecture represents the significant
design decisions that shape a
system, where significant is measured
by cost of change.
- Grady Booch (2006)
NFRs
Constraints
TechnologyCross-cutting
concerns
Others
(e.g.: overall
structure)
Dimensions of ADs
Cross-cutting concerns
Error/Exception handling
ConcurrencyPersistence
Event handling
Interaction and presentation
Source: SWEBOK v3
Software Architecture - Principles Patterns and Practices - OSI Days Workshop - 2016
Architecture?**
Network*
architecture*
Solu2on*
architecture*
Applica2on*
architecture*
Pla6orm*
architecture*
…*
Data*
architecture*
Hardware*
architecture*
Web*
architecture**
Software Architecture - Principles Patterns and Practices - OSI Days Workshop - 2016
Source: Software Architecture for Developers, Simon Brown, LeanPub, 2014
Architecture/design
determines qualities
Understandability Changeability Extensibility
Reusability Testability Reliability
Arch/
Design
impacts
impacts
impacts
Architecture principles and styles
Architectural principles:
Axis, symmetry, rhythm, datum, hierarchy, transformation
Dravidian styleRenaissance style
Mughal style
Post-modern style
What architectural style is
this?
Image source: http://ashokbasnet.com.np/wp-content/uploads/2011/03/wx_thumb-5B1-5D.jpg
Example: Abstracting for
portability using layering
•  Helps'abstract'pla-orm0
specific'details'abstrac4ng'
hardware'specific'aspects''
Hardware'
Abstrac4on'
Layer'(HAL)'
•  Abstracts'OS'specific'
func4onality'and'provides'
a'generic'interface'to'
underlying'OS'
Opera4ng'
System'
Abstrac4on'
Layer'(OSAL)'
•  Hides'database'specific'
aspects'by'providing'a'
generic'interface''
Database'
Abstrac4on'
Layer'(DAL)'
Layering style: Benefits
+ Reuse of layers
+ Support for standardization
+ Dependencies are kept local
+ Exchangeability
Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stal. 1996. Pattern-Oriented Software Architecture: A System of Patterns. John Wiley & Sons, Inc., NY, USA.
Layering style: Liabilities
- Cascades of changing behavior
- Lower efficiency
- Unnecessary work
- Difficulty in establishing the correct
granularity of layers
Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stal. 1996. Pattern-Oriented Software Architecture: A System of Patterns. John Wiley & Sons, Inc., NY, USA.
What architectural style is
this?
$ cat limerick.txt
There was a young lady of Niger
Who smiled as she rode on a tiger.
They returned from the ride
With the lady inside
And a smile on the face of the tiger.
$ cat limerick.txt | tr -cs "[:alpha:]" "n" | awk '{print
length(), $0}' | sort | uniq
1 a
2 as
2 of
2 on
3 And
3 Who
3 she
3 the
3 was
4 They
4 With
4 face
4 from
4 lady
4 ride
4 rode
5 Niger
5 There
5 smile
5 tiger
5 young
6 inside
6 smiled
8 returned
List<String> lines
= Files.readAllLines(Paths.get("./limerick.txt"), Charset.defaultCharset());
	 	 Map<Integer, List<String>> wordGroups
	 	 = lines.stream()
	 .map(line -> line.replaceAll("W", "n").split("n"))
	 .flatMap(Arrays::stream)
	 .sorted()
	 .distinct()
	 .collect(Collectors.groupingBy(String::length));
	 	 wordGroups.forEach( (count, words) -> {
	 	 words.forEach(word -> System.out.printf("%d %s %n", count, word));
	 	 });
1 a
2 as
2 of
2 on
3 And
3 Who
3 she
3 the
3 was
4 They
4 With
4 face
4 from
4 lady
4 ride
4 rode
5 Niger
5 There
5 smile
5 tiger
5 young
6 inside
6 smiled
8 returned
Real-world pipes-and-filters
sediment
pre-
carbon
ultra-filter
post-
carbon
Filtered
water
Pipe-and-filter: Benefits
+ Flexibility by filter exchange
+ Flexibility by recombination
+ Reuse of filter components
+ Rapid prototyping of pipelines
Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stal. 1996. Pattern-Oriented Software Architecture: A System of Patterns. John Wiley & Sons, Inc., NY, USA.
Pipe-and-filter: Liabilities
- Sharing state information is expensive or
inflexible
- Efficiency gain by parallel processing is
often an illusion
- Data transformation overhead
- Difficult to handle errors
Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, and Michael Stal. 1996. Pattern-Oriented Software Architecture: A System of Patterns. John Wiley & Sons, Inc., NY, USA.
POSA - before and after
Layered
Pipe-and-Filter
Broker
Client-Server
Peer-to-Peer
Blackboard
What is the
architecture
style followed
by World Wide
Web (WWW)?
Software Architecture - Principles Patterns and Practices - OSI Days Workshop - 2016
Software Architecture - Principles Patterns and Practices - OSI Days Workshop - 2016
SOA (Service Oriented
Architecture)
Lambda Style
Microservices
REST (Representational State Transfer)
Map-Reduce
CQRS (Command-Query Responsibility
Segregation )
Software Containers
Event Sourcing
Command Query Responsibility
Segregation (CQRS) pattern
source: https://msdn.microsoft.com/en-us/library/jj591573.da82141c6f9950d64c1263fa4da825ec(l=en-us).png
Event Sourcing pattern
source: https://msdn.microsoft.com/en-us/library/dn589792.aspx
Map-Reduce pattern
Input
Sara
Booch
Thayer
Merlin
Sara
Ralph
Merlin
Tim
Sara
Christian
Ralph
Cormen
…
Computer Cluster
map
map
map
Sara, 1
Ralph, 1
Merlin, 1
Tim, 1
Sara, 1
Booch, 1
Thayer, 1
Merlin, 1
Sara, 1
Christian, 1
Ralph, 1
Cormen, 1
reduce
reduce
Sara, 3
Booch, 1
Thayer,1
Merlin, 2
Ralph, 2
Tim, 1
Christian, 1
Cormen, 1
…
OutputSara, 1
Sara, 1
Sara, 1
Booch, 1
Thayer, 1
Merlin, 1
Merlin, 1
Ralph, 1
Ralph, 1
Tim, 1
Christian, 1
Cormen, 1
What style is this?
Batch layer
Serving layerSpeed layer
Lambda style
source: https://spark-summit.org/2014/wp-content/uploads/2014/07/Lambda-Architecture-Jim-Scott..pdf
Microservices is an
architectural style
Complex application =
composed of tiny services
Communicate over REST API
HTTPGET
HTTPPUT
HTTP POST
HTTPDELETE
Underlying philosophy
“do one thing and do it well”
Monolithic
Microservices
Conway’s law
“Any organization that designs a
system… will inevitably produce
a design whose structure is a
copy of the organization's
communication structure”
Conway’s law
Team 1
Team 2Team 3
Team 4
Conway’s law
Team 1 Team 2
Team 3
Team 4
Monolithic to microservices
Monolithic to microservices
Service = manageable by
“two pizza” team
Amazon’s rules for teams
• All teams will henceforth expose their data and functionality
through service interfaces.
• Teams must communicate with each other through these
interfaces.
• There will be no other form of inter-service/team communication
allowed: no direct linking, no direct reads of another team’s
datastore, no shared memory model, no backdoors whatsoever.
• The only communication allowed is via service interface calls
over the network.
• It doesn’t matter what technology they [other services] use.
• All service interfaces, without exception, must be designed from
the ground up to be externalizable.
• That is to say, the team must plan and design to be able to
expose the interface to developers in the outside world.
Service = a team can DURS
(Deploy, Update, Replace, Scale)
Microservices = Damn U R Sexy
Amazon case study
2-tier
architecture
SOA Microservices
Software Architecture - Principles Patterns and Practices - OSI Days Workshop - 2016
Triggering microservices
Source: DevOps: A Software Architect's Perspective, Len Bass, Ingo Weber, Liming Zhu, Addison-Wesley Professional, 2015
Separate data stores
A process for architecting
using scenarios
Source: http://msdn.microsoft.com/en-us/library/ee658084.aspx
Strategies and tactics
A tactic is a design decision that
influences the control of a quality
attribute response
A collection of tactics is known as “strategies”
Source: Len Bass, Paul Clements, and Rick Kazman. 2003. Software Architecture in Practice (2 ed.). Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA.
Example: Security tactics
Security
Resisting
Attacks
Detecting
Attacks
Recovering
From attack
!  Authenticate users
!  Authorize users
!  Maintain data
confidentiality
!  Maintain integrity
!  Limit exposure
!  Limit access
Restoration Identification
Stimulus:
Attack Response:
System
detects,
resists, or
recovers from
attacks
See “Availability“ Audit Trail
Intrusion
Detection
Source: Len Bass, Paul Clements, and Rick Kazman. 2003. Software Architecture in Practice (2 ed.). Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA.
Exercise: Tactics for
achieving qualities
Availability
The property of software that it there and ready to carry out
its task when you need it to be
Testability
The ease with which software can be made to demonstrate
its faults through (typically execution-based) testing
Security
Measure of the system’s ability to protect data and
information from unauthorised access while still providing
access to people and systems that are authorized
Performance The software’s ability to meet timing requirements
Modifiability
The ease with which the software can be modified (with
minimal risk and cost)
Source: Len Bass, Paul Clements, and Rick Kazman. 2003. Software Architecture in Practice (2 ed.). Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA.
Tactics for availability
Use$fault$detec,on$tac,cs$such$as$
ping/echo,$heartbeat,$,me$
stamping,$sanity$checking,$
condi,on$monitoring,$and$self:test$
Use$fault$recovery$tac,cs$such$as$
rollback$(to$a$previous$known$
good$state),$providing$“spares”$for$
redundancy,$retry$the$opera,on,$
ignoring$faulty$behavior,$and$
degrade$(gracefully$reduce$system$
func,onality)$
Use$fault$preven,on$tac,cs$such$
as$removal$from$service$
(temporarily$remove$the$faulty$
component),$use$transac,onal$
seman,cs$(ACID$proper,es),$
prevent$system$excep,ons$from$
occurring.$
Source: Len Bass, Paul Clements, and Rick Kazman. 2003. Software Architecture in Practice (2 ed.). Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA.
Tactics for modifiability
Reduce&size&of&the&module,&for&
example&by&spli7ng&module&(to&
reduce&the&average&cost&of&future&
changes)&
Increase&seman>c&cohesion&of&the&
module&(by&ensuring&that&the&a&
responsibili>es&serving&the&same&
purpose&are&placed&in&the&same&
module)&
Reduce&coupling&through&
encapsula>on&(by&providing&explicit&
interfaces&and&hiding&internal&details),&
introducing&intermediate&
dependencies&(e.g.,&introduce&
dynamic&lookup&of&services&with&SOA&
using&directory&as&an&intermediary)&&&
Source: Len Bass, Paul Clements, and Rick Kazman. 2003. Software Architecture in Practice (2 ed.). Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA.
Tactics for performance
Control'resource'demand'through'requiring'
smaller'demand'on'resources'to'service'the'
events;'for'instance,'reducing'the'sampling'
frequency'(for'capturing'environmental'data),'
limi;ng'event'response'(by'queuing'the'events),'
priori;zing'events'(by'ranking'the'events'
according'to'their'importance'and'processing'
them),'reducing'overheads'(by'consuming'lesser'
resources),'bound'execu;on';mes,'and'increase'
resource'efficiency.'
Manage'the'resources'more'effec;vely'by'
increasing'resources,'introducing'concurrency,'
maintaining'mul;ple'copies'of'computa;on,'
bounding'queue'sizes,'and'scheduling'resources.''
Source: Len Bass, Paul Clements, and Rick Kazman. 2003. Software Architecture in Practice (2 ed.). Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA.
Tactics for security
Detect%a'acks%by%looking%for%
known%pa'erns%of%intrusion,%
detec8ng%service%denial,%
verifying%message%integrity%
before%using%them,%detec8ng%
message%delay%(to%detect%man=
in=the=middle%a'acks).%
Resist%a'acks%by%iden8fying,%
authen8ca8ng,%and%authorizing%
actors%(note:%actors%are%sources%
of%external%input%to%the%system),%
limi8ng%access%to%resources,%and%
limi8ng%exposure%of%the%system.%
React%to%a'acks%when%an%a'ack%
is%underway%by%revoking%access,%
lock%computer,%or%inform%
relevant%actors.%%
Source: Len Bass, Paul Clements, and Rick Kazman. 2003. Software Architecture in Practice (2 ed.). Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA.
Tactics for testability
Control'and'observe'system'state'by'
providing'specializing'interfaces,'record/
playback'faults,'localize'state'storage'
(instead'of'distribu;ng'the'state),'
abstract'input'data'sources,'sandbox'(by'
isola;ng'the'system'from'the'real'world),'
and'introduce'executable'asser;ons'(to'
check'if'the'program'is'in'a'faulty'state)'
Limit'complexity'(by'reducing'cyclic'
dependencies,'limi;ng'dependencies'to'
external'components,'etc;'in'OO'
systems,'limit'depth'of'inheritance'tree,'
reduce'dynamic'calls;'and'having'high'
cohesion,'low'coupling'and'separa;on'of'
concerns);'also'limit'nonCdeterminism.'
Source: Len Bass, Paul Clements, and Rick Kazman. 2003. Software Architecture in Practice (2 ed.). Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA.
InFusion/InCode
PMD CPD
ArchiMate
Source: http://www.archimatetool.com/img/archi_out.png
Sonarqube
Sonarqube
http://www.sonarqube.org
ArgoUML
Source: http://a.fsdn.com/con/app/proj/argouml/screenshots/52103.jpg
Nitric
“Cities grow, cities evolve, cities
have parts that simply die while other
parts flourish; each city has to be
renewed in order to meet the needs of its
populace… Software-intensive systems
are like that. They grow, they evolve,
sometimes they wither away, and
sometimes they flourish…”
Grady Booch in the foreword for “Refactoring for Software Design Smells: Managing Technical Debt”, Girish Suryanarayana, Ganesh Samarthyam, Tushar Sharma, Morgan Kaufmann/Elsevier, 2014.
CodeCity tool
Software Architecture - Principles Patterns and Practices - OSI Days Workshop - 2016
Code Query Language (NDepend, Architect, …)
Look at the world differently for
creative design solutions
Who coined
the term
“code smell”?
Hint: He also
originated the
terms TDD and XP
Kent Beck
Who coined the
acronym
“SOLID”?
(as in SOLID
principles)
Hint: He is the
author of the book
“Working effectively
with legacy code”
Michael
Feathers
S
Single Responsibility
Principle
Every object should have a single responsibility and
that should be encapsulated by the class
O Open Closed Principle
Software should be open for extension, but closed for
modification
L
Liskov’s Substitution
Principle
Any subclass should always be usable instead of its
parent class
I
Interface Segregation
Principle
Many client specific interfaces are better than one
general purpose interface
D
Dependency Inversion
Principle
Abstractions should not depend upon details. Details
should depend upon abstractions
Who coined
the term
“technical
debt”?
Hint: He is the
creator of “wiki”
Ward
Cunningham
When,	due	to	constraints,	I	design	
quickly	and	dirty,	my	project	is	
loaded	with	technical	debt
Number	of	Accessed	Variables	
Cyclomatic	Complexity
Newly	Added	Service	
Percentage	of	Newly	Added	Service
Infusion
www.intooitus.com/products/infusion
Violates Single
Responsibility
Principle (SRP)
Software Architecture - Principles Patterns and Practices - OSI Days Workshop - 2016
Published	in	Journal	of	Object	Technology	(Vol.	12,	No.	2,	2013)	
  S	G	Ganesh,	Tushar	Sharma,	Girish	Suryanarayana.		Towards	a	Principle-based	
Classifica4on	of	Structural	Design	Smells.		In	Journal	of	Object	Technology,	vol.	
12,	no.	2,	2013,	pages	1:1–29.doi:10.5381/jot.2013.12.2.a1	
  URL:	hLp://www.jot.fm/issues/issue_2013_06/arPcle1.pdf	(open	access)
Software Architecture - Principles Patterns and Practices - OSI Days Workshop - 2016
Software Architecture - Principles Patterns and Practices - OSI Days Workshop - 2016
"This is a good book about ‘Design Smells’ – actually
a great book – nicely organized - clearly written with
plenty of examples and a fair sprinkling of
anecdotes."
- Will Tracz (Principal Research Scientist & Fellow,
Lockheed Martin)
(review in ACM SIGSOFT Software Engineering
Notes)
Believe in your ideas:
how small or “insignificant” it may
appear to be!
"The critical design tool for software development
is a mind well educated in design principles"
- Craig Larman
Interface Segregation
Principle (ISP)
Clients should not be forced to depend upon interfaces they do not use
Example of ISP violation
// using java.util.Date
Date today = new Date();
System.out.println(today);
$ java DateUse
Wed Dec 02 17:17:08 IST 2015
Why should we get the
time and timezone details if
I only want a date (e.g.,
date of birth)? Can I get rid
of these parts? No!
JSR 310: Java Date and Time API
Stephen Colebourne
Example of a fix (java.time)
// using java.time.LocalDate
LocalDate today = LocalDate.now();

System.out.println(today);
$ java DateUse
2015-12-02
I can use (and hence
depend upon) only date
related functionality (not
time, zone, etc)
Example of a fix (java.time)
You can use only date,
time, or even timezone,
and combine them as
needed (in java.time)!
LocalDate today = LocalDate.now();
System.out.println(today);
LocalTime now = LocalTime.now();
System.out.println(now);
LocalDateTime todayAndNow = LocalDateTime.now();
System.out.println(todayAndNow);
ZonedDateTime todayAndNowInTokyo =
ZonedDateTime.now(ZoneId.of("Asia/Tokyo"));
System.out.println(todayAndNowInTokyo);
2015-12-02
17:37:22.647
2015-12-02T17:37:22.648
2015-12-02T21:07:22.649+09:00[Asia/Tokyo]
More types from java.time
Principles*
Abstrac/on*
Encapsula/on*
Modulariza/on*
Hierarchy*
Know and apply design principles
Software Architecture - Principles Patterns and Practices - OSI Days Workshop - 2016
How to separate:
a) code generation logic
from node types?
b) how to support different
target types?
class Plus extends Expr {
private Expr left, right;
public Plus(Expr arg1, Expr arg2) {
left = arg1;
right = arg2;
}
public void genCode() {
left.genCode();
right.genCode();
if(t == Target.JVM) {
System.out.println("iadd");
}
else { // DOTNET
System.out.println("add");
}
}
}
class Plus extends Expr {
private Expr left, right;
public Plus(Expr arg1, Expr arg2) {
left = arg1;
right = arg2;
}
public Expr getLeft() {
return left;
}
public Expr getRight() {
return right;
}
public void accept(Visitor v) {
v.visit(this);
}
}
class DOTNETVisitor extends Visitor {
public void visit(Constant arg) {
System.out.println("ldarg " + arg.getVal());
}
public void visit(Plus plus) {
genCode(plus.getLeft());
genCode(plus.getRight());
System.out.println("add");
}
public void visit(Sub sub) {
genCode(sub.getLeft());
genCode(sub.getRight());
System.out.println("sub");
}
public void genCode(Expr expr) {
expr.accept(this);
}
}
Source: “Design Patterns: Elements of Reusable Object-Oriented Software”, Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides, Addison-Wesley,1994
❖ Many distinct and unrelated
operations need to be
performed on objects in an
object structure, and you want
to avoid “polluting” their
classes with these operations
Represent an operation to be performed on the elements of an object structure.
Visitor lets you define a new operation without changing the classes of the
elements on which it operations
❖ Create two class
hierarchies:
❖ One for the elements
being operated on
❖ One for the visitors that
define operations on the
elements
{
mv = cw.visitMethod(ACC_PUBLIC + ACC_STATIC, "printOne", "()V", null, null);
mv.visitCode();
mv.visitFieldInsn(GETSTATIC, "java/lang/System", "err", "Ljava/io/PrintStream;");
mv.visitLdcInsn("CALL println");
mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false);
mv.visitFieldInsn(GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");
mv.visitLdcInsn("Hello World");
mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false);
mv.visitFieldInsn(GETSTATIC, "java/lang/System", "err", "Ljava/io/PrintStream;");
mv.visitLdcInsn("RETURN println");
mv.visitMethodInsn(INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false);
mv.visitInsn(RETURN);
mv.visitMaxs(2, 0);
mv.visitEnd();
}
Use of visitor pattern in
ASM tool (coding
example of usage)
source: http://web.cs.ucla.edu/~msb/cs239-tutorial/
Apply relevant design patterns for
creating high-quality designs
Software Architecture - Principles Patterns and Practices - OSI Days Workshop - 2016
Extract
Superclass
Software Architecture - Principles Patterns and Practices - OSI Days Workshop - 2016
Modularize JDK & JRE
Hide platform internal details such as sun.misc
Provide a module system for Java developers
Reference: http://paulbakker.io/java/java-9-modularity/
Software Architecture - Principles Patterns and Practices - OSI Days Workshop - 2016
Perform periodic refactoring
(floss or root canal)
When,&due&to&constraints,&I&design&
quickly&and&dirty,&my&project&is&
loaded&with&technical&debt&
Sonarqube
http://www.sonarqube.org
Use technical debt approach to get
buy-in for refactoring
Software Architecture - Principles Patterns and Practices - OSI Days Workshop - 2016
Software Architecture - Principles Patterns and Practices - OSI Days Workshop - 2016
Desirable relationship between
architect and manager: partnership
Steve Jobs is viewed as an excellent
speaker, business person, and leader. But
not much as an architect.
He is an excellent architect.
Why?
Software Architecture - Principles Patterns and Practices - OSI Days Workshop - 2016
In the movie Steve Jobs, he gives an example of
a music composer. The composer directs the
people and focuses on the orchestra.
That is the case with a software architect as well.
So, what’s next?
Examples from
Open Source
architectures
• Architecture descriptions
from well-known open
source software from key
contributors
• You can get insights on
the architecture from
practical illustrations
http://www.aosabook.org/en/index.html
Practical book on SA
• Useful to get an overview of
software architecture
• Especially useful if you are a
programmer
• Complete presentation
available here.
Good first
book on SA
• Shares practical
experiences in
architecting enterprise IT
systems
• If you want to learn about
enterprise architecture,
read this
SEI’s book on
SA
• Good coverage of
Attribute Driven Design,
Architecture Trade-off
Analysis Method, Quality
Attributes, etc
• If you want an in-depth
understanding, read this
In-depth treatment on SA
• Covers a wide range of
topics in detail (stypes,
modelling, visualisation,
analysis, etc)
• Perhaps the most
comprehensive/in-depth
discussion on important
SA topics
• Slides available online
here
THE book on design
patterns
• One of the earliest and
best books on design
patterns
• Presents a catalog of 23
design patterns
• Classified as creational,
structural, and
behavioral patterns
THE book on architectural
patterns
• One of the earliest and
best books on
architectural patterns
• Presents a catalog of
architectural patterns with
detailed discussion
• Referred to as POSA
book
• First book in the series
of books on patterns/
styles
Anti-patterns in
development,
architecture, …
• A practical book that
covers anti-patterns in
software architectures as
well as projects
• Important to know anti-
patterns so that we can
avoid them
Architectural
refactoring is
tough!
• The focus is on refactoring
techniques, tools, and
processes in the large-
scale (i.e., architectural
level)
• Covers architectural
smells as well
Getting a
systems
perspective
• Emphasises on working with
stakeholders, and using
viewpoints and perspectives
• Read this if you are looking
for gaining an in-depth
understanding of working
with stakeholders and using
viewpoints and perspectives
An early take
on SA
• Provides a good overview
of architectural patterns
• If you are interested in
architectural styles, tools,
languages and notations,
etc, read this
Tips/
techniques
perspective on
SA
• Provides a collection of
advices from working
architects
• If you are already an
architect and want to
know best practices, read
this
And don’t forget ours!
Forewords by
Grady Booch and Dr.
Stephane Ducasse
Upcoming bootcamps
Mod. Sw. Arch (5 Nov) 
SOLID Principles (19 Nov)
IoT (26 Nov)
S/w Arch (10 Oct)
What were your key
takeaways?
Image Credits
• http://it-ebooks.info/images/ebooks/3/restful_web_services_cookbook.jpg
• http://southfloridaclassicalreview.com/wp-content/uploads/
2012/11/03THECLEVELANDORCHESTRA-CPJ.jpg
• http://www.ndepend.com/NS/images/CodeQuery.jpg
• https://www.toadworld.com/cfs-file/__key/communityserver-blogs-components-
weblogfiles/00-00-00-00-57/DN_2D00_4a.jpg
• http://d152tffy3gbaeg.cloudfront.net/2015/02/AIBA-World-Boxing-
Championships.jpg
• http://www.lucidica.com/wp-content/uploads/2014/03/www.jpg
• http://restfulwebapis.org/images/rws-cover.jpg
• http://akamaicovers.oreilly.com/images/0636920021575/cat.gif
• http://it-ebooks.info/images/ebooks/6/pro_rest_api_development_with_node.js.jpg
• https://www.packtpub.com/sites/default/files/9781783285754.jpg
• https://www.packtpub.com/sites/default/files/
B04843_RESTful%20Web%20Services%20with%20Scala_.jpg
• http://i.ndtvimg.com/i/2015-02/sholay-still_640x480_61423213425.jpg
ganesh@codeops.tech @GSamarthyam
www.codeops.tech slideshare.net/sgganesh
+91 98801 64463 bit.ly/sgganesh

More Related Content

PPTX
SDLC (Software development life Cycle)
PPT
Python Programming ppt
PPTX
Basics of Object Oriented Programming in Python
PPTX
Basic concepts for python web development
PDF
Design Thinking 101 by Natalie Nixon of Figure 8 Thinking
PPTX
Ai chatbot ppt.pptx
PPTX
PROTOTYPE MODEL
PDF
ChatGPT What It Is and How Writers Can Use It.pdf
SDLC (Software development life Cycle)
Python Programming ppt
Basics of Object Oriented Programming in Python
Basic concepts for python web development
Design Thinking 101 by Natalie Nixon of Figure 8 Thinking
Ai chatbot ppt.pptx
PROTOTYPE MODEL
ChatGPT What It Is and How Writers Can Use It.pdf

What's hot (20)

PPT
Concepts In Object Oriented Programming Languages
PDF
C# and Dot Net Framework 1st & 2nd Unit.pdf
PDF
Jobs to Be Done JTBD - Jillian Wells
PPTX
Chapter 05 classes and objects
PPTX
Polymorphism in Python
PPTX
Python Functions
PDF
How to create SLIDES that rock (Presentation Tips)
ODP
Evolutionary process models se.ppt
PDF
LanGCHAIN Framework
PDF
Everything You Need To Know About ChatGPT
PPT
extreme Programming
PDF
Design Thinking Dallas by Chris Bernard
PDF
Software Engineering : Requirement Analysis & Specification
PPTX
Introduction to Django
PDF
Design thinking - Empathy
PDF
Making Testing Easy w GitHub Copilot.pdf
PDF
Design Sprints for Innovation
PPTX
software product and its characteristics
PPTX
Disruptive innovation
Concepts In Object Oriented Programming Languages
C# and Dot Net Framework 1st & 2nd Unit.pdf
Jobs to Be Done JTBD - Jillian Wells
Chapter 05 classes and objects
Polymorphism in Python
Python Functions
How to create SLIDES that rock (Presentation Tips)
Evolutionary process models se.ppt
LanGCHAIN Framework
Everything You Need To Know About ChatGPT
extreme Programming
Design Thinking Dallas by Chris Bernard
Software Engineering : Requirement Analysis & Specification
Introduction to Django
Design thinking - Empathy
Making Testing Easy w GitHub Copilot.pdf
Design Sprints for Innovation
software product and its characteristics
Disruptive innovation
Ad

Viewers also liked (20)

PDF
Advanced Debugging Using Java Bytecodes
PDF
Java Generics - by Example
PPTX
Java 8 concurrency abstractions
PDF
7 best quotes on dev ops
PDF
Choosing Between Cross Platform of Native Development
PPTX
DevOps Fundamentals: A perspective on DevOps Culture
PPTX
Better java with design
PPTX
Introduction to chef
PDF
DevOps - A Gentle Introduction
PDF
Java Concurrency by Example
PDF
Software Architecture - Quiz Questions
PDF
Refactoring for Software Design Smells - Tech Talk
PPTX
Solid Principles Of Design (Design Series 01)
PPTX
Zero downtime release through DevOps Continuous Delivery
PDF
DevOps Toolchain v1.0
PPTX
DevOps game marshmallow challenge
PDF
Productive Programming in Java 8 - with Lambdas and Streams
PDF
Sailing with Java 8 Streams
PPTX
Java concurrency questions and answers
PDF
Modern Programming in Java 8 - Lambdas, Streams and Date Time API
Advanced Debugging Using Java Bytecodes
Java Generics - by Example
Java 8 concurrency abstractions
7 best quotes on dev ops
Choosing Between Cross Platform of Native Development
DevOps Fundamentals: A perspective on DevOps Culture
Better java with design
Introduction to chef
DevOps - A Gentle Introduction
Java Concurrency by Example
Software Architecture - Quiz Questions
Refactoring for Software Design Smells - Tech Talk
Solid Principles Of Design (Design Series 01)
Zero downtime release through DevOps Continuous Delivery
DevOps Toolchain v1.0
DevOps game marshmallow challenge
Productive Programming in Java 8 - with Lambdas and Streams
Sailing with Java 8 Streams
Java concurrency questions and answers
Modern Programming in Java 8 - Lambdas, Streams and Date Time API
Ad

Similar to Software Architecture - Principles Patterns and Practices - OSI Days Workshop - 2016 (20)

PDF
Software Architecture - Principles, Patterns and Practices - OSI Days - 2017
PDF
Software architecture, Patterns for Scale
PPTX
L02 Architecture
PPT
Three Software Architecture Styles
PPT
PPT
03 basic concepts
PDF
Modern Software Architecture Styles and Patterns
PPTX
Introduction to Modern Software Architecture
PDF
L02 What is Software Architecture?
ODP
Software Patterns
PDF
API Architecture
PPTX
Software Engineering Architectural Design
PDF
MicroServices, yet another architectural style?
PPTX
Software Architecture
PPTX
Software architectures
PDF
[2016/2017] Introduction to Software Architecture
PPT
02 architectures in_context
PDF
Ten Advices for Architects
PDF
10 Hinweise für Architekten
PPT
session on pattern oriented software architecture
Software Architecture - Principles, Patterns and Practices - OSI Days - 2017
Software architecture, Patterns for Scale
L02 Architecture
Three Software Architecture Styles
03 basic concepts
Modern Software Architecture Styles and Patterns
Introduction to Modern Software Architecture
L02 What is Software Architecture?
Software Patterns
API Architecture
Software Engineering Architectural Design
MicroServices, yet another architectural style?
Software Architecture
Software architectures
[2016/2017] Introduction to Software Architecture
02 architectures in_context
Ten Advices for Architects
10 Hinweise für Architekten
session on pattern oriented software architecture

More from CodeOps Technologies LLP (20)

PDF
AWS Serverless Event-driven Architecture - in lastminute.com meetup
PPTX
Understanding azure batch service
PDF
DEVOPS AND MACHINE LEARNING
PDF
SERVERLESS MIDDLEWARE IN AZURE FUNCTIONS
PPT
BUILDING SERVERLESS SOLUTIONS WITH AZURE FUNCTIONS
PPTX
APPLYING DEVOPS STRATEGIES ON SCALE USING AZURE DEVOPS SERVICES
PPTX
BUILD, TEST & DEPLOY .NET CORE APPS IN AZURE DEVOPS
PPTX
CREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNER
PPTX
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
PPTX
WRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESS
PPTX
Training And Serving ML Model Using Kubeflow by Jayesh Sharma
PPTX
Deploy Microservices To Kubernetes Without Secrets by Reenu Saluja
PDF
Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...
PDF
YAML Tips For Kubernetes by Neependra Khare
PDF
Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...
PPTX
Monitor Azure Kubernetes Cluster With Prometheus by Mamta Jha
PDF
Jet brains space intro presentation
PDF
Functional Programming in Java 8 - Lambdas and Streams
PPTX
Distributed Tracing: New DevOps Foundation
PDF
"Distributed Tracing: New DevOps Foundation" by Jayesh Ahire
AWS Serverless Event-driven Architecture - in lastminute.com meetup
Understanding azure batch service
DEVOPS AND MACHINE LEARNING
SERVERLESS MIDDLEWARE IN AZURE FUNCTIONS
BUILDING SERVERLESS SOLUTIONS WITH AZURE FUNCTIONS
APPLYING DEVOPS STRATEGIES ON SCALE USING AZURE DEVOPS SERVICES
BUILD, TEST & DEPLOY .NET CORE APPS IN AZURE DEVOPS
CREATE RELIABLE AND LOW-CODE APPLICATION IN SERVERLESS MANNER
CREATING REAL TIME DASHBOARD WITH BLAZOR, AZURE FUNCTION COSMOS DB AN AZURE S...
WRITE SCALABLE COMMUNICATION APPLICATION WITH POWER OF SERVERLESS
Training And Serving ML Model Using Kubeflow by Jayesh Sharma
Deploy Microservices To Kubernetes Without Secrets by Reenu Saluja
Leverage Azure Tech stack for any Kubernetes cluster via Azure Arc by Saiyam ...
YAML Tips For Kubernetes by Neependra Khare
Must Know Azure Kubernetes Best Practices And Features For Better Resiliency ...
Monitor Azure Kubernetes Cluster With Prometheus by Mamta Jha
Jet brains space intro presentation
Functional Programming in Java 8 - Lambdas and Streams
Distributed Tracing: New DevOps Foundation
"Distributed Tracing: New DevOps Foundation" by Jayesh Ahire

Recently uploaded (20)

PDF
medical staffing services at VALiNTRY
PPTX
ai tools demonstartion for schools and inter college
PDF
Understanding Forklifts - TECH EHS Solution
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PDF
PTS Company Brochure 2025 (1).pdf.......
PPTX
assetexplorer- product-overview - presentation
PPTX
Operating system designcfffgfgggggggvggggggggg
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PPTX
Transform Your Business with a Software ERP System
PDF
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Digital Strategies for Manufacturing Companies
PDF
Upgrade and Innovation Strategies for SAP ERP Customers
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
How to Migrate SBCGlobal Email to Yahoo Easily
medical staffing services at VALiNTRY
ai tools demonstartion for schools and inter college
Understanding Forklifts - TECH EHS Solution
Odoo Companies in India – Driving Business Transformation.pdf
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
VVF-Customer-Presentation2025-Ver1.9.pptx
PTS Company Brochure 2025 (1).pdf.......
assetexplorer- product-overview - presentation
Operating system designcfffgfgggggggvggggggggg
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Transform Your Business with a Software ERP System
Why TechBuilder is the Future of Pickup and Delivery App Development (1).pdf
Which alternative to Crystal Reports is best for small or large businesses.pdf
Digital Strategies for Manufacturing Companies
Upgrade and Innovation Strategies for SAP ERP Customers
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
wealthsignaloriginal-com-DS-text-... (1).pdf
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
How to Migrate SBCGlobal Email to Yahoo Easily

Software Architecture - Principles Patterns and Practices - OSI Days Workshop - 2016