Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

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