the live source agile experiment

22
The Live Source Code Experiment an AGILE TOOLKIT Plus an experimental tool that shows live code some respect! Alline Watkins & June Clarke

Upload: alline-oliveira

Post on 28-Oct-2014

15 views

Category:

Technology


0 download

DESCRIPTION

Source Agile is an Agile Toolkit 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 Live Source Agile do the rest.

TRANSCRIPT

Page 1: 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

Page 2: The Live Source Agile Experiment

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.

Page 3: The Live Source Agile Experiment

The Hypotheses

Source Code as Live Documentation

Source Code as Communication Channel

Source Code as Planning Tool

Source Code as Software Metrics

?

???

?

Page 4: The Live Source Agile Experiment

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

Page 5: The Live Source Agile Experiment

UBIQUITOUS LANGUAGE

&

DECOUPLING

VERY IMPORTANT:

Page 6: The Live Source Agile Experiment

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.)

Page 7: The Live Source Agile Experiment

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)

Page 8: The Live Source Agile Experiment

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

Page 9: The Live Source Agile Experiment

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

Page 10: The Live Source Agile Experiment

Where this fits with Agile

Agile manifesto: Working software over comprehensive documentation

Values: transparency & unity

XP Practices:

feedback, pairing, refactoring, ...

Page 11: The Live Source Agile Experiment

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!

Page 12: The Live Source Agile Experiment

The Live Source Code

an Agile Experiment

The Toolkit:

Page 13: The Live Source Agile Experiment

http://sourceagile.appspot.com

Page 14: The Live Source Agile Experiment

Loading your source code inside the Toolkit

Page 15: The Live Source Agile Experiment

Showing the source code in an easy-to-read way

Page 16: The Live Source Agile Experiment

Offering a Communication Channel

Page 17: The Live Source Agile Experiment

Unit Testing connections and helps

Page 18: The Live Source Agile Experiment

Planning Tool

Page 19: The Live Source Agile Experiment

Automatically generated Live Documentation

Page 20: The Live Source Agile Experiment

Software Metrics

Page 21: The Live Source Agile Experiment

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, [.....] .