8. Look at this real life
example...
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 8
9. 1966: This was not a goal.
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 9
10. 2010: This was a goal.
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 10
11. We are developers.
We are not perfect.
We‘re not politicians.
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I
12. „Continuous Improvement is better
than delayed perfection.“
Mark Twain
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 12
13. What exactly is
Continuous Improvement?
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 13
14. „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.“
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 14
42. Scrum + XP + Continuous Improvement
EPIC WIN Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 42
43. Common problems
in PHP projects
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 43
44. Code Aging
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 44
45. Technical Debt
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 45
46. We can do things quick and dirty.
The dirty way leads to technical debt.
This can kill a software.
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 46
47. Now: The slide for your
management.
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 47
48. Costs per change request
rising frequency
DEAD END!
Benefits per change request
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 48
49. So please pay back your
technical debt!
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 49
50. Always refactor your
codebase!
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 50
51. PHP Tool Support
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 51
52. You need a continuous
integration server.
Even if you don‘t do
unittests.
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 52
53. But don‘t tell that Sebastian!
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 53
54. Jenkins CI Server
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 54
55. Template for Jenkins Jobs for PHP Projects
http://jenkins-php.org
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 55
60. Why do we need PHPMD?
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 60
61. How does PHPMD work?
<?php
print "Hello, world!"; PHP_Depends scans your code
?>
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 61
62. How does PHPMD work?
<?xml version="1.0" encoding="UTF-8"?>
<PDepend>
<Packages>
<Package name="PHP_CodeBrowser">
<Stats>
<TotalClasses>10</TotalClasses>
<ConcreteClasses>9</ConcreteClasses>
...
</PDepend>
PHPMD scans the report ...
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 62
63. How does PHPMD work?
<?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 63
64. PHP_CodeBrowser
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 64
65. What is PHP_CodeBrowser?
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 65
66. How to get PHP_CodeBrowser?
I Git repository:
http://github.com/mayflowergmbh/PHP_CodeBrowser
I PHPUnit PEAR channel:
$ pear channel-discover pear.phpunit.de
$ pear install --alldeps phpunit/PHP_CodeBrowser
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 66
68. Cinder
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 68
69. Why do we need Cinder?
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 69
70. 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
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 70
71. How does Cinder work?
periodically request from Cinder plugin
Developer Continuous
PC with Integration
Eclipse Server
XML CI data from CI server
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 71
72. How to install Cinder?
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 72
73. How to install Cinder?
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 73
74. How to install Cinder?
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 74
75. How to install Cinder?
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 75
76. Cinder
presentation
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 76
77. How to get these tools?
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 77
78. phpmd.org
github.com/mayflowergmbh
phpunit.de
opensource.mayflower.de
jenkins-php.org
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 78
79. How to use that tools?
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 79
80. Set up a continuous
integration server!
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 80
81. Use the artifacts of the PHP
QA Tools!
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 81
82. Take some time for
refactoring in every sprint.
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 82
83. Questions?
Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 83