SlideShare uma empresa Scribd logo
1 de 22
The Live Source Code
Experiment
an AGILE TOOLKIT
Plus 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 /yoo 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; // optimization
opStackSupply.elems = savedOp; // optimization
return 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,
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

Mais conteúdo relacionado

Mais de Alline Oliveira

Ubiquitous Language - Portugues
Ubiquitous Language - PortuguesUbiquitous Language - Portugues
Ubiquitous Language - PortuguesAlline Oliveira
 
Live Source - an Agile Toolkit
Live Source - an Agile ToolkitLive Source - an Agile Toolkit
Live Source - an Agile ToolkitAlline Oliveira
 
How to start with Google Web Toolkit
How to start with Google Web ToolkitHow to start with Google Web Toolkit
How to start with Google Web ToolkitAlline Oliveira
 

Mais de Alline Oliveira (6)

Ubiquitous Language - Portugues
Ubiquitous Language - PortuguesUbiquitous Language - Portugues
Ubiquitous Language - Portugues
 
Live Source - Brasil
Live Source - BrasilLive Source - Brasil
Live Source - Brasil
 
CrowdLoud SW DEMO
CrowdLoud SW DEMOCrowdLoud SW DEMO
CrowdLoud SW DEMO
 
Live Source - an Agile Toolkit
Live Source - an Agile ToolkitLive Source - an Agile Toolkit
Live Source - an Agile Toolkit
 
Ubiquitous Language
Ubiquitous LanguageUbiquitous Language
Ubiquitous Language
 
How to start with Google Web Toolkit
How to start with Google Web ToolkitHow to start with Google Web Toolkit
How to start with Google Web Toolkit
 

Último

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 

Último (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 

The Live Source Agile Experiment

  • 1. The Live Source Code Experiment an AGILE TOOLKIT Plus an experimental tool that shows live code some respect! Alline Watkins & June Clarke
  • 2. 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.
  • 3. The Hypotheses Source Code as Live Documentation Source Code as Communication Channel Source Code as Planning Tool Source Code as Software Metrics ? ? ? ? ?
  • 4. 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
  • 6. u·biq·ui·tous /yoo 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.)
  • 7. 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)
  • 8. 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
  • 9. 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; // optimization opStackSupply.elems = savedOp; // optimization return t; } Class com.sun.tools.javac.parser.Parser; REAL WORLD EXAMPLE # Lines of Code = 2.454
  • 10. Where this fits with Agile Agile manifesto: Working software over comprehensive documentation Values: transparency & unity XP Practices: feedback, pairing,
  • 11. 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!
  • 12. The Live Source Code an Agile Experiment The Toolkit:
  • 14. Loading your source code inside the Toolkit
  • 15. Showing the source code in an easy-to-read way
  • 21. 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, [.....] .

Notas do Editor

  1. Main problem in software is miscommunication
  2. Maintainability – classes and packages are named/grouped in a way that makes sense in the real world Agility improve - Precise Communication
  3. The common language is in the middle and not more of business language nor technical language Somewhere in between, not programmers completely conforming to biz language
  4. 2454 lines of code XX Methods
  5. c
  6. New communication channel This
  7. Edit class comments Helps managers to communicate with programmers Contextualize the conversation with the real code Helps
  8. Exposes the project classes If you write in Ubiquitous Language your code should be easy to read. Makes the managers familiarizes with what programmers are doing
  9. Exposes the project classes If you write in Ubiquitous Language your code should be easy to read. Makes the managers familiarizes with what programmers are doing
  10. Exposes the project classes If you write in Ubiquitous Language your code should be easy to read. Makes the managers familiarizes with what programmers are doing
  11. We understand each other Software development is by its nature a series of translations and compromises. What the end user wants, what the customer is willing to pay for, and what is technically feasible rarely combine to form a unified set of features. In this talk we will explore how an Agile team can work to understand each other better, in particular at the communication divide between stakeholders and developers. We will show you how to develop a domain-specific ubiquitous language, how to lessen the responsibility gap between managers and developers, and how to use your codebase as the central source for documentation.