Continuous Improvement in PHP Projects - PHP UK Conference 2011

Preview:

DESCRIPTION

 

Citation preview

© 2011 Mayflower GmbH

Thorsten Rinne I 25th February 2011, London, UK

Continuous Improvement in PHP Projects

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

Team LeadScrum MasterHead of Open Source Labs

@ThorstenRinne2

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

Who are you?

3

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

Continuous Integration?

4

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

Continuous Inspection?

5

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

Continuous Delivery?

6

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/

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

Look at this real life example...

8

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

1966: This was not a goal.9

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

2010: This was a goal.10

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

We are developers.

We are not perfect.

We‘re not politicians.

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

„Continuous Improvement is better than delayed perfection.“

Mark Twain

12

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

What exactly isContinuous Improvement?

13

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

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

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

Continuous Improvement~

KAIZEN

16

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

KAI=

Change

ZEN=

Good

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

Attention!

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

Your Management needs a will for changes!

19

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

You need 3 steps for Continuous Improvement.

20

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

What are we trying to accomplish?

21

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

How will we know that a change is an improvement?

22

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

What changes will result in improvements?

23

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

Plan

Act Check

Do

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

PLAN:How should it be?

25

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

Plan

Act Check

Do

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

DO:What and how do we do it?

27

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

Plan

Act Check

Do

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

CHECK:What did we achieve?

29

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

Plan

Act Check

Do

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

ACT:What else do we have to do?

31

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

Plan

Act Check

Do

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

So, how to integrate Continuous Improvement

in your daily work?

33

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

It‘s

!

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

SCRUM

35

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

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

Extreme Programming

37

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

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

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

Agile methods are about working in iteratons.

40

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

Conclusion:Combine agile methods!

41

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

Scrum + XP + Continuous Improvement

42

EPIC WIN

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

Common problemsin PHP projects

43

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

Code Aging44

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

Technical Debt

45

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.

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

Now: The slide for your management.

47

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!

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

So please pay back your technical debt!

49

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

Always refactor your codebase!

50

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

PHP Tool Support

51

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.

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

But don‘t tell that Sebastian!

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

Jenkins CI Server

54

Template for Jenkins Jobs for PHP Projects

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

http://jenkins-php.org

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

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

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

PHP_CodeSniffer

58

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

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

Why do we need PHPMD?

60

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

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>

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>

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

PHP_CodeBrowser

64

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

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

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

PHP_CodeBrowserpresentation

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

Cinder

68

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

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

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

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

How to install Cinder?

72

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

How to install Cinder?

73

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

How to install Cinder?

74

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

How to install Cinder?

75

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

Cinderpresentation

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

How to get these tools?

77

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

phpmd.orggithub.com/mayflowergmbh

phpunit.deopensource.mayflower.de

jenkins-php.org

78

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

How to use that tools?

79

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

Set up a continuous integration server!

80

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

Use the artifacts of the PHP QA Tools!

81

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

Take some time for refactoring in every sprint.

82

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

Questions?

83

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

© 2011 Mayflower GmbH

Contact Thorsten Rinnethorsten.rinne@mayflower.de+49 89 242054-31

Mayflower GmbHMannhardtstr. 680538 MünchenGermany

Recommended