SlideShare a Scribd company logo
1 of 47
Download to read offline
HÖNNUN OG SMÍÐI HUGBÚNAÐAR 2015
L16 Documenting Software
Agenda
Why documentation
Software Guidebook
Reading
Brown textbook 48-63
Why documentation?
Common belief: Comments are bad and get outdated,
just strive for writing self-documenting code
Yes, we should aim for that, but the code does not tell
the whole story
Why documentation?
If you are new to an ongoing software project, where do
you start?
Still you need to know a lot of things:
• What is the overall architecture?
• Are there naming conventions?
• What design principles are in place?
• How is the layering?
• What frameworks?
• etc…
Why documentation?
The code does not portray the intent of the design
Perhaps it is easy to understand what the software does
on a high-level, but we still need to understand:
• How does the system fit in the existing landscape
• Why the technologies were chosen
• Overall structure
• Interconnections between subsystems
• Logging strategy
• Design patterns
• etc…
Why documentation?
Why documentation?
Documentation Guidebook
“Working software over comprehensive documentation”
- The Agile Manifesto
For many this means: no documentation
How can complex enterprise software need
no documentation, when a $20 toaster has
one
Practical experience says that there are
things that need explanation, a guidebook
Documentation Guidebook
Problem is that developers on a software team think
documentation is writing Microsoft Word documents and
UML software - all of which get outdates fast
And who will read such outdated material?
Documentation Guidebook
Navigating from Detail to Big Picture
Maps help you navigate
foreign countries
If you get dropped in a
place you need to “zoom
out” to see the whole
picture
Visualising software with
the C4 approach
Navigating from Detail to Big Picture
Sights help you understand the nature of the country
The codebase is to large to go though but if you know where the
interesting parts are, it will help
For example, you might look at one Input Controller and how it
connects to the model and the view - you don’t need to look at
the other hundred or so since you know get it
Navigating from Detail to Big Picture
History and culture help you understand the people and their
ways of doing things and why
It helps if you know the motivation and reasons why the
software is like it is
You get a lot of understanding if you know the motivations
and preferences of the people that are working on the
software
Navigating from Detail to Big Picture
Practical information such as currency, power outlets, laws,
customs etc help you
You need to how where the codebase is, what tools to install, the
URL to stuff and so on
It’s all the stuff that can help the development team to do their
job effectively
Keep it short, keep it simple
Since the code doesn’t tell the whole story, some
supplementary documentation is needed
This documentation can be thought of as a guidebook
Should contain enough information but not too much detail as
these are the things that change and the story the code tells
anyways
Consise, to the point text is need
Beware of the “views”
Some documentation emphasis showing diffrent view like the
“logical view” and “physical view” etc.
These are fine, but tend to very confusing and make people
hate documentation (as if that was hard)
Better approach is to write clear, no bullshit, like it is
documentation
Product vs. Project Documentation
Projects are temporary undertakings that are timeboxed,
products last many projects
Project documentation should specify what is needed to
make the project succeed and gets outdates when the project
is over
Product documentation should specify how the product
works at any time
Software Guidebook
These sections might be in such a guidebook:
Context
Functional Overiew
Quality Attributes
Constraints
Principles
Software Architecture
External Interfaces
Code
Data
Infrastructure Architecture
Deployment
Operation and Support
Decision Log
Context
A context section is one of the first sections and should set
the scene for the rest of the document
Intent Should answer the following questions:
•What is the software product all about?
•What is it that’s being built?
•How does it fit into the existing environment?
•Who is using it?
Structure Does not need to be long, 1-2 pages with
context diagram
Context
A context section is one of the first sections and should set
the scene for the rest of the document
Motivation Give the readers the overview so they know what
is to follow
Audience Technical and non-technical, inside or outside
the team
Functional Overview
Expand on the context and summarise the major function of
the software
Intent Summarise the key functions, should make clear:
• What the system actually does
• Features, functions, user stories etc are
• Who the users are
• How this shapes and defines the architecture
Structure This acts as a summary of functionality and
shows the most defining functions without
replacing the actual detailed users stories
Motivation Should not be long but should show what the
system actually does where the context shows
where it fits in
Audience Technical and non-technical, inside or outside
the team
Functional Overview
Expand on the context and summarise the major function of
the software
Quality Attributes
Specifies the non-functional attributes of the system
Intent Should specify the quality attributes
• Performance, uptime etc
• Realistic and measurable not some fancy words
• Things that are granted should be stated
• Any unrealistic attributes should be address
Structure Listing such as performance, scalability,
availability, security, extensibility, flexibility,
monitoring, disaster recovery etc…
“System should be fast” is unacceptable
Motivation Putting this in writing removes any ambiguity
Audience Technical people mostly
Quality Attributes
Specifies the non-functional attributes of the system
Required Yes
Contraints
Software system always have contraints. This section should
document those.
Intent Should explicitly summarise the constraints that the
team is working within, and all the decisions that
have been made for you
Structure Listing such time, budget and resource,
approved technology, deployment platform,
existing system, localisation, protocols allowed,
legal requirements etc.
Motivation Contraints massively influence architecture
Audience Everybody involved in the development process
as some constraints are not technical
Required Yes
Contraints
Software system always have contraints. This section should
document those.
Principles
Summary of the principles used to design and build the
software
Intent Principles that are important need to be specified
to be adopt and followed
Structure Listing such Layering, no logic in the view, no
logic in the database, use ORM, use
Dependancy Injection, follow SOLID, DRY etc.
Motivation Since principles help consistency and ensure
that common problems are solved in the same
way, it is important tok make them explicit so
everyone on the team understands what they are
Audience Development Team
Required Yes
Principles
Summary of the principles used to design and build the
software
Software Architecture
This is the “big picture” and allows you to show the structure
of the software
Intent Summary of the software architecture should
answer these questions:
• What is the big picture
• What is the structure, major containers,
components and interactions
• etc…
Structure Container and component diagrams with short
narrative of what the diagrams are showing
Motivation This is the map that will guide you
Audience Development Team
Required Yes
Software Architecture
This is the “big picture” and allows you to show the structure
of the software
External Interfaces
Interfaces with external systems is the riskiest part of the
software and needs to be summarised
Intent Summary of key interfaces, technical and non-
technical perspective
Structure List of external interfaces, with component
diagrams, and information on where to find
documentation, and who is responsible on both
ends
Motivation This need to be covered since it is easily
underestimated but contains a lot of risk
Audience Development Team
Required Only if there are risky interfaces
External Interfaces
Interfaces with external systems is the riskiest part of the
software and needs to be summarised
Code
This sections presents a lower level explanation on how
things work
Intent Describe in detail how important and complex
things in the software work, for example MVC,
application life-cycle management, state handing
etc.
Structure Short, concise sections, aided with diagrams,
that explain each topic
Motivation Ensure that everybody on the team understands
complex things about the software
Audience Development Team
Required No, but most software needs this
Code
This sections presents a lower level explanation on how
things work
Data
Record data is important in enterprise systems and the data
strategy needs to be clarified
Intent Explain the data model, how it is stored and where,
what are backup storage and redundancy
strategies etc.
Structure Short, concise sections, aided with diagrams,
that explain the data strategy
Motivation Data tends to outlive the software, so it is
necessary to explain the strategy
Audience Development Team
Required No, but most software with data needs this
Data
Record data is important in enterprise systems and the data
strategy needs to be clarified
Infrastructure Architecture
Infrastructure is a big part of software since software needs
to be stored and operated in a physical hardware
environment
Intent Outline the physical setup, hardware, use of
virtualisation, redundancy, failover, load balancers
etc.
Structure Network diagrams with explanations
Motivation Software must be run somewhere in a physical
setup and this explains how the setup is
Audience Technical people, network operators
Required Yes
Infrastructure Architecture
Infrastructure is a big part of software since software needs
to be stored and operated in a physical hardware
environment
Deployment
Deployment explains how software is installed on the
hardware
Intent Describe the mapping of software and the
hardware, how and where software is installed and
configured
Structure Tables showing mapping and deployment
diagrams with explanation
Motivation Gives understanding on how the software will
actually work when running
Today you want to automate this things as much
as possible with tools such as Puppet and Chef
Audience Technical people, network operators
Required Yes
Deployment
Deployment explains how software is installed on the
hardware
Operation and Support
Describes how people will monitor, run and manage the
software
Intent How monitoring and managing the system is done,
where the log files are, configurations, manual
housekeeping stuff etc
Structure Narrative explaining each topic
Motivation How to operate the software must be
documented, all file locations and so on
Audience Technical people, network operators
Required Yes
Operation and Support
Describes how people will monitor, run and manage the
software
Decision Log
Log of decision made during the development phase
Intent Document for reference any major decision and the
reason for them, why some technology was chosen
and so on
Structure Simple list of decisions
Motivation Software development is complex and major
decision are made for reasons, but can be
forgotten
People tend to avoid responsibility so keeping
track of decision and their reasons can save a lot
of discussion later
Audience Technical people, operation
Required No, but really useful
Decision Log
Log of decision made during the development phase
Summary
Yes, we need documentation, the code does not say it all and
agile does not gives us excuses
Software Guidebook is a really useful tool
Agenda
Why documentation
Software Guidebook

More Related Content

What's hot

A summary of software architecture guide
A summary of software architecture guideA summary of software architecture guide
A summary of software architecture guide
Triet Ho
 
Intro to Software Engineering - Software Design
Intro to Software Engineering - Software DesignIntro to Software Engineering - Software Design
Intro to Software Engineering - Software Design
Radu_Negulescu
 

What's hot (20)

Modern software architect post the agile wave
Modern software architect post the agile waveModern software architect post the agile wave
Modern software architect post the agile wave
 
Introduction
IntroductionIntroduction
Introduction
 
Software Design Concepts
Software Design ConceptsSoftware Design Concepts
Software Design Concepts
 
Composable Software Architecture with Spring
Composable Software Architecture with SpringComposable Software Architecture with Spring
Composable Software Architecture with Spring
 
6. ch 5-understanding requirements
6. ch 5-understanding requirements6. ch 5-understanding requirements
6. ch 5-understanding requirements
 
An Introduction to Software Architecture - Summary
An Introduction to Software Architecture - SummaryAn Introduction to Software Architecture - Summary
An Introduction to Software Architecture - Summary
 
A summary of software architecture guide
A summary of software architecture guideA summary of software architecture guide
A summary of software architecture guide
 
Design engineering
Design engineeringDesign engineering
Design engineering
 
5. ch 4-principles that guide practice
5. ch 4-principles that guide practice5. ch 4-principles that guide practice
5. ch 4-principles that guide practice
 
10 solution architecture concepts
10 solution architecture concepts10 solution architecture concepts
10 solution architecture concepts
 
Ch07
Ch07Ch07
Ch07
 
Zachman Tutorial
Zachman TutorialZachman Tutorial
Zachman Tutorial
 
Slides chapter 9
Slides chapter 9Slides chapter 9
Slides chapter 9
 
Software Architecture and Design Introduction
Software Architecture and Design IntroductionSoftware Architecture and Design Introduction
Software Architecture and Design Introduction
 
The Modern Software Architect
The Modern Software ArchitectThe Modern Software Architect
The Modern Software Architect
 
Design process evaluating interactive_designs
Design process  evaluating interactive_designsDesign process  evaluating interactive_designs
Design process evaluating interactive_designs
 
Unit 3
Unit 3Unit 3
Unit 3
 
context-sdm-brochure
context-sdm-brochurecontext-sdm-brochure
context-sdm-brochure
 
Software design
Software designSoftware design
Software design
 
Intro to Software Engineering - Software Design
Intro to Software Engineering - Software DesignIntro to Software Engineering - Software Design
Intro to Software Engineering - Software Design
 

Viewers also liked (8)

MS.NET IEEE 2015
MS.NET IEEE 2015MS.NET IEEE 2015
MS.NET IEEE 2015
 
автореферат фIлiпов
автореферат фIлiповавтореферат фIлiпов
автореферат фIлiпов
 
Certificates
CertificatesCertificates
Certificates
 
InfiniFlux performance
InfiniFlux performanceInfiniFlux performance
InfiniFlux performance
 
საცხოვრებელი კომპლექსი
საცხოვრებელი კომპლექსისაცხოვრებელი კომპლექსი
საცხოვრებელი კომპლექსი
 
MLA Chhattisgarh
MLA ChhattisgarhMLA Chhattisgarh
MLA Chhattisgarh
 
Conceptualizing transformative governance for food systems
Conceptualizing transformative governance for food systems Conceptualizing transformative governance for food systems
Conceptualizing transformative governance for food systems
 
medioambiente consumo
medioambiente consumomedioambiente consumo
medioambiente consumo
 

Similar to L16 Documenting Software

Design Principlesfrom Don Norman’s Design of Everyday Thing.docx
Design Principlesfrom Don Norman’s Design of Everyday Thing.docxDesign Principlesfrom Don Norman’s Design of Everyday Thing.docx
Design Principlesfrom Don Norman’s Design of Everyday Thing.docx
theodorelove43763
 

Similar to L16 Documenting Software (20)

Vol 1 issue 2 june 2015
Vol 1 issue 2 june 2015Vol 1 issue 2 june 2015
Vol 1 issue 2 june 2015
 
Clarisoft Software Development Process (Lunch & Learn Presentation)
Clarisoft Software Development Process (Lunch & Learn Presentation)Clarisoft Software Development Process (Lunch & Learn Presentation)
Clarisoft Software Development Process (Lunch & Learn Presentation)
 
Jacques Van Niekerk Workshop on IWMC 2015
Jacques Van Niekerk Workshop on IWMC 2015Jacques Van Niekerk Workshop on IWMC 2015
Jacques Van Niekerk Workshop on IWMC 2015
 
Are You an Accidental or Intentional Architect?
Are You an Accidental or Intentional Architect?Are You an Accidental or Intentional Architect?
Are You an Accidental or Intentional Architect?
 
Sadchap3
Sadchap3Sadchap3
Sadchap3
 
Software design presentation
Software design presentationSoftware design presentation
Software design presentation
 
Canadian Experts Discuss Modern Data Stacks and Cloud Computing for 5 Years o...
Canadian Experts Discuss Modern Data Stacks and Cloud Computing for 5 Years o...Canadian Experts Discuss Modern Data Stacks and Cloud Computing for 5 Years o...
Canadian Experts Discuss Modern Data Stacks and Cloud Computing for 5 Years o...
 
The Role of the Architect
The Role of the ArchitectThe Role of the Architect
The Role of the Architect
 
Enterprise Architecture Verification Validation
Enterprise Architecture Verification Validation Enterprise Architecture Verification Validation
Enterprise Architecture Verification Validation
 
Software design.edited (1)
Software design.edited (1)Software design.edited (1)
Software design.edited (1)
 
Development Guideline
Development GuidelineDevelopment Guideline
Development Guideline
 
Web architecture pocket guide
Web architecture pocket guideWeb architecture pocket guide
Web architecture pocket guide
 
Writing srs
Writing srsWriting srs
Writing srs
 
Design Systems: Enterprise UX Evolution
Design Systems: Enterprise UX EvolutionDesign Systems: Enterprise UX Evolution
Design Systems: Enterprise UX Evolution
 
Technical competency dictionary for it
Technical competency dictionary for itTechnical competency dictionary for it
Technical competency dictionary for it
 
Criteria For EA Tool Selection
Criteria For EA Tool SelectionCriteria For EA Tool Selection
Criteria For EA Tool Selection
 
Introducing the Development Director
Introducing the Development Director Introducing the Development Director
Introducing the Development Director
 
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009Portal Deployment Best Practices | IBM Portal Excellence Conference 2009
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009
 
Design Principlesfrom Don Norman’s Design of Everyday Thing.docx
Design Principlesfrom Don Norman’s Design of Everyday Thing.docxDesign Principlesfrom Don Norman’s Design of Everyday Thing.docx
Design Principlesfrom Don Norman’s Design of Everyday Thing.docx
 
How To Plan a Software Project
How To Plan a Software ProjectHow To Plan a Software Project
How To Plan a Software Project
 

More from Ólafur Andri Ragnarsson

L14 From the Internet to Blockchain
L14 From the Internet to BlockchainL14 From the Internet to Blockchain
L14 From the Internet to Blockchain
Ólafur Andri Ragnarsson
 
L12 digital transformation
L12 digital transformationL12 digital transformation
L12 digital transformation
Ólafur Andri Ragnarsson
 
L09 Technological Revolutions
L09 Technological RevolutionsL09 Technological Revolutions
L09 Technological Revolutions
Ólafur Andri Ragnarsson
 

More from Ólafur Andri Ragnarsson (20)

Nýsköpun - Leiðin til framfara
Nýsköpun - Leiðin til framfaraNýsköpun - Leiðin til framfara
Nýsköpun - Leiðin til framfara
 
Nýjast tækni og framtíðin
Nýjast tækni og framtíðinNýjast tækni og framtíðin
Nýjast tækni og framtíðin
 
New Technology Summer 2020 Course Introduction
New Technology Summer 2020 Course IntroductionNew Technology Summer 2020 Course Introduction
New Technology Summer 2020 Course Introduction
 
L01 Introduction
L01 IntroductionL01 Introduction
L01 Introduction
 
L23 Robotics and Drones
L23 Robotics and Drones L23 Robotics and Drones
L23 Robotics and Drones
 
L22 Augmented and Virtual Reality
L22 Augmented and Virtual RealityL22 Augmented and Virtual Reality
L22 Augmented and Virtual Reality
 
L20 Personalised World
L20 Personalised WorldL20 Personalised World
L20 Personalised World
 
L19 Network Platforms
L19 Network PlatformsL19 Network Platforms
L19 Network Platforms
 
L18 Big Data and Analytics
L18 Big Data and AnalyticsL18 Big Data and Analytics
L18 Big Data and Analytics
 
L17 Algorithms and AI
L17 Algorithms and AIL17 Algorithms and AI
L17 Algorithms and AI
 
L16 Internet of Things
L16 Internet of ThingsL16 Internet of Things
L16 Internet of Things
 
L14 From the Internet to Blockchain
L14 From the Internet to BlockchainL14 From the Internet to Blockchain
L14 From the Internet to Blockchain
 
L14 The Mobile Revolution
L14 The Mobile RevolutionL14 The Mobile Revolution
L14 The Mobile Revolution
 
New Technology 2019 L13 Rise of the Machine
New Technology 2019 L13 Rise of the Machine New Technology 2019 L13 Rise of the Machine
New Technology 2019 L13 Rise of the Machine
 
L12 digital transformation
L12 digital transformationL12 digital transformation
L12 digital transformation
 
L10 The Innovator's Dilemma
L10 The Innovator's DilemmaL10 The Innovator's Dilemma
L10 The Innovator's Dilemma
 
L09 Disruptive Technology
L09 Disruptive TechnologyL09 Disruptive Technology
L09 Disruptive Technology
 
L09 Technological Revolutions
L09 Technological RevolutionsL09 Technological Revolutions
L09 Technological Revolutions
 
L07 Becoming Invisible
L07 Becoming InvisibleL07 Becoming Invisible
L07 Becoming Invisible
 
L06 Diffusion of Innovation
L06 Diffusion of InnovationL06 Diffusion of Innovation
L06 Diffusion of Innovation
 

Recently uploaded

%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 

Recently uploaded (20)

%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 

L16 Documenting Software

  • 1. HÖNNUN OG SMÍÐI HUGBÚNAÐAR 2015 L16 Documenting Software
  • 5. Common belief: Comments are bad and get outdated, just strive for writing self-documenting code Yes, we should aim for that, but the code does not tell the whole story Why documentation?
  • 6. If you are new to an ongoing software project, where do you start? Still you need to know a lot of things: • What is the overall architecture? • Are there naming conventions? • What design principles are in place? • How is the layering? • What frameworks? • etc… Why documentation?
  • 7. The code does not portray the intent of the design Perhaps it is easy to understand what the software does on a high-level, but we still need to understand: • How does the system fit in the existing landscape • Why the technologies were chosen • Overall structure • Interconnections between subsystems • Logging strategy • Design patterns • etc… Why documentation?
  • 10. “Working software over comprehensive documentation” - The Agile Manifesto For many this means: no documentation How can complex enterprise software need no documentation, when a $20 toaster has one Practical experience says that there are things that need explanation, a guidebook Documentation Guidebook
  • 11. Problem is that developers on a software team think documentation is writing Microsoft Word documents and UML software - all of which get outdates fast And who will read such outdated material? Documentation Guidebook
  • 12. Navigating from Detail to Big Picture Maps help you navigate foreign countries If you get dropped in a place you need to “zoom out” to see the whole picture Visualising software with the C4 approach
  • 13. Navigating from Detail to Big Picture Sights help you understand the nature of the country The codebase is to large to go though but if you know where the interesting parts are, it will help For example, you might look at one Input Controller and how it connects to the model and the view - you don’t need to look at the other hundred or so since you know get it
  • 14. Navigating from Detail to Big Picture History and culture help you understand the people and their ways of doing things and why It helps if you know the motivation and reasons why the software is like it is You get a lot of understanding if you know the motivations and preferences of the people that are working on the software
  • 15. Navigating from Detail to Big Picture Practical information such as currency, power outlets, laws, customs etc help you You need to how where the codebase is, what tools to install, the URL to stuff and so on It’s all the stuff that can help the development team to do their job effectively
  • 16. Keep it short, keep it simple Since the code doesn’t tell the whole story, some supplementary documentation is needed This documentation can be thought of as a guidebook Should contain enough information but not too much detail as these are the things that change and the story the code tells anyways Consise, to the point text is need
  • 17. Beware of the “views” Some documentation emphasis showing diffrent view like the “logical view” and “physical view” etc. These are fine, but tend to very confusing and make people hate documentation (as if that was hard) Better approach is to write clear, no bullshit, like it is documentation
  • 18. Product vs. Project Documentation Projects are temporary undertakings that are timeboxed, products last many projects Project documentation should specify what is needed to make the project succeed and gets outdates when the project is over Product documentation should specify how the product works at any time
  • 19. Software Guidebook These sections might be in such a guidebook: Context Functional Overiew Quality Attributes Constraints Principles Software Architecture External Interfaces Code Data Infrastructure Architecture Deployment Operation and Support Decision Log
  • 20. Context A context section is one of the first sections and should set the scene for the rest of the document Intent Should answer the following questions: •What is the software product all about? •What is it that’s being built? •How does it fit into the existing environment? •Who is using it? Structure Does not need to be long, 1-2 pages with context diagram
  • 21. Context A context section is one of the first sections and should set the scene for the rest of the document Motivation Give the readers the overview so they know what is to follow Audience Technical and non-technical, inside or outside the team
  • 22. Functional Overview Expand on the context and summarise the major function of the software Intent Summarise the key functions, should make clear: • What the system actually does • Features, functions, user stories etc are • Who the users are • How this shapes and defines the architecture Structure This acts as a summary of functionality and shows the most defining functions without replacing the actual detailed users stories
  • 23. Motivation Should not be long but should show what the system actually does where the context shows where it fits in Audience Technical and non-technical, inside or outside the team Functional Overview Expand on the context and summarise the major function of the software
  • 24. Quality Attributes Specifies the non-functional attributes of the system Intent Should specify the quality attributes • Performance, uptime etc • Realistic and measurable not some fancy words • Things that are granted should be stated • Any unrealistic attributes should be address Structure Listing such as performance, scalability, availability, security, extensibility, flexibility, monitoring, disaster recovery etc… “System should be fast” is unacceptable
  • 25. Motivation Putting this in writing removes any ambiguity Audience Technical people mostly Quality Attributes Specifies the non-functional attributes of the system Required Yes
  • 26. Contraints Software system always have contraints. This section should document those. Intent Should explicitly summarise the constraints that the team is working within, and all the decisions that have been made for you Structure Listing such time, budget and resource, approved technology, deployment platform, existing system, localisation, protocols allowed, legal requirements etc.
  • 27. Motivation Contraints massively influence architecture Audience Everybody involved in the development process as some constraints are not technical Required Yes Contraints Software system always have contraints. This section should document those.
  • 28. Principles Summary of the principles used to design and build the software Intent Principles that are important need to be specified to be adopt and followed Structure Listing such Layering, no logic in the view, no logic in the database, use ORM, use Dependancy Injection, follow SOLID, DRY etc.
  • 29. Motivation Since principles help consistency and ensure that common problems are solved in the same way, it is important tok make them explicit so everyone on the team understands what they are Audience Development Team Required Yes Principles Summary of the principles used to design and build the software
  • 30. Software Architecture This is the “big picture” and allows you to show the structure of the software Intent Summary of the software architecture should answer these questions: • What is the big picture • What is the structure, major containers, components and interactions • etc… Structure Container and component diagrams with short narrative of what the diagrams are showing
  • 31. Motivation This is the map that will guide you Audience Development Team Required Yes Software Architecture This is the “big picture” and allows you to show the structure of the software
  • 32. External Interfaces Interfaces with external systems is the riskiest part of the software and needs to be summarised Intent Summary of key interfaces, technical and non- technical perspective Structure List of external interfaces, with component diagrams, and information on where to find documentation, and who is responsible on both ends
  • 33. Motivation This need to be covered since it is easily underestimated but contains a lot of risk Audience Development Team Required Only if there are risky interfaces External Interfaces Interfaces with external systems is the riskiest part of the software and needs to be summarised
  • 34. Code This sections presents a lower level explanation on how things work Intent Describe in detail how important and complex things in the software work, for example MVC, application life-cycle management, state handing etc. Structure Short, concise sections, aided with diagrams, that explain each topic
  • 35. Motivation Ensure that everybody on the team understands complex things about the software Audience Development Team Required No, but most software needs this Code This sections presents a lower level explanation on how things work
  • 36. Data Record data is important in enterprise systems and the data strategy needs to be clarified Intent Explain the data model, how it is stored and where, what are backup storage and redundancy strategies etc. Structure Short, concise sections, aided with diagrams, that explain the data strategy
  • 37. Motivation Data tends to outlive the software, so it is necessary to explain the strategy Audience Development Team Required No, but most software with data needs this Data Record data is important in enterprise systems and the data strategy needs to be clarified
  • 38. Infrastructure Architecture Infrastructure is a big part of software since software needs to be stored and operated in a physical hardware environment Intent Outline the physical setup, hardware, use of virtualisation, redundancy, failover, load balancers etc. Structure Network diagrams with explanations
  • 39. Motivation Software must be run somewhere in a physical setup and this explains how the setup is Audience Technical people, network operators Required Yes Infrastructure Architecture Infrastructure is a big part of software since software needs to be stored and operated in a physical hardware environment
  • 40. Deployment Deployment explains how software is installed on the hardware Intent Describe the mapping of software and the hardware, how and where software is installed and configured Structure Tables showing mapping and deployment diagrams with explanation
  • 41. Motivation Gives understanding on how the software will actually work when running Today you want to automate this things as much as possible with tools such as Puppet and Chef Audience Technical people, network operators Required Yes Deployment Deployment explains how software is installed on the hardware
  • 42. Operation and Support Describes how people will monitor, run and manage the software Intent How monitoring and managing the system is done, where the log files are, configurations, manual housekeeping stuff etc Structure Narrative explaining each topic
  • 43. Motivation How to operate the software must be documented, all file locations and so on Audience Technical people, network operators Required Yes Operation and Support Describes how people will monitor, run and manage the software
  • 44. Decision Log Log of decision made during the development phase Intent Document for reference any major decision and the reason for them, why some technology was chosen and so on Structure Simple list of decisions
  • 45. Motivation Software development is complex and major decision are made for reasons, but can be forgotten People tend to avoid responsibility so keeping track of decision and their reasons can save a lot of discussion later Audience Technical people, operation Required No, but really useful Decision Log Log of decision made during the development phase
  • 46. Summary Yes, we need documentation, the code does not say it all and agile does not gives us excuses Software Guidebook is a really useful tool