Documentation for Program Comprehension in Agile Software Development

29
Documentation for Program Comprehension in Agile Software Development Fabian Kiss Scrum User Group Lake Constance Sep 2011

description

Most of the daily work of a software developer is maintenance and further development of existing software products. Is there a kind of documentation which particularly facilitates these tasks? Can such a documentation be agile?

Transcript of Documentation for Program Comprehension in Agile Software Development

Page 1: Documentation for Program Comprehension in Agile Software Development

Documentation for Program Comprehension in

Agile Software Development

Fabian Kiss

Scrum User Group Lake Constance

Sep 2011

Page 2: Documentation for Program Comprehension in Agile Software Development

Program Comprehension

To understand a completed computer program (source code)What has been implemented? How?

Page 3: Documentation for Program Comprehension in Agile Software Development

Agile

Working software over comprehensive documentation

→ code = documention

Page 4: Documentation for Program Comprehension in Agile Software Development

Why supporting Program Comprehension by

documentation?

Agile supports Program Comprehension

◮ Striving for high-quality source code (Clean Code,Refactoring)

◮ Exemplification of the program’s ”use” through Unit Tests

Page 5: Documentation for Program Comprehension in Agile Software Development

Why supporting Program Comprehension by

documentation?

Agile supports Program Comprehension

◮ Striving for high-quality source code (Clean Code,Refactoring)

◮ Exemplification of the program’s ”use” through Unit Tests

Page 6: Documentation for Program Comprehension in Agile Software Development

Why supporting Program Comprehension by

documentation?

Agile supports Program Comprehension

◮ Striving for high-quality source code (Clean Code,Refactoring)

◮ Exemplification of the program’s ”use” through Unit Tests

Page 7: Documentation for Program Comprehension in Agile Software Development

Why supporting Program Comprehension by

documentation?

Agile impedes Program Comprehension

◮ Continuous refactoring

◮ Experienced team for initial development, less experiencedteam for maintenance

◮ Unrefactorable obfuscating code

◮ Face-to-face communication is preferred: What if nobody(anymore) knows a certain information?

Page 8: Documentation for Program Comprehension in Agile Software Development

Why supporting Program Comprehension by

documentation?

Agile impedes Program Comprehension

◮ Continuous refactoring

◮ Experienced team for initial development, less experiencedteam for maintenance

◮ Unrefactorable obfuscating code

◮ Face-to-face communication is preferred: What if nobody(anymore) knows a certain information?

Page 9: Documentation for Program Comprehension in Agile Software Development

Why supporting Program Comprehension by

documentation?

Agile impedes Program Comprehension

◮ Continuous refactoring

◮ Experienced team for initial development, less experiencedteam for maintenance

◮ Unrefactorable obfuscating code

◮ Face-to-face communication is preferred: What if nobody(anymore) knows a certain information?

Page 10: Documentation for Program Comprehension in Agile Software Development

Why supporting Program Comprehension by

documentation?

Agile impedes Program Comprehension

◮ Continuous refactoring

◮ Experienced team for initial development, less experiencedteam for maintenance

◮ Unrefactorable obfuscating code

◮ Face-to-face communication is preferred: What if nobody(anymore) knows a certain information?

Page 11: Documentation for Program Comprehension in Agile Software Development

Why supporting Program Comprehension by

documentation?

Agile impedes Program Comprehension

◮ Continuous refactoring

◮ Experienced team for initial development, less experiencedteam for maintenance

◮ Unrefactorable obfuscating code

◮ Face-to-face communication is preferred: What if nobody(anymore) knows a certain information?

Page 12: Documentation for Program Comprehension in Agile Software Development

Goal

Documenting particularly for the support of ProgramComprehension without impeding agility

→ requirements for that documentation...

Page 13: Documentation for Program Comprehension in Agile Software Development

Low-level context

Documentation has to be attached to the software indevelopment at a low-level context (source code)

Rationale

◮ Program Comprehension is a matter of programming

◮ Meeting ”the code is the documentation”

◮ Agile itself ”lives” at a low-level context (agile practices)

Page 14: Documentation for Program Comprehension in Agile Software Development

Low-level context

Documentation has to be attached to the software indevelopment at a low-level context (source code)

Rationale

◮ Program Comprehension is a matter of programming

◮ Meeting ”the code is the documentation”

◮ Agile itself ”lives” at a low-level context (agile practices)

Page 15: Documentation for Program Comprehension in Agile Software Development

Low-level context

Documentation has to be attached to the software indevelopment at a low-level context (source code)

Rationale

◮ Program Comprehension is a matter of programming

◮ Meeting ”the code is the documentation”

◮ Agile itself ”lives” at a low-level context (agile practices)

Page 16: Documentation for Program Comprehension in Agile Software Development

Low-level context

Documentation has to be attached to the software indevelopment at a low-level context (source code)

Rationale

◮ Program Comprehension is a matter of programming

◮ Meeting ”the code is the documentation”

◮ Agile itself ”lives” at a low-level context (agile practices)

Page 17: Documentation for Program Comprehension in Agile Software Development

High-level benefit

From the low-level documentation a higher-leveldocumentation (artifact) has to be extracted such that itadds directly a benefit for other involved stakeholders:

1. Progress of software development is made moretransparent

2. Improved quality of developed software product /additional value

Page 18: Documentation for Program Comprehension in Agile Software Development

High-level benefit

From the low-level documentation a higher-leveldocumentation (artifact) has to be extracted such that itadds directly a benefit for other involved stakeholders:

1. Progress of software development is made moretransparent

2. Improved quality of developed software product /additional value

Page 19: Documentation for Program Comprehension in Agile Software Development

High-level benefit

From the low-level documentation a higher-leveldocumentation (artifact) has to be extracted such that itadds directly a benefit for other involved stakeholders:

1. Progress of software development is made moretransparent

2. Improved quality of developed software product /additional value

Page 20: Documentation for Program Comprehension in Agile Software Development

High-level benefit

Rationale

◮ 1st type: agile principle ”working software is the primarymeasure of progress”

◮ 2nd type: agile principle ”continuous attention to technicalexcellence and good design enhances agility”

◮ Such a direct benefit – obtained by the low-leveldocumentation – helps a developer to justify the effort for(continually) documenting at a low level

Page 21: Documentation for Program Comprehension in Agile Software Development

High-level benefit

Rationale

◮ 1st type: agile principle ”working software is the primarymeasure of progress”

◮ 2nd type: agile principle ”continuous attention to technicalexcellence and good design enhances agility”

◮ Such a direct benefit – obtained by the low-leveldocumentation – helps a developer to justify the effort for(continually) documenting at a low level

Page 22: Documentation for Program Comprehension in Agile Software Development

High-level benefit

Rationale

◮ 1st type: agile principle ”working software is the primarymeasure of progress”

◮ 2nd type: agile principle ”continuous attention to technicalexcellence and good design enhances agility”

◮ Such a direct benefit – obtained by the low-leveldocumentation – helps a developer to justify the effort for(continually) documenting at a low level

Page 23: Documentation for Program Comprehension in Agile Software Development

No separate artifact

A documentation for supporting Program Comprehensionmust not be explicitly produced, as it is not explicitlyrequested (by the customer)

Rationale

◮ Agile principle: ”simplicity – the art of maximizing theamount of work not done – is essential”

◮ Overdoing low-level documentation in favor of thesubsequently extracted high-level documentation artifact isnot necessary

Page 24: Documentation for Program Comprehension in Agile Software Development

No separate artifact

A documentation for supporting Program Comprehensionmust not be explicitly produced, as it is not explicitlyrequested (by the customer)

Rationale

◮ Agile principle: ”simplicity – the art of maximizing theamount of work not done – is essential”

◮ Overdoing low-level documentation in favor of thesubsequently extracted high-level documentation artifact isnot necessary

Page 25: Documentation for Program Comprehension in Agile Software Development

No separate artifact

A documentation for supporting Program Comprehensionmust not be explicitly produced, as it is not explicitlyrequested (by the customer)

Rationale

◮ Agile principle: ”simplicity – the art of maximizing theamount of work not done – is essential”

◮ Overdoing low-level documentation in favor of thesubsequently extracted high-level documentation artifact isnot necessary

Page 26: Documentation for Program Comprehension in Agile Software Development

Primary purpose

A documentation for supporting Program Comprehensionhas to serve primarily that purpose

Rationale

◮ A specific purpose is needed as a starting point, because”documentation” is too broad

◮ Alternatively presuming particular documentation artifactsfrom software development process violates generality

Page 27: Documentation for Program Comprehension in Agile Software Development

Primary purpose

A documentation for supporting Program Comprehensionhas to serve primarily that purpose

Rationale

◮ A specific purpose is needed as a starting point, because”documentation” is too broad

◮ Alternatively presuming particular documentation artifactsfrom software development process violates generality

Page 28: Documentation for Program Comprehension in Agile Software Development

Primary purpose

A documentation for supporting Program Comprehensionhas to serve primarily that purpose

Rationale

◮ A specific purpose is needed as a starting point, because”documentation” is too broad

◮ Alternatively presuming particular documentation artifactsfrom software development process violates generality

Page 29: Documentation for Program Comprehension in Agile Software Development

How a concrete solution could look like?

An exemplary documentation technique meeting all therequirements:

Code documentation based on Design Decision Rationales

http://www.infoq.com/articles/decision-rationales-program-comprehension