qualidade em projetos php - tdc 2011

49
Qualidade em Projetos PHP Qualidade em Projetos PHP Luís Otávio Cobucci Oblonczyk 21 de Agosto de 2011 TDC 2011 Florianópolis

Upload: luis-cobucci

Post on 11-Jun-2015

1.424 views

Category:

Technology


1 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Qualidade em projetos PHP - TDC 2011

Qualidade em Projetos PHPQualidade em Projetos PHP

Luís Otávio Cobucci Oblonczyk

21 de Agosto de 2011TDC 2011 Florianópolis

Page 2: Qualidade em projetos PHP - TDC 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 =P

Luís Otávio Cobucci Oblonczyk – 21/08/2011

Page 3: Qualidade em projetos PHP - TDC 2011

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

Page 4: Qualidade em projetos PHP - TDC 2011

Algumas nos deixam felizes...

Page 5: Qualidade em projetos PHP - TDC 2011

Outras nem tanto...

Page 6: Qualidade em projetos PHP - TDC 2011

Alguns precisam de combustível...

Page 7: Qualidade em projetos PHP - TDC 2011

Outros de diversão...

Page 8: Qualidade em projetos PHP - TDC 2011

Para trabalhar com bom humor...

Page 9: Qualidade em projetos PHP - TDC 2011

Mas tudo tem limite!

Page 10: Qualidade em projetos PHP - TDC 2011

Funcionando!!!

Page 11: Qualidade em projetos PHP - TDC 2011

Mas será que apenas funcionar é suficiente?

Page 12: Qualidade em projetos PHP - TDC 2011

Não!!!

É preciso ter qualidade

Não!!!

É preciso ter qualidade

Luís Otávio Cobucci Oblonczyk – 21/08/2011

Page 13: Qualidade em projetos PHP - TDC 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

Luís Otávio Cobucci Oblonczyk – 21/08/2011

Page 14: Qualidade em projetos PHP - TDC 2011

Atributos de qualificação de softwareAtributos de qualificação de software● Funcionalidade● Usabilidade● Confiabilidade● Performance● Suportabilidade

Luís Otávio Cobucci Oblonczyk – 21/08/2011

Page 15: Qualidade em projetos PHP - TDC 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”

Luís Otávio Cobucci Oblonczyk – 21/08/2011

Page 16: Qualidade em projetos PHP - TDC 2011
Page 17: Qualidade em projetos PHP - TDC 2011

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

Page 18: Qualidade em projetos PHP - TDC 2011

Luís Otávio Cobucci Oblonczyk – 21/08/2011

Page 19: Qualidade em projetos PHP - TDC 2011

Precisamos utilizar as ferramentas corretas...

Page 20: Qualidade em projetos PHP - TDC 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

Luís Otávio Cobucci Oblonczyk – 21/08/2011

Page 21: Qualidade em projetos PHP - TDC 2011

Atenção: testes podem mentir...

Page 22: Qualidade em projetos PHP - TDC 2011

Atenção: testes podem mentir...

Page 23: Qualidade em projetos PHP - TDC 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

Luís Otávio Cobucci Oblonczyk – 21/08/2011

Page 24: Qualidade em projetos PHP - TDC 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

Luís Otávio Cobucci Oblonczyk – 21/08/2011

Page 25: Qualidade em projetos PHP - TDC 2011
Page 26: Qualidade em projetos PHP - TDC 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

Luís Otávio Cobucci Oblonczyk – 21/08/2011

Page 27: Qualidade em projetos PHP - TDC 2011
Page 28: Qualidade em projetos PHP - TDC 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

Luís Otávio Cobucci Oblonczyk – 21/08/2011

Page 29: Qualidade em projetos PHP - TDC 2011
Page 30: Qualidade em projetos PHP - TDC 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

Luís Otávio Cobucci Oblonczyk – 21/08/2011

Page 31: Qualidade em projetos PHP - TDC 2011

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

Page 32: Qualidade em projetos PHP - TDC 2011

DocBloxDocBlox

● 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

Page 33: Qualidade em projetos PHP - TDC 2011

Luís Otávio Cobucci Oblonczyk – 21/08/2011

Page 34: Qualidade em projetos PHP - TDC 2011

Luís Otávio Cobucci Oblonczyk – 21/08/2011

Page 35: Qualidade em projetos PHP - TDC 2011

Como juntar isso tudo?

Page 36: Qualidade em projetos PHP - TDC 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

Luís Otávio Cobucci Oblonczyk – 21/08/2011

Page 37: Qualidade em projetos PHP - TDC 2011

Build?

Page 38: Qualidade em projetos PHP - TDC 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

Luís Otávio Cobucci Oblonczyk – 21/08/2011

Page 39: Qualidade em projetos PHP - TDC 2011

Porque usar o Phing?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

Page 40: Qualidade em projetos PHP - TDC 2011

Então é uma lista de tarefas?

Page 41: Qualidade em projetos PHP - TDC 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

Luís Otávio Cobucci Oblonczyk – 21/08/2011

Page 42: Qualidade em projetos PHP - TDC 2011

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

Page 43: Qualidade em projetos PHP - TDC 2011

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

Page 44: Qualidade em projetos PHP - TDC 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 45: Qualidade em projetos PHP - TDC 2011
Page 46: Qualidade em projetos PHP - TDC 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/

Luís Otávio Cobucci Oblonczyk – 21/08/2011

Page 47: Qualidade em projetos PHP - TDC 2011

Próximos passos?Próximos passos?

● Refatoração● Integração Contínua

Luís Otávio Cobucci Oblonczyk – 21/08/2011

Page 48: Qualidade em projetos PHP - TDC 2011

Perguntas??

Page 49: Qualidade em projetos PHP - TDC 2011

Obrigado!Obrigado!

● @lcobucci● http://lcobucci.wordpress.com● http://github.com/lcobucci

Luís Otávio Cobucci Oblonczyk – 21/08/2011