PHP’s industrialization
The new frontier
Agenda


Scale up your work
Get the tools and methods
Go to the other sessions in Barcelona
Speaker

 Damien Seguy
 Expert Open Source services
 Raise elePHPants
 damien.seguy@alterway.fr
Yes,
we take
questions
Function lists

 692 defined functions, 611 actually used
 function CMP2() : 18 different definitions
 fct_create_thjipk(), ...
Function spring cleaning

 It’s time to check them
 List them, see what they do
 Refactor the code, remove doubles
 Gather...
Function spring cleaning

 It’s time to check them
 List them, see what they do
 Refactor the code, remove doubles
 Gather...
Romantic PHP
Modern PHP
Reality check

 65 portals next 6 months
 6 people to upgrade 350 intranet
 120 events sites a year on 150 servers
 App on...
PHP industrialization

 Going from single to multiple
 Being proactive, rather than reactive
 Scale your work, not your se...
Stage 1


Conventions
IDE
VCS
Conventions

PEAR, Zend
Frameworks,
Symfony...
Choose one,
use one
Bring unity
Code_sniffer
IDE


Choose it for ease of use
Netbean / Symfony, Zend tools, Komodo / cakePHP
Code browser, editor, debugger, unit test ...
VCS

Subversion, git, CVS, bazaar
Resolve conflicts
Stores and distribute the code
Allow versioning, paralell development, ...
VCS               Code




 Bug Track                   Production
                  VCS




                         Cont...
Recommanded sessions



Clean Code / Zend Framework
Stage 2


Methodologies
Frameworks
Tests
Methodologies

Explain how you produce code
Get your users involved
Make short cycles to deliver, adapt and polish
Agile m...
Short cycles
Frameworks

Frameworks
 Choose one, for development speed
 Components, conventions, scafolding, tests
 Community, expertis...
Unit Tests
 PHP Unit, Simple Test, Lemon, Zend_Test, phpt
Tests helps decouple

                                 Production
Avoid regression
                        Code      Platf...
Functional tests
 GreenPepper, Fitnesse
Recommanded sessions


Agile development for PHP, SCRUM con exito
Symfony 2.0
State of quality assurance tools
Stage 3

Conception
Continuous
integration
Automated
deploiement
Documentation
Automated deployment

Phing, maven, ant, pear
Needed for continuous integration
The forgotten part of development
Compulso...
Continuous integration
 Check the code in back ground
 phpUnderControl, Xinc, Hudson
 Graphs the results
   Compilation, c...
Conception
Class diagram, database schema, navigation
ArgoUML, StarUML, PowerArchitect
Describe the general organisation
L...
Conception


Document things before hand
Auto-generate phpdoc
Check usage in the code, check undocumented
Documentation

From developper to users
Have developper start it
Add comments
Turn it into a wiki
Recommanded sessions


Tallar de PHING
Continuous integration
Even further?

 Continuous deployment (a la flickr)
 Cross auditing
 Collaborative auditing
 Static analysis
Most tools come from Java
Hudson / Xinc
Junit / PHPUnit
CheckStyle / Code Sniffer
UML to PHP (but not the reverse)
Static ...
Questions?
damien.seguy@alterway.fr
Documentation

Level 0 : in code
Level 1 : automated, manual
  PHPdoc, PHPdocumentor, Doxygen
Level 2 : Wiki, blogues
Leve...
Scaling up coding


Do more
Leave part of it to others
Handling bugs

Level 1 : manual test before production
Level 2 : automate tests before production
Level 3 : hand out tests...
Tools


Firefox, Web Developper
PHP Unit, Simple Tests, phpt, Push 2 Test
GreenPepper, Fitnesse
More tests

Get more tests
Hand them to your
users
Use them in
requirements
Use them for docs
Team

Conception à cycles courts
Conventions de programmation
Mantras de programmation
Audits croisés
Code

Frameworks
Business libraries
Code repository
Static audits
Progression

Tests unitaires
Tests fonctionnels
Intégration continue
Documentation automatique
Suivi des conventions
Production


Déploiement automatique
Tests d’IHM
Suivi des bugs
Avoid dead end tools


Writing comments that are rarely read
Producing doc ?
Reusing unit tests ?
Scale up your work


direct communication is OK for 2
mail is OK for 4
mantis is better
Aspects

Automation
  API, PHPUnit,
Including users in the tests
Standards (SOAP/WSDL)
3 phases of evolution


 Experimentation
 Mission critical
 Strategy
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 antic...
Tools without method
PHP Industrialization
PHP Industrialization
PHP Industrialization
PHP Industrialization
Upcoming SlideShare
Loading in...5
×

PHP Industrialization

3,550

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
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,550
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
81
Comments
0
Likes
6
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 damien.seguy@alterway.fr
    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? damien.seguy@alterway.fr
    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
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×