qualidade em projetos php - phpsc conf 2011

55
Qualidade em Projetos PHP Qualidade em Projetos PHP Luís Otávio Cobucci Oblonczyk 19 de Novembro de 2011 PHPSC Conference 2011

Upload: luis-cobucci

Post on 11-Jun-2015

694 views

Category:

Technology


0 download

DESCRIPTION

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!

TRANSCRIPT

Page 1: Qualidade em projetos PHP - PHPSC Conf 2011

Qualidade em Projetos PHPQualidade em Projetos PHP

Luís Otávio Cobucci Oblonczyk

19 de Novembro de 2011PHPSC Conference 2011

Page 2: Qualidade em projetos PHP - PHPSC Conf 2011

Luís Otávio Cobucci OblonczykLuí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

Page 3: Qualidade em projetos PHP - PHPSC Conf 2011

No trabalho, devemos lidar com várias coisas...

Page 4: Qualidade em projetos PHP - PHPSC Conf 2011

Algumas nos deixam felizes...

Page 5: Qualidade em projetos PHP - PHPSC Conf 2011

Outras nem tanto...

Page 6: Qualidade em projetos PHP - PHPSC Conf 2011

Alguns precisam de combustível...

Page 7: Qualidade em projetos PHP - PHPSC Conf 2011

Outros de diversão...

Page 8: Qualidade em projetos PHP - PHPSC Conf 2011

Para trabalhar com bom humor...

Page 9: Qualidade em projetos PHP - PHPSC Conf 2011

Mas tudo tem limite!

Page 10: Qualidade em projetos PHP - PHPSC Conf 2011

Funcionando!!!

Page 11: Qualidade em projetos PHP - PHPSC Conf 2011

Mas será que apenas funcionar é suficiente?

Page 12: Qualidade em projetos PHP - PHPSC Conf 2011

Não!!!

É preciso ter qualidade

Não!!!

É preciso ter qualidade

Page 13: Qualidade em projetos PHP - PHPSC Conf 2011

QualidadeQualidade

“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

Page 14: Qualidade em projetos PHP - PHPSC Conf 2011

Atributos de qualificação de softwareAtributos de qualificação de software● 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)

Page 15: Qualidade em projetos PHP - PHPSC Conf 2011

A vida de um software sem qualidadeA vida de um software sem qualidade● 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”

Page 16: Qualidade em projetos PHP - PHPSC Conf 2011
Page 17: Qualidade em projetos PHP - PHPSC Conf 2011

“You can't control what you can't measure”DeMarco, Tom

Page 18: Qualidade em projetos PHP - PHPSC Conf 2011
Page 19: Qualidade em projetos PHP - PHPSC Conf 2011

O software é um tumor...

Page 20: Qualidade em projetos PHP - PHPSC Conf 2011

E para mantermos ele com saúde

Page 21: Qualidade em projetos PHP - PHPSC Conf 2011

Precisamos utilizar as ferramentas corretas...

Page 22: Qualidade em projetos PHP - PHPSC Conf 2011

PHPUnitPHPUnit

● 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

Page 23: Qualidade em projetos PHP - PHPSC Conf 2011

Atenção: testes podem mentir...

Page 24: Qualidade em projetos PHP - PHPSC Conf 2011

Atenção: testes podem mentir...

Page 25: Qualidade em projetos PHP - PHPSC Conf 2011

MutagenesisMutagenesis

● 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

Page 26: Qualidade em projetos PHP - PHPSC Conf 2011

PHPLocPHPLoc

● 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

Page 27: Qualidade em projetos PHP - PHPSC Conf 2011
Page 28: Qualidade em projetos PHP - PHPSC Conf 2011

PHP CodeSnifferPHP 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

Page 29: Qualidade em projetos PHP - PHPSC Conf 2011
Page 30: Qualidade em projetos PHP - PHPSC Conf 2011

PHPCPDPHPCPD

● Busca duplicações de códigos em seu projeto● Métricas: número e locais das duplicações

https://github.com/sebastianbergmann/phpcpd

Page 31: Qualidade em projetos PHP - PHPSC Conf 2011
Page 32: Qualidade em projetos PHP - PHPSC Conf 2011

PHPMDPHPMD

● 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

Page 33: Qualidade em projetos PHP - PHPSC Conf 2011

● Avoid short names● Class has too many methods● Avoid unused local variables● Overall complexity● Number of dependencies

Page 34: Qualidade em projetos PHP - PHPSC Conf 2011

DocBloxDocBlox

● 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/

Page 35: Qualidade em projetos PHP - PHPSC Conf 2011
Page 36: Qualidade em projetos PHP - PHPSC Conf 2011

Como juntar isso tudo?

Page 37: Qualidade em projetos PHP - PHPSC Conf 2011

Automatizando

Page 38: Qualidade em projetos PHP - PHPSC Conf 2011

PhingPhing

● “PHing Is Not GNU make; it's 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

Page 39: Qualidade em projetos PHP - PHPSC Conf 2011

Build?

Page 40: Qualidade em projetos PHP - PHPSC Conf 2011

Software buildSoftware 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

Page 41: Qualidade em projetos PHP - PHPSC Conf 2011

Porque usar o Phing?Porque usar o Phing?

● Simples de configurar● Possui tarefas para as principais ferramentas● É extensível

● É feito em PHP

Page 42: Qualidade em projetos PHP - PHPSC Conf 2011

Então é uma lista de tarefas?

Page 43: Qualidade em projetos PHP - PHPSC Conf 2011

PhingPhing

● 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

Page 44: Qualidade em projetos PHP - PHPSC Conf 2011

<?xml version="1.0" encoding="UTF-8"?><project name="ProjectName" default="build" basedir="." />

Page 45: Qualidade em projetos PHP - PHPSC Conf 2011

<?xml version="1.0" encoding="UTF-8"?><project name="ProjectName" default="build" basedir="." > <target name="build" /></project>

Page 46: Qualidade em projetos PHP - PHPSC Conf 2011

<?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>

Page 47: Qualidade em projetos PHP - PHPSC Conf 2011
Page 48: Qualidade em projetos PHP - PHPSC Conf 2011

PhingPhing

● É possível ainda:● SSH/SCP● Phar/Tar/Zip● Pear/Pear2● SVN/Git● Patch● Ftp (upload)

E mais: http://www.phing.info/docs/guide/stable/

Page 49: Qualidade em projetos PHP - PHPSC Conf 2011

Socorro, por onde começo?

Page 50: Qualidade em projetos PHP - PHPSC Conf 2011

Prepare-se psicologicamente!

Page 51: Qualidade em projetos PHP - PHPSC Conf 2011

Próximos passos?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

Page 52: Qualidade em projetos PHP - PHPSC Conf 2011

Integração ContinuaIntegraçã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

Page 53: Qualidade em projetos PHP - PHPSC Conf 2011
Page 54: Qualidade em projetos PHP - PHPSC Conf 2011

Dúvidas???Dúvidas???

Page 55: Qualidade em projetos PHP - PHPSC Conf 2011

Obrigado!Obrigado!

Eu por aí: http://about.me/lcobucci

Slides: http://slideshare.net/lcobucci

Avalie essa palestra: http://joind.in/4496