the live source agile experiment

Post on 28-Oct-2014

15 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

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

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

alline.oliveira@gmail.com

joonspoon@joonspoon.com

http://www.slideshare.net/allineoliveira/source-agileexperiment

top related