SlideShare a Scribd company logo
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(), datefren(), fct_lstagt_key(),
 phpinfo_system_old(), fct_repeat_even_requ(),
 fct_vrai_champ_general()
 Every one letter variable used : $a, $b, $c,...
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...
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...
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 one city, cover 12 cities by xmas,
 expand to 2 countries next year.
 full time employee for deployements
PHP industrialization

 Going from single to multiple
 Being proactive, rather than reactive
 Scale your work, not your server
   Otherwise, go to Rasmus session
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 integration,
VCS integration, framework integration.
VCS

Subversion, git, CVS, bazaar
Resolve conflicts
Stores and distribute the code
Allow versioning, paralell development, rollback
Code not in VCS does not exists
VCS               Code




 Bug Track                   Production
                  VCS




                         Continuous
      Unit Test
                         integration
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 methodologies :
  SCRUM, XP, Lean SD, Open Unified Process
Short cycles
Frameworks

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

                                 Production
Avoid regression
                        Code      Platform
Prevent your recall
Shows progress
Serves as manual
Help at communication
                               Customer
                                 use
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
Compulsory for large plat-forms, high scaling
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
PHP Industrialization
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
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 audit analysis? Code navigation ?
Code audit tool ? almost...
Questions?
damien.seguy@alterway.fr
PHP Industrialization
PHP Industrialization
Documentation

Level 0 : in code
Level 1 : automated, manual
  PHPdoc, PHPdocumentor, Doxygen
Level 2 : Wiki, blogues
Level 3 : books, conferences
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 to functional
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 anticipation
Tools without method
PHP Industrialization

More Related Content

PDF
Managing code quality with SonarQube - Radu Vunvulea
PPTX
Software testing tools (free and open source)
PDF
PVS-Studio in 2021 - Feature Overview
PPTX
Does static analysis need machine learning?
PDF
A new Codemodel for Codemetrics
PPTX
Ppt (1)
PPTX
Real world selenium resume which gets more job interviews
PPT
Improve Development Process with Open Source Software
Managing code quality with SonarQube - Radu Vunvulea
Software testing tools (free and open source)
PVS-Studio in 2021 - Feature Overview
Does static analysis need machine learning?
A new Codemodel for Codemetrics
Ppt (1)
Real world selenium resume which gets more job interviews
Improve Development Process with Open Source Software

Viewers also liked (20)

PDF
Aplicaciones Php Para Empresas
PDF
Introducción a Agile y Scrum (BetaBeers.com)
PDF
Desarrollo móvil con Titanium, PhoneGap y otros
PDF
Desarrollo Profesional con PHP 2014/15 - Nivel Bajo / Medio
PDF
Certificacion Zend En Vivo Php Barcelona 2008
PDF
PDF
Php Barcelona Workshop2008 Motores De Workflow En Php Guia
KEY
Comparativa Zend vs Symphony
PDF
Team Engagement PHP Barcelona 2011
PDF
PHP 2014/15 - Visión global del ecosistema PHP
PDF
Php Barcelona Workshop2008 Motores De Workflow En Php Presentacion
PDF
"Al rico" PHP
PDF
Scrum al Detalle: Revision práctica y perversiones humanas
PDF
Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015
PDF
Scrum en Grupo Intercom
PDF
Integrating Bounded Contexts Tips - Dutch PHP 2016
PDF
Hexagonal Architecture - PHP Barcelona Monthly Talk (DDD)
PPTX
Server side push in Aldan 3
PPT
Zend PHP 5.3 Demo Certification Test
PDF
Scrum, no eres tú, soy yo
Aplicaciones Php Para Empresas
Introducción a Agile y Scrum (BetaBeers.com)
Desarrollo móvil con Titanium, PhoneGap y otros
Desarrollo Profesional con PHP 2014/15 - Nivel Bajo / Medio
Certificacion Zend En Vivo Php Barcelona 2008
Php Barcelona Workshop2008 Motores De Workflow En Php Guia
Comparativa Zend vs Symphony
Team Engagement PHP Barcelona 2011
PHP 2014/15 - Visión global del ecosistema PHP
Php Barcelona Workshop2008 Motores De Workflow En Php Presentacion
"Al rico" PHP
Scrum al Detalle: Revision práctica y perversiones humanas
Economía del Desarrollo de Software - PHP Barcelona - Marzo 2015
Scrum en Grupo Intercom
Integrating Bounded Contexts Tips - Dutch PHP 2016
Hexagonal Architecture - PHP Barcelona Monthly Talk (DDD)
Server side push in Aldan 3
Zend PHP 5.3 Demo Certification Test
Scrum, no eres tú, soy yo
Ad

Similar to PHP Industrialization (20)

KEY
Confoo
ZIP
Epitech industrialisation 2012.key
PPTX
Continuous Integration & the Release Maturity Model
PDF
Introducing TDD to your project
PPT
Part 2 improving your software development v1.0
PDF
Acceptance & Functional Testing with Codeception - SunshinePHP 2016
PPT
Part5 - enforcing coding standard and best practices with jas forge v1.0
PDF
Acceptance & Functional Testing with Codeception - Devspace 2015
PPTX
Agile & DevOps - It's all about project success
KEY
Using symfony to save time, effort and sanity
PPTX
Practicing Agile in Offshore Environment by Himanshu Seth & Imran Mir
PDF
The story of SonarQube told to a DevOps Engineer
PPTX
Continuous Integration and development environment approach
PDF
An Introduction to Microservices
PPTX
Useful tools for software testing
PPT
[ENGLISH] TDC 2015 - PHP Trail - Tests and PHP Continuous Integration Enviro...
PPT
Software Engineering in PHP
PPTX
Practices of agile developers
PPTX
Software Architecture - Allocation taxonomies: building, deployment and distr...
PPT
Parasoft .TEST, Write better C# Code Using Data Flow Analysis
Confoo
Epitech industrialisation 2012.key
Continuous Integration & the Release Maturity Model
Introducing TDD to your project
Part 2 improving your software development v1.0
Acceptance & Functional Testing with Codeception - SunshinePHP 2016
Part5 - enforcing coding standard and best practices with jas forge v1.0
Acceptance & Functional Testing with Codeception - Devspace 2015
Agile & DevOps - It's all about project success
Using symfony to save time, effort and sanity
Practicing Agile in Offshore Environment by Himanshu Seth & Imran Mir
The story of SonarQube told to a DevOps Engineer
Continuous Integration and development environment approach
An Introduction to Microservices
Useful tools for software testing
[ENGLISH] TDC 2015 - PHP Trail - Tests and PHP Continuous Integration Enviro...
Software Engineering in PHP
Practices of agile developers
Software Architecture - Allocation taxonomies: building, deployment and distr...
Parasoft .TEST, Write better C# Code Using Data Flow Analysis
Ad

More from Damien Seguy (20)

PDF
Strong typing @ php leeds
PPTX
Strong typing : adoption, adaptation and organisation
PDF
Qui a laissé son mot de passe dans le code
PDF
Analyse statique et applications
PDF
Top 10 pieges php afup limoges
PDF
Top 10 php classic traps DPC 2020
PDF
Meilleur du typage fort (AFUP Day, 2020)
PDF
Top 10 php classic traps confoo
PDF
Tout pour se préparer à PHP 7.4
PDF
Top 10 php classic traps php serbia
PDF
Top 10 php classic traps
PDF
Top 10 chausse trappes
PDF
Code review workshop
PDF
Understanding static analysis php amsterdam 2018
PDF
Review unknown code with static analysis php ce 2018
PDF
Everything new with PHP 7.3
PDF
Php 7.3 et ses RFC (AFUP Toulouse)
PDF
Tout sur PHP 7.3 et ses RFC
PDF
Review unknown code with static analysis php ipc 2018
PDF
Code review for busy people
Strong typing @ php leeds
Strong typing : adoption, adaptation and organisation
Qui a laissé son mot de passe dans le code
Analyse statique et applications
Top 10 pieges php afup limoges
Top 10 php classic traps DPC 2020
Meilleur du typage fort (AFUP Day, 2020)
Top 10 php classic traps confoo
Tout pour se préparer à PHP 7.4
Top 10 php classic traps php serbia
Top 10 php classic traps
Top 10 chausse trappes
Code review workshop
Understanding static analysis php amsterdam 2018
Review unknown code with static analysis php ce 2018
Everything new with PHP 7.3
Php 7.3 et ses RFC (AFUP Toulouse)
Tout sur PHP 7.3 et ses RFC
Review unknown code with static analysis php ipc 2018
Code review for busy people

Recently uploaded (20)

PPTX
Big Data Technologies - Introduction.pptx
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Modernizing your data center with Dell and AMD
PDF
Encapsulation_ Review paper, used for researhc scholars
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PDF
Machine learning based COVID-19 study performance prediction
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Cloud computing and distributed systems.
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
Big Data Technologies - Introduction.pptx
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Spectral efficient network and resource selection model in 5G networks
Modernizing your data center with Dell and AMD
Encapsulation_ Review paper, used for researhc scholars
Understanding_Digital_Forensics_Presentation.pptx
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Per capita expenditure prediction using model stacking based on satellite ima...
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Machine learning based COVID-19 study performance prediction
Building Integrated photovoltaic BIPV_UPV.pdf
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Network Security Unit 5.pdf for BCA BBA.
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Cloud computing and distributed systems.
20250228 LYD VKU AI Blended-Learning.pptx

PHP Industrialization