SlideShare a Scribd company logo
Visualizing
software architecture
effectively
in service description
Sanjoy Roy
What is service description?
A service description is a software architecture document with a
focus on software elements such as:
• component responsibilities, dependencies, communication
protocols, actors and functional characteristics
A service description can be a combination of both visual diagrams
and written text that provide just enough detail for understanding
what the actual problem domain is and how it's mapped to a solution
domain.
Service Description (cont.)
Think about the target audience.
 Who is going to read this document?
 What do they need to know?
 what are the design elements most important to illustrate?
Writing this document is not always one off activity.
It needs to be maintained to remain relevant.
Diagrams play very important role in service description.
Diagrams help to understand the software architecture.
Diagrams are the maps that help software developers
navigate a complex codebase.
Benefits of diagrams
Shared Vocabulary
Shared vocabulary makes sure everyone within the development
team communicates about their system in the same,
understood way.
It is important for a development team to have a shared
vocabulary before writing the service description.
A software system is made up of one or more
containers (web applications, mobile apps, standalone
applications, databases, file systems, etc.), each of
which contains one or more components, which in
turn are implemented by one or more classes.
Here is the shared vocabulary that I use
•A software system is the highest level of abstraction and
represents something that delivers value to its users,
whether they are human or not.
•A container represents something that hosts code or data.
A container is something that needs to be running in order
for the overall software system to work. Each container
should be a separately deployable thing.
•A component as simply being a grouping of related
functionality encapsulated behind a well-defined
interface.
Static Structure
Software System
Container Container Container
Component Component
Class Class Class
Component
Diagrams I draw in service description:
 Context Diagram
 Container Diagram
 Component Diagram
 Deployment Diagram
First three diagrams are based on Simon Brown’s C4 Model.
I don’t draw class diagram as suggested by C4 model.
But I draw sequence diagrams to show the logic flow.
Context Diagram
A context diagram defines
 what the system does and does not do
 where the boundaries are between it and the outside world
 how the system interacts with other systems,
organisations, and people across these boundaries.
A Context diagram helps to answer:
What is the
service that we
are building (or
have built) ?
Who is using it?
How does it fit in
with the existing
environment ?
Things to remember when drawing a context diagram:
Focus should be on
people (actors, roles,
personas, etc.) and
software systems rather
than technologies,
protocols, and other low-
level details.
Add a short description
of the person, software
systems, their roles and
responsibilities
Annotate every
interaction between
people and software
systems with some
information (purpose of
the interaction)
Target Audience:
Technical and
non-technical people
A Sample Context Diagram
Customer
Event Manager
[ Person ]
[ Person ]
ABC Customer
An event manager manages
events
Event Management System (EMS)
[ Software System ]
EMS manages event definition and its lifecycle
Views events
and buy tickets
Manages events
Container Diagram
The container diagram shows the high-level shape of the
software architecture and how responsibilities are distributed
across it.
It also shows the major technology choices and how the
containers communicate with one another.
What is the overall
shape of the
software system?
What are the high-
level technology
decisions?
How are the
responsibilities
distributed across
the system?
How do containers
communicate with
one another?
Where do I need to
write code in order
to implement
features?
A container diagram helps
you answer these
questions
Things to remember when drawing a container diagram:
For each container in the
diagram, show:
 the name of the container
 implementation technology
 a short description
Annotate the interactions between the containers
with:
 Purpose of the interaction
 Communication mechanism (REST, JMS, etc.)
 Communication style (sync, async, batch,
etc.)
 Protocols (HTTP, HTTPS, FTP, etc.)
Target Audience
Technical people (Developers,
Testers, Architects,
Operational & Support Staff)
A Sample Container Diagram
Customer
Event Manager
[ Person ]
[ Person ]
ABC Customer An event manager manages events
Event Management System (EMS) Boundary
Views events and buy tickets
Manages events
Uses
[ REST ]
[ HTTPS ]
Uses
[ REST ]
[ HTTPS ]
RDBMS
[Container: Oracle]
Stores event definition
WEB APPLICATION
[Container: Jetty]
Allows users to manage event
definition and its lifecycle
Reads from
and writes
data to
[ JDBC, port:
3306 ]
Component Diagram
• A component diagram shows the logical components that reside
inside each of the containers.
• This is useful because:
 It shows the high-level decomposition of the service into
components with distinct responsibilities
 It shows the relationships and dependencies between components
 It provides a framework for high-level software development
estimates and how the delivery can be broken down
A component diagram helps in answering the following questions:
What components
is the service made
of?
Is it clear how the
service works at a
high level?
Do all components
have a home (i.e.
reside in a
container)?
Things to remember when drawing a component diagram:
For each component in the
diagram, show:
 the name of the component
 implementation technology
 a short description
Annotate the interactions between the components
with:
 Purpose of the interaction (e.g. “uses”,
“persists data using”, “delegates to”, etc.)
 Communication style (e.g. synchronous,
asynchronous, etc.)
Target Audience
Technical people (Developers,
Testers, Architects,
Operational & Support Staff)
A Sample Component Diagram
Relational Database
[Container: Oracle]
Stores event definitions
Event Component
[Component: Spring Bean + Spring Data + JPA2 + Spring HATEOAS + Spring
Security + Spring MVC + Hibernate + JDBC]
Manages event’s definition and it’s lifecycle
Ticket Component
[Component: Spring Bean + Spring Data +
Hibernate + JDBC]
Manages ticket details
Logging Component
[Component: SLF4J + Logback]
Provides logging facilities to all
other components
Reads from and writes data to
[ SQL/JDBC, port 3306 ]
Associate events with
the tickets using
Used by all components
Customer Component
[Component: Spring Bean + Spring Data +
Hibernate + JDBC]
Manages customer details
Associate events with
the customers using
Deployment Diagram
• The deployment diagram describes the environment into
which the system will be deployed and the dependencies
that the system has on elements of it
• This diagram shows the physical environment in which the
system is intended to run, including the hardware or hosting
environment
Deployment Diagram
Things to remember when drawing a deployment diagram:
Try to capture clear, accurate,
detailed dependencies between
the software elements and the
runtime environment
Target Audience
Technical people (Developers,
Testers, Architects,
Operational & Support Staff)
Deployment View (cont.) – a sample deployment diagram
DMZ/Load Balancer
EMS EMS
HTTPS HTTPS
Firewall
HTTPS
HTTPS
BigIP
SpringBoot/Jetty/Java8 SpringBoot/Jetty/Java8
event-service.jar event-service.jar
Technical
Details
Context
Diagram
Container
Diagram
Component
Diagram
Deployment
Diagram
Think about the target audience
Reference
https://leanpub.com/visualising-software-architecture/read
Thank you.

More Related Content

What's hot

Cloud interoperability
Cloud interoperabilityCloud interoperability
Cloud interoperability
gaurav jain
 
Introduction to Microservices
Introduction  to MicroservicesIntroduction  to Microservices
Introduction to Microservices
Duduman Bogdan Vlad
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
Roger van de Kimmenade
 
Microservices Decomposition Patterns
Microservices Decomposition PatternsMicroservices Decomposition Patterns
Microservices Decomposition Patterns
Firmansyah, SCJP, OCEWCD, OCEWSD, TOGAF, OCMJEA, CEH
 
Cloud interoperability and portability
Cloud interoperability and portabilityCloud interoperability and portability
Cloud interoperability and portability
Omar Sulca Correa
 
Cloud Interoperability
Cloud InteroperabilityCloud Interoperability
Cloud Interoperability
Amir Mohtasebi
 
Cloud computing explained
Cloud computing explained Cloud computing explained
Cloud computing explained
Juan Pablo
 
Develop in ludicrous mode with azure serverless
Develop in ludicrous mode with azure serverlessDevelop in ludicrous mode with azure serverless
Develop in ludicrous mode with azure serverless
Lalit Kale
 
Modern databases and its challenges (SQL ,NoSQL, NewSQL)
Modern databases and its challenges (SQL ,NoSQL, NewSQL)Modern databases and its challenges (SQL ,NoSQL, NewSQL)
Modern databases and its challenges (SQL ,NoSQL, NewSQL)
Mohamed Galal
 
مقدمة عن NoSQL بالعربي
مقدمة عن NoSQL بالعربيمقدمة عن NoSQL بالعربي
مقدمة عن NoSQL بالعربي
Mohamed Galal
 
Third Party Cloud Management
Third Party Cloud ManagementThird Party Cloud Management
Third Party Cloud Management
Orchestrate Mortgage and Title Solutions, LLC
 
market oriented cloud
market oriented cloudmarket oriented cloud
market oriented cloud
ACMBangalore
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
Anil Allewar
 
Electronic commerce meets the semantic web
Electronic commerce meets the semantic webElectronic commerce meets the semantic web
Electronic commerce meets the semantic web
MaheshBabu435
 
Cloud Computing and Service oriented Architecture
Cloud Computing and Service oriented Architecture Cloud Computing and Service oriented Architecture
Cloud Computing and Service oriented Architecture
Ravindra Dastikop
 
Cloud Lock-in vs. Cloud Interoperability - Indicthreads cloud computing conf...
Cloud Lock-in vs. Cloud Interoperability  - Indicthreads cloud computing conf...Cloud Lock-in vs. Cloud Interoperability  - Indicthreads cloud computing conf...
Cloud Lock-in vs. Cloud Interoperability - Indicthreads cloud computing conf...
IndicThreads
 
Microservices: A Gentle Introduction
Microservices: A Gentle IntroductionMicroservices: A Gentle Introduction
Microservices: A Gentle Introduction
Donald Belcham
 
Microservice Architecture 101
Microservice Architecture 101Microservice Architecture 101
Microservice Architecture 101
Kochih Wu
 
SOA
SOASOA
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
tyrantbrian
 

What's hot (20)

Cloud interoperability
Cloud interoperabilityCloud interoperability
Cloud interoperability
 
Introduction to Microservices
Introduction  to MicroservicesIntroduction  to Microservices
Introduction to Microservices
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
Microservices Decomposition Patterns
Microservices Decomposition PatternsMicroservices Decomposition Patterns
Microservices Decomposition Patterns
 
Cloud interoperability and portability
Cloud interoperability and portabilityCloud interoperability and portability
Cloud interoperability and portability
 
Cloud Interoperability
Cloud InteroperabilityCloud Interoperability
Cloud Interoperability
 
Cloud computing explained
Cloud computing explained Cloud computing explained
Cloud computing explained
 
Develop in ludicrous mode with azure serverless
Develop in ludicrous mode with azure serverlessDevelop in ludicrous mode with azure serverless
Develop in ludicrous mode with azure serverless
 
Modern databases and its challenges (SQL ,NoSQL, NewSQL)
Modern databases and its challenges (SQL ,NoSQL, NewSQL)Modern databases and its challenges (SQL ,NoSQL, NewSQL)
Modern databases and its challenges (SQL ,NoSQL, NewSQL)
 
مقدمة عن NoSQL بالعربي
مقدمة عن NoSQL بالعربيمقدمة عن NoSQL بالعربي
مقدمة عن NoSQL بالعربي
 
Third Party Cloud Management
Third Party Cloud ManagementThird Party Cloud Management
Third Party Cloud Management
 
market oriented cloud
market oriented cloudmarket oriented cloud
market oriented cloud
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
 
Electronic commerce meets the semantic web
Electronic commerce meets the semantic webElectronic commerce meets the semantic web
Electronic commerce meets the semantic web
 
Cloud Computing and Service oriented Architecture
Cloud Computing and Service oriented Architecture Cloud Computing and Service oriented Architecture
Cloud Computing and Service oriented Architecture
 
Cloud Lock-in vs. Cloud Interoperability - Indicthreads cloud computing conf...
Cloud Lock-in vs. Cloud Interoperability  - Indicthreads cloud computing conf...Cloud Lock-in vs. Cloud Interoperability  - Indicthreads cloud computing conf...
Cloud Lock-in vs. Cloud Interoperability - Indicthreads cloud computing conf...
 
Microservices: A Gentle Introduction
Microservices: A Gentle IntroductionMicroservices: A Gentle Introduction
Microservices: A Gentle Introduction
 
Microservice Architecture 101
Microservice Architecture 101Microservice Architecture 101
Microservice Architecture 101
 
SOA
SOASOA
SOA
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 

Similar to Visualizing Software Architecture Effectively in Service Description

SA_UNIT_1.pptx
SA_UNIT_1.pptxSA_UNIT_1.pptx
SA_UNIT_1.pptx
ShwetaGajbhiye12
 
Software Design
Software Design Software Design
Software Design
ssuser9d62d6
 
Ch10
Ch10Ch10
Ch10
Ch10Ch10
Sdlc
SdlcSdlc
Sdlc
SdlcSdlc
Unit-3.doc
Unit-3.docUnit-3.doc
Unit-3.doc
chitranshidheeraj6
 
Android ppt with example of budget manager
Android ppt with example of budget managerAndroid ppt with example of budget manager
Android ppt with example of budget manager
Nalini Mehta
 
Software Patterns
Software PatternsSoftware Patterns
Software Patterns
Sudarsun Santhiappan
 
Architecting and Designing Enterprise Applications
Architecting and Designing Enterprise ApplicationsArchitecting and Designing Enterprise Applications
Architecting and Designing Enterprise Applications
Gem WeBlog
 
Design Model & User Interface Design in Software Engineering
Design Model & User Interface Design in Software EngineeringDesign Model & User Interface Design in Software Engineering
Design Model & User Interface Design in Software Engineering
Meghaj Mallick
 
Local Service Search Engine Management System LSSEMS
Local Service Search Engine Management System LSSEMSLocal Service Search Engine Management System LSSEMS
Local Service Search Engine Management System LSSEMS
YogeshIJTSRD
 
SOURCE CODE MANAGEMENT SYSTEM (GITHUB)
SOURCE CODE MANAGEMENT SYSTEM (GITHUB)SOURCE CODE MANAGEMENT SYSTEM (GITHUB)
SOURCE CODE MANAGEMENT SYSTEM (GITHUB)
Gracy Joseph
 
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Mozaic Works
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
Henry Muccini
 
Unit_4_Software_Design.pptx
Unit_4_Software_Design.pptxUnit_4_Software_Design.pptx
Unit_4_Software_Design.pptx
taxegap762
 
Designingapplswithnet
DesigningapplswithnetDesigningapplswithnet
Designingapplswithnet
DSK Chakravarthy
 
Ch08
Ch08Ch08
Ch08
Ch08Ch08
L12 Visualizing Architecture
L12 Visualizing ArchitectureL12 Visualizing Architecture
L12 Visualizing Architecture
Ólafur Andri Ragnarsson
 

Similar to Visualizing Software Architecture Effectively in Service Description (20)

SA_UNIT_1.pptx
SA_UNIT_1.pptxSA_UNIT_1.pptx
SA_UNIT_1.pptx
 
Software Design
Software Design Software Design
Software Design
 
Ch10
Ch10Ch10
Ch10
 
Ch10
Ch10Ch10
Ch10
 
Sdlc
SdlcSdlc
Sdlc
 
Sdlc
SdlcSdlc
Sdlc
 
Unit-3.doc
Unit-3.docUnit-3.doc
Unit-3.doc
 
Android ppt with example of budget manager
Android ppt with example of budget managerAndroid ppt with example of budget manager
Android ppt with example of budget manager
 
Software Patterns
Software PatternsSoftware Patterns
Software Patterns
 
Architecting and Designing Enterprise Applications
Architecting and Designing Enterprise ApplicationsArchitecting and Designing Enterprise Applications
Architecting and Designing Enterprise Applications
 
Design Model & User Interface Design in Software Engineering
Design Model & User Interface Design in Software EngineeringDesign Model & User Interface Design in Software Engineering
Design Model & User Interface Design in Software Engineering
 
Local Service Search Engine Management System LSSEMS
Local Service Search Engine Management System LSSEMSLocal Service Search Engine Management System LSSEMS
Local Service Search Engine Management System LSSEMS
 
SOURCE CODE MANAGEMENT SYSTEM (GITHUB)
SOURCE CODE MANAGEMENT SYSTEM (GITHUB)SOURCE CODE MANAGEMENT SYSTEM (GITHUB)
SOURCE CODE MANAGEMENT SYSTEM (GITHUB)
 
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
Simon Brown: Software Architecture as Code at I T.A.K.E. Unconference 2015
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
 
Unit_4_Software_Design.pptx
Unit_4_Software_Design.pptxUnit_4_Software_Design.pptx
Unit_4_Software_Design.pptx
 
Designingapplswithnet
DesigningapplswithnetDesigningapplswithnet
Designingapplswithnet
 
Ch08
Ch08Ch08
Ch08
 
Ch08
Ch08Ch08
Ch08
 
L12 Visualizing Architecture
L12 Visualizing ArchitectureL12 Visualizing Architecture
L12 Visualizing Architecture
 

More from Sanjoy Kumar Roy

Arch CoP - Domain Driven Design.pptx
Arch CoP - Domain Driven Design.pptxArch CoP - Domain Driven Design.pptx
Arch CoP - Domain Driven Design.pptx
Sanjoy Kumar Roy
 
Hypermedia API and how to document it effectively
Hypermedia API and how to document it effectivelyHypermedia API and how to document it effectively
Hypermedia API and how to document it effectively
Sanjoy Kumar Roy
 
An introduction to OAuth 2
An introduction to OAuth 2An introduction to OAuth 2
An introduction to OAuth 2
Sanjoy Kumar Roy
 
Transaction
TransactionTransaction
Transaction
Sanjoy Kumar Roy
 
Microservice architecture design principles
Microservice architecture design principlesMicroservice architecture design principles
Microservice architecture design principles
Sanjoy Kumar Roy
 
Lessons learned in developing an agile architecture to reward our customers.
Lessons learned in developing an agile architecture to reward our customers.Lessons learned in developing an agile architecture to reward our customers.
Lessons learned in developing an agile architecture to reward our customers.
Sanjoy Kumar Roy
 
An introduction to G1 collector for busy developers
An introduction to G1 collector for busy developersAn introduction to G1 collector for busy developers
An introduction to G1 collector for busy developers
Sanjoy Kumar Roy
 
Major Java 8 features
Major Java 8 featuresMajor Java 8 features
Major Java 8 features
Sanjoy Kumar Roy
 

More from Sanjoy Kumar Roy (8)

Arch CoP - Domain Driven Design.pptx
Arch CoP - Domain Driven Design.pptxArch CoP - Domain Driven Design.pptx
Arch CoP - Domain Driven Design.pptx
 
Hypermedia API and how to document it effectively
Hypermedia API and how to document it effectivelyHypermedia API and how to document it effectively
Hypermedia API and how to document it effectively
 
An introduction to OAuth 2
An introduction to OAuth 2An introduction to OAuth 2
An introduction to OAuth 2
 
Transaction
TransactionTransaction
Transaction
 
Microservice architecture design principles
Microservice architecture design principlesMicroservice architecture design principles
Microservice architecture design principles
 
Lessons learned in developing an agile architecture to reward our customers.
Lessons learned in developing an agile architecture to reward our customers.Lessons learned in developing an agile architecture to reward our customers.
Lessons learned in developing an agile architecture to reward our customers.
 
An introduction to G1 collector for busy developers
An introduction to G1 collector for busy developersAn introduction to G1 collector for busy developers
An introduction to G1 collector for busy developers
 
Major Java 8 features
Major Java 8 featuresMajor Java 8 features
Major Java 8 features
 

Recently uploaded

WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
Łukasz Chruściel
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
Drona Infotech
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
TaghreedAltamimi
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
Remote DBA Services
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
mz5nrf0n
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
VALiNTRY360
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
SOCRadar
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
Marcin Chrost
 
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative AnalysisOdoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Envertis Software Solutions
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
dakas1
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
Peter Muessig
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
Quickdice ERP
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
sjcobrien
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
Rakesh Kumar R
 
SQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure MalaysiaSQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure Malaysia
GohKiangHock
 

Recently uploaded (20)

WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf2024 eCommerceDays Toulouse - Sylius 2.0.pdf
2024 eCommerceDays Toulouse - Sylius 2.0.pdf
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
 
Oracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptxOracle 23c New Features For DBAs and Developers.pptx
Oracle 23c New Features For DBAs and Developers.pptx
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
 
Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !Enums On Steroids - let's look at sealed classes !
Enums On Steroids - let's look at sealed classes !
 
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative AnalysisOdoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
 
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
一比一原版(UMN毕业证)明尼苏达大学毕业证如何办理
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
What next after learning python programming basics
What next after learning python programming basicsWhat next after learning python programming basics
What next after learning python programming basics
 
SQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure MalaysiaSQL Accounting Software Brochure Malaysia
SQL Accounting Software Brochure Malaysia
 

Visualizing Software Architecture Effectively in Service Description

  • 2. What is service description? A service description is a software architecture document with a focus on software elements such as: • component responsibilities, dependencies, communication protocols, actors and functional characteristics A service description can be a combination of both visual diagrams and written text that provide just enough detail for understanding what the actual problem domain is and how it's mapped to a solution domain.
  • 3. Service Description (cont.) Think about the target audience.  Who is going to read this document?  What do they need to know?  what are the design elements most important to illustrate? Writing this document is not always one off activity. It needs to be maintained to remain relevant.
  • 4. Diagrams play very important role in service description. Diagrams help to understand the software architecture. Diagrams are the maps that help software developers navigate a complex codebase. Benefits of diagrams
  • 5. Shared Vocabulary Shared vocabulary makes sure everyone within the development team communicates about their system in the same, understood way. It is important for a development team to have a shared vocabulary before writing the service description.
  • 6. A software system is made up of one or more containers (web applications, mobile apps, standalone applications, databases, file systems, etc.), each of which contains one or more components, which in turn are implemented by one or more classes. Here is the shared vocabulary that I use
  • 7. •A software system is the highest level of abstraction and represents something that delivers value to its users, whether they are human or not. •A container represents something that hosts code or data. A container is something that needs to be running in order for the overall software system to work. Each container should be a separately deployable thing. •A component as simply being a grouping of related functionality encapsulated behind a well-defined interface.
  • 8. Static Structure Software System Container Container Container Component Component Class Class Class Component
  • 9. Diagrams I draw in service description:  Context Diagram  Container Diagram  Component Diagram  Deployment Diagram First three diagrams are based on Simon Brown’s C4 Model. I don’t draw class diagram as suggested by C4 model. But I draw sequence diagrams to show the logic flow.
  • 10. Context Diagram A context diagram defines  what the system does and does not do  where the boundaries are between it and the outside world  how the system interacts with other systems, organisations, and people across these boundaries.
  • 11. A Context diagram helps to answer: What is the service that we are building (or have built) ? Who is using it? How does it fit in with the existing environment ?
  • 12. Things to remember when drawing a context diagram: Focus should be on people (actors, roles, personas, etc.) and software systems rather than technologies, protocols, and other low- level details. Add a short description of the person, software systems, their roles and responsibilities Annotate every interaction between people and software systems with some information (purpose of the interaction) Target Audience: Technical and non-technical people
  • 13. A Sample Context Diagram Customer Event Manager [ Person ] [ Person ] ABC Customer An event manager manages events Event Management System (EMS) [ Software System ] EMS manages event definition and its lifecycle Views events and buy tickets Manages events
  • 14. Container Diagram The container diagram shows the high-level shape of the software architecture and how responsibilities are distributed across it. It also shows the major technology choices and how the containers communicate with one another.
  • 15. What is the overall shape of the software system? What are the high- level technology decisions? How are the responsibilities distributed across the system? How do containers communicate with one another? Where do I need to write code in order to implement features? A container diagram helps you answer these questions
  • 16. Things to remember when drawing a container diagram: For each container in the diagram, show:  the name of the container  implementation technology  a short description Annotate the interactions between the containers with:  Purpose of the interaction  Communication mechanism (REST, JMS, etc.)  Communication style (sync, async, batch, etc.)  Protocols (HTTP, HTTPS, FTP, etc.) Target Audience Technical people (Developers, Testers, Architects, Operational & Support Staff)
  • 17. A Sample Container Diagram Customer Event Manager [ Person ] [ Person ] ABC Customer An event manager manages events Event Management System (EMS) Boundary Views events and buy tickets Manages events Uses [ REST ] [ HTTPS ] Uses [ REST ] [ HTTPS ] RDBMS [Container: Oracle] Stores event definition WEB APPLICATION [Container: Jetty] Allows users to manage event definition and its lifecycle Reads from and writes data to [ JDBC, port: 3306 ]
  • 18. Component Diagram • A component diagram shows the logical components that reside inside each of the containers. • This is useful because:  It shows the high-level decomposition of the service into components with distinct responsibilities  It shows the relationships and dependencies between components  It provides a framework for high-level software development estimates and how the delivery can be broken down
  • 19. A component diagram helps in answering the following questions: What components is the service made of? Is it clear how the service works at a high level? Do all components have a home (i.e. reside in a container)?
  • 20. Things to remember when drawing a component diagram: For each component in the diagram, show:  the name of the component  implementation technology  a short description Annotate the interactions between the components with:  Purpose of the interaction (e.g. “uses”, “persists data using”, “delegates to”, etc.)  Communication style (e.g. synchronous, asynchronous, etc.) Target Audience Technical people (Developers, Testers, Architects, Operational & Support Staff)
  • 21. A Sample Component Diagram Relational Database [Container: Oracle] Stores event definitions Event Component [Component: Spring Bean + Spring Data + JPA2 + Spring HATEOAS + Spring Security + Spring MVC + Hibernate + JDBC] Manages event’s definition and it’s lifecycle Ticket Component [Component: Spring Bean + Spring Data + Hibernate + JDBC] Manages ticket details Logging Component [Component: SLF4J + Logback] Provides logging facilities to all other components Reads from and writes data to [ SQL/JDBC, port 3306 ] Associate events with the tickets using Used by all components Customer Component [Component: Spring Bean + Spring Data + Hibernate + JDBC] Manages customer details Associate events with the customers using
  • 22. Deployment Diagram • The deployment diagram describes the environment into which the system will be deployed and the dependencies that the system has on elements of it • This diagram shows the physical environment in which the system is intended to run, including the hardware or hosting environment
  • 23. Deployment Diagram Things to remember when drawing a deployment diagram: Try to capture clear, accurate, detailed dependencies between the software elements and the runtime environment Target Audience Technical people (Developers, Testers, Architects, Operational & Support Staff)
  • 24. Deployment View (cont.) – a sample deployment diagram DMZ/Load Balancer EMS EMS HTTPS HTTPS Firewall HTTPS HTTPS BigIP SpringBoot/Jetty/Java8 SpringBoot/Jetty/Java8 event-service.jar event-service.jar
  • 26.
  • 27. Think about the target audience