SlideShare a Scribd company logo
Software Architecture
Ahmed Misbah
Agenda (Day 1)
• Defining Software Architecture
• Architecture Decomposition
– Decomposition Strategies
– Tiers
– Layers
• Service-Level Requirements (SLRs)
– List of SLRs
– Impact of Dimensions on SLRs
– Common Practices for Improving SLRs
Agenda (Day 2)
• Technologies used in Tiers:
– Client Tier Technologies
– Web/Presentation Tier Technologies
– Business Tier Technologies
• Integration and Messaging
• Security
• Topics we did not cover
• Software Architecture Document
• Workshop
Rules
• Phones silent
• No laptops
• Questions/Discussions at anytime welcome
• 10 minute break every 1 hour
DEFINING SOFTWARE
ARCHITECTURE
What is Software Architecture?(1/2)
Architecture can be summarized as being about
structure. It’s about the decomposition of a
product into a collection of components/modules
and interactions. This needs to take into account
the whole of the product, including the
foundations and infrastructure services that deal
with cross-cutting concerns such as
security/configuration/error handling (for a piece
of software).
What is Software Architecture?(2/2)
Architecture is a set of structuring principles that
enables a system to be comprised of a set of
simpler systems each with its own local context
that is independent of but not inconsistent with
the context of the larger system as a whole
Both definitions focus on system structure
Difference between Design and
Architecture
• Architecture is about the what and where
• Design is about the how
Difference between Design and
Architecture
“All architecture is design but not all design is
architecture. Architecture represents the
significant design decisions that shape a system,
where significant is measured by cost of change”
Grady Booch
Difference between
Architecture/Design and Coding
• Architecture and Design are not coding,
coding is not design nor architecture
• Even when detailed procedural designs are
created for program components, the level of
abstraction of the design model is higher than
source code
Software Architecture Roles
Architectural Drivers
• Functional Requirements:
– The system shall provide a facility to display the
current account balance
• Software Quality Attributes:
– The balance should appear within 1 minute
• Constraints:
– The system must be developed using Java
technologies
Seven Layers of Architecture
• Global Architecture -> Standards (e.g. OSI
model)
• Enterprise Architecture -> System of Systems
• System Architecture -> Architecture Styles
• Application Architecture -> Subsystems
• Macro-Architecture -> Frameworks
• Micro-Architecture -> Design Patterns
• Objects -> Idioms (Do and Don’ts)
Architect’s Responsibilities
• Find and monitor architectural drivers
• Determine architectural significance
• Perform technology and teaming selections
• Devise the big picture
• Evaluate the architecture
• Evolve the architecture
• Sell the architecture
• Communicate the architecture
• Guard the architecture
• Program and review code
• Harvest and communicate idiomatic patters
ARCHITECTURE DECOMPOSITION
DECOMPOSITION STRATEGIES
Decomposition Strategies
• Decomposition can be broken down into ten
basic strategies:
– Group 1 — Layering or Distribution
– Group 2 — Exposure, Functionality, or Generality
– Group 3 — Coupling and Cohesion or Volatility
– Group 4 — Configuration
– Group 5 — Planning and Tracking or Work Assignment
• For any strategies that are grouped together, you
choose one of the strategies and then move on to
the next grouping
Group 1 - Layering
• Layering decomposition is some ordering of
principles, typically abstraction
• The layers may be totally or partially ordered
• Layering can be by layers or tiers, as explained
later
Group 1 - Distribution
• Distribution is a primary technique for
building scalable systems
• Distribution is among computational
resources
Group 2 - Exposure
• Exposure decomposition is about how the
component is exposed and consumes other
components
• Any given component fundamentally has three
different aspects:
– Services deals with how other components access this
component
– Logic deals with how the component implements the
work necessary to accomplish its task
– Integration deals with how it accesses other
components services
Group 2 - Functionality
• Functionality decomposition is about grouping
within the problem space. That is, order
module or customer module.
Group 2 - Generality
• Generality decomposition is determining
whether you have a reusable component that
can be used across many systems
• Be careful not to make assumptions that a
component may be used by another system in
the future and build a reusable component for
a requirement that does not exist yet
Group 3 - Coupling and Cohesion
• Cohesion
o the degree to which the elements of a module belong
together
• Coupling
o is the manner and degree of interdependence
between software modules
• What we want is High Cohesion and Low/Loose
Coupling
Group 3 - Volatility
• Volatility decomposition is about isolating
things that are more likely to change
• For example, GUI changes are more likely than
the underlying business rules
Group 4 - Configuration
• Configuration decomposition is having a target
system that must support different
configurations, maybe for security,
performance, or usability
• It’s like having multiple architectures with a
shared core, and the only thing that changes is
the configuration
Group 5 - Planning and Tracking
• Planning and Tracking decomposition is an
attempt to develop a fine-grained project plan
that takes into account:
– Ordering is understanding the dependencies
between packages and realizing which must be
completed first
– Sizing is breaking down the work into small-
enough parts so you can develop in a iterative
fashion without an iteration taking several months
Group 5 – Work Assignment
• Work Assignment decomposition is based on
various considerations, including physically
distributed teams, skill-set matching, and
security areas
Group 5 – Work Assignment
Conway’s Law:
organizations which design systems ... are
constrained to produce designs which are
copies of the communication structures of
these organizations
Melvin Conway
1967
TIERS
What is a Tier?
• A tier can be logical or physical organization of
components into an ordered chain of service
providers and consumers
• Components within a tier typically consume
the services of those in an “adjacent” provider
tier and provide services to one or more
“adjacent” consumer tiers
Tiers in Architecture
• Client
• Web/Presentation
• Business
• Integration
• Resource
2 Tier Architecture
• Also called Client-Server Architecture
Server
Clients
Protocol
3/Multi Tier Architecture
• Typically has a Client/Presentation Tier,
Business Tier and Database Tier
3/Multi Tier Architecture
LAYERS
What is a Layer?
• A layer is the hardware and software stack that
hosts services within a given tier
• Layers, like tiers, represent a well-ordered
relationship across interface-mediated
boundaries
• Whereas tiers represent processing chains across
components, layers represent
container/component relationships in
implementation and deployment of services
Example
Typical Layers in Architecture
Networking Infrastructure
Compute and Storage
Enterprise Services (OS and VM)
Virtual Platform (APIs)
Application
Strict an relaxed layering
• Strict layering is where each layer use only
APIs offered by the one layer beneath it
• Relaxed layering is where each layer may use
APIs offered by any layer beneath it
SERVICE LEVEL REQUIREMENTS
Service Level Requirements (SLRs)
• Also called Non-Functional Requirements or
Software Quality Attributes
• Also called xabilities or ilities
List of SLRs (1/4)
• Performance:
– Response Time
• Scalability:
– Increasing load without changing the system
– Vertical Scalability
– Horizontal Scalability
• Reliability:
– Integrity
– Consistency
List of SLRs (2/4)
• Availability:
– System is always accessible
• Extensibility:
– Add/modify functionalities without impacting
existing system functionalities
• Maintainability:
– The ability to correct flaws in the existing
functionality without impacting other components
of the system
List of SLRs (3/4)
• Manageability:
– The ability to manage the system to ensure the
continued health of a system with respect to
scalability, reliability, availability, performance, and
security
– Deals with system monitoring of the QoS
requirements and the ability to change the system
configuration to improve the QoS dynamically
without changing the system
List of SLRs (4/4)
• Security:
– The ability to ensure that the system cannot be
compromised
– Key concepts:
• Integrity
• Availability
• Confidentially
• Non-repudiation
Impact of Dimensions on SLRs
• As you are creating your architecture, you can
think of the layout of an architecture (tiers
and layers) as having six independent
variables that are expressed as dimensions:
– Capacity
– Redundancy
– Modularity
– Tolerance
– Workload
– Heterogeneity
Capacity
• The capacity dimension is the raw power in an
element, perhaps CPU, fast network
connection, or large storage capacity
• Capacity is increased through vertical scaling
• Capacity can improve performance,
availability, and scalability
Redundancy
• The redundancy dimension is the multiple
systems that work on the same job, such as load
balancing among several web servers
• Redundancy is increased through horizontal
scaling
• Redundancy can increase performance,
reliability, availability, extensibility, and
scalability
• It can decrease manageability and security
Modularity
• The modularity dimension is how you divide a
computational problem into separate elements
and spread those elements across multiple
computer systems
• Modularity can increase scalability, extensibility,
maintainability, and security
• It can decrease performance, reliability,
availability, and manageability
Tolerance
• The tolerance dimension is the time available
to fulfill a request from a user
• Tolerance can increase performance,
scalability, reliability, and manageability
Workload
• The workload dimension is the computational
work being performed at a particular point
within the system
• Workload is closely related to capacity in that
workload consumes available capacity, which
leaves fewer resources available for other
tasks
• Workload can increase performance,
scalability, and availability
Heterogeneity
• The heterogeneity dimension is the diversity
in technologies that is used within a system or
one of its subsystems
• Heterogeneity can increase performance and
scalability
• It can decrease performance, scalability,
availability, extensibility, manageability, and
security
Common Practices for Improving SLRs
• Redundancy:
– Load Balancing
– Failover
– Clustering
• Availability:
– Active replication: is performed by processing the
same request at every replica
– Passive replication: involves processing each single
request on a single replica and then transferring its
resultant state to the other replicas
• Performance:
– Increase system capacity
– Increase computational efficiency
Common Practices for Improving SLRs
• Extensibility:
– Clearly define the scope in the service-level
agreement
– Anticipate expected changes
– Design a high-quality object model
• Scalability:
– Vertical Scalability: more processors, memory, and
disks
– Horizontal Scalability: more servers
Common Practices for Improving SLRs
• Reliability:
– Increase computational efficiency
– Transactions
– Monitor and restart
– Redundancy
– Degradation
– Bound execution time
TECHNOLOGIES USED IN TIERS
Client Tier Technologies
• Java AWT and Swings
• Java Applets
• Android SDK
• HTML/CSS/JS
Web/ Presentation Tier Technologies
• JSPs and Servlets
• JSF
• Spring MVC
• Thymleaf
• Velocity
• Freemarker
Business Tier Technologies
• Spring
• EJBs
INTEGRATION AND MESSAGING
System Integration Choices
Style Share what? Good Bad Examples
Remote
Procedure Call
Functionality Less Complex High Coupling
Less Reliability
RMI
Corba
File
Transfer/Shar
ed File
Data Loose
Coupling
Less Timely
Shared
Database
Data Timely High Coupling
Messaging Both Loose
Coupling
Timely
Middleware
dependency
SOAP
REST
JMS
*MQ
Messaging
• Channel (Queue): Virtual pipe between
sender and receiver
• Message: Atomic unit of data
• Endpoint: Gateway of each system or
application to the messaging infrastructure
Message Interaction Types
• Request-driven interaction: A client requests
a service from a server and waits for the
response
• Event-driven interaction: An agent publishes
an event about a happening. Interested
subscribers receive the event and may choose
to act accordingly
Common Integration Technologies
• JDBC
• JCA
• JAX-WS
• JMS
• ActiveMQ
• RabbitMQ
• Apache Camel
• Spring Integration
SECURITY
Terminology
• Principal: is an entity (a person or system that
can be uniquely identified) that can be
authenticated by a security module before
system access is allowed or denied
• Credential: is a container of information used
to authenticate a principal (e.g. username and
password)
• Authentication and Authorization
Application Security
• Authentication and authorization—Using
credentials
• Message-level data integrity—Using XML
signatures
• Message-level and transport
confidentiality—Using encryption (SSL)
Defining Security behavior
• Declarative (e.g. Spring Security
configurations)
• Programmatic (e.g. isUserInRole in JEE)
What a Security Model should
contain?
• Underlying system infrastructure (hardware,
including the networking layer and
components)
• User authentication
• User authorization
• Auditing
• Data encryption
• System hardening against specific attacks
Common Security Threats
• Man in the middle attacks
• Session hijacking (replaying data)
• Password cracking
• Phishing
• Social hacking/engineering
• Network sniffing
• Cross-site scripting
• SQL Injection
• Denial-of-service
Common Technologies
• Java Authentication and Authorization Service
(JAAS)
• Spring Security
• LDAP Servers (e.g. OpenLDAP)
• Apache Shiro
TOPICS WE DID NOT COVER
Topics we did not cover
• Documenting Architecture using UML
• Design Patterns
• Architecting for the Cloud:
– Resource Pooling
– Rapid Elasticity
– Multi-tenancy
SOFTWARE ARCHITECTURE
DOCUMENT
Software Architecture Document
1. Front Page
2. Motivation and purpose
3. Product overview
4. Architectural drivers
5. Technology selection and
rationale
6. Main architectural
decisions and rationale
7. Naming and coding
standards
8. Module view
9. Module catalogue
10. Components and
connectors view (C&C)
11. Relevant allocations view
12. Module and Layer API
13. C&C Proto
14. Idiomatic Design Patterns
15. Volatilities and weaknesses
16. Glossary of terms
17. References
Thanks You!
Questions?

More Related Content

What's hot

Art of refactoring - Code Smells and Microservices Antipatterns
Art of refactoring - Code Smells and Microservices AntipatternsArt of refactoring - Code Smells and Microservices Antipatterns
Art of refactoring - Code Smells and Microservices Antipatterns
El Mahdi Benzekri
 
Introduction to SOFTWARE ARCHITECTURE
Introduction to SOFTWARE ARCHITECTUREIntroduction to SOFTWARE ARCHITECTURE
Introduction to SOFTWARE ARCHITECTURE
Ivano Malavolta
 
Software Architecture Patterns
Software Architecture PatternsSoftware Architecture Patterns
Software Architecture Patterns
Assaf Gannon
 
Micro Frontends
Micro FrontendsMicro Frontends
Micro Frontends
Spyros Ioakeimidis
 
Software Architecture Design for Begginers
Software Architecture Design for BegginersSoftware Architecture Design for Begginers
Software Architecture Design for Begginers
Chinh Ngo Nguyen
 
Introduction to Modern Software Architecture
Introduction to Modern Software ArchitectureIntroduction to Modern Software Architecture
Introduction to Modern Software Architecture
Jérôme Kehrli
 
Monoliths and Microservices
Monoliths and Microservices Monoliths and Microservices
Monoliths and Microservices
Bozhidar Bozhanov
 
Software architecture and software design
Software architecture and software designSoftware architecture and software design
Software architecture and software design
Mr. Swapnil G. Thaware
 
Requirements Engineering @ Agile
Requirements Engineering @ AgileRequirements Engineering @ Agile
Requirements Engineering @ Agile
Girish Khemani
 
An Introduction to Software Architecture
An Introduction to Software ArchitectureAn Introduction to Software Architecture
An Introduction to Software Architecture
RahimLotfi
 
Microservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitectureMicroservice vs. Monolithic Architecture
Microservice vs. Monolithic Architecture
Paul Mooney
 
Designing and documenting software architecture unit 5
Designing and documenting software architecture unit 5Designing and documenting software architecture unit 5
Designing and documenting software architecture unit 5Sudarshan Dhondaley
 
Event Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQEvent Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQ
Araf Karsh Hamid
 
Domain Driven Design(DDD) Presentation
Domain Driven Design(DDD) PresentationDomain Driven Design(DDD) Presentation
Domain Driven Design(DDD) Presentation
Oğuzhan Soykan
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
Dharmalingam Ganesan
 
Domain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and MicroservicesDomain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and Microservices
Radosław Maziarka
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
Roger van de Kimmenade
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
Sam Nasr, MCSA, MVP
 
Why Microservice
Why Microservice Why Microservice
Why Microservice
Kelvin Yeung
 

What's hot (20)

Art of refactoring - Code Smells and Microservices Antipatterns
Art of refactoring - Code Smells and Microservices AntipatternsArt of refactoring - Code Smells and Microservices Antipatterns
Art of refactoring - Code Smells and Microservices Antipatterns
 
Introduction to SOFTWARE ARCHITECTURE
Introduction to SOFTWARE ARCHITECTUREIntroduction to SOFTWARE ARCHITECTURE
Introduction to SOFTWARE ARCHITECTURE
 
Software Architecture Patterns
Software Architecture PatternsSoftware Architecture Patterns
Software Architecture Patterns
 
Micro Frontends
Micro FrontendsMicro Frontends
Micro Frontends
 
Software Architecture Design for Begginers
Software Architecture Design for BegginersSoftware Architecture Design for Begginers
Software Architecture Design for Begginers
 
Introduction to Modern Software Architecture
Introduction to Modern Software ArchitectureIntroduction to Modern Software Architecture
Introduction to Modern Software Architecture
 
Monoliths and Microservices
Monoliths and Microservices Monoliths and Microservices
Monoliths and Microservices
 
Software architecture and software design
Software architecture and software designSoftware architecture and software design
Software architecture and software design
 
Requirements Engineering @ Agile
Requirements Engineering @ AgileRequirements Engineering @ Agile
Requirements Engineering @ Agile
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
An Introduction to Software Architecture
An Introduction to Software ArchitectureAn Introduction to Software Architecture
An Introduction to Software Architecture
 
Microservice vs. Monolithic Architecture
Microservice vs. Monolithic ArchitectureMicroservice vs. Monolithic Architecture
Microservice vs. Monolithic Architecture
 
Designing and documenting software architecture unit 5
Designing and documenting software architecture unit 5Designing and documenting software architecture unit 5
Designing and documenting software architecture unit 5
 
Event Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQEvent Sourcing & CQRS, Kafka, Rabbit MQ
Event Sourcing & CQRS, Kafka, Rabbit MQ
 
Domain Driven Design(DDD) Presentation
Domain Driven Design(DDD) PresentationDomain Driven Design(DDD) Presentation
Domain Driven Design(DDD) Presentation
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
 
Domain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and MicroservicesDomain Driven Design - Strategic Patterns and Microservices
Domain Driven Design - Strategic Patterns and Microservices
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Clean architecture with asp.net core
Clean architecture with asp.net coreClean architecture with asp.net core
Clean architecture with asp.net core
 
Why Microservice
Why Microservice Why Microservice
Why Microservice
 

Similar to Software Architecture

Middle ware Technologies
Middle ware TechnologiesMiddle ware Technologies
Middle ware Technologies
prakashk453625
 
Middleware Technologies
Middleware Technologies Middleware Technologies
Middleware Technologies
prakashk453625
 
architectural design
 architectural design architectural design
architectural design
Preeti Mishra
 
Software architecture
Software architectureSoftware architecture
Software architecture
Sweta Kumari Barnwal
 
Se ii unit3-architectural-design
Se ii unit3-architectural-designSe ii unit3-architectural-design
Se ii unit3-architectural-design
Ahmad sohail Kakar
 
UNIT-4design-concepts-se-pressman-ppt.PPT
UNIT-4design-concepts-se-pressman-ppt.PPTUNIT-4design-concepts-se-pressman-ppt.PPT
UNIT-4design-concepts-se-pressman-ppt.PPT
malathijanapati1
 
Software architecture
Software architectureSoftware architecture
Software architecture
Uri Meirav
 
Software architecture simplified
Software architecture simplifiedSoftware architecture simplified
Software architecture simplifiedPrasad Chitta
 
1 introduction to sa
1 introduction to sa1 introduction to sa
1 introduction to sadavid10hm
 
Quality attributes in software architecture
Quality attributes in software architectureQuality attributes in software architecture
Quality attributes in software architecture
Gang Tao
 
Architec design introduction
Architec design introductionArchitec design introduction
Architec design introduction
Dr.Jayanthi ramasamy
 
Unit ii
Unit ii  Unit ii
Seii unit7 component-level-design
Seii unit7 component-level-designSeii unit7 component-level-design
Seii unit7 component-level-design
Ahmad sohail Kakar
 
L02 Architecture
L02 ArchitectureL02 Architecture
L02 Architecture
Ólafur Andri Ragnarsson
 
Design principles & quality factors
Design principles & quality factorsDesign principles & quality factors
Design principles & quality factors
Aalia Barbe
 
Diksha sda presentation
Diksha sda presentationDiksha sda presentation
Diksha sda presentation
dikshagupta111
 
Software design, software engineering
Software design, software engineeringSoftware design, software engineering
Software design, software engineering
Rupesh Vaishnav
 
Software Design - SDLC Model
Software Design - SDLC ModelSoftware Design - SDLC Model
Software Engineering Lec 8-design-
Software Engineering Lec 8-design-Software Engineering Lec 8-design-
Software Engineering Lec 8-design-
Taymoor Nazmy
 

Similar to Software Architecture (20)

Middle ware Technologies
Middle ware TechnologiesMiddle ware Technologies
Middle ware Technologies
 
Middleware Technologies
Middleware Technologies Middleware Technologies
Middleware Technologies
 
architectural design
 architectural design architectural design
architectural design
 
Software architecture
Software architectureSoftware architecture
Software architecture
 
Se ii unit3-architectural-design
Se ii unit3-architectural-designSe ii unit3-architectural-design
Se ii unit3-architectural-design
 
UNIT-4design-concepts-se-pressman-ppt.PPT
UNIT-4design-concepts-se-pressman-ppt.PPTUNIT-4design-concepts-se-pressman-ppt.PPT
UNIT-4design-concepts-se-pressman-ppt.PPT
 
Software architecture
Software architectureSoftware architecture
Software architecture
 
Software architecture simplified
Software architecture simplifiedSoftware architecture simplified
Software architecture simplified
 
1 introduction to sa
1 introduction to sa1 introduction to sa
1 introduction to sa
 
Quality attributes in software architecture
Quality attributes in software architectureQuality attributes in software architecture
Quality attributes in software architecture
 
Architec design introduction
Architec design introductionArchitec design introduction
Architec design introduction
 
Unit ii
Unit ii  Unit ii
Unit ii
 
Seii unit7 component-level-design
Seii unit7 component-level-designSeii unit7 component-level-design
Seii unit7 component-level-design
 
L02 Architecture
L02 ArchitectureL02 Architecture
L02 Architecture
 
Design principles & quality factors
Design principles & quality factorsDesign principles & quality factors
Design principles & quality factors
 
sdlc.pptx
sdlc.pptxsdlc.pptx
sdlc.pptx
 
Diksha sda presentation
Diksha sda presentationDiksha sda presentation
Diksha sda presentation
 
Software design, software engineering
Software design, software engineeringSoftware design, software engineering
Software design, software engineering
 
Software Design - SDLC Model
Software Design - SDLC ModelSoftware Design - SDLC Model
Software Design - SDLC Model
 
Software Engineering Lec 8-design-
Software Engineering Lec 8-design-Software Engineering Lec 8-design-
Software Engineering Lec 8-design-
 

More from Ahmed Misbah

6+1 Technical Tips for Tech Startups (2023 Edition)
6+1 Technical Tips for Tech Startups (2023 Edition)6+1 Technical Tips for Tech Startups (2023 Edition)
6+1 Technical Tips for Tech Startups (2023 Edition)
Ahmed Misbah
 
Migrating to Microservices Patterns and Technologies (edition 2023)
 Migrating to Microservices Patterns and Technologies (edition 2023) Migrating to Microservices Patterns and Technologies (edition 2023)
Migrating to Microservices Patterns and Technologies (edition 2023)
Ahmed Misbah
 
Practical Microservice Architecture (edition 2022).pdf
Practical Microservice Architecture (edition 2022).pdfPractical Microservice Architecture (edition 2022).pdf
Practical Microservice Architecture (edition 2022).pdf
Ahmed Misbah
 
Istio as an enabler for migrating to microservices (edition 2022)
Istio as an enabler for migrating to microservices (edition 2022)Istio as an enabler for migrating to microservices (edition 2022)
Istio as an enabler for migrating to microservices (edition 2022)
Ahmed Misbah
 
DevOps for absolute beginners (2022 edition)
DevOps for absolute beginners (2022 edition)DevOps for absolute beginners (2022 edition)
DevOps for absolute beginners (2022 edition)
Ahmed Misbah
 
TDD Anti-patterns (2022 edition)
TDD Anti-patterns (2022 edition)TDD Anti-patterns (2022 edition)
TDD Anti-patterns (2022 edition)
Ahmed Misbah
 
Implementing FaaS on Kubernetes using Kubeless
Implementing FaaS on Kubernetes using KubelessImplementing FaaS on Kubernetes using Kubeless
Implementing FaaS on Kubernetes using Kubeless
Ahmed Misbah
 
Istio as an Enabler for Migrating Monolithic Applications to Microservices v1.3
Istio as an Enabler for Migrating Monolithic Applications to Microservices v1.3Istio as an Enabler for Migrating Monolithic Applications to Microservices v1.3
Istio as an Enabler for Migrating Monolithic Applications to Microservices v1.3
Ahmed Misbah
 
Introduction to TDD
Introduction to TDDIntroduction to TDD
Introduction to TDD
Ahmed Misbah
 
Getting Started with DevOps
Getting Started with DevOpsGetting Started with DevOps
Getting Started with DevOps
Ahmed Misbah
 
DevOps for absolute beginners
DevOps for absolute beginnersDevOps for absolute beginners
DevOps for absolute beginners
Ahmed Misbah
 
Microservice test strategies for applications based on Spring, K8s and Istio
Microservice test strategies for applications based on Spring, K8s and IstioMicroservice test strategies for applications based on Spring, K8s and Istio
Microservice test strategies for applications based on Spring, K8s and Istio
Ahmed Misbah
 
Cucumber jvm best practices v3
Cucumber jvm best practices v3Cucumber jvm best practices v3
Cucumber jvm best practices v3
Ahmed Misbah
 
Welcome to the Professional World
Welcome to the Professional WorldWelcome to the Professional World
Welcome to the Professional World
Ahmed Misbah
 
More topics on Java
More topics on JavaMore topics on Java
More topics on Java
Ahmed Misbah
 
Career Paths for Software Professionals
Career Paths for Software ProfessionalsCareer Paths for Software Professionals
Career Paths for Software Professionals
Ahmed Misbah
 
Effective User Story Writing
Effective User Story WritingEffective User Story Writing
Effective User Story Writing
Ahmed Misbah
 
AndGen+
AndGen+AndGen+
AndGen+
Ahmed Misbah
 
DDT Testing Library for Android
DDT Testing Library for AndroidDDT Testing Library for Android
DDT Testing Library for Android
Ahmed Misbah
 
Big Data for QAs
Big Data for QAsBig Data for QAs
Big Data for QAs
Ahmed Misbah
 

More from Ahmed Misbah (20)

6+1 Technical Tips for Tech Startups (2023 Edition)
6+1 Technical Tips for Tech Startups (2023 Edition)6+1 Technical Tips for Tech Startups (2023 Edition)
6+1 Technical Tips for Tech Startups (2023 Edition)
 
Migrating to Microservices Patterns and Technologies (edition 2023)
 Migrating to Microservices Patterns and Technologies (edition 2023) Migrating to Microservices Patterns and Technologies (edition 2023)
Migrating to Microservices Patterns and Technologies (edition 2023)
 
Practical Microservice Architecture (edition 2022).pdf
Practical Microservice Architecture (edition 2022).pdfPractical Microservice Architecture (edition 2022).pdf
Practical Microservice Architecture (edition 2022).pdf
 
Istio as an enabler for migrating to microservices (edition 2022)
Istio as an enabler for migrating to microservices (edition 2022)Istio as an enabler for migrating to microservices (edition 2022)
Istio as an enabler for migrating to microservices (edition 2022)
 
DevOps for absolute beginners (2022 edition)
DevOps for absolute beginners (2022 edition)DevOps for absolute beginners (2022 edition)
DevOps for absolute beginners (2022 edition)
 
TDD Anti-patterns (2022 edition)
TDD Anti-patterns (2022 edition)TDD Anti-patterns (2022 edition)
TDD Anti-patterns (2022 edition)
 
Implementing FaaS on Kubernetes using Kubeless
Implementing FaaS on Kubernetes using KubelessImplementing FaaS on Kubernetes using Kubeless
Implementing FaaS on Kubernetes using Kubeless
 
Istio as an Enabler for Migrating Monolithic Applications to Microservices v1.3
Istio as an Enabler for Migrating Monolithic Applications to Microservices v1.3Istio as an Enabler for Migrating Monolithic Applications to Microservices v1.3
Istio as an Enabler for Migrating Monolithic Applications to Microservices v1.3
 
Introduction to TDD
Introduction to TDDIntroduction to TDD
Introduction to TDD
 
Getting Started with DevOps
Getting Started with DevOpsGetting Started with DevOps
Getting Started with DevOps
 
DevOps for absolute beginners
DevOps for absolute beginnersDevOps for absolute beginners
DevOps for absolute beginners
 
Microservice test strategies for applications based on Spring, K8s and Istio
Microservice test strategies for applications based on Spring, K8s and IstioMicroservice test strategies for applications based on Spring, K8s and Istio
Microservice test strategies for applications based on Spring, K8s and Istio
 
Cucumber jvm best practices v3
Cucumber jvm best practices v3Cucumber jvm best practices v3
Cucumber jvm best practices v3
 
Welcome to the Professional World
Welcome to the Professional WorldWelcome to the Professional World
Welcome to the Professional World
 
More topics on Java
More topics on JavaMore topics on Java
More topics on Java
 
Career Paths for Software Professionals
Career Paths for Software ProfessionalsCareer Paths for Software Professionals
Career Paths for Software Professionals
 
Effective User Story Writing
Effective User Story WritingEffective User Story Writing
Effective User Story Writing
 
AndGen+
AndGen+AndGen+
AndGen+
 
DDT Testing Library for Android
DDT Testing Library for AndroidDDT Testing Library for Android
DDT Testing Library for Android
 
Big Data for QAs
Big Data for QAsBig Data for QAs
Big Data for QAs
 

Recently uploaded

Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Anthony Dahanne
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Hivelance Technology
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
NaapbooksPrivateLimi
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
Tier1 app
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
Software Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdfSoftware Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdf
MayankTawar1
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
Jelle | Nordend
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
Ortus Solutions, Corp
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
AMB-Review
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
Max Andersen
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 

Recently uploaded (20)

Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
Multiple Your Crypto Portfolio with the Innovative Features of Advanced Crypt...
 
Visitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.appVisitor Management System in India- Vizman.app
Visitor Management System in India- Vizman.app
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
Software Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdfSoftware Testing Exam imp Ques Notes.pdf
Software Testing Exam imp Ques Notes.pdf
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdfDominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
Dominate Social Media with TubeTrivia AI’s Addictive Quiz Videos.pdf
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Quarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden ExtensionsQuarkus Hidden and Forbidden Extensions
Quarkus Hidden and Forbidden Extensions
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 

Software Architecture

  • 2. Agenda (Day 1) • Defining Software Architecture • Architecture Decomposition – Decomposition Strategies – Tiers – Layers • Service-Level Requirements (SLRs) – List of SLRs – Impact of Dimensions on SLRs – Common Practices for Improving SLRs
  • 3. Agenda (Day 2) • Technologies used in Tiers: – Client Tier Technologies – Web/Presentation Tier Technologies – Business Tier Technologies • Integration and Messaging • Security • Topics we did not cover • Software Architecture Document • Workshop
  • 4. Rules • Phones silent • No laptops • Questions/Discussions at anytime welcome • 10 minute break every 1 hour
  • 6. What is Software Architecture?(1/2) Architecture can be summarized as being about structure. It’s about the decomposition of a product into a collection of components/modules and interactions. This needs to take into account the whole of the product, including the foundations and infrastructure services that deal with cross-cutting concerns such as security/configuration/error handling (for a piece of software).
  • 7. What is Software Architecture?(2/2) Architecture is a set of structuring principles that enables a system to be comprised of a set of simpler systems each with its own local context that is independent of but not inconsistent with the context of the larger system as a whole Both definitions focus on system structure
  • 8. Difference between Design and Architecture • Architecture is about the what and where • Design is about the how
  • 9. Difference between Design and Architecture “All architecture is design but not all design is architecture. Architecture represents the significant design decisions that shape a system, where significant is measured by cost of change” Grady Booch
  • 10. Difference between Architecture/Design and Coding • Architecture and Design are not coding, coding is not design nor architecture • Even when detailed procedural designs are created for program components, the level of abstraction of the design model is higher than source code
  • 12. Architectural Drivers • Functional Requirements: – The system shall provide a facility to display the current account balance • Software Quality Attributes: – The balance should appear within 1 minute • Constraints: – The system must be developed using Java technologies
  • 13. Seven Layers of Architecture • Global Architecture -> Standards (e.g. OSI model) • Enterprise Architecture -> System of Systems • System Architecture -> Architecture Styles • Application Architecture -> Subsystems • Macro-Architecture -> Frameworks • Micro-Architecture -> Design Patterns • Objects -> Idioms (Do and Don’ts)
  • 14. Architect’s Responsibilities • Find and monitor architectural drivers • Determine architectural significance • Perform technology and teaming selections • Devise the big picture • Evaluate the architecture • Evolve the architecture • Sell the architecture • Communicate the architecture • Guard the architecture • Program and review code • Harvest and communicate idiomatic patters
  • 17. Decomposition Strategies • Decomposition can be broken down into ten basic strategies: – Group 1 — Layering or Distribution – Group 2 — Exposure, Functionality, or Generality – Group 3 — Coupling and Cohesion or Volatility – Group 4 — Configuration – Group 5 — Planning and Tracking or Work Assignment • For any strategies that are grouped together, you choose one of the strategies and then move on to the next grouping
  • 18. Group 1 - Layering • Layering decomposition is some ordering of principles, typically abstraction • The layers may be totally or partially ordered • Layering can be by layers or tiers, as explained later
  • 19. Group 1 - Distribution • Distribution is a primary technique for building scalable systems • Distribution is among computational resources
  • 20. Group 2 - Exposure • Exposure decomposition is about how the component is exposed and consumes other components • Any given component fundamentally has three different aspects: – Services deals with how other components access this component – Logic deals with how the component implements the work necessary to accomplish its task – Integration deals with how it accesses other components services
  • 21. Group 2 - Functionality • Functionality decomposition is about grouping within the problem space. That is, order module or customer module.
  • 22. Group 2 - Generality • Generality decomposition is determining whether you have a reusable component that can be used across many systems • Be careful not to make assumptions that a component may be used by another system in the future and build a reusable component for a requirement that does not exist yet
  • 23. Group 3 - Coupling and Cohesion • Cohesion o the degree to which the elements of a module belong together • Coupling o is the manner and degree of interdependence between software modules • What we want is High Cohesion and Low/Loose Coupling
  • 24. Group 3 - Volatility • Volatility decomposition is about isolating things that are more likely to change • For example, GUI changes are more likely than the underlying business rules
  • 25. Group 4 - Configuration • Configuration decomposition is having a target system that must support different configurations, maybe for security, performance, or usability • It’s like having multiple architectures with a shared core, and the only thing that changes is the configuration
  • 26. Group 5 - Planning and Tracking • Planning and Tracking decomposition is an attempt to develop a fine-grained project plan that takes into account: – Ordering is understanding the dependencies between packages and realizing which must be completed first – Sizing is breaking down the work into small- enough parts so you can develop in a iterative fashion without an iteration taking several months
  • 27. Group 5 – Work Assignment • Work Assignment decomposition is based on various considerations, including physically distributed teams, skill-set matching, and security areas
  • 28. Group 5 – Work Assignment Conway’s Law: organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations Melvin Conway 1967
  • 29. TIERS
  • 30. What is a Tier? • A tier can be logical or physical organization of components into an ordered chain of service providers and consumers • Components within a tier typically consume the services of those in an “adjacent” provider tier and provide services to one or more “adjacent” consumer tiers
  • 31. Tiers in Architecture • Client • Web/Presentation • Business • Integration • Resource
  • 32. 2 Tier Architecture • Also called Client-Server Architecture Server Clients Protocol
  • 33. 3/Multi Tier Architecture • Typically has a Client/Presentation Tier, Business Tier and Database Tier
  • 36. What is a Layer? • A layer is the hardware and software stack that hosts services within a given tier • Layers, like tiers, represent a well-ordered relationship across interface-mediated boundaries • Whereas tiers represent processing chains across components, layers represent container/component relationships in implementation and deployment of services
  • 38. Typical Layers in Architecture Networking Infrastructure Compute and Storage Enterprise Services (OS and VM) Virtual Platform (APIs) Application
  • 39. Strict an relaxed layering • Strict layering is where each layer use only APIs offered by the one layer beneath it • Relaxed layering is where each layer may use APIs offered by any layer beneath it
  • 41. Service Level Requirements (SLRs) • Also called Non-Functional Requirements or Software Quality Attributes • Also called xabilities or ilities
  • 42. List of SLRs (1/4) • Performance: – Response Time • Scalability: – Increasing load without changing the system – Vertical Scalability – Horizontal Scalability • Reliability: – Integrity – Consistency
  • 43. List of SLRs (2/4) • Availability: – System is always accessible • Extensibility: – Add/modify functionalities without impacting existing system functionalities • Maintainability: – The ability to correct flaws in the existing functionality without impacting other components of the system
  • 44. List of SLRs (3/4) • Manageability: – The ability to manage the system to ensure the continued health of a system with respect to scalability, reliability, availability, performance, and security – Deals with system monitoring of the QoS requirements and the ability to change the system configuration to improve the QoS dynamically without changing the system
  • 45. List of SLRs (4/4) • Security: – The ability to ensure that the system cannot be compromised – Key concepts: • Integrity • Availability • Confidentially • Non-repudiation
  • 46. Impact of Dimensions on SLRs • As you are creating your architecture, you can think of the layout of an architecture (tiers and layers) as having six independent variables that are expressed as dimensions: – Capacity – Redundancy – Modularity – Tolerance – Workload – Heterogeneity
  • 47. Capacity • The capacity dimension is the raw power in an element, perhaps CPU, fast network connection, or large storage capacity • Capacity is increased through vertical scaling • Capacity can improve performance, availability, and scalability
  • 48. Redundancy • The redundancy dimension is the multiple systems that work on the same job, such as load balancing among several web servers • Redundancy is increased through horizontal scaling • Redundancy can increase performance, reliability, availability, extensibility, and scalability • It can decrease manageability and security
  • 49. Modularity • The modularity dimension is how you divide a computational problem into separate elements and spread those elements across multiple computer systems • Modularity can increase scalability, extensibility, maintainability, and security • It can decrease performance, reliability, availability, and manageability
  • 50. Tolerance • The tolerance dimension is the time available to fulfill a request from a user • Tolerance can increase performance, scalability, reliability, and manageability
  • 51. Workload • The workload dimension is the computational work being performed at a particular point within the system • Workload is closely related to capacity in that workload consumes available capacity, which leaves fewer resources available for other tasks • Workload can increase performance, scalability, and availability
  • 52. Heterogeneity • The heterogeneity dimension is the diversity in technologies that is used within a system or one of its subsystems • Heterogeneity can increase performance and scalability • It can decrease performance, scalability, availability, extensibility, manageability, and security
  • 53. Common Practices for Improving SLRs • Redundancy: – Load Balancing – Failover – Clustering • Availability: – Active replication: is performed by processing the same request at every replica – Passive replication: involves processing each single request on a single replica and then transferring its resultant state to the other replicas • Performance: – Increase system capacity – Increase computational efficiency
  • 54.
  • 55. Common Practices for Improving SLRs • Extensibility: – Clearly define the scope in the service-level agreement – Anticipate expected changes – Design a high-quality object model • Scalability: – Vertical Scalability: more processors, memory, and disks – Horizontal Scalability: more servers
  • 56. Common Practices for Improving SLRs • Reliability: – Increase computational efficiency – Transactions – Monitor and restart – Redundancy – Degradation – Bound execution time
  • 58. Client Tier Technologies • Java AWT and Swings • Java Applets • Android SDK • HTML/CSS/JS
  • 59. Web/ Presentation Tier Technologies • JSPs and Servlets • JSF • Spring MVC • Thymleaf • Velocity • Freemarker
  • 62. System Integration Choices Style Share what? Good Bad Examples Remote Procedure Call Functionality Less Complex High Coupling Less Reliability RMI Corba File Transfer/Shar ed File Data Loose Coupling Less Timely Shared Database Data Timely High Coupling Messaging Both Loose Coupling Timely Middleware dependency SOAP REST JMS *MQ
  • 63. Messaging • Channel (Queue): Virtual pipe between sender and receiver • Message: Atomic unit of data • Endpoint: Gateway of each system or application to the messaging infrastructure
  • 64.
  • 65. Message Interaction Types • Request-driven interaction: A client requests a service from a server and waits for the response • Event-driven interaction: An agent publishes an event about a happening. Interested subscribers receive the event and may choose to act accordingly
  • 66. Common Integration Technologies • JDBC • JCA • JAX-WS • JMS • ActiveMQ • RabbitMQ • Apache Camel • Spring Integration
  • 68. Terminology • Principal: is an entity (a person or system that can be uniquely identified) that can be authenticated by a security module before system access is allowed or denied • Credential: is a container of information used to authenticate a principal (e.g. username and password) • Authentication and Authorization
  • 69. Application Security • Authentication and authorization—Using credentials • Message-level data integrity—Using XML signatures • Message-level and transport confidentiality—Using encryption (SSL)
  • 70. Defining Security behavior • Declarative (e.g. Spring Security configurations) • Programmatic (e.g. isUserInRole in JEE)
  • 71. What a Security Model should contain? • Underlying system infrastructure (hardware, including the networking layer and components) • User authentication • User authorization • Auditing • Data encryption • System hardening against specific attacks
  • 72. Common Security Threats • Man in the middle attacks • Session hijacking (replaying data) • Password cracking • Phishing • Social hacking/engineering • Network sniffing • Cross-site scripting • SQL Injection • Denial-of-service
  • 73. Common Technologies • Java Authentication and Authorization Service (JAAS) • Spring Security • LDAP Servers (e.g. OpenLDAP) • Apache Shiro
  • 74. TOPICS WE DID NOT COVER
  • 75. Topics we did not cover • Documenting Architecture using UML • Design Patterns • Architecting for the Cloud: – Resource Pooling – Rapid Elasticity – Multi-tenancy
  • 77. Software Architecture Document 1. Front Page 2. Motivation and purpose 3. Product overview 4. Architectural drivers 5. Technology selection and rationale 6. Main architectural decisions and rationale 7. Naming and coding standards 8. Module view 9. Module catalogue 10. Components and connectors view (C&C) 11. Relevant allocations view 12. Module and Layer API 13. C&C Proto 14. Idiomatic Design Patterns 15. Volatilities and weaknesses 16. Glossary of terms 17. References