Qualidade em Projetos PHP      Luís Otávio Cobucci Oblonczyk19 de Novembro de 2011PHPSC Conference 2011
Luís Otávio Cobucci Oblonczyk●   Desenvolvedor PHP na Softnex Tecnologia●   Orientador no Senac TI●   Doido por PHP desde ...
No trabalho, devemos lidar com várias coisas...
Algumas nos deixam felizes...
Outras nem tanto...
Alguns precisam de combustível...
Outros de diversão...
Para trabalhar com bom humor...
Mas tudo tem limite!
Funcionando!!!
Mas será que apenas funcionar é suficiente?
Não!!!É preciso ter qualidade
Qualidade “Qualidade é um conceito subjetivo que está relacionado diretamente às percepções de cada indivíduo. Diversos fa...
Atributos de qualificação desoftware●    Funcionalidade (oferece funcionalidades necessárias)●    Usabilidade (é fácil de ...
A vida de um software semqualidade●    Devido a um fato sobrenatural seu código para de    funcionar●    A correção dos bu...
“You cant control what you cant measure”DeMarco, Tom
O software é um tumor...
E para mantermos ele com saúde
Precisamos utilizar as ferramentas corretas...
PHPUnit●    Possibilita a criação de testes de unidade de forma    simples e precisa●    Mostra o local exato dos problema...
Atenção: testes podem mentir...
Atenção: testes podem mentir...
Mutagenesis●    Verifica se seus testes estão “falando a verdade”●    Basicamente ele “muda” seu código em tempo de    exe...
PHPLoc●    Provê uma visão geral do projeto●    Métricas: quanto código existe no projeto (lines of    code) e como está o...
PHP CodeSniffer●    Varre seu projeto buscando violações de coding    standards●    Métricas: número de violações encontra...
PHPCPD●    Busca duplicações de códigos em seu projeto●    Métricas: número e locais das duplicações    https://github.com...
PHPMD●    Varre seu código buscando possíveis falhas●    Mostra os locais que deveriam ser refatorados devido    à: variáv...
●  Avoid short names●  Class has too many methods●  Avoid unused local variables●  Overall complexity●  Number of dependen...
DocBlox●    Gera documentação de API a partir dos comentários    no código●    Criação incremental●    Compatível com PHP ...
Como juntar isso tudo?
Automatizando
Phing●    “PHing Is Not GNU make; its a PHP project build    system or build tool based on Apache Ant. “●    Ferramenta de...
Build?
Software build●    “In the field of computer software, the term    software build refers either to the process of    conve...
Porque usar o Phing?●    Simples de configurar●    Possui tarefas para as principais ferramentas●    É extensível●    É fe...
Então é uma lista de tarefas?
Phing●    Em cada projeto você define as etapas do build    em um arquivo XML●    As etapas podem depender ou executar out...
<?xml version="1.0" encoding="UTF-8"?><project name="ProjectName" default="build" basedir="." />
<?xml version="1.0" encoding="UTF-8"?><project name="ProjectName" default="build" basedir="." >    <target name="build" />...
<?xml version="1.0" encoding="UTF-8"?><project name="ProjectName" default="build" basedir="." >    <property name="buildDi...
Phing●    É possível ainda:    ●        SSH/SCP    ●        Phar/Tar/Zip    ●        Pear/Pear2    ●        SVN/Git    ●  ...
Socorro, por onde começo?
Prepare-se psicologicamente!
Próximos passos?●    Crie testes de unidade aos poucos sem mudar o    código●    Utilizando o PMD verifique os pontos mais...
Integração Continua●    De forma bem rudimentar é a “automatização da    automatização”●    Executa seu script de build au...
Dúvidas???
Obrigado!Eu por aí: http://about.me/lcobucciSlides: http://slideshare.net/lcobucciAvalie essa palestra: http://joind.in/4496
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
Qualidade em projetos PHP - PHPSC Conf 2011
Próximos SlideShares
Carregando em…5
×

Qualidade em projetos PHP - PHPSC Conf 2011

787 visualizações

Publicada em

Na nossa vida é importante nos preocuparmos com nossa saúde, e DEVEMOS fazer o mesmo com a saúde dos nossos softwares.
Você verá aqui as principais ferramentas para medir qualidade e encontrar alguns tumores nos seus projetos!

Publicada em: Tecnologia
1 comentário
4 gostaram
Estatísticas
Notas
Sem downloads
Visualizações
Visualizações totais
787
No SlideShare
0
A partir de incorporações
0
Número de incorporações
14
Ações
Compartilhamentos
0
Downloads
53
Comentários
1
Gostaram
4
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Qualidade em projetos PHP - PHPSC Conf 2011

  1. 1. Qualidade em Projetos PHP Luís Otávio Cobucci Oblonczyk19 de Novembro de 2011PHPSC Conference 2011
  2. 2. Luís Otávio Cobucci Oblonczyk● Desenvolvedor PHP na Softnex Tecnologia● Orientador no Senac TI● Doido por PHP desde 2003● Perfeccionista ao extremo =Po● Futuro PHP 5.3 ZCE? (teste em dezembro!) @lcobucci http://about.me/lcobucci
  3. 3. No trabalho, devemos lidar com várias coisas...
  4. 4. Algumas nos deixam felizes...
  5. 5. Outras nem tanto...
  6. 6. Alguns precisam de combustível...
  7. 7. Outros de diversão...
  8. 8. Para trabalhar com bom humor...
  9. 9. Mas tudo tem limite!
  10. 10. Funcionando!!!
  11. 11. Mas será que apenas funcionar é suficiente?
  12. 12. Não!!!É preciso ter qualidade
  13. 13. Qualidade “Qualidade é um conceito subjetivo que está relacionado diretamente às percepções de cada indivíduo. Diversos fatores como cultura, modelos mentais, tipo de produto ou serviço prestado, necessidades e expectativas influenciam diretamente nesta definição.” http://pt.wikipedia.org/wiki/Qualidade
  14. 14. Atributos de qualificação desoftware● Funcionalidade (oferece funcionalidades necessárias)● Usabilidade (é fácil de utilizar)● Confiabilidade (informações geradas são confiáveis)● Performance (tempo de resposta de gente)● Suportabilidade (é fácil de dar manutenção no código)
  15. 15. A vida de um software semqualidade● Devido a um fato sobrenatural seu código para de funcionar● A correção dos bugs é simples, o problema é encontrá- los● Ao corrigir uma coisa, outras três param de funcionar● “O sistema estava funcionando até você usá-lo”
  16. 16. “You cant control what you cant measure”DeMarco, Tom
  17. 17. O software é um tumor...
  18. 18. E para mantermos ele com saúde
  19. 19. Precisamos utilizar as ferramentas corretas...
  20. 20. PHPUnit● Possibilita a criação de testes de unidade de forma simples e precisa● Mostra o local exato dos problemas● Facilita as manutenções (diminui a possibilidade de uma correção danificar outras funcionalidades)● Métricas: número de testes (com falha ou não), número de métodos testados, cobertura de testes http://www.phpunit.de/manual/current/en/index.html
  21. 21. Atenção: testes podem mentir...
  22. 22. Atenção: testes podem mentir...
  23. 23. Mutagenesis● Verifica se seus testes estão “falando a verdade”● Basicamente ele “muda” seu código em tempo de execução e roda seus testes de unidade, se os testes permanecerem funcionando muito provavelmente existem testes mal feitos. https://github.com/zenovich/runkit https://github.com/padraic/mutagenesis
  24. 24. PHPLoc● Provê uma visão geral do projeto● Métricas: quanto código existe no projeto (lines of code) e como está organizado (número de namespaces, classes, métodos, funções, constantes) https://github.com/sebastianbergmann/phploc
  25. 25. PHP CodeSniffer● Varre seu projeto buscando violações de coding standards● Métricas: número de violações encontradas, quais partes devem ser corrigidas http://pear.php.net/package/PHP_CodeSniffer
  26. 26. PHPCPD● Busca duplicações de códigos em seu projeto● Métricas: número e locais das duplicações https://github.com/sebastianbergmann/phpcpd
  27. 27. PHPMD● Varre seu código buscando possíveis falhas● Mostra os locais que deveriam ser refatorados devido à: variáveis que não são utilizadas, classes/métodos muito complexos ou muito grandes, nomenclaturas confusas em variáveis e métodos http://phpmd.org
  28. 28. ● Avoid short names● Class has too many methods● Avoid unused local variables● Overall complexity● Number of dependencies
  29. 29. DocBlox● Gera documentação de API a partir dos comentários no código● Criação incremental● Compatível com PHP 5.3● Gera diagrama com as classes (precisa do graphviz)● Mais rápido e mais leve que o PHP Documentor http://www.docblox-project.org/
  30. 30. Como juntar isso tudo?
  31. 31. Automatizando
  32. 32. Phing● “PHing Is Not GNU make; its a PHP project build system or build tool based on Apache Ant. “● Ferramenta de automatização de tarefas● Com o Phing é possível definir o processo de build dos projetos http://www.phing.info
  33. 33. Build?
  34. 34. Software build● “In the field of computer software, the term software build refers either to the process of converting source code files into standalone software artifact(s) that can be run on a computer, or the result of doing so.”● Processo de converter o código-fonte em um ou mais artefatos, ou o resultado deste processo http://en.wikipedia.org/wiki/Software_build
  35. 35. Porque usar o Phing?● Simples de configurar● Possui tarefas para as principais ferramentas● É extensível● É feito em PHP
  36. 36. Então é uma lista de tarefas?
  37. 37. Phing● Em cada projeto você define as etapas do build em um arquivo XML● As etapas podem depender ou executar outras etapas● Podem ser definidas propriedades no arquivo XML ou em um arquivo externo
  38. 38. <?xml version="1.0" encoding="UTF-8"?><project name="ProjectName" default="build" basedir="." />
  39. 39. <?xml version="1.0" encoding="UTF-8"?><project name="ProjectName" default="build" basedir="." > <target name="build" /></project>
  40. 40. <?xml version="1.0" encoding="UTF-8"?><project name="ProjectName" default="build" basedir="." > <property name="buildDir" value="${project.basedir}/build" /> <property name="reportsDir" value="${buildDir}/reports" /> <property name="docDir" value="${buildDir}/doc" /> <target name="clean"> <delete dir="${buildDir}" includeemptydirs="true" failonerror="true" /> <mkdir dir="${buildDir}" /> <mkdir dir="${reportsDir}" /> <mkdir dir="${docDir}" /> <exec command="chmod -R 777 ${buildDir}" /> </target> <target name="phpunit"><echo msg="Testes de unidade"/></target> <target name="phpmd" ><echo msg="Verificação de erros"/></target> <target name="build" depends="clean"> <phingcall target="phpunit" /> <phingcall target="phpmd" /> </target></project>
  41. 41. Phing● É possível ainda: ● SSH/SCP ● Phar/Tar/Zip ● Pear/Pear2 ● SVN/Git ● Patch ● Ftp (upload) E mais: http://www.phing.info/docs/guide/stable/
  42. 42. Socorro, por onde começo?
  43. 43. Prepare-se psicologicamente!
  44. 44. Próximos passos?● Crie testes de unidade aos poucos sem mudar o código● Utilizando o PMD verifique os pontos mais críticos de otimização● Comece a refatoração!● Para as novas funcionalidades SEMPRE crie testes, de preferencia seguindo as premissas do TDD● Instale um servidor de Integração Contínua
  45. 45. Integração Continua● De forma bem rudimentar é a “automatização da automatização”● Executa seu script de build automaticamente logo após todo commit realizado no servidor de controle de versionamento (ideal)● Mantém registrados os builds passados para comparação de informação● Possui visualização em gráfico para execução de testes de unidade, violações PMD, CPD e de Code Standards
  46. 46. Dúvidas???
  47. 47. Obrigado!Eu por aí: http://about.me/lcobucciSlides: http://slideshare.net/lcobucciAvalie essa palestra: http://joind.in/4496

×