PHP Industrialization


Published on

PHP is now part of the normal tools at every IT department. Indeed, it must now cope with a raise in exigence and level of quality expected beyond it's famed scalability and fast development. What tools are needed to organize a large dev team and produce several hundreds of web site a year? Now is the time of industrialisation, where planning and organizing the code production must track bugs before publishing the code. We'll cover the tools and technics available to tame conception, production, publication and team work.

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • PHP Industrialization

    1. 1. PHP’s industrialization The new frontier
    2. 2. Agenda Scale up your work Get the tools and methods Go to the other sessions in Barcelona
    3. 3. Speaker Damien Seguy Expert Open Source services Raise elePHPants
    4. 4. Yes, we take questions
    5. 5. Function lists 692 defined functions, 611 actually used function CMP2() : 18 different definitions fct_create_thjipk(), datefren(), fct_lstagt_key(), phpinfo_system_old(), fct_repeat_even_requ(), fct_vrai_champ_general() Every one letter variable used : $a, $b, $c,...
    6. 6. Function spring cleaning It’s time to check them List them, see what they do Refactor the code, remove doubles Gather them in a central library, document them Build a solid framework...
    7. 7. Function spring cleaning It’s time to check them List them, see what they do Refactor the code, remove doubles Gather them in a central library, document them Build a solid framework...
    8. 8. Romantic PHP
    9. 9. Modern PHP
    10. 10. Reality check 65 portals next 6 months 6 people to upgrade 350 intranet 120 events sites a year on 150 servers App on one city, cover 12 cities by xmas, expand to 2 countries next year. full time employee for deployements
    11. 11. PHP industrialization Going from single to multiple Being proactive, rather than reactive Scale your work, not your server Otherwise, go to Rasmus session
    12. 12. Stage 1 Conventions IDE VCS
    13. 13. Conventions PEAR, Zend Frameworks, Symfony... Choose one, use one Bring unity Code_sniffer
    14. 14. IDE Choose it for ease of use Netbean / Symfony, Zend tools, Komodo / cakePHP Code browser, editor, debugger, unit test integration, VCS integration, framework integration.
    15. 15. VCS Subversion, git, CVS, bazaar Resolve conflicts Stores and distribute the code Allow versioning, paralell development, rollback Code not in VCS does not exists
    16. 16. VCS Code Bug Track Production VCS Continuous Unit Test integration
    17. 17. Recommanded sessions Clean Code / Zend Framework
    18. 18. Stage 2 Methodologies Frameworks Tests
    19. 19. Methodologies Explain how you produce code Get your users involved Make short cycles to deliver, adapt and polish Agile methodologies : SCRUM, XP, Lean SD, Open Unified Process
    20. 20. Short cycles
    21. 21. Frameworks Frameworks Choose one, for development speed Components, conventions, scafolding, tests Community, expertise, training
    22. 22. Unit Tests PHP Unit, Simple Test, Lemon, Zend_Test, phpt
    23. 23. Tests helps decouple Production Avoid regression Code Platform Prevent your recall Shows progress Serves as manual Help at communication Customer use
    24. 24. Functional tests GreenPepper, Fitnesse
    25. 25. Recommanded sessions Agile development for PHP, SCRUM con exito Symfony 2.0 State of quality assurance tools
    26. 26. Stage 3 Conception Continuous integration Automated deploiement Documentation
    27. 27. Automated deployment Phing, maven, ant, pear Needed for continuous integration The forgotten part of development Compulsory for large plat-forms, high scaling
    28. 28. Continuous integration Check the code in back ground phpUnderControl, Xinc, Hudson Graphs the results Compilation, code sniffer, unit tests, coverage Log, inclusion, performances... Share with the team
    29. 29. Conception Class diagram, database schema, navigation ArgoUML, StarUML, PowerArchitect Describe the general organisation List everything that will need name Class, methods, constants, SESSION, includes... Check the result
    30. 30. Conception Document things before hand Auto-generate phpdoc Check usage in the code, check undocumented
    31. 31. Documentation From developper to users Have developper start it Add comments Turn it into a wiki
    32. 32. Recommanded sessions Tallar de PHING Continuous integration
    33. 33. Even further? Continuous deployment (a la flickr) Cross auditing Collaborative auditing Static analysis
    34. 34. Most tools come from Java Hudson / Xinc Junit / PHPUnit CheckStyle / Code Sniffer UML to PHP (but not the reverse) Static audit analysis? Code navigation ? Code audit tool ? almost...
    35. 35. Questions?
    36. 36. Documentation Level 0 : in code Level 1 : automated, manual PHPdoc, PHPdocumentor, Doxygen Level 2 : Wiki, blogues Level 3 : books, conferences
    37. 37. Scaling up coding Do more Leave part of it to others
    38. 38. Handling bugs Level 1 : manual test before production Level 2 : automate tests before production Level 3 : hand out tests to functional
    39. 39. Tools Firefox, Web Developper PHP Unit, Simple Tests, phpt, Push 2 Test GreenPepper, Fitnesse
    40. 40. More tests Get more tests Hand them to your users Use them in requirements Use them for docs
    41. 41. Team Conception à cycles courts Conventions de programmation Mantras de programmation Audits croisés
    42. 42. Code Frameworks Business libraries Code repository Static audits
    43. 43. Progression Tests unitaires Tests fonctionnels Intégration continue Documentation automatique Suivi des conventions
    44. 44. Production Déploiement automatique Tests d’IHM Suivi des bugs
    45. 45. Avoid dead end tools Writing comments that are rarely read Producing doc ? Reusing unit tests ?
    46. 46. Scale up your work direct communication is OK for 2 mail is OK for 4 mantis is better
    47. 47. Aspects Automation API, PHPUnit, Including users in the tests Standards (SOAP/WSDL)
    48. 48. 3 phases of evolution Experimentation Mission critical Strategy
    49. 49. Approach of coding We’ll do what we need We’ll gather in the end to make this a good library This shows a lack of anticipation
    50. 50. Tools without method