continuous improvement in php projects - php uk conference 2011

84
© 2011 Mayflower GmbH Thorsten Rinne I 25th February 2011, London, UK Continuous Improvement in PHP Projects

Upload: mayflower-gmbh

Post on 01-Nov-2014

5.003 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Continuous Improvement in PHP Projects - PHP UK Conference 2011

© 2011 Mayflower GmbH

Thorsten Rinne I 25th February 2011, London, UK

Continuous Improvement in PHP Projects

Page 2: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Team LeadScrum MasterHead of Open Source Labs

@ThorstenRinne2

Page 3: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Who are you?

3

Page 4: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Continuous Integration?

4

Page 5: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Continuous Inspection?

5

Page 6: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Continuous Delivery?

6

Page 7: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Why do we need Continuous Improvement?

7

http://www.flickr.com/photos/nataliaromay/3217596831/

Page 8: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Look at this real life example...

8

Page 9: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

1966: This was not a goal.9

Page 10: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

2010: This was a goal.10

Page 11: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

We are developers.

We are not perfect.

We‘re not politicians.

Page 12: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

„Continuous Improvement is better than delayed perfection.“

Mark Twain

12

Page 13: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

What exactly isContinuous Improvement?

13

Page 14: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

„A continuous improvment process is an ongoing effort to improve products, services or processes. These efforts seek incremental improvment over

time or breakthrough improvement all at once.“

14

Page 15: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 15

Page 16: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Continuous Improvement~

KAIZEN

16

Page 17: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 17

KAI=

Change

ZEN=

Good

Page 18: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 18

Attention!

Page 19: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Your Management needs a will for changes!

19

Page 20: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

You need 3 steps for Continuous Improvement.

20

Page 21: Continuous Improvement in PHP Projects - PHP UK Conference 2011

1Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

What are we trying to accomplish?

21

Page 22: Continuous Improvement in PHP Projects - PHP UK Conference 2011

2Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

How will we know that a change is an improvement?

22

Page 23: Continuous Improvement in PHP Projects - PHP UK Conference 2011

3Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

What changes will result in improvements?

23

Page 24: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 24

Plan

Act Check

Do

Page 25: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

PLAN:How should it be?

25

Page 26: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 26

Plan

Act Check

Do

Page 27: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

DO:What and how do we do it?

27

Page 28: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 28

Plan

Act Check

Do

Page 29: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

CHECK:What did we achieve?

29

Page 30: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 30

Plan

Act Check

Do

Page 31: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

ACT:What else do we have to do?

31

Page 32: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 32

Plan

Act Check

Do

Page 33: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

So, how to integrate Continuous Improvement

in your daily work?

33

Page 34: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 34

It‘s

!

Page 35: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

SCRUM

35

Page 36: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

SCRUM

CancelGift wrap

Return

Sprint2 weeks

Return

Sprint goal

Sprint backlog

Potentially shippableproduct increment

Productbacklog

CS fixesGift wrapCS fixes

Cancel

24 hours

36

Page 37: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Extreme Programming

37

Page 38: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 38

Page 39: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 39

Page 40: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Agile methods are about working in iteratons.

40

Page 41: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Conclusion:Combine agile methods!

41

Page 42: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Scrum + XP + Continuous Improvement

42

EPIC WIN

Page 43: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Common problemsin PHP projects

43

Page 44: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Code Aging44

Page 45: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Technical Debt

45

Page 46: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

We can do things quick and dirty.

46

The dirty way leads to technical debt.

This can kill a software.

Page 47: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Now: The slide for your management.

47

Page 48: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 48

Benefits per change request

Costs per change request

rising frequency

DEAD END!

Page 49: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

So please pay back your technical debt!

49

Page 50: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Always refactor your codebase!

50

Page 51: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

PHP Tool Support

51

Page 52: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

You need a continuous integration server.

52

Even if you don‘t do unittests.

Page 53: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 53

But don‘t tell that Sebastian!

Page 54: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Jenkins CI Server

54

Page 55: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Template for Jenkins Jobs for PHP Projects

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 55

http://jenkins-php.org

Page 56: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 56

Page 57: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 57

$ pear channel-discover pear.pdepend.org$ pear channel-discover pear.phpmd.org$ pear channel-discover pear.phpunit.de$ pear channel-discover components.ez.no$ pear channel-discover pear.symfony-project.com

$ pear install pdepend/PHP_Depend$ pear install phpmd/PHP_PMD$ pear install phpunit/phpcpd$ pear install phpunit/phploc$ pear install PHPDocumentor$ pear install PHP_CodeSniffer$ pear install --alldeps phpunit/PHP_CodeBrowser$ pear install --alldeps phpunit/PHPUnit

Page 58: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

PHP_CodeSniffer

58

Page 59: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 59

Page 60: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Why do we need PHPMD?

60

Page 61: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

How does PHPMD work?

61

<?phpprint "Hello, world!";?>

PHP_Depends scans your code

Page 62: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

How does PHPMD work?

62

PHPMD scans the report ...

<?xml version="1.0" encoding="UTF-8"?><PDepend> <Packages> <Package name="PHP_CodeBrowser"> <Stats> <TotalClasses>10</TotalClasses> <ConcreteClasses>9</ConcreteClasses> ...</PDepend>

Page 63: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

How does PHPMD work?

63

<?xml version="1.0" encoding="UTF-8" ?><pmd version="0.2.7" timestamp="2010-10-28T16:27:21+02:00"> <file name="/Users/thorsten/htdocs/PHP_CodeBrowser/src/CLIController.php"> <violation beginline="201" endline="275" rule="CyclomaticComplexity" ruleset="Code Size Rules" package="PHP_CodeBrowser" externalInfoUrl="http://phpmd.org/rules/codesize.html#cyclomaticcomplexity" class="CbCLIController" method="run" priority="3"> The method run() has a Cyclomatic Complexity of 10. </violation>

...</pmd>

Page 64: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

PHP_CodeBrowser

64

Page 65: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

What is PHP_CodeBrowser?

65

I a code browser :-)

I syntax highlighting for PHP files

I colored error sections found by PHP QA tools like•PHPUnit

•phpcpd

•PHP_CodeSniffer•Code Coverage

•PHPMD

Page 66: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

How to get PHP_CodeBrowser?

I Git repository:

http://github.com/mayflowergmbh/PHP_CodeBrowser

I PHPUnit PEAR channel:

66

$ pear channel-discover pear.phpunit.de$ pear install --alldeps phpunit/PHP_CodeBrowser

Page 67: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 67

PHP_CodeBrowserpresentation

Page 68: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Cinder

68

Page 69: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Why do we need Cinder?

69

I Integrate feedback directly

•static code analysis

•coding style

•unittests results

I Decrease number of tools

I Based on existing artifacts from Continuous Integration

I Conform with IDE usabiliy guidelines

Page 70: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Cinder Features

I Eclipse plugin

•Eclipse can be used for many languages

•Well documentated plugin infrastructure

I Reads Hudson or phpUnderControl XML data

I Aggregates findings by the CI system

I Language of the project doesn‘t matter

I Periodic updates of input data

70

Page 71: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

How does Cinder work?

71

DeveloperPC withEclipse

Continuous Integration

Server

periodically request from Cinder plugin

XML CI data from CI server

Page 72: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

How to install Cinder?

72

Page 73: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

How to install Cinder?

73

Page 74: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

How to install Cinder?

74

Page 75: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

How to install Cinder?

75

Page 76: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 76

Cinderpresentation

Page 77: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

How to get these tools?

77

Page 78: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

phpmd.orggithub.com/mayflowergmbh

phpunit.deopensource.mayflower.de

jenkins-php.org

78

Page 79: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

How to use that tools?

79

Page 80: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Set up a continuous integration server!

80

Page 81: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Use the artifacts of the PHP QA Tools!

81

Page 82: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Take some time for refactoring in every sprint.

82

Page 83: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I

Questions?

83

Page 84: Continuous Improvement in PHP Projects - PHP UK Conference 2011

Gràcies!Thank you very much for your attention!

© 2011 Mayflower GmbH

Contact Thorsten [email protected]+49 89 242054-31

Mayflower GmbHMannhardtstr. 680538 MünchenGermany