Top Banner
GW SDAB | DEV TOOLS Hervé Vũ Roussel September, 12 th 2012 1
166
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: GW SDAB Dev Tools 2012

1

GW SDAB | DEV TOOLSHervé Vũ RousselSeptember, 12th 2012

Page 2: GW SDAB Dev Tools 2012

Point of views

Page 3: GW SDAB Dev Tools 2012

Ask as they come to you!

Questions?

Page 4: GW SDAB Dev Tools 2012

4

Agenda

SVN ANT JUnit Ticketing system

Page 5: GW SDAB Dev Tools 2012

ABOUT ME (VISUAL APPROXIMATION)

5

Page 6: GW SDAB Dev Tools 2012

France

Page 7: GW SDAB Dev Tools 2012

Vietnam

Page 8: GW SDAB Dev Tools 2012

Unusual name

Hervé Vũ Roussel

Page 9: GW SDAB Dev Tools 2012

Career choice

Page 10: GW SDAB Dev Tools 2012

Brain surgeon

Page 11: GW SDAB Dev Tools 2012

Engineer

Page 12: GW SDAB Dev Tools 2012

Astronaut

Page 13: GW SDAB Dev Tools 2012

B.S.,GWU

Page 14: GW SDAB Dev Tools 2012

Honors Scholarship

Page 15: GW SDAB Dev Tools 2012

Gelman Library

Page 16: GW SDAB Dev Tools 2012

CS department

Page 17: GW SDAB Dev Tools 2012

Civil Engineering department

Page 18: GW SDAB Dev Tools 2012

Weekends

Page 19: GW SDAB Dev Tools 2012

Web dev at French consulate

Page 20: GW SDAB Dev Tools 2012

M. Eng., Cornell University

Page 21: GW SDAB Dev Tools 2012

Going to classes

Page 22: GW SDAB Dev Tools 2012

Siemens Medical Solutions, 3.5k emp.

ME

Page 23: GW SDAB Dev Tools 2012

CA (Computer Associates), 15k emp.

ME

Page 24: GW SDAB Dev Tools 2012

Unstoppable

Page 25: GW SDAB Dev Tools 2012

Day 0 | Linked Senior

Page 26: GW SDAB Dev Tools 2012

Day 1 | Linked Senior

Page 27: GW SDAB Dev Tools 2012

Day 2 | Linked Senior

Page 28: GW SDAB Dev Tools 2012

Day 3 | Linked Senior

Page 29: GW SDAB Dev Tools 2012

Day 4 | Linked Senior

Page 30: GW SDAB Dev Tools 2012

Day 5 | Linked Senior

Page 31: GW SDAB Dev Tools 2012

Day 6 | Linked Senior

Page 32: GW SDAB Dev Tools 2012

Day 7 | Linked Senior

Page 33: GW SDAB Dev Tools 2012

Day 8: Happy seniors | Linked Senior

Page 34: GW SDAB Dev Tools 2012

Day 9: More happy seniors | Linked Senior

Page 35: GW SDAB Dev Tools 2012

Today | Linked Senior

Page 36: GW SDAB Dev Tools 2012

Office | Linked Senior

Page 37: GW SDAB Dev Tools 2012

Team | Linked Senior

ME

Page 38: GW SDAB Dev Tools 2012

More team | Linked Senior

Page 39: GW SDAB Dev Tools 2012

Amazing adventure | Linked Senior

Page 40: GW SDAB Dev Tools 2012

TEAM WORK

40

Page 41: GW SDAB Dev Tools 2012

School VS Real world

Page 42: GW SDAB Dev Tools 2012

Team size

Page 43: GW SDAB Dev Tools 2012

Team location

Page 44: GW SDAB Dev Tools 2012

Project life

Page 45: GW SDAB Dev Tools 2012

Complexity

Author
Waterfall / river
Page 46: GW SDAB Dev Tools 2012

Customers

Page 47: GW SDAB Dev Tools 2012

47

Page 48: GW SDAB Dev Tools 2012

48

SUBVERSION (SCM)

Page 49: GW SDAB Dev Tools 2012

49

Where will you store your SD code?

To: [email protected]:

2003-02-01-post-simha-pres.zip

Page 50: GW SDAB Dev Tools 2012

Storage

Page 51: GW SDAB Dev Tools 2012

Concurrent access

Page 52: GW SDAB Dev Tools 2012

Version tracking

Page 53: GW SDAB Dev Tools 2012

History

Page 54: GW SDAB Dev Tools 2012

54

Architecture

Page 55: GW SDAB Dev Tools 2012

55

Hands on | Project

Project: ZooZooPet Educational game for kids Web & Android version API team

Company

Page 56: GW SDAB Dev Tools 2012

56

Hands on 1 /3

Development stage Teams

Team #1: Make the Lion speak Team #2: Make the Tiger speak

Goal: 1.0 release

Page 57: GW SDAB Dev Tools 2012

57

Initial download: svn checkout

Page 58: GW SDAB Dev Tools 2012

Code

Page 59: GW SDAB Dev Tools 2012

59

Submit code: svn commit

Page 60: GW SDAB Dev Tools 2012

60

Submit code: svn commit

Page 61: GW SDAB Dev Tools 2012

61

Submit code commit

History view on repo

Page 62: GW SDAB Dev Tools 2012

svn log

Page 63: GW SDAB Dev Tools 2012

63

svn log [path]

com/linkedsenior

games

tic-tac-toe

sudoku

word-search

video audio

Page 64: GW SDAB Dev Tools 2012

svn diff

Page 65: GW SDAB Dev Tools 2012

svn diff

Page 66: GW SDAB Dev Tools 2012

What was I working on?

Page 67: GW SDAB Dev Tools 2012

67

Synchronize: svn update

Page 68: GW SDAB Dev Tools 2012

68

Page 69: GW SDAB Dev Tools 2012

69

2-way merge

Page 70: GW SDAB Dev Tools 2012

70

2-way merge GUI

Page 71: GW SDAB Dev Tools 2012

71

Page 72: GW SDAB Dev Tools 2012

72

SVN | Workflow

Synchronize• svn checkout• svn update

Work• svn add• svn mkdir• svn del

Review changes• svn diff• svn status• svn revert

Resolve (optional)• svn resolve• svn merge

Publish• svn commit

Page 73: GW SDAB Dev Tools 2012

73

Hands on 1/3 | Outcome

Page 74: GW SDAB Dev Tools 2012

74

ZooZooPet | Best game ever

1.0 released (1 billion download) Thinking about 2.0 features

More animals Team#2 assigned

Bug found in public release of 1.0!

Page 75: GW SDAB Dev Tools 2012

75

Hands on 2/3

1.0 released Bug #1 filed Bug fix on 1.0, release 1.1 2.0 release

Page 76: GW SDAB Dev Tools 2012

Release management

Page 77: GW SDAB Dev Tools 2012

Fix version 1.0 in the wild

Page 78: GW SDAB Dev Tools 2012

Tagging

Page 79: GW SDAB Dev Tools 2012

Tagging 1.0

Page 80: GW SDAB Dev Tools 2012

svn switch [rev] [path]

Page 81: GW SDAB Dev Tools 2012

Creeped up bug

Page 82: GW SDAB Dev Tools 2012

Time to switch revision

20 sec.

Page 83: GW SDAB Dev Tools 2012

Time to clean re-build app

30 sec.

Page 84: GW SDAB Dev Tools 2012

Time to find if bug exists

5 min.

Page 85: GW SDAB Dev Tools 2012

Wiping sweat

2 sec.

Page 86: GW SDAB Dev Tools 2012

Num of rev between v1.0 and v1.8

<-- 150 rev. -->

Page 87: GW SDAB Dev Tools 2012

Calculating…

(20+30+5*60) *

log2(150)

Page 88: GW SDAB Dev Tools 2012

Time to find guilty rev

42 min 6 sec

Page 89: GW SDAB Dev Tools 2012

Branching

Page 90: GW SDAB Dev Tools 2012

90

Hands on 2/3 | Outcome

Page 91: GW SDAB Dev Tools 2012

91

svn copy

Taggingsvn copy -r {rev} http://.../trunk http://.../branches/1.x

Branchingsvn copy -r {rev} http://.../trunk http://.../tags/1.0

Page 92: GW SDAB Dev Tools 2012

92

svn copy

ZooZooPet

trunk tags

1.0

branches

1.x

Page 93: GW SDAB Dev Tools 2012

93

Problem with evolution of code

Page 94: GW SDAB Dev Tools 2012

94

SVN: 3-way merge

Page 95: GW SDAB Dev Tools 2012

95

Best practices

What to version control? When to commit? What to say? Trunk policy

Page 96: GW SDAB Dev Tools 2012

96

Page 97: GW SDAB Dev Tools 2012

97

SUBVERSION (SCM)

Page 98: GW SDAB Dev Tools 2012

98

ANT (BUILD TOOL)

Page 99: GW SDAB Dev Tools 2012

Runnable

Page 100: GW SDAB Dev Tools 2012

Deliverable

Page 101: GW SDAB Dev Tools 2012

Release early, release often

Page 102: GW SDAB Dev Tools 2012

Versatile build

Page 103: GW SDAB Dev Tools 2012

Complex builds

Page 104: GW SDAB Dev Tools 2012

104

Overview

Scripting language XML based Written in Java

Page 105: GW SDAB Dev Tools 2012

105

Hands on 3/3

Write a build file for our application Follow instructions on SetupAnt wiki

page Follow instructions on HandsOn3 wiki

page

Page 106: GW SDAB Dev Tools 2012

106

Sample build file

Page 107: GW SDAB Dev Tools 2012

107

Target (order)

<target name="init">…<target name="compile" depends="init“…

<target name="dist" depends="compile“…

Page 108: GW SDAB Dev Tools 2012

108

Target (function body)

<target name="compile" depends="init" description="compile the source

" ><javac srcdir="${src}"

destdir="${build}"/></target>

Page 109: GW SDAB Dev Tools 2012

109

Some built-in ANT tasks (API)

<mkdir dir="${dist}/lib"/><delete dir="${dist}"/>

<javac srcdir="${src}" destdir="${build}"/>

<jar jarfile="${dist}/lib/MyProject-${DSTAMP}.jar" basedir="${build}"/>

Page 110: GW SDAB Dev Tools 2012

110

Variables

<property name=“compile.debug" value=“true"/>

<javac srcdir="src" destdir="build" debug="${compile.debug}" />

Page 111: GW SDAB Dev Tools 2012

111

Running

Page 112: GW SDAB Dev Tools 2012

Advanced ANT

Page 113: GW SDAB Dev Tools 2012

113

ANT (BUILD TOOL)

Page 114: GW SDAB Dev Tools 2012

114

JUNIT (TESTING FRAMEWORK)

Page 115: GW SDAB Dev Tools 2012

YAY!!

Page 116: GW SDAB Dev Tools 2012

WHY? | TESTING

Page 117: GW SDAB Dev Tools 2012

WHY? | TESTING

Page 118: GW SDAB Dev Tools 2012

118

What is it?| Test

Initial stateScenarioVerification

Page 119: GW SDAB Dev Tools 2012

What’s JUnit?

Page 120: GW SDAB Dev Tools 2012

120

JUnit sample code

@Test public void simpleAdd() {    

Money m12CHF= new Money(12, "CHF");     Money m14CHF= new Money(14, "CHF");    

Money expected= new Money(26, "CHF");     Money result= m12CHF.add(m14CHF);   

assertTrue(expected.equals(result));

}

Page 121: GW SDAB Dev Tools 2012

JUnit | Running

Page 122: GW SDAB Dev Tools 2012

JUnit | Reporting

Page 123: GW SDAB Dev Tools 2012

123

Test driven development

1. Create a new test

2. Run test

3. Code

4. Repeat steps 2 & 3 until test

pass.

Page 124: GW SDAB Dev Tools 2012

124

TDD example #1

TicTacToe t = new TicTacToe();

t.makeMove(Position.TOP_LEFT);t.makeMove(Position.TOP_RIGHT);t.makeMove(Position.MIDDLE_LEFT);t.makeMove(Position.MIDDLE_RIGHT);

t.makeMove(Position.BOTTOM_LEFT);

assertTrue(t.getWinnerId(), 1);

Page 125: GW SDAB Dev Tools 2012

125

TDD example #2

TicTacToe t = new TicTacToe("John", "Jim");

t.set(Token.X, 0, 0); t.set(Token.Y, 2, 0); t.set(Token.X, 0, 1); t.set(Token.Y, 2, 1);

t.set(Token.X, 0, 2);

assertEquals(t.getWinner(), "John");

Page 126: GW SDAB Dev Tools 2012

Test as living documentation

Page 127: GW SDAB Dev Tools 2012

127

Page 128: GW SDAB Dev Tools 2012

Bust or Budget

Page 129: GW SDAB Dev Tools 2012

Bust or Budget

Page 130: GW SDAB Dev Tools 2012

Bust or Budget

Page 131: GW SDAB Dev Tools 2012

Bust or Budget

Page 132: GW SDAB Dev Tools 2012

Bust or Budget

Page 133: GW SDAB Dev Tools 2012

Bust or Budget

Page 134: GW SDAB Dev Tools 2012

Bust or Budget

Page 135: GW SDAB Dev Tools 2012

Bust or Budget

Page 136: GW SDAB Dev Tools 2012

Bust or Budget

Page 137: GW SDAB Dev Tools 2012

Bust or Budget

Page 138: GW SDAB Dev Tools 2012

138

Bust or Budget game rule

class BustOrBudgetGameTest { @Test void itShouldEndWhenThereIsOnlyOnePlayingTeam() { 

// Given ... bobGameDriver.startGame(team1, team2); // ... // When ... bobGameDriver.endTurn(team2, true); assert bobGameDriver.teamInPlay.size == 1; // Thenassert bobGameDriver.matchOver == true;

} }

Page 139: GW SDAB Dev Tools 2012

139

Poll: When to run tests?

1. Before a major deadline2. After major code change3. When Prof. Simha looks over your

shoulder4. When Prof. Parmer  looks over

your shoulder5. All of the above6. None of the above

Page 140: GW SDAB Dev Tools 2012

Fixing a bug

Page 141: GW SDAB Dev Tools 2012

Finding the culprit

Page 142: GW SDAB Dev Tools 2012

7 stages of debugging

Page 143: GW SDAB Dev Tools 2012

StageI: Denial

println “Hello world :)”

Page 144: GW SDAB Dev Tools 2012

Stage II: Acceptance

println “Before call”println “After call”

Page 145: GW SDAB Dev Tools 2012

Stage III: Depression

println “test”println “bla”println “here”

Page 146: GW SDAB Dev Tools 2012

Stage IV: Acceptance

println “1”println “2”

Page 147: GW SDAB Dev Tools 2012

Stage V: Fatigue

println “a”println “aa”println “aaa”

Page 148: GW SDAB Dev Tools 2012

Stage VI: Anger

println “!)(@&#$!!!”

Page 149: GW SDAB Dev Tools 2012

Stage VII: Despair

println “why”println “god”println “oh”println “why”

Page 150: GW SDAB Dev Tools 2012

Deliverance

Page 151: GW SDAB Dev Tools 2012

The bottleneck

Page 152: GW SDAB Dev Tools 2012

When to test?

Page 153: GW SDAB Dev Tools 2012

Rethinking testing

Page 154: GW SDAB Dev Tools 2012

Build tools | Continuous integration

Page 155: GW SDAB Dev Tools 2012

155

Build tools | CI Report

Page 156: GW SDAB Dev Tools 2012

156

JUNIT (TESTING FRAMEWORK)

Page 157: GW SDAB Dev Tools 2012

157

TICKETING SYSTEM

Page 158: GW SDAB Dev Tools 2012

Bug submission

Page 159: GW SDAB Dev Tools 2012

Bug lifecycle

Page 160: GW SDAB Dev Tools 2012

Bug search

Page 161: GW SDAB Dev Tools 2012

Organization tool

Page 162: GW SDAB Dev Tools 2012

Collaboration tool

Page 163: GW SDAB Dev Tools 2012

Context | Ticket

Page 164: GW SDAB Dev Tools 2012

Velocity

Page 165: GW SDAB Dev Tools 2012

165

TICKETING SYSTEM

Page 166: GW SDAB Dev Tools 2012

166

[email protected]

LINKEDIN.COM / IN / HROUSSEL