Zum Hauptinhalt springen
Dekorationsartikel gehören nicht zum Leistungsumfang.
Living Documentation
Continuous Knowledge Sharing by Design
Buch von Cyrille Martraire
Sprache: Englisch

55,40 €*

inkl. MwSt.

Versandkostenfrei per Post / DHL

Lieferzeit 1-2 Wochen

Kategorien:
Beschreibung

This concise guide introduces and thoroughly illuminates the concept of living documentation that changes at the same pace as software design and development, from establishment of business goals to capturing domain knowledge, creating architecture, designing software, coding, and deployment. Replete with clarifying illustrations and concrete examples, it shows how to dramatically improve your documentation at minimal extra cost by using well-crafted artifacts and judicious automation.

This concise guide introduces and thoroughly illuminates the concept of living documentation that changes at the same pace as software design and development, from establishment of business goals to capturing domain knowledge, creating architecture, designing software, coding, and deployment. Replete with clarifying illustrations and concrete examples, it shows how to dramatically improve your documentation at minimal extra cost by using well-crafted artifacts and judicious automation.

Über den Autor

Cyrille Martraire (@cyriux on Twitter) is CTO, co-founder, and partner at Arolla (@ArollaFr on Twitter), the founder of the Paris Software Crafters community, and a regular speaker at international conferences. Cyrille refers to himself as a developer, since he has designed software since 1999 for startups, software vendors, and corporations as an employee and as a consultant.

He has worked and led multiple significant projects, mostly in capital finance, including the complete rewriting of a multilateral trading facility of interest rate swaps. In most cases he has to start from large and miserable legacy systems.

He’s passionate about software design in every aspect: test-driven development, behavior-driven development, and, in particular, domain-driven design.

Cyrille lives in Paris with his wife, Yunshan, and children, Norbert and Gustave.

Inhaltsverzeichnis

Introduction

Chapter 1: Rethinking Documentation

A Tale from the Land of Living Documentation

Why This Feature?

Tomorrow You Won’t Need This Sketch Anymore

Sorry, We Don’t Have Marketing Documents!

You Keep Using This Word, but This Is Not What It Means

Show Me the Big Picture, and You’ll See What’s Wrong There

The Future of Living Documentation Is Now

The Problem with Traditional Documentation

Documentation Is Not Cool, Usually

The Flaws of Documentation

The Agile Manifesto and Documentation

It’s Time for Documentation 2.0

Documentation Is About Knowledge

The Origination of Knowledge

How Does Knowledge Evolve?

Why Knowledge Is Necessary

Documentation Is About Transferring Knowledge

Focusing on What Matters

Core Principles of Living Documentation

Reliable

Low Effort

Collaborative

Insightful

How Ants Exchange Knowledge: Stigmergy

Most Knowledge Is Already There

Internal Documentation

Internal Versus External Documentation

Examples of Internal and External Documentation

Preferring Internal Documentation

In Situ Documentation

Machine-Readable Documentation

Specific Versus Generic Knowledge

Learning Generic Knowledge

Focusing on Specific Knowledge

Ensuring Documentation Accuracy

Accuracy Mechanism for Reliable Documentation

When Documentation Does Not Need an Accuracy Mechanism

Big Questions to Challenge Your Documentation

Questioning the Need for Documentation at All

Need for Documentation Because of Lack of Trust

Just-in-Time Documentation, or a Cheap Option on Future Knowledge

Questioning the Need for Traditional Documentation

Minimizing Extra Work Now

Minimizing Extra Work Later

Making an Activity Fun

Documentation Reboot

Living Documentation: The Very Short Version

Approaches to Better Documentation

A Gateway to DDD

Domain-Driven Design in a Nutshell

Living Documentation and Domain-Driven Design

When Living Documentation Is an Application of DDD

A Story of Mutual Roots Between BDD, DDD, XP, and Living Documentation

Summary

Chapter 2: Behavior-Driven Development as an Example of Living Specifications

BDD Is All About Conversations

BDD with Automation Is All About Living Documentation

Redundancy and Reconciliation

The Anatomy of Scenarios in a File

The Intent of a Feature File

Feature File Scenarios

Specification Details

Tags in Feature Files

Scenarios as Interactive Living Documentation

Scenarios in Boring Paper Documents

A Feature File Example

A Canonical Case of Living Documentation in Every Aspect

Going Further: Getting the Best of Your Living Documentation

Property-Based Testing and BDD

Summary

Chapter 3: Knowledge Exploitation

Identifying Authoritative Knowledge

Where Is the Knowledge Now?

Single-Source Publishing

Some Examples of Producing a Published Document

A Published Snapshot with a Version Number

Remarks

Setting Up a Reconciliation Mechanism (aka Verification Mechanism)

Running Consistency Tests

Reconciliation on the Test Assumptions

Published Contracts

Consolidating Dispersed Facts

How Consolidation Works

Consolidation Implementation Considerations

Ready-Made Documentation

The Power of a Standard Vocabulary

Linking to Standard Knowledge

More Than Just Vocabulary

Using Ready-Made Knowledge in Conversation to Speed Up Knowledge Transfer

Tools History

Summary

Chapter 4: Knowledge Augmentation

When Programming Languages Are Not Enough

Documentation Using Annotations

Annotations as More Than Tags

Describing the Rationale Behind Decisions

Embedded Learning

Documentation by Convention

Living Documentation in Legacy Code with Conventions

Documenting the Conventions

Consistently Adhering to Conventions

The Limitations of Conventions

External Documentation Methods

Sidecar Files

Metadata Databases

Designing Custom Annotations

Stereotypical Properties

Stereotypes and Tactical Patterns

Using Meaningful Annotation Package Names

Hijacking Standard Annotations

Standard Annotation: [...] and Aspect-Oriented Programming

Annotation by Default or Unless Necessary

Handling Module-Wide Knowledge

Dealing with Many Kinds of Modules

Module-Wide Augmentation In Practice

Intrinsic Knowledge Augmentation

Machine-Accessible Documentation

Recording Your Rationale

What’s in a Rationale?

Making the Rationale Explicit

Beyond Documentation: Motivated Design

Avoid Documenting Speculation

Skills as Pre-Documented Rationales

Recording the Rationale as an Enabler for Change

Acknowledging Your Influences (aka Project Bibliography)

Declaring Your Style

Commit Messages as Comprehensive Documentation

Commit Guidelines

Summary

Chapter 5: Living Curation: Identifying Authoritative Knowledge

Dynamic Curation

Examples of Dynamic Curation

Editorial Curation

Low-Maintenance Dynamic Curation

One Corpus of Knowledge for Multiple Uses

Scenario Digests

Highlighting the Core

Highlighting Inspiring Exemplars

Guided Tours and Sightseeing Maps

Creating a Sightseeing Map

Creating a Guided Tour

Creating a Living Guided Tour

A Poor Man’s Literate Programming

Summing Up: The Curator Preparing an Art Exhibition

Selecting and Organizing Existing Knowledge

Adding What’s Missing When Needed

Accessibility for People Who Can’t Attend and for Posterity

Summary

Chapter 6: Automating Documentation

Living Documents

Steps in Creating a Living Document

Presentation Rules

Living Glossaries

How a Living Glossary Works

An Example Please!

Information Curation for Living Documents

Creating a Glossary Within a Bounded Context

Case Study of a Living Glossary

Living Diagrams

Diagrams Assist in Conversations

One Diagram, One Story

Living Diagrams to Keep You Honest

The Quest for the Perfect Diagram

Rendering a Living Diagram

Visualization Guidelines

Example: Hexagonal Architecture Living Diagram

Case Study: A Business Overview as a Living Diagram

Example: A Context Diagram

The Challenges with Automated Generation of Design Documentation

Summary

Chapter 7: Runtime Documentation

Example: Living Services Diagram

A Matter of Augmented Code but at Runtime

Discovering the Architecture

The Magic That Makes This Work

Going Further

Visible Workings: Working Software as Its Own Documentation

Visible Tests

Domain-Specific Notation

Generating Custom Domain-Specific Diagrams to Get Visual Feedback

Example: A Visible Test When Using Event Sourcing

A Concrete Example in Code

Living Diagrams from Event Sourcing Scenarios

Introspectable Workings: Code in Memory as a Source of Knowledge

Introspecting with Reflection

Introspecting Without Reflection

Summary

Chapter 8: Refactorable Documentation

Code as Documentation

Text Layout

Coding Conventions

Naming as the Primary Documentation

Composed Methods: You Need to Name Them

Idiomatic Naming Is Contextual

Coding Against a Framework

Type-Driven Documentation

From Primitives to Types

Documented Types and Integrated Documentation

Types and Associations

Types over Comments

The Composed Method

Fluent Style

Using an Internal DSL

Implementing a Fluent Interface

Fluent Tests

Creating a DSTL

When Not to Use a Fluent Style

Case Study: An Example of Refactoring Code, Guided by Comments

Integrated Documentation

Type Hierarchy

Code Searching

Semantics Derived from Actual Usage

Using Plain-Text Diagrams

Example: Plain-Text Diagrams

Diagrams as Code

Summary

Chapter 9: Stable Documentation

Evergreen Content

Requirements Are More Stable Than Design Decisions

High-Level Goals Tend to Be Stable

A Lot of Knowledge Is Less Stable Than It Looks

Case Study: A README File

Tips for Evergreen Documentation

Avoiding Mixing Strategy Documentation with the Documentation of Its Implementation

Ensuring Stability

Using Perennial Naming

Organizing Artifacts Along Stable Axes

Linked Knowledge

Volatile-to-Stable Dependencies

Broken Link Checkers

Link Registry

Bookmarked Searches

Categories of Stable Knowledge

Evergreen README

Vision Statement

Domain Vision Statements

Goals

Impact Mapping

Investing in Stable Knowledge

Domain Immersion

Investigation Wall

Domain Training

Live-My-Life Sessions

Shadow Users

A Long-Term Investment

Summary

Chapter 10: Avoiding Traditional Documentation

Conversations About Formal Documentation

Wiio’s Laws

The Rule of Three Interpretations

Obstacles to Conversations

Working Collectively for Continuous Knowledge Sharing

Pair Programming

...
Details
Erscheinungsjahr: 2019
Fachbereich: Programmiersprachen
Genre: Informatik
Rubrik: Naturwissenschaften & Technik
Medium: Buch
ISBN-13: 9780134689326
ISBN-10: 0134689321
Sprache: Englisch
Einband: Gebunden
Autor: Martraire, Cyrille
Hersteller: Pearson Education
Maße: 241 x 182 x 30 mm
Von/Mit: Cyrille Martraire
Erscheinungsdatum: 04.06.2019
Gewicht: 0,941 kg
Artikel-ID: 108873260
Über den Autor

Cyrille Martraire (@cyriux on Twitter) is CTO, co-founder, and partner at Arolla (@ArollaFr on Twitter), the founder of the Paris Software Crafters community, and a regular speaker at international conferences. Cyrille refers to himself as a developer, since he has designed software since 1999 for startups, software vendors, and corporations as an employee and as a consultant.

He has worked and led multiple significant projects, mostly in capital finance, including the complete rewriting of a multilateral trading facility of interest rate swaps. In most cases he has to start from large and miserable legacy systems.

He’s passionate about software design in every aspect: test-driven development, behavior-driven development, and, in particular, domain-driven design.

Cyrille lives in Paris with his wife, Yunshan, and children, Norbert and Gustave.

Inhaltsverzeichnis

Introduction

Chapter 1: Rethinking Documentation

A Tale from the Land of Living Documentation

Why This Feature?

Tomorrow You Won’t Need This Sketch Anymore

Sorry, We Don’t Have Marketing Documents!

You Keep Using This Word, but This Is Not What It Means

Show Me the Big Picture, and You’ll See What’s Wrong There

The Future of Living Documentation Is Now

The Problem with Traditional Documentation

Documentation Is Not Cool, Usually

The Flaws of Documentation

The Agile Manifesto and Documentation

It’s Time for Documentation 2.0

Documentation Is About Knowledge

The Origination of Knowledge

How Does Knowledge Evolve?

Why Knowledge Is Necessary

Documentation Is About Transferring Knowledge

Focusing on What Matters

Core Principles of Living Documentation

Reliable

Low Effort

Collaborative

Insightful

How Ants Exchange Knowledge: Stigmergy

Most Knowledge Is Already There

Internal Documentation

Internal Versus External Documentation

Examples of Internal and External Documentation

Preferring Internal Documentation

In Situ Documentation

Machine-Readable Documentation

Specific Versus Generic Knowledge

Learning Generic Knowledge

Focusing on Specific Knowledge

Ensuring Documentation Accuracy

Accuracy Mechanism for Reliable Documentation

When Documentation Does Not Need an Accuracy Mechanism

Big Questions to Challenge Your Documentation

Questioning the Need for Documentation at All

Need for Documentation Because of Lack of Trust

Just-in-Time Documentation, or a Cheap Option on Future Knowledge

Questioning the Need for Traditional Documentation

Minimizing Extra Work Now

Minimizing Extra Work Later

Making an Activity Fun

Documentation Reboot

Living Documentation: The Very Short Version

Approaches to Better Documentation

A Gateway to DDD

Domain-Driven Design in a Nutshell

Living Documentation and Domain-Driven Design

When Living Documentation Is an Application of DDD

A Story of Mutual Roots Between BDD, DDD, XP, and Living Documentation

Summary

Chapter 2: Behavior-Driven Development as an Example of Living Specifications

BDD Is All About Conversations

BDD with Automation Is All About Living Documentation

Redundancy and Reconciliation

The Anatomy of Scenarios in a File

The Intent of a Feature File

Feature File Scenarios

Specification Details

Tags in Feature Files

Scenarios as Interactive Living Documentation

Scenarios in Boring Paper Documents

A Feature File Example

A Canonical Case of Living Documentation in Every Aspect

Going Further: Getting the Best of Your Living Documentation

Property-Based Testing and BDD

Summary

Chapter 3: Knowledge Exploitation

Identifying Authoritative Knowledge

Where Is the Knowledge Now?

Single-Source Publishing

Some Examples of Producing a Published Document

A Published Snapshot with a Version Number

Remarks

Setting Up a Reconciliation Mechanism (aka Verification Mechanism)

Running Consistency Tests

Reconciliation on the Test Assumptions

Published Contracts

Consolidating Dispersed Facts

How Consolidation Works

Consolidation Implementation Considerations

Ready-Made Documentation

The Power of a Standard Vocabulary

Linking to Standard Knowledge

More Than Just Vocabulary

Using Ready-Made Knowledge in Conversation to Speed Up Knowledge Transfer

Tools History

Summary

Chapter 4: Knowledge Augmentation

When Programming Languages Are Not Enough

Documentation Using Annotations

Annotations as More Than Tags

Describing the Rationale Behind Decisions

Embedded Learning

Documentation by Convention

Living Documentation in Legacy Code with Conventions

Documenting the Conventions

Consistently Adhering to Conventions

The Limitations of Conventions

External Documentation Methods

Sidecar Files

Metadata Databases

Designing Custom Annotations

Stereotypical Properties

Stereotypes and Tactical Patterns

Using Meaningful Annotation Package Names

Hijacking Standard Annotations

Standard Annotation: [...] and Aspect-Oriented Programming

Annotation by Default or Unless Necessary

Handling Module-Wide Knowledge

Dealing with Many Kinds of Modules

Module-Wide Augmentation In Practice

Intrinsic Knowledge Augmentation

Machine-Accessible Documentation

Recording Your Rationale

What’s in a Rationale?

Making the Rationale Explicit

Beyond Documentation: Motivated Design

Avoid Documenting Speculation

Skills as Pre-Documented Rationales

Recording the Rationale as an Enabler for Change

Acknowledging Your Influences (aka Project Bibliography)

Declaring Your Style

Commit Messages as Comprehensive Documentation

Commit Guidelines

Summary

Chapter 5: Living Curation: Identifying Authoritative Knowledge

Dynamic Curation

Examples of Dynamic Curation

Editorial Curation

Low-Maintenance Dynamic Curation

One Corpus of Knowledge for Multiple Uses

Scenario Digests

Highlighting the Core

Highlighting Inspiring Exemplars

Guided Tours and Sightseeing Maps

Creating a Sightseeing Map

Creating a Guided Tour

Creating a Living Guided Tour

A Poor Man’s Literate Programming

Summing Up: The Curator Preparing an Art Exhibition

Selecting and Organizing Existing Knowledge

Adding What’s Missing When Needed

Accessibility for People Who Can’t Attend and for Posterity

Summary

Chapter 6: Automating Documentation

Living Documents

Steps in Creating a Living Document

Presentation Rules

Living Glossaries

How a Living Glossary Works

An Example Please!

Information Curation for Living Documents

Creating a Glossary Within a Bounded Context

Case Study of a Living Glossary

Living Diagrams

Diagrams Assist in Conversations

One Diagram, One Story

Living Diagrams to Keep You Honest

The Quest for the Perfect Diagram

Rendering a Living Diagram

Visualization Guidelines

Example: Hexagonal Architecture Living Diagram

Case Study: A Business Overview as a Living Diagram

Example: A Context Diagram

The Challenges with Automated Generation of Design Documentation

Summary

Chapter 7: Runtime Documentation

Example: Living Services Diagram

A Matter of Augmented Code but at Runtime

Discovering the Architecture

The Magic That Makes This Work

Going Further

Visible Workings: Working Software as Its Own Documentation

Visible Tests

Domain-Specific Notation

Generating Custom Domain-Specific Diagrams to Get Visual Feedback

Example: A Visible Test When Using Event Sourcing

A Concrete Example in Code

Living Diagrams from Event Sourcing Scenarios

Introspectable Workings: Code in Memory as a Source of Knowledge

Introspecting with Reflection

Introspecting Without Reflection

Summary

Chapter 8: Refactorable Documentation

Code as Documentation

Text Layout

Coding Conventions

Naming as the Primary Documentation

Composed Methods: You Need to Name Them

Idiomatic Naming Is Contextual

Coding Against a Framework

Type-Driven Documentation

From Primitives to Types

Documented Types and Integrated Documentation

Types and Associations

Types over Comments

The Composed Method

Fluent Style

Using an Internal DSL

Implementing a Fluent Interface

Fluent Tests

Creating a DSTL

When Not to Use a Fluent Style

Case Study: An Example of Refactoring Code, Guided by Comments

Integrated Documentation

Type Hierarchy

Code Searching

Semantics Derived from Actual Usage

Using Plain-Text Diagrams

Example: Plain-Text Diagrams

Diagrams as Code

Summary

Chapter 9: Stable Documentation

Evergreen Content

Requirements Are More Stable Than Design Decisions

High-Level Goals Tend to Be Stable

A Lot of Knowledge Is Less Stable Than It Looks

Case Study: A README File

Tips for Evergreen Documentation

Avoiding Mixing Strategy Documentation with the Documentation of Its Implementation

Ensuring Stability

Using Perennial Naming

Organizing Artifacts Along Stable Axes

Linked Knowledge

Volatile-to-Stable Dependencies

Broken Link Checkers

Link Registry

Bookmarked Searches

Categories of Stable Knowledge

Evergreen README

Vision Statement

Domain Vision Statements

Goals

Impact Mapping

Investing in Stable Knowledge

Domain Immersion

Investigation Wall

Domain Training

Live-My-Life Sessions

Shadow Users

A Long-Term Investment

Summary

Chapter 10: Avoiding Traditional Documentation

Conversations About Formal Documentation

Wiio’s Laws

The Rule of Three Interpretations

Obstacles to Conversations

Working Collectively for Continuous Knowledge Sharing

Pair Programming

...
Details
Erscheinungsjahr: 2019
Fachbereich: Programmiersprachen
Genre: Informatik
Rubrik: Naturwissenschaften & Technik
Medium: Buch
ISBN-13: 9780134689326
ISBN-10: 0134689321
Sprache: Englisch
Einband: Gebunden
Autor: Martraire, Cyrille
Hersteller: Pearson Education
Maße: 241 x 182 x 30 mm
Von/Mit: Cyrille Martraire
Erscheinungsdatum: 04.06.2019
Gewicht: 0,941 kg
Artikel-ID: 108873260
Warnhinweis

Ähnliche Produkte

Ähnliche Produkte