2. Sobre mim
Bruno Emanuel é Certificado LPI 1, Scrum Master, Novell CLA,
Java SCJP 6
- Estudante contínuo de tecnologias Orientadas a Objeto e Design
Patterns
- Consultoria em Gestão de Projetos
- Desenvolvedor Java e PHP
- Analista de Sistemas
- Adepto de tecnologias OpenSource
- Consultor de segurança e auditoria na área de TI
3. Seus Projetos
●Quantos projetos foram lançados nos
últimos 6 meses?
Quantos foram bem sucedidos?
●
Quantos foram mal sucedidos?
●
6. Metodologia de
Desenvolvimento de
Sistemas
As metodologias de desenvolvimento de
software servem para não tornar a tarefa,
complexa por natureza, um verdadeiro caos.
●A qualidade de um software não está associada
apenas ao seu funcionamento correto
●Engloba o processo:
● como desenvolver software
● executar a manutenção no software existente, e
● suprir a demanda crescente por novos softwares
●Se o processo de desenvolvimento de um produto é
ruim, sem dúvida o produto obtido é ruim.
7. Modelo em Cascata
●No modelo em cascata, o desenvolvimento de um
software se dá de forma sequencial, a partir da
atividade de verificação da viabilidade do
desenvolvimento
●Para cada etapa cumprida, segue-se a etapa
imediatamente posterior, daí a idéia de uma cascata
8. Modelo em Cascata -
Desvantagem
●A busca de requisitos só ocorre no inicio do
projeto, ou seja, quando o projeto termina, o
sistema pode estar obsoleto, ou não atende às
necessidades atuais do cliente.
●Testes são feitos só ao término do processo, o
que pode causar maior custo na entrega de um
produto viável.
9. Modelo Iterativo e
Incremental
●Segue basicamente o modelo em Cascata, porém,
quebra o processo em partes menores
● O desenvolvimento de um produto passa a ter ciclos
●Cada ciclo é composto de: Análise, Projeto,
Implementação e Testes
●Dessa forma problemas ou mudanças no projeto são
detectados/aplicados mais rápido e com menor custo
11. Definições de Pronto
• O que significa “pronto” em seu projeto atual?
• Você concorda com essa definição? Por que?
• Quais problemas de engenharia você percebe com
essa definição de “pronto”?
• Como você pode corrigir isso?
12. Uso de
funcionalidades
Nunca
Raramente
Às vezes
Frequentemente
Sempre
0,00% 5,00% 10,00% 15,00% 20,00% 25,00% 30,00% 35,00% 40,00% 45,00%
14. Metodologia Ágil
●Oferecem ao desenvolvedor total flexibilidade
●Aproxima a equipe de T.I do usuário final do software
●Homologação dos projetos é feita em etapas
●Tempos de entrega mais curtos
●Capacidade de promover alterações rapidamente.
15. Metodologia – Qual
usar?
Todos os projetos são adequados para os
●
métodos ágeis?
“No caso de sistemas maiores, como um ERP (sistema de
gestão), as metodologias tradicionais são mais indicadas”
“Pode demorar até seis meses para definir os requisitos
identificar as necessidades de negócios da empresa. Mas
depois é possível usar os métodos ágeis em qualquer
projeto”,
●Desde o surgimento das metodologias ágeis,
entusiastas de ambos os lados tentam provar
qué o seu método é o melhor. Mais maduro, o
mercado agora vê que cada caso é um caso e
tenta tirar o melhor proveito de ambos os
métodos.
16. Scrum ?
• É um processo iterativo e incremental para
o desenvolvimento de qualquer produto e
gerenciamento de qualquer projeto;
• É mais um framework que uma
metodologia, mais atitude que um processo;
19. Ágil
Qual o ambiente ?
Ferramentas colaborativas
●
Wiki dos Projetos
●
Controle de Versão
●
Testes
●
Automação de Testes
●
Integração do código
●
Ambiente de Homologação
●
20. Wiki – Pra que?
Por ser desenvolvimento ágil, não significa que não
haverá nenhuma documentação.
O Wiki por ser prático e fácil pode ser utilizado para
identificar problemas/soluções no projeto e
acompanhar o decorrer do mesmo
Podendo até ser utilizado para identificar erros
recorrentes.
21. Testes – Está mesmo
fazendo?
O desenvolvimento ágil é iterativo.
Logo, haverá refatorações constantes no código para
melhorar a aderência ao modelo.
Todas essas refatorações, devem ter uma garantia de que
estejam funcionando e, principalmente, que nada que estava
funcionando antes pare de funcionar.
Se não garante a qualidade do seu código através de testes,
lamento, mas não estás utilizando uma metodologia ágil para
desenvolver software.
22. Testes Automatizados
Os testes são um dos alicerces do desenvolvimento de software
ágil.
O testador ágil tem uma tarefa muito importante e totalmente
diferente dos 'testers' (também conhecidos como "apertadores
de botão") das fábricas de softwares.
Os testes devem ser automatizados. E feitos sempre.
23. Em PHP
No ambiente, que ferramentas?
● IDE + Framework ( CakePHP, Code Igniter )
●CruiseControl + PHPUnderControl
●SVN + TortoiseSVN – Controle de versão
●PHPUnit ou SimpleTest – Teste unitário
●PHPDoc - Documentador
●MediaWiki/DokuWiki
●Phing – para deploy
●Kanban
●ClockingIT / ScrumShark – Gestão do projeto