Beruflich Dokumente
Kultur Dokumente
DE SOFTWARE
João Alexandre Bonin de Mello
jalexandremello@gmail.com
A situação do
Desenvolvimento de Software
Menos de 5% do software é
utilizado sem alterações
Mais de 95% do software é utilizado
com alterações ou não utilizado
Utilizado com alterações
Grande retrabalho
Entregue mas não utilizado
Não entregue (mas pago)
(c) 1997 – Rational Corporation
Como o Cliente
Explicou
Como o Consultor de
Negócios Descreveu
Como o líder de
projeto entendeu
Como o Analista
Planejou
Como o Programador
Codificou
O que os Beta Testers
Receberam
O que foi entregue
Como foi
documentado
O que o cliente
pagou
O que o cliente
realmente
necessitava
Problemas
Identificação de
defeitos → somente
após a entrega do
sistema
Não há provas de que
o sistema vá rodar a
menos que ele esteja
pronto
Problemas
A demanda por
software é um negócio
crescente
Ninguém entende o
sistema todo
Problemas
Sistemas legados
precisam ser
mantidos...
Problemas
… mas os
desenvolvedores
originais sumiram!!!
Problemas
Requisitos instáveis!
Software Complexo!
Flexibilidade!
Não há provas de que
o sistema vá rodar a
menos que ele esteja
pronto!
Problemas
Usuário x
Profissional
de TI
Conclusão: Desperdício
Engenharia de
Software
Aplicação de:
teoria,
modelos,
formalismos, Engenharia
técnicas e ferramentas de
da ciência da
computação e áreas Software
afins
para o desenvolvimento
sistemático de software
Engenharia Formalidade
de Software
Princípios Abstração
Decomposição
Generalização
Flexibilização
Formalidade
o software deve ser
desenvolvido de acordo com
passos definidos com precisão
e seguidos de maneira Engenharia
efetiva;
Abstração
de
preocupa-se com a
identificação de um
Software
determinado fenômeno da
realidade, sem se preocupar
Princípios
com detalhes, considerando
apenas os aspectos mais
relevantes.
Decomposição
divide o problema em partes, de
maneira que cada uma possa ser
resolvida de uma forma mais
específica;
Engenharia
Generalização
usada para resolver um problema,
de
de forma genérica, com o intuito
de reaproveitar essa solução em
Software
outras situações;
Princípios
Flexibilização
permite que o software possa ser
alterado, sem causar problemas
para sua execução.
Engenharia de Software
Software
extra-power
COMO SE DEFINE UM
SOFTWARE DE QUALIDADE?
SOFTWARE BOM
SEGUNDO A
O grande software é o código orientado
ORIENTAÇÃO A a objetos.
OBJETOS Assim, não há um monte de código
duplicado e cada objeto controla seu
próprio comportamento. Também é fácil
estendê-lo, uma vez que o projeto é
realmente sólido e flexível.
O grande software é criado quando
SOFTWARE você usa padrões de projeto e princípios
BOM comprovados e verdadeiros. Você
SEGUNDO manteve seus objetos livremente unidos
O PESSOAL e o seu código é aberto para extensão,
mas fechado para modificação. Isso
DE também ajuda a tornar o código mais
PADRÕES reutilizável, por isso você não precisa
DE trabalhar em tudo novamente para usar
PROJETO partes de suas aplicações em outras
ocasiões.
O grande software sempre faz o que o
cliente deseja. Portanto, mesmo que o
SOFTWARE clientes pensem em novas formas de
usá-lo, ele não dará problemas ou
BOM apresentará resultados inesperados.
SEGUNDO
O CLIENTE
Os clientes acharão seu software ótimo
quando ele fizer o que tiver de fazer
RESUMINDO... Você achará seu software ótimo
quando seu software for fácil de manter,
reutilizar e estender
Dados
Tecnologia
Concepção
Desenvolvimento
O ciclo
de vida Manutenção
de um
sistema
Descarte
Ativação
Requisitos
Testes
Transição
Erro,
Defeito e
Falha
Defeito, Erro e Falha
Produção x
Retrabalho
Origem dos Defeitos
DEFEITOS
Outros
31%
Requisitos
41%
Projeto
28%
O ciclo de vida
trata das fases
identificadas
entre o
nascimento e a
morte de um
software.
Modelo de
Ciclo de
Vida do
Software
Modelo de
Ciclo de
Vida do
Software
Conjunto de atividades,
métodos, práticas e
Processo transformações que guiam
pessoas na produção de
de
software.
Software
Modelos de
Processo
de Software
Características da aplicação (domínio
do problema, tamanho do software, tipo
e complexidade, etc);
Tecnologia a ser adotada na sua
construção (paradigma de
desenvolvimento, linguagem de
programação, mecanismo de
Modelos de persistência, etc);
Processos Organização onde o produto será
Consideram desenvolvido e a equipe de
desenvolvimento alocada (recursos
humanos).
É uma caracterização prescritiva ou
descritiva de como um produto de
software deve ser desenvolvido, i.e.,
define o quê, como e quando fazer algo
Planejamento:
faz-se o esboço do escopo e dos
requisitos, além de estimativas
razoáveis sobre recursos, custos e
prazos.
Análise e Especificação de Requisitos:
durante essa fase, refina-se os
Fases requisitos e o escopo e desenha-se o
Genéricas problema em questão.
dos Projeto:
Modelos durante essa fase, incorpora-se
requisitos tecnológicos aos requisitos
essenciais do sistema e projeta-se a
arquitetura do sistema.
Implementação:
durante essa fase, codifica-se o
software como um conjunto de
programas executáveis pela
máquina.
Teste:
o programa é testado como um
sistema completo para garantir que
Fases os requisitos de software foram
Genéricas atendidos.
dos Implantação, Operação e
Manutenção:
Modelos
o sistema de software é liberado
para o cliente, treina-se usuários,
gerencia serviços e realiza
manutenções.
Fases Genéricas dos Modelos
TESTE IMPLANTAÇÃO,
OPERAÇÃO E
MANUTENÇÃO
Principais Modelos
Codifica e remenda
Especificação
(???)
Produto
Codifica e Remenda - Problemas
Cascata
Cascata - Problemas
Só se conhece o produto no final do processo
Prototipação
Problemas
com a
Prototipação
Adaptar o protótipo final
para um sistema real
Espiral ou
Evolucionário
Espiral -
Problemas
O Gerenciamento é mais
complexo
Releases sucessivos ou Incremental
Rational Unified Process
Às vezes
soluções
mais
complexas...
Não
substituem a
simplicidade
Métodos
Ágeis
Manifesto Ágil
Programação
Extrema - XP
Programação Extrema - XP
Histórias de Usuário
Programação
em Pares
comunicação;
Programação
Extrema – XP
Valores simplicidade;
feedback;
coragem;
respeito.
cliente sempre à disposição;
uso de metáforas;
testes de aceitação;