SlideShare una empresa de Scribd logo
1 de 84
Descargar para leer sin conexión
Continuous Improvement in PHP Projects


Thorsten Rinne I 25th February 201 London, UK
                                  1,




                                                © 201 Mayflower GmbH
                                                     1
Team Lead
Scrum Master
Head of Open Source Labs

@ThorstenRinne
                           Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 2
Who are
 you?


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




             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 4
Continuous Inspection?




             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 5
Continuous Delivery?




            Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 6
http://www.flickr.com/photos/nataliaromay/3217596831/




               Why do we need
           Continuous Improvement?

                                                       Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 7
Look at this real life
    example...


             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 8
1966: This was not a goal.
                 Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 9
2010: This was a goal.
         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 10
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




                      Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 12
What exactly is
Continuous Improvement?


             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 13
„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
Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 15
Continuous Improvement
           ~
       KAIZEN

             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 16
KAI      ZEN
   =        =
Change     Good
         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 17
Attention!
      Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 18
Your Management needs a
     will for changes!


             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 19
You need 3 steps for
Continuous Improvement.



             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 20
1
What are we trying to
   accomplish?


            Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 21
2
 How will we know that a
change is an improvement?


              Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 22
3
What changes will result in
     improvements?


               Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 23
Plan    Do



Act    Check



       Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 24
PLAN:
How should it be?


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



Act    Check



       Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 26
DO:
What and how do we do it?


              Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 27
Plan    Do



Act    Check



       Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 28
CHECK:
What did we achieve?


            Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 29
Plan    Do



Act    Check



       Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 30
ACT:
What else do we have to do?


               Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 31
Plan    Do



Act    Check



       Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 32
So, how to integrate
Continuous Improvement
  in your daily work?


             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 33
I t‘s

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

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




                           Sprint
                           2 weeks
 Sprint goal
    Return
               Sprint
                                                             Potentially shippable
 Return
 Cancel        backlog
                                                             product increment
  Gift fixes
   CS wrap
Gift wrap
 Cancel        CS fixes
 Product
 backlog


                               Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 36
Extreme Programming




           Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 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
Agile methods are about
 working in iteratons.


             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 40
Conclusion:
Combine agile methods!


             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 41
Scrum + XP + Continuous Improvement
     EPIC WIN       Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 42
Common problems
 in PHP projects


         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 43
Code Aging
      Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 44
Technical Debt




         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 45
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
Now: The slide for your
   management.


             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 47
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
So please pay back your
     technical debt!


             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 49
Always refactor your
    codebase!


            Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 50
PHP Tool Support




          Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 51
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
But don‘t tell that Sebastian!
                 Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 53
Jenkins CI Server

          Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 54
Template for Jenkins Jobs for PHP Projects


       http://jenkins-php.org

                        Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 55
Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 56
$   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 57
PHP_CodeSniffer




         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 58
Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 59
Why do we need PHPMD?




            Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 60
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
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
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
PHP_CodeBrowser




         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 64
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
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
PHP_CodeBrowser
  presentation


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




     Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 68
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
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
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
How to install Cinder?




                         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 72
How to install Cinder?




                         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 73
How to install Cinder?




                         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 74
How to install Cinder?




                         Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 75
Cinder
presentation


        Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 76
How to get these tools?




             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 77
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
How to use that tools?



             Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 79
Set up a continuous
integration server!


           Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 80
Use the artifacts of the PHP
        QA Tools!


                Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 81
Take some time for
refactoring in every sprint.


                Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 82
Questions?




       Continuous Improvement in PHP Projects I   Mayflower GmbH I 25th February I 83
Gràcies!
Thank you very much for your attention!




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

          Mayflower GmbH
          Mannhardtstr. 6
          80538 München
          Germany



                                          © 201 Mayflower GmbH
                                               1

Más contenido relacionado

Similar a Continuous Improvement in PHP Projects - PHP UK Conference 2011

One Click Deployment with Jenkins - PHP Unconference 2011
One Click Deployment with Jenkins - PHP Unconference 2011One Click Deployment with Jenkins - PHP Unconference 2011
One Click Deployment with Jenkins - PHP Unconference 2011
Mayflower GmbH
 
One click deployment with Jenkins - PHP Munich
One click deployment with Jenkins - PHP MunichOne click deployment with Jenkins - PHP Munich
One click deployment with Jenkins - PHP Munich
Mayflower GmbH
 
Continuous Improvement in PHP projects - PBC10
Continuous Improvement in PHP projects - PBC10Continuous Improvement in PHP projects - PBC10
Continuous Improvement in PHP projects - PBC10
Mayflower GmbH
 
One Click Deployment with Jenkins
One Click Deployment with JenkinsOne Click Deployment with Jenkins
One Click Deployment with Jenkins
Mayflower GmbH
 
HTML5 for PHP Developers - DPC11
HTML5 for PHP Developers - DPC11HTML5 for PHP Developers - DPC11
HTML5 for PHP Developers - DPC11
Mayflower GmbH
 
HTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPCHTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPC
Mayflower GmbH
 
Youtube marketing lecture
Youtube marketing lectureYoutube marketing lecture
Youtube marketing lecture
SundayTimes123
 

Similar a Continuous Improvement in PHP Projects - PHP UK Conference 2011 (20)

One Click Deployment with Jenkins - PHP Unconference 2011
One Click Deployment with Jenkins - PHP Unconference 2011One Click Deployment with Jenkins - PHP Unconference 2011
One Click Deployment with Jenkins - PHP Unconference 2011
 
One click deployment with Jenkins - PHP Munich
One click deployment with Jenkins - PHP MunichOne click deployment with Jenkins - PHP Munich
One click deployment with Jenkins - PHP Munich
 
Continuous Improvement in PHP projects - PBC10
Continuous Improvement in PHP projects - PBC10Continuous Improvement in PHP projects - PBC10
Continuous Improvement in PHP projects - PBC10
 
One Click Deployment with Jenkins
One Click Deployment with JenkinsOne Click Deployment with Jenkins
One Click Deployment with Jenkins
 
HTML5 for PHP Developers - DPC11
HTML5 for PHP Developers - DPC11HTML5 for PHP Developers - DPC11
HTML5 for PHP Developers - DPC11
 
HTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPCHTML5 for PHP Developers - IPC
HTML5 for PHP Developers - IPC
 
HTML5 Workshop
HTML5 WorkshopHTML5 Workshop
HTML5 Workshop
 
One-Click Deployment with Jenkins
One-Click Deployment with JenkinsOne-Click Deployment with Jenkins
One-Click Deployment with Jenkins
 
Stilnest.com: Wie beste Magento-Shop-Performance für zufriedene Kunden sorgt
Stilnest.com: Wie beste Magento-Shop-Performance für zufriedene Kunden sorgtStilnest.com: Wie beste Magento-Shop-Performance für zufriedene Kunden sorgt
Stilnest.com: Wie beste Magento-Shop-Performance für zufriedene Kunden sorgt
 
Building Product After "Product-Market Fit"
Building Product After "Product-Market Fit"Building Product After "Product-Market Fit"
Building Product After "Product-Market Fit"
 
Improving your workflows and awareness in the team with tools
Improving your workflows and awareness in the team with toolsImproving your workflows and awareness in the team with tools
Improving your workflows and awareness in the team with tools
 
PixelCrayons: Hire India's Top PHP Developers
PixelCrayons: Hire India's Top PHP DevelopersPixelCrayons: Hire India's Top PHP Developers
PixelCrayons: Hire India's Top PHP Developers
 
Different Phases of ERP Implementation | OptiProERP
Different Phases of ERP Implementation | OptiProERP Different Phases of ERP Implementation | OptiProERP
Different Phases of ERP Implementation | OptiProERP
 
PixelCrayons: Hire PHP Developers (60% Cost Saving & 2X Faster Delivery)
PixelCrayons: Hire PHP Developers (60% Cost Saving & 2X Faster Delivery)PixelCrayons: Hire PHP Developers (60% Cost Saving & 2X Faster Delivery)
PixelCrayons: Hire PHP Developers (60% Cost Saving & 2X Faster Delivery)
 
continuousphp
continuousphpcontinuousphp
continuousphp
 
Top php development companies to outsource
Top php development companies to outsourceTop php development companies to outsource
Top php development companies to outsource
 
Dev ops don't be left behind
Dev ops   don't be left behindDev ops   don't be left behind
Dev ops don't be left behind
 
Youtube marketing lecture
Youtube marketing lectureYoutube marketing lecture
Youtube marketing lecture
 
Five Phases of SAP Internships - Wizcore
Five Phases of SAP Internships - Wizcore Five Phases of SAP Internships - Wizcore
Five Phases of SAP Internships - Wizcore
 
Ephox
EphoxEphox
Ephox
 

Más de Mayflower GmbH

Plugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debuggingPlugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debugging
Mayflower GmbH
 

Más de Mayflower GmbH (20)

Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
 
Why and what is go
Why and what is goWhy and what is go
Why and what is go
 
Agile Anti-Patterns
Agile Anti-PatternsAgile Anti-Patterns
Agile Anti-Patterns
 
JavaScript Days 2015: Security
JavaScript Days 2015: SecurityJavaScript Days 2015: Security
JavaScript Days 2015: Security
 
Vom Entwickler zur Führungskraft
Vom Entwickler zur FührungskraftVom Entwickler zur Führungskraft
Vom Entwickler zur Führungskraft
 
Produktive teams
Produktive teamsProduktive teams
Produktive teams
 
Salt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientSalt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native Client
 
Plugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debuggingPlugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debugging
 
Usability im web
Usability im webUsability im web
Usability im web
 
Rewrites überleben
Rewrites überlebenRewrites überleben
Rewrites überleben
 
JavaScript Security
JavaScript SecurityJavaScript Security
JavaScript Security
 
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
 
Responsive Webdesign
Responsive WebdesignResponsive Webdesign
Responsive Webdesign
 
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und AlloyNative Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
 
Pair Programming Mythbusters
Pair Programming MythbustersPair Programming Mythbusters
Pair Programming Mythbusters
 
Shoeism - Frau im Glück
Shoeism - Frau im GlückShoeism - Frau im Glück
Shoeism - Frau im Glück
 
Bessere Software schneller liefern
Bessere Software schneller liefernBessere Software schneller liefern
Bessere Software schneller liefern
 
Von 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 SprintsVon 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 Sprints
 
Piwik anpassen und skalieren
Piwik anpassen und skalierenPiwik anpassen und skalieren
Piwik anpassen und skalieren
 
Agilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce BreakfastAgilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce Breakfast
 

Último

Último (20)

Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Continuous Improvement in PHP Projects - PHP UK Conference 2011

  • 1. Continuous Improvement in PHP Projects Thorsten Rinne I 25th February 201 London, UK 1, © 201 Mayflower GmbH 1
  • 2. Team Lead Scrum Master Head of Open Source Labs @ThorstenRinne Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 2
  • 3. Who are you? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 3
  • 4. Continuous Integration? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 4
  • 5. Continuous Inspection? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 5
  • 6. Continuous Delivery? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 6
  • 7. http://www.flickr.com/photos/nataliaromay/3217596831/ Why do we need Continuous Improvement? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 7
  • 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
  • 15. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 15
  • 16. Continuous Improvement ~ KAIZEN Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 16
  • 17. KAI ZEN = = Change Good Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 17
  • 18. Attention! Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 18
  • 19. Your Management needs a will for changes! Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 19
  • 20. You need 3 steps for Continuous Improvement. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 20
  • 21. 1 What are we trying to accomplish? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 21
  • 22. 2 How will we know that a change is an improvement? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 22
  • 23. 3 What changes will result in improvements? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 23
  • 24. Plan Do Act Check Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 24
  • 25. PLAN: How should it be? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 25
  • 26. Plan Do Act Check Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 26
  • 27. DO: What and how do we do it? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 27
  • 28. Plan Do Act Check Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 28
  • 29. CHECK: What did we achieve? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 29
  • 30. Plan Do Act Check Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 30
  • 31. ACT: What else do we have to do? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 31
  • 32. Plan Do Act Check Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 32
  • 33. So, how to integrate Continuous Improvement in your daily work? Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 33
  • 34. I t‘s ! Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 34
  • 35. SCRUM Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 35
  • 36. SCRUM 24 hours Sprint 2 weeks Sprint goal Return Sprint Potentially shippable Return Cancel backlog product increment Gift fixes CS wrap Gift wrap Cancel CS fixes Product backlog Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 36
  • 37. Extreme Programming Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 37
  • 38. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 38
  • 39. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 39
  • 40. Agile methods are about working in iteratons. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 40
  • 41. Conclusion: Combine agile methods! Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 41
  • 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
  • 56. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 56
  • 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 57
  • 58. PHP_CodeSniffer Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 58
  • 59. Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 59
  • 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
  • 67. PHP_CodeBrowser presentation Continuous Improvement in PHP Projects I Mayflower GmbH I 25th February I 67
  • 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
  • 84. Gràcies! Thank you very much for your attention! Contact Thorsten Rinne thorsten.rinne@mayflower.de +49 89 242054-31 Mayflower GmbH Mannhardtstr. 6 80538 München Germany © 201 Mayflower GmbH 1