by Brad Appleton,
Presented August 2009 at at Agile 2009 Conference; Chicago, IL USA
What tools and capabilities are necessary to apply Agile development concepts+practices (such as refactoring, TDD, CI, etc.) to all knowledge-artifacts? (not just source-code).
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
WANTED: Seeking Single Agile Knowledge Development Tool-set
1. Chicago, USA
August 24-28, 2009
WANTED: Seeking Single Agile
Knowledge Development Tool-set
by Brad Appleton
2. Chicago, USA
August 24-28, 2009
WANTED: Desperately Seeking Single Agile
Knowledge Development Tool-setBrad Appleton 2
Presenter Information
Brad Appleton
22 years in industry – last 15 w/large Telecom.
Leading software development, CM & ALM solution
architecture
Leading adoption & scaling of Agile development for
large organization since 2000.
Co-author: Software Configuration Management
Patterns (Addison-Wesley 2002), Agile CM Environments
(column in CM Journal), Reviewer for The Agile Journal
3. Chicago, USA
August 24-28, 2009
WANTED: Desperately Seeking Single Agile
Knowledge Development Tool-setBrad Appleton 3
What to expect in this talk?
More questions & challenges than answers
I don’t have all the answers here!
Just a perspective to share about “knowledge creation”
for software development and supporting tools
Lots of “what if” and “why can’t I” questions
Borne out of a lot of experience in software development
for projects of ALL shapes and sizes and …
Extensive experience/practice in CM & ALM processes,
tools and their patterns of usage & design
Discussion/brainstorming of possible solutions
Especially from tool vendors/developers
4. Chicago, USA
August 24-28, 2009
WANTED: Desperately Seeking Single Agile
Knowledge Development Tool-setBrad Appleton 4
Making Software == Creating Knowledge
“The hard part about creating software systems is
not creating them, it is in acquiring the knowledge
necessary to create them (correctly).
Therefore:
Software is not a product, it is a medium for storing
executable knowledge!
We do not ‘build systems’—we acquire knowledge.
The systems we ship to our customers are actually the
byproducts of the real activity, which is to learn
The real product is the knowledge that is in the systems we
ship to the customer.”
— Phil Armour, Software is NOT a Product (CACM, August 2000)
5. Chicago, USA
August 24-28, 2009
WANTED: Desperately Seeking Single Agile
Knowledge Development Tool-setBrad Appleton 5
Implications
The previous assertion implies that …
All artifacts (specs, designs/models, code, tests) are
simply snapshots of our efforts to transcribe our
understanding of the system and of its development.
Each type of “artifact” is just a different form of
knowledge in a different format and level-of-detail.
Each artifact update/change embodies some new
discovery, learned via some interaction.
Software CM/ALM is therefore:
• the medium in which inter-related knowledge artifacts are
stored & maintained, and …
• the environment through which development changes and
collaborative learning must ultimately flow
6. Chicago, USA
August 24-28, 2009
WANTED: Desperately Seeking Single Agile
Knowledge Development Tool-setBrad Appleton 6
Knowledge Work / Activities
Types of Knowledge Work (All focused on meeting
needs, solving problems and managing knowledge)
Software, Process and/Documentation (form of knowledge)
Development, Enhancement, Repair (points in the lifecycle)
Engineering, Problem Solving, Scientific Method
(approaches to the work)
Types of Knowledge Activities
Project Planning & Tracking
Requirements Development & Analysis
Design, Modeling & Implementation
Verification & Validation
Issue Management
7. Chicago, USA
August 24-28, 2009
WANTED: Desperately Seeking Single Agile
Knowledge Development Tool-setBrad Appleton 7
Knowledge Representation
• Types of Knowledge Representation
Traditional Code
Traditional Documents (Specs)
Formal Models
Test Cases
Change Requests (backlog-items and/or defect reports)
Hybrids (e.g. HTML, wiki pages, Mashups, Dashboards, Portals, ....)
Other usable types/formats:
• Build scripts & configuration info
• Build/test result reports
• Version control history/comments
• Online help & other supporting docs
8. Chicago, USA
August 24-28, 2009
WANTED: Desperately Seeking Single Agile
Knowledge Development Tool-setBrad Appleton 8
Agile Knowledge Development?
Shouldn’t Agile values, principles and techniques
apply to ALL the various forms and formats of
knowledge that the project must create &
deliver? (not just code)
Eliminating duplication and maximizing simplicity,
habitability & navigability applies to the organization of
non-code artifacts too
Writing “tests” that define what “done” means for non-
code artifacts
Continuously integrating (& validating) ALL types of
knowledge artifacts (not just code)
9. Chicago, USA
August 24-28, 2009
WANTED: Desperately Seeking Single Agile
Knowledge Development Tool-setBrad Appleton 9
Refactoring for non-code artifacts?
Think of Refactoring as …
• a process of simplifying and consolidating the collection
of knowledge and thoughts that we have attempted to
transfer into written specs/models/code making many
small, successive revisions focused on:
Preserving correctness (cf. "passes all the tests")
Removing redundancy (cf. "contains no duplication")
Revealing thoughts and intentions (cf. "expressly reveals all
our thoughts/intentions about the program")
And improving clarity and conciseness (cf. "minimizes the
number/size of classes & methods")
10. Chicago, USA
August 24-28, 2009
WANTED: Desperately Seeking Single Agile
Knowledge Development Tool-setBrad Appleton 10
Sound crazy? Think again!
Stated this way, refactoring EASILY applies to knowledge
that is transcribed and structured in the form of:
Requirements / Stories
Written Tests
Backlog items / requests
Wiki-pages?
Corresponding refactorings/patterns of clear & simple prose
have existed for centuries!
Don’t believe me? Look no further than books like Style: 10 Lessons
in Clarity & Grace (by Joseph Williams) or The Art of Styling
Sentences: 20 Patterns for Success
So, these basic rules of structure & simplicity are about organizing
many forms of knowledge (not just code)
11. Chicago, USA
August 24-28, 2009
WANTED: Desperately Seeking Single Agile
Knowledge Development Tool-setBrad Appleton 11
What about tests/integration?
A "test" is a way of capturing (and then validating) what it
means to be "done" for a particular "chunk" of the
document.
Ways that we do this ...
Structural patterns: templates, outlines, checklists
Content/message "tests": I am done with this section when the
reader understand how/that/when ...(key take-aways)
Spelling and grammar checks are like "compilation" and/or checking
for "smells"
Cross-reference (links) building & checking
Suggesting corrections, or alternative (shorter) phrases are kind of
like suggesting refactoring
Web 2.0 and XML give us things like semantic web and ontologies
whose structure can be automatically executed.
12. Chicago, USA
August 24-28, 2009
WANTED: Desperately Seeking Single Agile
Knowledge Development Tool-setBrad Appleton 12
Agile Doc Development?
Agile development of a document would be kind of like
outline format…
Initial, hi-level outline is like the backlog.
The user stories are the "key take-aways" you want the target
audience to retain
The initial topics in the outline get prioritized, and …
The hi-er priority topics get elaborated first, iterating in
recursive/hierarchical fashion.
Each time I elaborate more detail, I refactor the overall
structure.
My backlog grows into a hierarchically structured outline.
Unit-Tests are like the "tests" for a given (sub)section whereas
"feature tests" are whether or not the "key take-away" or
"learning objective" has been realized.
13. Chicago, USA
August 24-28, 2009
WANTED: Desperately Seeking Single Agile
Knowledge Development Tool-setBrad Appleton 13
Traceability?
• Testing == Traceability (Agile Style)
• Some tests we may write manually can't be easily
executed, so we instead do things like
"cannibalize" them. The original "test" doesn't stay in its original
form, it simply "evolves" into the text that satisfies the test
when developing training materials, we may have to write outlines,
highlights/summaries, learning objectives. These form the "tests"
Sometimes we write software documentation and the examples in
the text define test-cases whose expected inputs/outputs are written
in the text and must be verified via execution
• (in fact some people try to make their "tests" serve double-duty as
sample input/output in user-guides)
Cross-references and Wiki-like links are really just forms of
traceability
14. Chicago, USA
August 24-28, 2009
WANTED: Desperately Seeking Single Agile
Knowledge Development Tool-setBrad Appleton 14
Why Can’t We Do This Easily?
Why can’t we use the same basic tools (or
something darn close to it!)
Why can’t I have an Eclipse-like IDE for viewing and editing the
structure of a document (or requirements or backlog-items)
• E.g. as multiple pages in a wiki
Why can’t I easily to labeling/tagging or “task-based commit” of
multiple wiki-pages at a time? (or even branching?)
Why can’t I easily browse/refactor and navigating ALL the
knowledge of the system? (not just code, but stories, tests,
build/config data, CI reports, backlog, retrospective lessons)?
15. Chicago, USA
August 24-28, 2009
WANTED: Desperately Seeking Single Agile
Knowledge Development Tool-setBrad Appleton 15
What Tools CAN Do This?
• The following can do parts of it:
Eclipse, Confluence, Twiki, Mashups
FIT, Fitnesse, Contour
Doxygen / Javadoc
Trac / Agile-Trac?
Jira / Remedy
Jazz?
zAgile wikidsmart
Web 2.0 technologies like XML schema & ontologies
• Note the lack of basic version-control functionality (of
groups of elements – not just single items) in most of the
above – why is that?
16. Chicago, USA
August 24-28, 2009
WANTED: Desperately Seeking Single Agile
Knowledge Development Tool-setBrad Appleton 16
Is there a better way?
How to get the best of version control, Wiki/CMS and
issue/item management all together without too much
duplication/overlap and complexity?
zAgile comes close with wikidsmart that works on top of Jira and
Confluence
But missing version control capabilities like Subversion or Accurev
Capable of integrating with Eclipse
What about extending (Mash-Ups?) to use (or at least appear to use)
a single repository for all a project’s knowledge?
How many tools does it have to be?
If doneright, traceability comes practically for free with wiki
hyperlinks, automated event logging, and ubiquitous language with
Google-like Search!
17. Chicago, USA
August 24-28, 2009
Let’s Brainstorm & Discuss!
How would you do it?
What would you recommend?
18. Chicago, USA
August 24-28, 2009
WANTED: Desperately Seeking Single Agile
Knowledge Development Tool-setBrad Appleton 18
Conclusions?
• How did we do?
19. Chicago, USA
August 24-28, 2009
WANTED: Desperately Seeking Single Agile
Knowledge Development Tool-setBrad Appleton 19
Thank You!
Mahalo
XiexieYumboticSalamat
Arigato