SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Downloaden Sie, um offline zu lesen
Ademar Aguiar
University of Porto
to document, or not document:
that’s the question…
Wikis, WikiSym, OpenSym
Software development
continuously and iteratively
Communicating and sharing
knowledge and experience
Formalising 

information
Collaborating
People needs to talk and read in order to
understand requirements, specifications,
and other informal artifacts (meeting
notes, requirements, draft designs...) with
the goal of producing more formal
artifacts (code, formal specifications,
models...).
To collaborate, we need to share
information and artifacts.
Different kinds of artifacts are typically
produced and presented using different
tools and environments.
Informal and personal communication is
usually the best, but sooner or later, you
may need to produce documentation in
order to preserve, communicate and share
the knowledge you have acquired about
your project or software system.
Knowledge acquisition
▪ Most (but not all) knowledge is in the head of experts

▪ therefore it must be shared with non-experts 

▪ Experts have vast amounts of knowledge

▪ therefore there is a need to focus on essentials

▪ Each expert doesn't know everything

▪ therefore experts must interact with each other

▪ Experts have a lot of tacit knowledge

▪ therefore they know more than they realize 

▪ Experts are very busy and valuable people

▪ therefore capturing techniques must be non-intrusive 

▪ Knowledge has a "shelf life”

▪ therefore it evolves, is created, and must be maintained
Understanding = docs + conversations
▪ Knowledge acquisition requires contents and context.

▪ Knowledge can be partially preserved as documents, but
not all. 

▪ Understanding the knowledge is the issue. 

▪ Understanding needs documentation and conversation.
(documents only gathers 15-25% of all the knowledge of
complex systems)
Knowledge evolution spiral
Balancing agility & discipline
source:book"BalancingAgilityandDiscipline”,fromBarryBoehmandRichardTurner
capabilities, communication, knowledge, discipline, self-
organization, adaptability, optimization, pace, quality, ROI,
predictability, culture, criticality, size, dynamism...
practices, documentation, formalities, leadership, roles, artifacts,
tools, training, planning, feedback, size the project…
Inspect & adapt
communication, knowledge, quality
documentation, formalities, roles, artefacts, tools
How to document?
Software documentation
▪ Documentation is good but hard and costly

▪ Every project benefits with good documentation but it has
costs, so we need to decide which is the“right dose” of
documentation that guarantees the success of our
project.

▪ Each project is a case.

▪ Simple and small projects may require few
documentation.

▪ For example, for reusable software, good documentation
is crucial because nobody reuses what they don’t know,
don’t understand, or what seems to be difficult to reuse.
Minimalist Instruction
Agile Modeling
Configuration Production Organization
documents,
models,
source code
usage
feedback
integrated
contents
templates,
tool setup
Maintenance
refinements
Contents
storage
processed
contents
manager
author reader
metadata
tools
activity
artifacts role role-assignment
Usage
Patterns
Target
Audiences
Documents
Creation
Cross-References
Semantic
Consistency
Documents
Organization
Contents Publishing
and Presentation
Supporting Tools
is-related-to
patterns
helps
provides focus
requires
requires
requires
supports
requires
implies
requires
Target
Audiences
Documents
Creation
Cross-References
Semantic
Consistency
Documents
Organization
Contents Publishing
and Presentation
Supporting Tools
is-related-to
patterns
is-related-to
patterns
is-related-tois-related-to
patternspatterns
helps
provides focus
requires
requires
requires
supports
requires
implies
requires
Agile documentation
Core practices
▪ Create simple documents, but just simple enough

• A minimalist document must be brief, it shouldn’t contain everything,
but just the enough information that fulfils its purpose and the
intended audience. 

• The simplicity and understandability of contents must be evaluated by
the readers. 

▪ Create several documents at once

• To represent all the aspects of a system, and to serve all the
audiences and purposes, it is often necessary to use different
documents, which when edited in parallel and properly cross-
referenced help writers on “dumping” their knowledge more
effectively, as it avoids to switch contexts.
Core practices
▪ Publish documents publicly

• Publicly available documents, published for everyone to see, supports
knowledge transfer, and improves communication and understanding. 

• The feedback increases and the quality of documents quickly
improves.

▪ Document and update only when needed

• To be cost-effective, documents should be created and refined
iteratively only when needed, not when desired.

▪ Reuse documentation

• Reuse contents and structure of existing documentation to improve
the productivity and quality of the documentation. 

• Reusable contents must be modular, closed, and readable in any
order.
Additional practices
▪ Use simple tools

• The usage of simple tools help focus more on the contents, rather
than on the presentation. 

▪ Define and follow documentation standards

• Writers must agree and follow a common set of documentation
conventions and standards on a project.

▪ Document it, to understand it

• To document helps on formalising ideas focused on single aspects, in
isolation from many others.
What to document?
Internal vs External Documentation
▪ Internal documentation 

• is limited to low-level, textual explanations, usually included in source
code comments;

▪ Higher-level external documentation

• capable of capturing the components and connectors of an
architecture and the interactions of cooperating classes;

• the consistency between external documents and source code can be
difficult to maintain as the system evolves over time.
A lot of documents…
private
components
domain
design
overview
protected view
implementation
public view
user
developer
maintainer
framework overview,
snapshots, images
implementations
type and operation
specifications
examples
cookbooks, recipes
design patterns
technical and application
architecture
interface and interaction
contracts
refinements
use cases, scenarios
detailed use cases
design notebooks
collaborations, roles
class interfaces
abstract concrete contents reference
Patterns
Framework
Overview
Spiral
Cookbook
Customizable
Points
Design
Internals
Error Recovery
Guide
Graded
Examples
Documentation
Roadmap
Traversable
Code
Reference
Guide
is-related-to
patterns
where to start?
first recipe
how-to’s
errors
uses
illustrate
how it works?
code
index
Framework
Overview
Spiral
Cookbook
Customizable
Points
Design
Internals
Error Recovery
Guide
Graded
Examples
Documentation
Roadmap
Traversable
Code
Reference
Guide
is-related-to
patterns
is-related-to
patterns
is-related-tois-related-to
patternspatterns
where to start?
first recipe
how-to’s
errors
uses
illustrate
how it works?
code
index
Example: JUnit
Tools
Heterogeneous documents
▪ Software artifacts can be categorized in source code,
models, and documents (free text, structured text,...)

▪ Useful external documents often combine contents from
different kinds of software artifacts, which are here called
heterogeneous software documents.
Key issues
▪ Heterogeneous software documents issues include:

• the preservation of the semantic consistency between
the different kinds of contents (such as informal
documents and source code);

• the lack of appropriate documentation environments;

• contents integration;

• contents synchronisation.

▪ All these issues have a strong impact on the cost of
producing, evolving, and maintaining the documentation.
Single source approach
Multiple source approach
Inline of Java source
Inline of UML
XSDoc Wiki
Doc-It! - Snipsnap wiki
Weaki: a weakly typed wiki
Weaki: key features
▪ Transclusion of code

▪ The inclusion of part or all of an electronic document into one or more
other documents by reference

▪ Structure emergence

▪ While editing pages, recurrent common structures will emerge. These
structures can at anytime be captured as reusable types.

▪ Homogeneity

▪ Types are wiki pages. All known wiki metaphors are applicable.

▪ Scaffolding

▪ Whenever someone wants to create a new page of a particular type, the
wiki automatically fills it with an initial skeleton, derived from that type's
structure.

▪ Structured views

▪ Structured viewing filters out content not compliant to the page’s type.
This provides a consistent view of every page of the same type.
Weaki: key features
▪ Content Assist

▪ The creation of new content is assisted with context aware
suggestions, while editing a typed page.

▪ Global time labels

▪ Labelling a moment in time. View the entire wiki state at that
moment.

▪ Type awareness

▪ Types evolve. Pages evolve. Their level of compliance varies.
Awareness of this metric allows balancing evolution vs. type
adequacy.

▪ Team awareness

▪ The neighbourhood consists of wiki contributors (authors, editors,
even readers) that inhabits the same pages as you. Being aware
of who they are, nurtures constructive conversations.
Weaki for DokuWiki (under development…)
Dzięki!
Obrigado!
Ademar Aguiar
ademar.aguiar@fe.up.pt
to document, or not document?
well, it depends… 😎

Weitere ähnliche Inhalte

Andere mochten auch

JDD 2016 - Tomasz Gagor, Pawel Torbus - A Needle In A Logstack
JDD 2016 - Tomasz Gagor, Pawel Torbus - A Needle In A LogstackJDD 2016 - Tomasz Gagor, Pawel Torbus - A Needle In A Logstack
JDD 2016 - Tomasz Gagor, Pawel Torbus - A Needle In A LogstackPROIDEA
 
JDD 2016 - Łukasz Sawicki - WHY? + Impact Mapping
JDD 2016 - Łukasz Sawicki - WHY? + Impact MappingJDD 2016 - Łukasz Sawicki - WHY? + Impact Mapping
JDD 2016 - Łukasz Sawicki - WHY? + Impact MappingPROIDEA
 
JDD 2016 - Tomasz Lelek - Machine Learning With Apache Spark
JDD 2016 - Tomasz Lelek - Machine Learning With Apache SparkJDD 2016 - Tomasz Lelek - Machine Learning With Apache Spark
JDD 2016 - Tomasz Lelek - Machine Learning With Apache SparkPROIDEA
 
JDD 2016 - Michal Bartyzel, Lukasz Korczynski - Refaktoryzacja Systemu eBanko...
JDD 2016 - Michal Bartyzel, Lukasz Korczynski - Refaktoryzacja Systemu eBanko...JDD 2016 - Michal Bartyzel, Lukasz Korczynski - Refaktoryzacja Systemu eBanko...
JDD 2016 - Michal Bartyzel, Lukasz Korczynski - Refaktoryzacja Systemu eBanko...PROIDEA
 
JDD 2016 - Michał Balinski, Oleksandr Goldobin - Practical Non Blocking Micro...
JDD 2016 - Michał Balinski, Oleksandr Goldobin - Practical Non Blocking Micro...JDD 2016 - Michał Balinski, Oleksandr Goldobin - Practical Non Blocking Micro...
JDD 2016 - Michał Balinski, Oleksandr Goldobin - Practical Non Blocking Micro...PROIDEA
 
Blazing Fast Feedback Loops in the Java Universe
Blazing Fast Feedback Loops in the Java UniverseBlazing Fast Feedback Loops in the Java Universe
Blazing Fast Feedback Loops in the Java UniverseMichał Kordas
 

Andere mochten auch (6)

JDD 2016 - Tomasz Gagor, Pawel Torbus - A Needle In A Logstack
JDD 2016 - Tomasz Gagor, Pawel Torbus - A Needle In A LogstackJDD 2016 - Tomasz Gagor, Pawel Torbus - A Needle In A Logstack
JDD 2016 - Tomasz Gagor, Pawel Torbus - A Needle In A Logstack
 
JDD 2016 - Łukasz Sawicki - WHY? + Impact Mapping
JDD 2016 - Łukasz Sawicki - WHY? + Impact MappingJDD 2016 - Łukasz Sawicki - WHY? + Impact Mapping
JDD 2016 - Łukasz Sawicki - WHY? + Impact Mapping
 
JDD 2016 - Tomasz Lelek - Machine Learning With Apache Spark
JDD 2016 - Tomasz Lelek - Machine Learning With Apache SparkJDD 2016 - Tomasz Lelek - Machine Learning With Apache Spark
JDD 2016 - Tomasz Lelek - Machine Learning With Apache Spark
 
JDD 2016 - Michal Bartyzel, Lukasz Korczynski - Refaktoryzacja Systemu eBanko...
JDD 2016 - Michal Bartyzel, Lukasz Korczynski - Refaktoryzacja Systemu eBanko...JDD 2016 - Michal Bartyzel, Lukasz Korczynski - Refaktoryzacja Systemu eBanko...
JDD 2016 - Michal Bartyzel, Lukasz Korczynski - Refaktoryzacja Systemu eBanko...
 
JDD 2016 - Michał Balinski, Oleksandr Goldobin - Practical Non Blocking Micro...
JDD 2016 - Michał Balinski, Oleksandr Goldobin - Practical Non Blocking Micro...JDD 2016 - Michał Balinski, Oleksandr Goldobin - Practical Non Blocking Micro...
JDD 2016 - Michał Balinski, Oleksandr Goldobin - Practical Non Blocking Micro...
 
Blazing Fast Feedback Loops in the Java Universe
Blazing Fast Feedback Loops in the Java UniverseBlazing Fast Feedback Loops in the Java Universe
Blazing Fast Feedback Loops in the Java Universe
 

Ähnlich wie JDD 2016 - Ademar Aguiar - To Document Or Not Document - That Is The Question

FSOSS - Enter the 4th Dimension: Documentation
FSOSS - Enter the 4th Dimension: DocumentationFSOSS - Enter the 4th Dimension: Documentation
FSOSS - Enter the 4th Dimension: DocumentationBeth Agnew, CPTC™
 
Information Architecture Explained
Information Architecture ExplainedInformation Architecture Explained
Information Architecture ExplainedLeigh White
 
Open Source Design Pattern Library, Spreading Communities Thick: Open Source ...
Open Source Design Pattern Library, Spreading Communities Thick: Open Source ...Open Source Design Pattern Library, Spreading Communities Thick: Open Source ...
Open Source Design Pattern Library, Spreading Communities Thick: Open Source ...Allison Bloodworth
 
DITA Surprise, Unwrapping DITA Best Practices - tekom tcworld 2016
DITA Surprise, Unwrapping DITA Best Practices - tekom tcworld 2016DITA Surprise, Unwrapping DITA Best Practices - tekom tcworld 2016
DITA Surprise, Unwrapping DITA Best Practices - tekom tcworld 2016IXIASOFT
 
Design process interaction design basics
Design process interaction design basicsDesign process interaction design basics
Design process interaction design basicsPreeti Mishra
 
Successful Single-Source Content Development
Successful Single-Source Content Development Successful Single-Source Content Development
Successful Single-Source Content Development Xyleme
 
The Future is Now: Neuroscience, Chatbots, Voice, and Microcontent
The Future is Now: Neuroscience, Chatbots, Voice, and MicrocontentThe Future is Now: Neuroscience, Chatbots, Voice, and Microcontent
The Future is Now: Neuroscience, Chatbots, Voice, and MicrocontentSaiff Solutions, Inc.
 
Living documentation mini-workshop
Living documentation mini-workshopLiving documentation mini-workshop
Living documentation mini-workshopMatthias Noback
 
Islandora Webinar: Building a Repository Roadmap
Islandora Webinar: Building a Repository RoadmapIslandora Webinar: Building a Repository Roadmap
Islandora Webinar: Building a Repository Roadmapeohallor
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software DevelopmentAhmet Bulut
 
DITA Quick Start Webinar Series: Building a Project Plan
DITA Quick Start Webinar Series: Building a Project PlanDITA Quick Start Webinar Series: Building a Project Plan
DITA Quick Start Webinar Series: Building a Project PlanSuite Solutions
 
What is DITA? And Is It Right for Your Team or Project?
What is DITA? And Is It Right for Your Team or Project?What is DITA? And Is It Right for Your Team or Project?
What is DITA? And Is It Right for Your Team or Project?Toni Mantych, MA, PMP
 
Sprinting to Success: Why Agile and DITA Work So Well Together
Sprinting to Success: Why Agile and DITA Work So Well TogetherSprinting to Success: Why Agile and DITA Work So Well Together
Sprinting to Success: Why Agile and DITA Work So Well TogetherIXIASOFT
 
Benefits of using software design patterns and when to use design pattern
Benefits of using software design patterns and when to use design patternBenefits of using software design patterns and when to use design pattern
Benefits of using software design patterns and when to use design patternBeroza Paul
 
Web design content
Web design contentWeb design content
Web design contentMrCHenderson
 
Web design content
Web design contentWeb design content
Web design contentMrCHenderson
 

Ähnlich wie JDD 2016 - Ademar Aguiar - To Document Or Not Document - That Is The Question (20)

FSOSS - Enter the 4th Dimension: Documentation
FSOSS - Enter the 4th Dimension: DocumentationFSOSS - Enter the 4th Dimension: Documentation
FSOSS - Enter the 4th Dimension: Documentation
 
Information Architecture Explained
Information Architecture ExplainedInformation Architecture Explained
Information Architecture Explained
 
Open Source Design Pattern Library, Spreading Communities Thick: Open Source ...
Open Source Design Pattern Library, Spreading Communities Thick: Open Source ...Open Source Design Pattern Library, Spreading Communities Thick: Open Source ...
Open Source Design Pattern Library, Spreading Communities Thick: Open Source ...
 
DITA Surprise, Unwrapping DITA Best Practices - tekom tcworld 2016
DITA Surprise, Unwrapping DITA Best Practices - tekom tcworld 2016DITA Surprise, Unwrapping DITA Best Practices - tekom tcworld 2016
DITA Surprise, Unwrapping DITA Best Practices - tekom tcworld 2016
 
Design process interaction design basics
Design process interaction design basicsDesign process interaction design basics
Design process interaction design basics
 
Successful Single-Source Content Development
Successful Single-Source Content Development Successful Single-Source Content Development
Successful Single-Source Content Development
 
The Future is Now: Neuroscience, Chatbots, Voice, and Microcontent
The Future is Now: Neuroscience, Chatbots, Voice, and MicrocontentThe Future is Now: Neuroscience, Chatbots, Voice, and Microcontent
The Future is Now: Neuroscience, Chatbots, Voice, and Microcontent
 
Webcast: DITA Best Practices
Webcast: DITA Best PracticesWebcast: DITA Best Practices
Webcast: DITA Best Practices
 
Living documentation mini-workshop
Living documentation mini-workshopLiving documentation mini-workshop
Living documentation mini-workshop
 
Islandora Webinar: Building a Repository Roadmap
Islandora Webinar: Building a Repository RoadmapIslandora Webinar: Building a Repository Roadmap
Islandora Webinar: Building a Repository Roadmap
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
DITA Quick Start Webinar Series: Building a Project Plan
DITA Quick Start Webinar Series: Building a Project PlanDITA Quick Start Webinar Series: Building a Project Plan
DITA Quick Start Webinar Series: Building a Project Plan
 
Website Migration Planning
Website Migration PlanningWebsite Migration Planning
Website Migration Planning
 
Agile presentation
Agile presentationAgile presentation
Agile presentation
 
Lecture10
Lecture10Lecture10
Lecture10
 
What is DITA? And Is It Right for Your Team or Project?
What is DITA? And Is It Right for Your Team or Project?What is DITA? And Is It Right for Your Team or Project?
What is DITA? And Is It Right for Your Team or Project?
 
Sprinting to Success: Why Agile and DITA Work So Well Together
Sprinting to Success: Why Agile and DITA Work So Well TogetherSprinting to Success: Why Agile and DITA Work So Well Together
Sprinting to Success: Why Agile and DITA Work So Well Together
 
Benefits of using software design patterns and when to use design pattern
Benefits of using software design patterns and when to use design patternBenefits of using software design patterns and when to use design pattern
Benefits of using software design patterns and when to use design pattern
 
Web design content
Web design contentWeb design content
Web design content
 
Web design content
Web design contentWeb design content
Web design content
 

Kürzlich hochgeladen

The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 

Kürzlich hochgeladen (20)

The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 

JDD 2016 - Ademar Aguiar - To Document Or Not Document - That Is The Question

  • 1. Ademar Aguiar University of Porto to document, or not document: that’s the question…
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 10.
  • 11. Software development continuously and iteratively Communicating and sharing knowledge and experience Formalising 
 information Collaborating People needs to talk and read in order to understand requirements, specifications, and other informal artifacts (meeting notes, requirements, draft designs...) with the goal of producing more formal artifacts (code, formal specifications, models...). To collaborate, we need to share information and artifacts. Different kinds of artifacts are typically produced and presented using different tools and environments. Informal and personal communication is usually the best, but sooner or later, you may need to produce documentation in order to preserve, communicate and share the knowledge you have acquired about your project or software system.
  • 12. Knowledge acquisition ▪ Most (but not all) knowledge is in the head of experts ▪ therefore it must be shared with non-experts ▪ Experts have vast amounts of knowledge ▪ therefore there is a need to focus on essentials ▪ Each expert doesn't know everything ▪ therefore experts must interact with each other ▪ Experts have a lot of tacit knowledge ▪ therefore they know more than they realize ▪ Experts are very busy and valuable people ▪ therefore capturing techniques must be non-intrusive ▪ Knowledge has a "shelf life” ▪ therefore it evolves, is created, and must be maintained
  • 13. Understanding = docs + conversations ▪ Knowledge acquisition requires contents and context. ▪ Knowledge can be partially preserved as documents, but not all. ▪ Understanding the knowledge is the issue. ▪ Understanding needs documentation and conversation. (documents only gathers 15-25% of all the knowledge of complex systems)
  • 15. Balancing agility & discipline source:book"BalancingAgilityandDiscipline”,fromBarryBoehmandRichardTurner
  • 16. capabilities, communication, knowledge, discipline, self- organization, adaptability, optimization, pace, quality, ROI, predictability, culture, criticality, size, dynamism... practices, documentation, formalities, leadership, roles, artifacts, tools, training, planning, feedback, size the project… Inspect & adapt
  • 17. communication, knowledge, quality documentation, formalities, roles, artefacts, tools
  • 19. Software documentation ▪ Documentation is good but hard and costly ▪ Every project benefits with good documentation but it has costs, so we need to decide which is the“right dose” of documentation that guarantees the success of our project. ▪ Each project is a case. ▪ Simple and small projects may require few documentation. ▪ For example, for reusable software, good documentation is crucial because nobody reuses what they don’t know, don’t understand, or what seems to be difficult to reuse.
  • 20.
  • 23. Configuration Production Organization documents, models, source code usage feedback integrated contents templates, tool setup Maintenance refinements Contents storage processed contents manager author reader metadata tools activity artifacts role role-assignment Usage
  • 24. Patterns Target Audiences Documents Creation Cross-References Semantic Consistency Documents Organization Contents Publishing and Presentation Supporting Tools is-related-to patterns helps provides focus requires requires requires supports requires implies requires Target Audiences Documents Creation Cross-References Semantic Consistency Documents Organization Contents Publishing and Presentation Supporting Tools is-related-to patterns is-related-to patterns is-related-tois-related-to patternspatterns helps provides focus requires requires requires supports requires implies requires
  • 26. Core practices ▪ Create simple documents, but just simple enough • A minimalist document must be brief, it shouldn’t contain everything, but just the enough information that fulfils its purpose and the intended audience. • The simplicity and understandability of contents must be evaluated by the readers. ▪ Create several documents at once • To represent all the aspects of a system, and to serve all the audiences and purposes, it is often necessary to use different documents, which when edited in parallel and properly cross- referenced help writers on “dumping” their knowledge more effectively, as it avoids to switch contexts.
  • 27. Core practices ▪ Publish documents publicly • Publicly available documents, published for everyone to see, supports knowledge transfer, and improves communication and understanding. • The feedback increases and the quality of documents quickly improves. ▪ Document and update only when needed • To be cost-effective, documents should be created and refined iteratively only when needed, not when desired. ▪ Reuse documentation • Reuse contents and structure of existing documentation to improve the productivity and quality of the documentation. • Reusable contents must be modular, closed, and readable in any order.
  • 28. Additional practices ▪ Use simple tools • The usage of simple tools help focus more on the contents, rather than on the presentation. ▪ Define and follow documentation standards • Writers must agree and follow a common set of documentation conventions and standards on a project. ▪ Document it, to understand it • To document helps on formalising ideas focused on single aspects, in isolation from many others.
  • 30. Internal vs External Documentation ▪ Internal documentation • is limited to low-level, textual explanations, usually included in source code comments; ▪ Higher-level external documentation • capable of capturing the components and connectors of an architecture and the interactions of cooperating classes; • the consistency between external documents and source code can be difficult to maintain as the system evolves over time.
  • 31. A lot of documents… private components domain design overview protected view implementation public view user developer maintainer framework overview, snapshots, images implementations type and operation specifications examples cookbooks, recipes design patterns technical and application architecture interface and interaction contracts refinements use cases, scenarios detailed use cases design notebooks collaborations, roles class interfaces abstract concrete contents reference
  • 32. Patterns Framework Overview Spiral Cookbook Customizable Points Design Internals Error Recovery Guide Graded Examples Documentation Roadmap Traversable Code Reference Guide is-related-to patterns where to start? first recipe how-to’s errors uses illustrate how it works? code index Framework Overview Spiral Cookbook Customizable Points Design Internals Error Recovery Guide Graded Examples Documentation Roadmap Traversable Code Reference Guide is-related-to patterns is-related-to patterns is-related-tois-related-to patternspatterns where to start? first recipe how-to’s errors uses illustrate how it works? code index
  • 34. Tools
  • 35. Heterogeneous documents ▪ Software artifacts can be categorized in source code, models, and documents (free text, structured text,...) ▪ Useful external documents often combine contents from different kinds of software artifacts, which are here called heterogeneous software documents.
  • 36. Key issues ▪ Heterogeneous software documents issues include: • the preservation of the semantic consistency between the different kinds of contents (such as informal documents and source code); • the lack of appropriate documentation environments; • contents integration; • contents synchronisation. ▪ All these issues have a strong impact on the cost of producing, evolving, and maintaining the documentation.
  • 39. Inline of Java source Inline of UML XSDoc Wiki
  • 41. Weaki: a weakly typed wiki
  • 42. Weaki: key features ▪ Transclusion of code ▪ The inclusion of part or all of an electronic document into one or more other documents by reference ▪ Structure emergence ▪ While editing pages, recurrent common structures will emerge. These structures can at anytime be captured as reusable types. ▪ Homogeneity ▪ Types are wiki pages. All known wiki metaphors are applicable. ▪ Scaffolding ▪ Whenever someone wants to create a new page of a particular type, the wiki automatically fills it with an initial skeleton, derived from that type's structure. ▪ Structured views ▪ Structured viewing filters out content not compliant to the page’s type. This provides a consistent view of every page of the same type.
  • 43. Weaki: key features ▪ Content Assist ▪ The creation of new content is assisted with context aware suggestions, while editing a typed page. ▪ Global time labels ▪ Labelling a moment in time. View the entire wiki state at that moment. ▪ Type awareness ▪ Types evolve. Pages evolve. Their level of compliance varies. Awareness of this metric allows balancing evolution vs. type adequacy. ▪ Team awareness ▪ The neighbourhood consists of wiki contributors (authors, editors, even readers) that inhabits the same pages as you. Being aware of who they are, nurtures constructive conversations.
  • 44. Weaki for DokuWiki (under development…)
  • 46. Ademar Aguiar ademar.aguiar@fe.up.pt to document, or not document? well, it depends… 😎