O documento discute a necessidade de ambientes integrados de desenvolvimento (IDEs) para projetos de software. Ele descreve as vantagens de usar o Eclipse PHP Development Tools, incluindo integração com controle de versão, bancos de dados e ferramentas PHP. Também fornece dicas sobre depuração, desempenho e técnicas para descoberta de bugs.
5. Fato
“Apesar dos avanços alcançados até o presente
momento em termos de reusabilidade, tem havido
um crescimento continuado tanto em termos do
tamanho quanto da complexidade dos sistemas
de software”. (MENDES, 2002, p. 4)
6. Fato
“Projeto de software é um problema perverso
Horst Rittel e Melvin Webber definiram um ‘problema perverso’
como aquele que poderia ser claramente definido apenas por
intermédio de sua solução ou pela solução de parte dele (1973).
Esse paradoxo sugere, basicamente, que você precisa ‘resolver’ o
problema uma vez pra defini-lo claramente e depois resolvê-lo
mais uma vez, para criar uma solução que funcione”.
(MCCONNELL, 2005, p. 106)
7. Fato
“O projeto de software é um processo desordenado (mesmo
que produza um resultado ordenado)
[…] O projeto de software é desordenado porque você dá muitos
passos em falso e passa por muitos corredores escuros – você
comete vários erros. Na verdade, cometer erros é o objetivo da
atividade de projeto de software – é mais barato cometer erros e
corrigir os projetos do que cometer os mesmo erros, reconhecê-los
após a codificação e ter de corrigir o código completo”.
(MCCONNELL, 2005, p. 107-108)
8. Fato
“O projeto de software não é determinístico
[…] Pode até haver mais de uma maneira de escalpelar um gato,
mas normalmente existem dezenas de maneiras de fazer o projeto
de um programa de computador”. (MCCONNELL, 2005, p. 108)
9. Fato
“O projeto de software é heurístico
[…] O projeto de software envolve ‘tentativa e erro’. Uma
ferramenta ou técnica de projeto de software que tenha funcionado
bem para uma tarefa ou para um aspecto de uma tarefa, pode não
funcionar bem no projeto seguinte”. (MCCONNELL, 2005, p. 108)
11. Desafio
“Desenvolver software de qualidade assegurada,
com elevada produtividade, dentro do prazo
estabelecido e sem necessitar de mais
recursos do que os alocados, tem sido o
grande desafio da Engenharia de Software”.
(FIORINI, VON STAA e BAPTISTA, 1998, p. 1)
32. Produtividade
Assim como ocorre com um padrão de projeto,
uma IDE comum para uma equipe estabelece um
vocabulário comum, facilitando comunicação,
documentação e aprendizado.
33. Como integrar um IDE
com ferramentas
de linha de comando
relacionadas à rotina
de construção de software
41. Técnicas para descoberta de
causas de bugs
Coisas óbvias (ou não):
● Ler a mensagem de erro;
● Verificar a pilha de chamadas;
Essa é a postura REATIVA.
42. Técnicas para descoberta de
causas de bugs
Coisas não tão óbvias:
● Usar exceções (e tratá-las sempre que
possível);
● Usar níveis de log (Classe LogLevel – PSR);
● Usar TDD;
● Usar programação orientada a objetos.
Essa é a postura PREVENTIVA.
49. Referências
● DJIKSTRA, Edsger. The next fifty years. 1996.
<https://www.cs.utexas.edu/users/EWD/transcriptions/EWD12x
x/EWD1243a.html>
● FIORINI, Soeli. VON STAA, Arndt. BAPTISTA, Renan M.
Engenharia de software com CMM. Rio de Janeiro: Brasport,
1998.
● MCCONNELL, Steve. Code complete: um guia prático para a
construção de software. 2.ed. Tradução: João Tortello. Porto
Alegre: Bookman, 2005.
● MENDES, Antonio. Arquitetura de software: desenvolvimento
orientado para arquitetura. Rio de Janeiro: Campus, 2002.