Download - The Live Source Agile Experiment
The Live Source Code Experiment
an AGILE TOOLKITPlus an experimental tool that shows
live code some respect!
Alline Watkins & June Clarke
Getting the most of your source code
Does your source code lack knowledge?
Is it a multiple lined mess that just doesn't make any sense to anyone, even possible you?
If you or one of your employees left work now, would others be able to make sense of it?
Source Agile is a new technology for your software, clarifying the darkness of programming into an easy to read, step by step summary of the content. Just program well and let Source Agile do the rest.
The Hypotheses
Source Code as Live Documentation
Source Code as Communication Channel
Source Code as Planning Tool
Source Code as Software Metrics
?
???
?
The advantages...
Faster communication
Less risk of miscommunication (bugs & bad features)
Knowledge of domain resides in codebase
Overhearing (sit together)
Code is easier to understand (maintainable, extensible)
Healthier code allows team to respond to change
UBIQUITOUS LANGUAGE
&
DECOUPLING
VERY IMPORTANT:
u·biq·ui·tous /yo3 oˈbikwətəs/Adjective: Present, appearing, or found everywhere.
Synonyms: omnipresent
(Dictionary.com)
UBIQUITOUS LANGUAGE
. A language structured around the domain model and used by all team members to connect all the activities of the team with the
software. (Excerpted from Domain-Driven Design by Eric Evans)
. We understand each other. (Excerpted from The Art of Agile Development by James Shore and Shane Warden, published by O'Reilly. Copyright © 2008 the authors. All rights reserved.)
NO
When User logs on with valid credentials, an empty panel is displayed. (from a Tic Tac Toe software example)
User Story Example:
YES
When Player logs on with valid credentials, an empty board game is displayed. (from a Tic Tac Toe game software example)
NO
. Integer i = new Integer();
. String char1 = new String();
. public class GameDAO() { }
. catch (Exception e)
Coding Examples:
YES
. String realMeaningOfMyString = new String();
. public class ScoreDataLoader() { }
. catch (Exception NotLoggedInException)
NO
. Ambiguities
. Inconsistencies
. Synonyms
. Abbreviations
YES
. Clarity
. Precision
. Reuse
. Full Names
Tree term2Rest(Tree t, int minprec) {List<Tree[]> savedOd = odStackSupply.elems;Tree[] odStack = newOdStack();List<Tokens[]> savedOp = opStackSupply.elems;Tokens[] opStack = newOpStack();// optimization, was odStack = new Tree[...]; opStack = new Tree[...];int top = 0;odStack[0] = t;int startPos = S.pos();Tokens topOp = ERROR;while (prec(S.token()) >= minprec) { opStack[top] = topOp; top++; topOp = S.token(); int pos = S.pos(); S.nextToken(); odStack[top] = topOp == INSTANCEOF ? type() : term3(); while (top > 0 && prec(topOp) >= prec(S.token())) {
odStack[top-1] = makeOp(pos, topOp, odStack[top-1],odStack[top]);
top--;topOp = opStack[top];
}}assert top == 0;t = odStack[0];
if (t.tag == Tree.PLUS) { StringBuffer buf = foldStrings(t); if (buf != null) {
t = F.at(startPos).Literal(TypeTags.CLASS, buf.toString()); }}
odStackSupply.elems = savedOd; // optimizationopStackSupply.elems = savedOp; // optimizationreturn t;
}
Class com.sun.tools.javac.parser.Parser;
REAL
WORLD
EXAMPLE
# Lines of Code = 2.454
Where this fits with Agile
Agile manifesto: Working software over comprehensive documentation
Values: transparency & unity
XP Practices:
feedback, pairing, refactoring, ...
One step further...
Create a medium that allows both stakeholders and programmers to work on code in a high-level manner.
Integrate user stories and tasking more tightly with codebase.
Let code rule!
The Live Source Code
an Agile Experiment
The Toolkit:
http://sourceagile.appspot.com
Loading your source code inside the Toolkit
Showing the source code in an easy-to-read way
Offering a Communication Channel
Unit Testing connections and helps
Planning Tool
Automatically generated Live Documentation
Software Metrics
What you get:
- keeps the intention of the project in mind
- higher quality work (published code is likely to be better)
- managers understand the repercussions of what they are asking for
- live documentation that is closer to a user manual than javadocs
- easier for programmers to argue for time to refactor, [.....] .
http://www.slideshare.net/allineoliveira/source-agileexperiment