Qualidade em Projetos PHP     Luís Otávio Cobucci Oblonczyk21 de Agosto de 2011TDC 2011 Florianópolis
Luís Otávio Cobucci Oblonczyk●    Desenvolvedor PHP na Softnex Tecnologia●    Orientador no Senac TI●    Doido por PHP des...
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  Luís Otávio Cobucci Oblonczyk – 21/08/2011
Qualidade “Qualidade é um conceito subjetivo que está relacionado diretamente às percepções de cada indivíduo. Diversos fa...
Atributos de qualificação desoftware●    Funcionalidade●    Usabilidade●    Confiabilidade●    Performance●    Suportabili...
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
Luís Otávio Cobucci Oblonczyk – 21/08/2011
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●    Compatível com PHP 5.3●    Gera diagrama co...
Luís Otávio Cobucci Oblonczyk – 21/08/2011
Luís Otávio Cobucci Oblonczyk – 21/08/2011
Como juntar isso tudo?
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    ●  ...
Próximos passos?●    Refatoração●    Integração Contínua        Luís Otávio Cobucci Oblonczyk – 21/08/2011
Perguntas??
Obrigado!●    @lcobucci●    http://lcobucci.wordpress.com●    http://github.com/lcobucci        Luís Otávio Cobucci Oblonc...
Qualidade em projetos PHP - TDC 2011
Qualidade em projetos PHP - TDC 2011
Qualidade em projetos PHP - TDC 2011
Qualidade em projetos PHP - TDC 2011
Qualidade em projetos PHP - TDC 2011
Próximos SlideShares
Carregando em…5
×

Qualidade em projetos PHP - TDC 2011

1.480 visualizações

Publicada em

Abordamos aqui as principais ferramentas que nos dão uma visão realista do nosso projeto e nos ajudam a encontrar os pontos que podem ser melhorados/corrigidos

Publicada em: Tecnologia
0 comentários
4 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
1.480
No SlideShare
0
A partir de incorporações
0
Número de incorporações
134
Ações
Compartilhamentos
0
Downloads
27
Comentários
0
Gostaram
4
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Qualidade em projetos PHP - TDC 2011

  1. 1. Qualidade em Projetos PHP Luís Otávio Cobucci Oblonczyk21 de Agosto de 2011TDC 2011 Florianópolis
  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 =P Luís Otávio Cobucci Oblonczyk – 21/08/2011
  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 Luís Otávio Cobucci Oblonczyk – 21/08/2011
  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 Luís Otávio Cobucci Oblonczyk – 21/08/2011
  14. 14. Atributos de qualificação desoftware● Funcionalidade● Usabilidade● Confiabilidade● Performance● Suportabilidade Luís Otávio Cobucci Oblonczyk – 21/08/2011
  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” Luís Otávio Cobucci Oblonczyk – 21/08/2011
  16. 16. “You cant control what you cant measure”DeMarco, Tom
  17. 17. Luís Otávio Cobucci Oblonczyk – 21/08/2011
  18. 18. Precisamos utilizar as ferramentas corretas...
  19. 19. 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 Luís Otávio Cobucci Oblonczyk – 21/08/2011
  20. 20. Atenção: testes podem mentir...
  21. 21. Atenção: testes podem mentir...
  22. 22. 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 Luís Otávio Cobucci Oblonczyk – 21/08/2011
  23. 23. 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 Luís Otávio Cobucci Oblonczyk – 21/08/2011
  24. 24. 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 Luís Otávio Cobucci Oblonczyk – 21/08/2011
  25. 25. PHPCPD● Busca duplicações de códigos em seu projeto● Métricas: número e locais das duplicações https://github.com/sebastianbergmann/phpcpd Luís Otávio Cobucci Oblonczyk – 21/08/2011
  26. 26. 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 Luís Otávio Cobucci Oblonczyk – 21/08/2011
  27. 27. ● Avoid short names● Class has too many methods● Avoid unused local variables● Overall complexity● Number of dependencies
  28. 28. DocBlox● Gera documentação de API a partir dos comentários no código● 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/ Luís Otávio Cobucci Oblonczyk – 21/08/2011
  29. 29. Luís Otávio Cobucci Oblonczyk – 21/08/2011
  30. 30. Luís Otávio Cobucci Oblonczyk – 21/08/2011
  31. 31. Como juntar isso tudo?
  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 Luís Otávio Cobucci Oblonczyk – 21/08/2011
  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 Luís Otávio Cobucci Oblonczyk – 21/08/2011
  35. 35. Porque usar o Phing?● Simples de configurar● Possui tarefas para as principais ferramentas● É extensível● É feito em PHP Luís Otávio Cobucci Oblonczyk – 21/08/2011
  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 Luís Otávio Cobucci Oblonczyk – 21/08/2011
  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/ Luís Otávio Cobucci Oblonczyk – 21/08/2011
  42. 42. Próximos passos?● Refatoração● Integração Contínua Luís Otávio Cobucci Oblonczyk – 21/08/2011
  43. 43. Perguntas??
  44. 44. Obrigado!● @lcobucci● http://lcobucci.wordpress.com● http://github.com/lcobucci Luís Otávio Cobucci Oblonczyk – 21/08/2011

×