SlideShare a Scribd company logo
1 of 55
Download to read offline
Models, Sketches and Everything In-Between
Simon Brown 	 Independent

Eoin Woods	 	 Endava
Welcome
• It’s hello from me
• Simon Brown, Independent
• And hello from him
• Eoin Woods, Endava
Our Agenda
• Simon Says …
• Eoin Says …
• Questions and Queries:
	 Q1. Modelling - Why Bother?
	 Q2. Models and Agility
	 Q3. How to Do It?
	 Q4. UML - Worth the Hassle?
	 Q5. Modelling in the Large vs the Small
• Summary and Conclusions
Background
• We’ve been talking about software modelling for ages
• We both think its a good idea (in moderation)
• Simon likes boxes and lines, Eoin likes UML (sort of)
• Simon has C4, Eoin has V&P (with Nick Rozanski)
• We’ve both inflicted a book on the world …
• We’d like to work out what the real answer is today
• We’ve got questions, but yours are probably better
The Point of Modelling
• Simon:
• How do you understand what you’re building?
• How do you explain it to the rest of the team?
• The trick is not getting stuck in analysis paralysis.
• Eoin:
• Main problem with not modelling is lack of intellectual control
• Main problem with modelling is believing that modelling is an
end in itself
Some Opinions
Simon Says …
How do we

communicate

software architecture?
9 out of 10 people

don’t use UML

(in my experience)
It’s usually difficult to
show the entire design on
a singlediagram
Different viewsof
the design can be used to
manage complexity and
highlight different aspects
of the solution
Do the names

of those views make
sense?
Development vs Physical
Process vs Functional
Conceptual vs Logical
Development vs Implementation
Physical vs Implementation
Physical vs Deployment
Logical and
development

views are often

separated
In my experience,

software teams
aren’t able to

effectively
communicate

the software
architecture

of their systems
Abstraction

is about reducing detail

rather than creating a different representation
Abstractions help us
reason about

a big and/or complex

software system
A common set of
abstractions

is more important than

a common notation
Sketches are maps

that help a team navigate a complex codebase
Static

Model

(at different levels

of abstraction)
Runtime/
Behavioural
Deployment
Infrastructure
Operation

& Support
Data
Does your code reflect the

abstractions

that you think about?
My focus is primarily on the

static structure

of software, which is ultimately about
code
Software developers are
the most important
stakeholders
of software architecture
Eoin Says …
The point is that …
• Some models worth creating are worth
preserving
• Models capture things that code can’t
• Sketches the place to start … but limited
• Models communicate, so ground rules are
useful - UML is a good base to work from
What is modelling?
• A model is any simplified representation of reality
• a spreadsheet of data
• a Java domain model
• a UML model
• Modelling represents concepts to allow some
aspect of them to be understood
Why create models?
Communicate
Understand
Record
Models vs diagrams
• A diagram is a purely visual representation
• A model contains definitions (and possibly a diagram)
• In UML terms diagrams provide views of a model
Types of Model
Low Detail
High Detail
High
Precision
Low
Precision
Uses for models
• Consistency
• change once, its changed everywhere
• Reporting
• ask your model a question
• “what is connected to the Flange Modulator Service?”
• Checking and Validation
• do I have a deployment node for every piece of the system?
• how complicated is the system going to be?
• Sharing information
• generate many views of a single model
• Powerpoint, wiki, tables, ...
An Analogy
• Would you use JSON to represent your shopping list?
• I personally use a PostIt™ note
• Would you hold system configuration in free text?
• I personally would rather XML or JSON
• Long lived models are valuable … store them as data
• UML is a practical option for machine readable models
Some Questions and Answers
Q1. Modelling - Why Bother?
• Simon:
• A model makes it easy to step back and see the big picture.
• A model aids communication, inside and outside of the team.
• Modelling provides a ubiquitous language with which to
describe software.
• Eoin:
• Modelling helps you understand what you have and need
• You can’t understand all of the detail anyway
• Code is in fact a model, we just don’t think of it as such
Q2. Modelling and Agility
• Simon:
• Good communication helps you move fast.
• A model provides long-lived documentation.
• A model provides the basis for structure, vision and risks.
• Eoin:
• No fundamental conflict - “model with a purpose” (Daniels)
• Working software over comprehensive documentation
• Agility should be for the long haul, not this sprint
• Can you know all the feed dependencies from your system?
Q3. How to Do It?
• Simon:
• Start with the big picture, and work into the detail.
• Stop when you get to a “sufficient” level of detail.
• Include technology choices!
• Eoin:
• Start small, start with a definite purpose
• Start with a whiteboard or a napkin or an A4 sheet
• Skip Visio and Omnigraffle … get a tool, get a model
Q4. UML - Is It Worth the Hassle?
• Simon:
• No.
• Eoin:
• Maybe … depends what you need
• Would you write a shopping list in JSON? Would you store
configuration settings in a free text file?
• If you have long lived models and want to use the data then
yes, highly tailored UML is worth the effort
Q5. Modelling in the Large vs the Small
• Simon:
• Sketches will quickly become out of date.
• Reverse-engineering tends to lead to cluttered diagrams.
• Many small diagrams are better than one uber-diagram.
• Eoin:
• A large system means you need help from a computer to
understand it
• However large your model, the code is still “the truth”
• Modelling languages scale like programming languages
How We Do It
Simon
A software system is made up of one or more containers,
each of which contains one or more components,
which in turn are implemented by one or more classes.
Class Class Class
Component Component Component
Container
(e.g. web application, application server, standalone application,
browser, database, file system, etc)
Cont
(e.g. web application, applicatio
browser, databas
ainer
server, standalone application,
file system, etc)
Software System
The C4 model
Classes (or Code)
Component implementation details
System Context
The system plus users and system dependencies
Containers
The overall shape of the architecture and technology choices
Components
Components and their interactions within a container
Component
diagram
(level 3)
Container
diagram
(level 2)
Context
diagram
(level 1)
Class
diagram
(level 4)
Component
diagram
(level 3)
Container
diagram
(level 2)
Context
diagram
(level 1)
Class
diagram
(level 4)
Component
diagram
(level 3)
Container
diagram
(level 2)
Context
diagram
(level 1)
Class
diagram
(level 4)
Component
diagram
(level 3)
Container
diagram
(level 2)
Context
diagram
(level 1)
Class
diagram
(level 4)
Eoin
Common Types of Models
• System Environment - context view
• Run Time Structure - functional view
• Software meets Infrastructure - deployment view
• Stored and In-Transit Data - information view
The Viewpoints and Perspectives model
Context View

(where the system lives)
Functional View

(runtime structure)
Information View

(data moving & at rest )
Development View

(code structures)
Concurrency View

(processes and threads)
Deployment View

(system meets infra)
Operational View

(keeping it running)
Context View
Component diagram witha single “component” -your system
External systemsrepresented as<<external>> components
Interactions with externalsystems using namedassociations
User groups representedby actors
Functional View
Packages (orcomponents) for runtimecontainers
Stereotyped componentsfor your software elements
Usage dependencies toshow possiblecommunication paths(again stereotype)
Classes for
connectors
Deployment View
Show the hosts you needto run your components
Execution environmentscan be used to show theruntime containers youuse for your components
Packages can showlocations or othergroupings of hosts
Artifacts are used to showwhere your systembinaries reside for
execution
Summary and Conclusions
What We Have Talked About
• Modelling is terrifically useful
• communication
• clarity
• analysis
• Many ways of doing it
• napkins to UML tools
• The key point is to get value from what you do
• don’t get stuck in “analysis paralysis”
Eoin Woods

www.eoinwoods.info

@eoinwoodz
Questions?
Simon Brown

www.codingthearchitecture.com

@simonbrown

More Related Content

What's hot

Reducing inertia in organizations is the key to a successful DevOps transition
Reducing inertia in organizations is the key to a successful DevOps transitionReducing inertia in organizations is the key to a successful DevOps transition
Reducing inertia in organizations is the key to a successful DevOps transitionJoep Piscaer
 
The Path to Digital Engineering
The Path to Digital EngineeringThe Path to Digital Engineering
The Path to Digital EngineeringElizabeth Steiner
 
Being Elastic -- Evolving Programming for the Cloud
Being Elastic -- Evolving Programming for the CloudBeing Elastic -- Evolving Programming for the Cloud
Being Elastic -- Evolving Programming for the CloudRandy Shoup
 
Common WebApp Vulnerabilities and What to Do About Them
Common WebApp Vulnerabilities and What to Do About ThemCommon WebApp Vulnerabilities and What to Do About Them
Common WebApp Vulnerabilities and What to Do About ThemEoin Woods
 
Digitization solutions - A new breed of software
Digitization solutions - A new breed of softwareDigitization solutions - A new breed of software
Digitization solutions - A new breed of softwareUwe Friedrichsen
 
Cultivating Your Design Heuristics
Cultivating Your Design HeuristicsCultivating Your Design Heuristics
Cultivating Your Design HeuristicsRebecca Wirfs-Brock
 
Nimble Framework - Software architecture and design in agile era - PSQT Template
Nimble Framework - Software architecture and design in agile era - PSQT TemplateNimble Framework - Software architecture and design in agile era - PSQT Template
Nimble Framework - Software architecture and design in agile era - PSQT Templatetjain
 
Microservices for Mortals by Bert Ertman at Codemotion Dubai
 Microservices for Mortals by Bert Ertman at Codemotion Dubai Microservices for Mortals by Bert Ertman at Codemotion Dubai
Microservices for Mortals by Bert Ertman at Codemotion DubaiCodemotion Dubai
 
Kent State Ashtabula AITP - Exploring IT and Intro to PowerShell
Kent State Ashtabula AITP - Exploring IT and Intro to PowerShellKent State Ashtabula AITP - Exploring IT and Intro to PowerShell
Kent State Ashtabula AITP - Exploring IT and Intro to PowerShellSarah Dutkiewicz
 
Embracing OSS in the enterprise
Embracing OSS in the enterpriseEmbracing OSS in the enterprise
Embracing OSS in the enterprisecyberzeddk
 
Service Architectures At Scale - QCon London 2015
Service Architectures At Scale - QCon London 2015Service Architectures At Scale - QCon London 2015
Service Architectures At Scale - QCon London 2015Randy Shoup
 
Evaluating Blockchain Companies
Evaluating Blockchain CompaniesEvaluating Blockchain Companies
Evaluating Blockchain CompaniesMike Slinn
 
The five expertise of a software architect
The five expertise of a software architectThe five expertise of a software architect
The five expertise of a software architectLior Bar-On
 
Minimum Viable Architecture -- Good Enough is Good Enough in a Startup
Minimum Viable Architecture -- Good Enough is Good Enough in a StartupMinimum Viable Architecture -- Good Enough is Good Enough in a Startup
Minimum Viable Architecture -- Good Enough is Good Enough in a StartupRandy Shoup
 
Tech leaders Presntation
Tech leaders Presntation Tech leaders Presntation
Tech leaders Presntation RootGate
 

What's hot (18)

Reducing inertia in organizations is the key to a successful DevOps transition
Reducing inertia in organizations is the key to a successful DevOps transitionReducing inertia in organizations is the key to a successful DevOps transition
Reducing inertia in organizations is the key to a successful DevOps transition
 
DevOps
DevOpsDevOps
DevOps
 
The Path to Digital Engineering
The Path to Digital EngineeringThe Path to Digital Engineering
The Path to Digital Engineering
 
Being Elastic -- Evolving Programming for the Cloud
Being Elastic -- Evolving Programming for the CloudBeing Elastic -- Evolving Programming for the Cloud
Being Elastic -- Evolving Programming for the Cloud
 
Common WebApp Vulnerabilities and What to Do About Them
Common WebApp Vulnerabilities and What to Do About ThemCommon WebApp Vulnerabilities and What to Do About Them
Common WebApp Vulnerabilities and What to Do About Them
 
Digitization solutions - A new breed of software
Digitization solutions - A new breed of softwareDigitization solutions - A new breed of software
Digitization solutions - A new breed of software
 
Software requirement specification handouts
Software requirement specification handoutsSoftware requirement specification handouts
Software requirement specification handouts
 
Cultivating Your Design Heuristics
Cultivating Your Design HeuristicsCultivating Your Design Heuristics
Cultivating Your Design Heuristics
 
Nimble Framework - Software architecture and design in agile era - PSQT Template
Nimble Framework - Software architecture and design in agile era - PSQT TemplateNimble Framework - Software architecture and design in agile era - PSQT Template
Nimble Framework - Software architecture and design in agile era - PSQT Template
 
Se handbookv3
Se handbookv3Se handbookv3
Se handbookv3
 
Microservices for Mortals by Bert Ertman at Codemotion Dubai
 Microservices for Mortals by Bert Ertman at Codemotion Dubai Microservices for Mortals by Bert Ertman at Codemotion Dubai
Microservices for Mortals by Bert Ertman at Codemotion Dubai
 
Kent State Ashtabula AITP - Exploring IT and Intro to PowerShell
Kent State Ashtabula AITP - Exploring IT and Intro to PowerShellKent State Ashtabula AITP - Exploring IT and Intro to PowerShell
Kent State Ashtabula AITP - Exploring IT and Intro to PowerShell
 
Embracing OSS in the enterprise
Embracing OSS in the enterpriseEmbracing OSS in the enterprise
Embracing OSS in the enterprise
 
Service Architectures At Scale - QCon London 2015
Service Architectures At Scale - QCon London 2015Service Architectures At Scale - QCon London 2015
Service Architectures At Scale - QCon London 2015
 
Evaluating Blockchain Companies
Evaluating Blockchain CompaniesEvaluating Blockchain Companies
Evaluating Blockchain Companies
 
The five expertise of a software architect
The five expertise of a software architectThe five expertise of a software architect
The five expertise of a software architect
 
Minimum Viable Architecture -- Good Enough is Good Enough in a Startup
Minimum Viable Architecture -- Good Enough is Good Enough in a StartupMinimum Viable Architecture -- Good Enough is Good Enough in a Startup
Minimum Viable Architecture -- Good Enough is Good Enough in a Startup
 
Tech leaders Presntation
Tech leaders Presntation Tech leaders Presntation
Tech leaders Presntation
 

Similar to Models, Sketches and Everything In Between

Creating Systems from Concept Models
Creating Systems from Concept ModelsCreating Systems from Concept Models
Creating Systems from Concept ModelsJim Logan
 
Simulating systems: Delivering digital difference
Simulating systems: Delivering digital differenceSimulating systems: Delivering digital difference
Simulating systems: Delivering digital differenceBrightwave Group
 
"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau
"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau
"Startups, comment gérer une équipe de développeurs" par Laurent CerveauTheFamily
 
CPP02 - The Structure of a Program
CPP02 - The Structure of a ProgramCPP02 - The Structure of a Program
CPP02 - The Structure of a ProgramMichael Heron
 
Human interface desin presentation (edited).pptx
Human interface desin presentation (edited).pptxHuman interface desin presentation (edited).pptx
Human interface desin presentation (edited).pptxNishimwePrince
 
Computer Applications for Managers Lumen Learning
Computer Applications for Managers Lumen Learning Computer Applications for Managers Lumen Learning
Computer Applications for Managers Lumen Learning LynellBull52
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software DevelopmentAhmet Bulut
 
ELMSLN @ OpenEd 14
ELMSLN @ OpenEd 14ELMSLN @ OpenEd 14
ELMSLN @ OpenEd 14btopro
 
Cs690 object oriented_software_engineering_team01_ report
Cs690 object oriented_software_engineering_team01_ reportCs690 object oriented_software_engineering_team01_ report
Cs690 object oriented_software_engineering_team01_ reportKhushboo Wadhwani
 
Write code and find a job
Write code and find a jobWrite code and find a job
Write code and find a jobYung-Yu Chen
 
Design Patterns - General Introduction
Design Patterns - General IntroductionDesign Patterns - General Introduction
Design Patterns - General IntroductionAsma CHERIF
 
What is the Future of Systems Engineering?
What is the Future of Systems Engineering?What is the Future of Systems Engineering?
What is the Future of Systems Engineering?Elizabeth Steiner
 
Using MLOps to Bring ML to Production/The Promise of MLOps
Using MLOps to Bring ML to Production/The Promise of MLOpsUsing MLOps to Bring ML to Production/The Promise of MLOps
Using MLOps to Bring ML to Production/The Promise of MLOpsWeaveworks
 

Similar to Models, Sketches and Everything In Between (20)

Creating Systems from Concept Models
Creating Systems from Concept ModelsCreating Systems from Concept Models
Creating Systems from Concept Models
 
Simulating systems: Delivering digital difference
Simulating systems: Delivering digital differenceSimulating systems: Delivering digital difference
Simulating systems: Delivering digital difference
 
The Role of the Architect
The Role of the ArchitectThe Role of the Architect
The Role of the Architect
 
"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau
"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau
"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau
 
CPP02 - The Structure of a Program
CPP02 - The Structure of a ProgramCPP02 - The Structure of a Program
CPP02 - The Structure of a Program
 
Binary crosswords
Binary crosswordsBinary crosswords
Binary crosswords
 
Human interface desin presentation (edited).pptx
Human interface desin presentation (edited).pptxHuman interface desin presentation (edited).pptx
Human interface desin presentation (edited).pptx
 
Software Design
Software DesignSoftware Design
Software Design
 
01_IT4557.pptx
01_IT4557.pptx01_IT4557.pptx
01_IT4557.pptx
 
Computer Applications for Managers Lumen Learning
Computer Applications for Managers Lumen Learning Computer Applications for Managers Lumen Learning
Computer Applications for Managers Lumen Learning
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
CMS Crash Course!
CMS Crash Course!CMS Crash Course!
CMS Crash Course!
 
ELMSLN @ OpenEd 14
ELMSLN @ OpenEd 14ELMSLN @ OpenEd 14
ELMSLN @ OpenEd 14
 
Cs690 object oriented_software_engineering_team01_ report
Cs690 object oriented_software_engineering_team01_ reportCs690 object oriented_software_engineering_team01_ report
Cs690 object oriented_software_engineering_team01_ report
 
L16 Documenting Software
L16 Documenting SoftwareL16 Documenting Software
L16 Documenting Software
 
Write code and find a job
Write code and find a jobWrite code and find a job
Write code and find a job
 
Design Patterns - General Introduction
Design Patterns - General IntroductionDesign Patterns - General Introduction
Design Patterns - General Introduction
 
What is the Future of Systems Engineering?
What is the Future of Systems Engineering?What is the Future of Systems Engineering?
What is the Future of Systems Engineering?
 
Uml
UmlUml
Uml
 
Using MLOps to Bring ML to Production/The Promise of MLOps
Using MLOps to Bring ML to Production/The Promise of MLOpsUsing MLOps to Bring ML to Production/The Promise of MLOps
Using MLOps to Bring ML to Production/The Promise of MLOps
 

More from Eoin Woods

API Vulnerabilties and What to Do About Them
API Vulnerabilties and What to Do About ThemAPI Vulnerabilties and What to Do About Them
API Vulnerabilties and What to Do About ThemEoin Woods
 
Secure by Design - Security Design Principles for the Working Architect
Secure by Design - Security Design Principles for the Working ArchitectSecure by Design - Security Design Principles for the Working Architect
Secure by Design - Security Design Principles for the Working ArchitectEoin Woods
 
A Breathless Tour of Blockchain
A Breathless Tour of BlockchainA Breathless Tour of Blockchain
A Breathless Tour of BlockchainEoin Woods
 
Serverless Computing for the Inquiring Mind
Serverless Computing for the Inquiring MindServerless Computing for the Inquiring Mind
Serverless Computing for the Inquiring MindEoin Woods
 
Using Software Architecture Principles in Practice
Using Software Architecture Principles in PracticeUsing Software Architecture Principles in Practice
Using Software Architecture Principles in PracticeEoin Woods
 
Secure by Design - Security Design Principles for the Rest of Us
Secure by Design - Security Design Principles for the Rest of UsSecure by Design - Security Design Principles for the Rest of Us
Secure by Design - Security Design Principles for the Rest of UsEoin Woods
 
Software Architecture as Systems Dissolve
Software Architecture as Systems DissolveSoftware Architecture as Systems Dissolve
Software Architecture as Systems DissolveEoin Woods
 
Getting Your System to Production and Keeping it There
Getting Your System to Production and Keeping it ThereGetting Your System to Production and Keeping it There
Getting Your System to Production and Keeping it ThereEoin Woods
 
Deferring the Last Responsible Moment
Deferring the Last Responsible MomentDeferring the Last Responsible Moment
Deferring the Last Responsible MomentEoin Woods
 

More from Eoin Woods (9)

API Vulnerabilties and What to Do About Them
API Vulnerabilties and What to Do About ThemAPI Vulnerabilties and What to Do About Them
API Vulnerabilties and What to Do About Them
 
Secure by Design - Security Design Principles for the Working Architect
Secure by Design - Security Design Principles for the Working ArchitectSecure by Design - Security Design Principles for the Working Architect
Secure by Design - Security Design Principles for the Working Architect
 
A Breathless Tour of Blockchain
A Breathless Tour of BlockchainA Breathless Tour of Blockchain
A Breathless Tour of Blockchain
 
Serverless Computing for the Inquiring Mind
Serverless Computing for the Inquiring MindServerless Computing for the Inquiring Mind
Serverless Computing for the Inquiring Mind
 
Using Software Architecture Principles in Practice
Using Software Architecture Principles in PracticeUsing Software Architecture Principles in Practice
Using Software Architecture Principles in Practice
 
Secure by Design - Security Design Principles for the Rest of Us
Secure by Design - Security Design Principles for the Rest of UsSecure by Design - Security Design Principles for the Rest of Us
Secure by Design - Security Design Principles for the Rest of Us
 
Software Architecture as Systems Dissolve
Software Architecture as Systems DissolveSoftware Architecture as Systems Dissolve
Software Architecture as Systems Dissolve
 
Getting Your System to Production and Keeping it There
Getting Your System to Production and Keeping it ThereGetting Your System to Production and Keeping it There
Getting Your System to Production and Keeping it There
 
Deferring the Last Responsible Moment
Deferring the Last Responsible MomentDeferring the Last Responsible Moment
Deferring the Last Responsible Moment
 

Recently uploaded

(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsMehedi Hasan Shohan
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about usDynamic Netsoft
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningVitsRangannavar
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfkalichargn70th171
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 

Recently uploaded (20)

(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
DNT_Corporate presentation know about us
DNT_Corporate presentation know about usDNT_Corporate presentation know about us
DNT_Corporate presentation know about us
 
cybersecurity notes for mca students for learning
cybersecurity notes for mca students for learningcybersecurity notes for mca students for learning
cybersecurity notes for mca students for learning
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdfThe Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
The Essentials of Digital Experience Monitoring_ A Comprehensive Guide.pdf
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 

Models, Sketches and Everything In Between

  • 1. Models, Sketches and Everything In-Between Simon Brown Independent Eoin Woods Endava
  • 2. Welcome • It’s hello from me • Simon Brown, Independent • And hello from him • Eoin Woods, Endava
  • 3. Our Agenda • Simon Says … • Eoin Says … • Questions and Queries: Q1. Modelling - Why Bother? Q2. Models and Agility Q3. How to Do It? Q4. UML - Worth the Hassle? Q5. Modelling in the Large vs the Small • Summary and Conclusions
  • 4. Background • We’ve been talking about software modelling for ages • We both think its a good idea (in moderation) • Simon likes boxes and lines, Eoin likes UML (sort of) • Simon has C4, Eoin has V&P (with Nick Rozanski) • We’ve both inflicted a book on the world … • We’d like to work out what the real answer is today • We’ve got questions, but yours are probably better
  • 5. The Point of Modelling • Simon: • How do you understand what you’re building? • How do you explain it to the rest of the team? • The trick is not getting stuck in analysis paralysis. • Eoin: • Main problem with not modelling is lack of intellectual control • Main problem with modelling is believing that modelling is an end in itself
  • 9. 9 out of 10 people don’t use UML (in my experience)
  • 10. It’s usually difficult to show the entire design on a singlediagram Different viewsof the design can be used to manage complexity and highlight different aspects of the solution
  • 11.
  • 12. Do the names of those views make sense? Development vs Physical Process vs Functional Conceptual vs Logical Development vs Implementation Physical vs Implementation Physical vs Deployment
  • 14.
  • 15.
  • 16. In my experience, software teams aren’t able to effectively communicate the software architecture of their systems
  • 17. Abstraction is about reducing detail rather than creating a different representation
  • 18. Abstractions help us reason about a big and/or complex software system
  • 19. A common set of abstractions is more important than a common notation
  • 20. Sketches are maps that help a team navigate a complex codebase
  • 21. Static Model (at different levels of abstraction) Runtime/ Behavioural Deployment Infrastructure Operation & Support Data
  • 22. Does your code reflect the abstractions that you think about?
  • 23. My focus is primarily on the static structure of software, which is ultimately about code
  • 24. Software developers are the most important stakeholders of software architecture
  • 26. The point is that … • Some models worth creating are worth preserving • Models capture things that code can’t • Sketches the place to start … but limited • Models communicate, so ground rules are useful - UML is a good base to work from
  • 27. What is modelling? • A model is any simplified representation of reality • a spreadsheet of data • a Java domain model • a UML model • Modelling represents concepts to allow some aspect of them to be understood
  • 29. Models vs diagrams • A diagram is a purely visual representation • A model contains definitions (and possibly a diagram) • In UML terms diagrams provide views of a model
  • 30. Types of Model Low Detail High Detail High Precision Low Precision
  • 31. Uses for models • Consistency • change once, its changed everywhere • Reporting • ask your model a question • “what is connected to the Flange Modulator Service?” • Checking and Validation • do I have a deployment node for every piece of the system? • how complicated is the system going to be? • Sharing information • generate many views of a single model • Powerpoint, wiki, tables, ...
  • 32. An Analogy • Would you use JSON to represent your shopping list? • I personally use a PostIt™ note • Would you hold system configuration in free text? • I personally would rather XML or JSON • Long lived models are valuable … store them as data • UML is a practical option for machine readable models
  • 34. Q1. Modelling - Why Bother? • Simon: • A model makes it easy to step back and see the big picture. • A model aids communication, inside and outside of the team. • Modelling provides a ubiquitous language with which to describe software. • Eoin: • Modelling helps you understand what you have and need • You can’t understand all of the detail anyway • Code is in fact a model, we just don’t think of it as such
  • 35. Q2. Modelling and Agility • Simon: • Good communication helps you move fast. • A model provides long-lived documentation. • A model provides the basis for structure, vision and risks. • Eoin: • No fundamental conflict - “model with a purpose” (Daniels) • Working software over comprehensive documentation • Agility should be for the long haul, not this sprint • Can you know all the feed dependencies from your system?
  • 36. Q3. How to Do It? • Simon: • Start with the big picture, and work into the detail. • Stop when you get to a “sufficient” level of detail. • Include technology choices! • Eoin: • Start small, start with a definite purpose • Start with a whiteboard or a napkin or an A4 sheet • Skip Visio and Omnigraffle … get a tool, get a model
  • 37. Q4. UML - Is It Worth the Hassle? • Simon: • No. • Eoin: • Maybe … depends what you need • Would you write a shopping list in JSON? Would you store configuration settings in a free text file? • If you have long lived models and want to use the data then yes, highly tailored UML is worth the effort
  • 38. Q5. Modelling in the Large vs the Small • Simon: • Sketches will quickly become out of date. • Reverse-engineering tends to lead to cluttered diagrams. • Many small diagrams are better than one uber-diagram. • Eoin: • A large system means you need help from a computer to understand it • However large your model, the code is still “the truth” • Modelling languages scale like programming languages
  • 39. How We Do It
  • 40. Simon
  • 41. A software system is made up of one or more containers, each of which contains one or more components, which in turn are implemented by one or more classes. Class Class Class Component Component Component Container (e.g. web application, application server, standalone application, browser, database, file system, etc) Cont (e.g. web application, applicatio browser, databas ainer server, standalone application, file system, etc) Software System
  • 42. The C4 model Classes (or Code) Component implementation details System Context The system plus users and system dependencies Containers The overall shape of the architecture and technology choices Components Components and their interactions within a container
  • 47. Eoin
  • 48. Common Types of Models • System Environment - context view • Run Time Structure - functional view • Software meets Infrastructure - deployment view • Stored and In-Transit Data - information view
  • 49. The Viewpoints and Perspectives model Context View
 (where the system lives) Functional View
 (runtime structure) Information View
 (data moving & at rest ) Development View
 (code structures) Concurrency View
 (processes and threads) Deployment View
 (system meets infra) Operational View
 (keeping it running)
  • 50. Context View Component diagram witha single “component” -your system External systemsrepresented as<<external>> components Interactions with externalsystems using namedassociations User groups representedby actors
  • 51. Functional View Packages (orcomponents) for runtimecontainers Stereotyped componentsfor your software elements Usage dependencies toshow possiblecommunication paths(again stereotype) Classes for connectors
  • 52. Deployment View Show the hosts you needto run your components Execution environmentscan be used to show theruntime containers youuse for your components Packages can showlocations or othergroupings of hosts Artifacts are used to showwhere your systembinaries reside for execution
  • 54. What We Have Talked About • Modelling is terrifically useful • communication • clarity • analysis • Many ways of doing it • napkins to UML tools • The key point is to get value from what you do • don’t get stuck in “analysis paralysis”