• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Qualidade em projetos PHP - PHPSC Conf 2011
 

Qualidade em projetos PHP - PHPSC Conf 2011

on

  • 928 views

Na nossa vida é importante nos preocuparmos com nossa saúde, e DEVEMOS fazer o mesmo com a saúde dos nossos softwares....

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!

Statistics

Views

Total Views
928
Views on SlideShare
918
Embed Views
10

Actions

Likes
3
Downloads
51
Comments
1

2 Embeds 10

http://coderwall.com 5
http://www.linkedin.com 5

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-ShareAlike LicenseCC Attribution-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Qualidade em projetos PHP - PHPSC Conf 2011 Qualidade em projetos PHP - PHPSC Conf 2011 Presentation Transcript

    • 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 2003● Perfeccionista ao extremo =Po● Futuro PHP 5.3 ZCE? (teste em dezembro!) @lcobucci http://about.me/lcobucci
    • 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 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
    • 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)
    • 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”
    • “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 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
    • 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 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
    • 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
    • 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
    • PHPCPD● Busca duplicações de códigos em seu projeto● Métricas: número e locais das duplicações https://github.com/sebastianbergmann/phpcpd
    • 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
    • ● Avoid short names● Class has too many methods● Avoid unused local variables● Overall complexity● Number of dependencies
    • 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/
    • 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 automatização de tarefas● Com o Phing é possível definir o processo de build dos projetos http://www.phing.info
    • Build?
    • 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
    • Porque usar o Phing?● Simples de configurar● Possui tarefas para as principais ferramentas● É extensível● É feito em PHP
    • 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 outras etapas● Podem ser definidas propriedades no arquivo XML ou em um arquivo externo
    • <?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" /></project>
    • <?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>
    • 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/
    • 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 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
    • 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
    • Dúvidas???
    • Obrigado!Eu por aí: http://about.me/lcobucciSlides: http://slideshare.net/lcobucciAvalie essa palestra: http://joind.in/4496