2. Senior Developer / Team Lead
Head of Open Source Labs
@
MAYFLOWER GMBH
@ThorstenRinne
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 2
4. Continuous integration?
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 4
5. Continuous inspection?
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 5
6. Why do we need
continuous improvement?
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 6
7. „Continuous improvement
is better than delayed
perfection” - Mark Twain
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 7
8. What exactly is Continuous
improvement?
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 8
9. „A continuous improvement
process is an ongoing effort to
improve products, services, or
processes. These efforts can
seek "incremental" improvement
over time or "breakthrough"
improvement all at once.“
Wikipedia
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 9
14. Your Boss needs a will for
changes!
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 14
15. You need 3 steps for
Continuous Improvement.
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 15
16. 1
What are we trying to
accomplish?
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 16
17. 2
How will we know that a
change is an improvement?
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 17
18. 3
What changes will result in
improvements?
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 18
19. Plan Do
Act Check
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 19
20. PLAN:
How it should be?
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 20
21. Plan Do
Act Check
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 21
22. DO:
What and how do we do it?
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 22
23. Plan Do
Act Check
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 23
24. CHECK:
What did we achieve?
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 24
25. Plan Do
Act Check
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 25
26. ACT:
What else do we have to do?
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 26
27. Plan Do
Act Check
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 27
28. SCRUM
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 28
29. XP
Months
Release Plan
Iteration Plan Weeks
Acceptence Testing
Days
Standup Meeting
One day
Pair Negotiation
hours
Unit Test
seconds
Pair Programming
Code seconds
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 29
30. Conclusion:
Combine Scrum, XP and
Continuous Improvement
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 30
31. Common problems
in PHP projects
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 31
32. Code Aging
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 32
33. Technical Debt
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 33
34. „Shipping first time code is like going into
debt. A little debt speeds development so
long as it is paid back promptly with a
rewrite... The danger occurs when the debt
is not repaid. Every minute spent on not-
quite-right code counts as interest on that
debt. Entire engineering organizations can
be brought to a stand-still under the debt
load of an unconsolidated implementation,
object-oriented or otherwise.“
Ward Cunningham, 1992
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 34
35. Costs per Change Request
rising frequency
Dead end!
Benefit per Change Request
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 35
36. Always improve your
codebase!
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 36
37. PHP_CodeBrowser
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 37
38. PHP Tool Support
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 38
39. What is PHP_CodeBrowser?
I a code browser :-)
I syntax highlighting for PHP
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 12. Oktober 2010 I 39
40. How to get PHP_CodeBrowser?
I http://github.com/mayflowergmbh/PHP_CodeBrowser
I PHPUnit PEAR channel:
$ pear config-set preferred_state beta
$ pear channel-discover pear.phpunit.de
$ pear install --alldeps phpunit/PHP_CodeBrowser
I Current version: 0.9.0
I We‘ll release PHP_CodeBrowser 1.0 this month!
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 40
42. Cinder
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 42
43. Why Cinder?
I Integrate feedback directly
•static code analysis
•coding style
•unittests
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 12. Oktober 2010 I 43
44. Cinder Features
I Eclipse Plugin
•Eclipse can be used for many languages
•Well documentated plugin infrastructure
I Reads Hudson or CruiseControl XML data
I Aggregates findings by the CI system
I Language of the project doesn‘t matter
I Periodic updates of input data
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 44
45. How does Cinder work?
periodically request from Cinder
Developer Continuous
PC with Integration
Eclipse Server
CI data from CI server
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 45
46. How to install Cinder?
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 46
47. How to install Cinder?
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 47
48. How does Cinder look like?
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 48
49. Cinder presentation
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 49
50. Padawan
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 50
52. PHPMD
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 52
53. PHPMD features
I PHPMD looks for
•possible bugs
•suboptimal code
•overcomplicated expressions
•unused parameters, methods, properties
I Latest release: 0.2.7
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 53
54. How to get PHPMD?
I PHPMD PEAR channel
$ pear channel-discover pear.phpmd.org
$ pear channel-discover pear.pdepend.org
$ pear install --alldeps phpmd/PHP_PMD-alpha
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 54
55. How to use PHPMD?
univac:phpMyFAQ-2.7 thorsten$ phpmd phpmyfaq/inc/Link.php xml codesize
<?xml version="1.0" encoding="UTF-8" ?>
<pmd version="0.2.6" timestamp="2010-09-09T14:01:33+02:00">
<file name="/Users/thorsten/htdocs/phpMyFAQ-2.7/phpmyfaq/inc/Link.php">
<violation beginline="47" endline="627" rule="ExcessivePublicCount"
ruleset="Code Size Rules" package="PMF_Link" externalInfoUrl="http://
phpmd.org/rules/codesize.html#excessivepubliccount" class="PMF_Link"
priority="3">
This class has a bunch of public methods and attributes
</violation>
<violation beginline="47" endline="627" rule="TooManyMethods"
ruleset="Code Size Rules" package="PMF_Link" externalInfoUrl="http://
phpmd.org/rules/codesize.html#toomanymethods" class="PMF_Link"
priority="3">
This class has too many methods, consider refactoring it.
</violation>
...
</file>
</pmd>
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 55
56. Currently we‘re adding the
Padawan rules to PHPMD.
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 56
57. How to get these tools?
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 57
58. phpmd.org
github.com/mayflowergmbh
phpunit.de
opensource.mayflower.de
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 58
59. Questions?
Continuous Improvement in PHP projects I Mayflower GmbH I 12. Oktober 2010 I 59