Академический Документы
Профессиональный Документы
Культура Документы
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
A crise do software
Por que os projetos falham?
Causas:
Mudanças rápidas nas regras de negócio X rigidez do sistema ou do
processo.
Prazos irreais (subestimação do esforço, “esquecimento” de atividades
necessárias à produção de software, “otimismo”, ...).
Recursos inadequados (pessoas, máquinas, ferramentas, ambiente, ...).
Falhas na captura, especificação e gerência de requisitos.
Baixa participação dos stakeholders no projeto.
Baixo índice de feedback pelo cliente.
Falhas no gerenciamento de riscos.
...
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 39
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
A crise do software
Por que os projetos falham?
Fatores de sucesso normalmente presentes:
Envolvimento dos stakeholders no projeto.
Suporte da alta direção.
Processo de desenvolvimento organizado e adequado ao projeto.
Definição clara dos requisitos e método controlado de modificações.
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 40
1
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Fatores-chave de Wasserman
Problemas com
Tecnologia de metodologias
desenvolvimento
MUDANÇAS NA
Computação em ENGENHARIA Tempo de disponibilização
desktop DE SOFTWARE para o mercado
Mudanças na
Operações em rede
economia
Interface com o usuário
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 41
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Fundamentos de ES (Wasserman)
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 42
2
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Abstração
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 43
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 44
3
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Realizar Avaliação
Consultar Planejamento
Consultar Documento
Consultar Anúncio
Comentar Aula
Comentar Documento
Consultar Aula
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 45
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 46
4
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Arquitetura de software
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 47
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Processo de software
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 48
5
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Processo de software
Desenvolvimento de software é a atividade de produzir software a
partir de requisitos.
Necessita de uma “receita de bolo”.
Processo de desenvolvimento é o conjunto de atividades e
resultados associados que geram um produto de software.
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 49
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Processo de desenvolvimento
de software
Um processo define: Modelo 5W-2H
• os artefatos que serão desenvolvidos; • Who
• quando e como eles serão desenvolvidos; • What
• o perfil de quem irá desenvolvê-los; • When
• a razão do desenvolvimento de cada • Why
artefato; • Where
• onde os artefatos serão desenvolvidos. • How
• How much
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 50
6
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Processo de software
Diferenças no desenvolvimento
Desenvolvimento
controlado Missão crítica
Multiusuário
Multiplataforma
Aplicativos
de toda a em Desenvolvimento em 2 a 3 camadas
presa ou de
uma divisão
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Reutilização
No desenvolvimento e na manutenção, podemos
tirar vantagens das semelhanças entre
aplicativos reutilizando itens prontos
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 52
7
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Medição
Para aprimorar processos, recursos e métodos
de modo de produzir e manter produtos
melhores
A medição nos permite avaliar o trabalho
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 53
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 54
8
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Processo
Uma série de etapas que envolvem atividades, restrições e
recursos para alcançar a saída desejada
Prescreve todas as suas principais atividades
Utiliza recursos, está sujeito a um conjunto de restrições (como um
cronograma) e gera produtos intermediários e finais
Pode ser composto de subprocessos relacionados
Cada atividade do processo tem critérios de entrada e saída, como
começa e termina
Tem diretrizes que explicam os objetivos de cada atividade
Restrições e controle podem ser aplicados a uma atividade, recurso
ou produto
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 55
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 56
9
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
O processo de software
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Processo de software
Uma sequência de atividades executadas para produzir
um software
Define:
Os artefatos que serão desenvolvidos.
Quando e como eles serão desenvolvidos.
O perfil de quem irá desenvolvê-los.
A razão do desenvolvimento de cada artefato.
Onde os artefatos serão desenvolvidos.
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 58
10
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Processo de software
Componentes típicos de um processo
Atividade
Descreve um conjunto particular de tarefas afins.
Passo
Uma tarefa específica que compõe uma atividade.
Papel
Representação de uma categoria de indivíduos
do processo que possuem responsabilidades e competências.
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 59
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Processo de software
Componentes típicos de um processo
Artefato
Qualquer produto gerado no desenvolvimento de um software.
– Códigos-fonte, diagramas, documentos, ...
Um processo de software define:
– Os artefatos que serão desenvolvidos.
– Quando e como eles serão desenvolvidos.
– O perfil de quem irá desenvolvê-los.
– A razão do desenvolvimento de cada artefato.
– Onde os artefatos serão desenvolvidos.
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 60
11
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Processo de software
Adequação do processo
Qualidade do produto é altamente influenciada pela qualidade do
processo.
Processo deve ser adaptado para as características do projeto.
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 61
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Processo de software
Benefícios de um processo
Todos os membros da equipe compreendem o que eles devem
fazer para desenvolver o produto.
Desenvolvedores podem entender o que outros estão fazendo
(até em outros projetos da mesma ou de outras empresas).
Realocação de pessoas para outros projetos.
Padronização do treinamento dentro da empresa.
O processo pode ser repetido em outros projetos, o que faz
com que o cronograma e os custos possam ser estimados com
maior exatidão.
Essencial no desenvolvimento de sistemas em equipe.
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 62
12
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Modelo em Cascata
Análise de
requisitos
• Descreve a sequência de eventos
Projeto do de desenvolvimento
Sistema
• Simples para descrever o que
precisa ser feito
Projeto do
Programa • Não reflete a realidade do
desenvolvimento de software
• Não fornece orientações para
Codificação
gerentes e desenvolvedores sobre
como tratar das mudanças nos
artefatos dos processos
Testes
Operação e
Manutenção
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 63
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Modelo em Cascata
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 64
13
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Modelo em Cascata
Processo linear:
saída de uma fase é a entrada para a seguinte
Consiste de 7 fases
1. Estudo de viabilidade
2. Definição de requisitos
3. Projeto
4. Codificação e teste dos módulos
5. Integração e teste do sistema
6. Entrega e aceitação
7. Manutenção
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 65
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Modelo em Cascata
Problemas
dificuldade de estimar com pouca informação
especificação de requisitos é um documento escrito
usuário não sabe os requisitos exatos
processo não força antecipação das mudanças
processo baseado na produção de documentos
(burocrático)
Apesar disto:
ainda é o modelo mais usado pela simplicidade
contratual.
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 66
14
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Manutenção Projeto do
Sistema
Projeto do
Entrega
Programa
Testes Codificação
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 67
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Planejamento
Construção
Engenharia Análise de
Riscos
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 68
15
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Espiral
Reune a natureza interativa da prototipação com os aspectos
sistemáticos e de controle do modelo sequencial
Grupos de atividades:
Comunicação com o cliente;
Planejamento;
Análise de risco;
Engenharia;
Construção e distribuição;
Avaliação do cliente.
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 69
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Espiral
4-Avaliar 1-Objetivos ?
2-Avaliar
3-Construir Alternativas
Riscos
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 70
16
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Espiral
Cada volta ao longo da espiral gera:
um protótipo
versão mais sofisticada;
Permite ao desenvolvedor:
utilizar a prototipação em qualquer estágio de evolução do produto
manter a sistemática sugerida pelo ciclo de vida clássico.
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 71
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 72
17
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
UP
Mistura os estilos de processo iterativo e incremental
Premissas:
Tempo de desenvolvimento de sistemas grandes não permite
definir o problema e construir a solução num único passo.
Os requisitos irão mudar naturalmente durante o
desenvolvimento do projeto, devido a arquitetura,
necessidades do cliente ou um melhor entendimento do
problema original.
Iteração:
Permite um melhor entendimento do produto através de
refinamentos sucessivos e ataca os itens de alto-risco de um
projeto com prioridade alta.
Sempre resulta num "lançamento executável”; o que ajuda a
reduzir o risco do projeto.
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 73
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
UP
Processo bem definido:
define claramente quem é responsável pelo que, como as
coisas devem ser feitas e quando fazê-las.
Estruturado em Fases (tempo) e Disciplinas (áreas de
interesse).
Processo personalizável:
suporta a adaptação e criação de processos
variedade de processos podem ser montadas a partir dele.
Configurações:
suportar equipes grandes e pequenas,
técnicas de desenvolvimento disciplinadas ou menos formais.
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 74
18
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Prototipagem
Operação e
Análise de Manutenção
requisitos Valida requisitos
Teste de
aceitação
Projeto do
Sistema
Verifica o projeto
Teste do
sistema
Teste de
Projeto do
unidade e de
Programa
integração
Codificação
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 75
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Prototipagem
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 76
19
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Prototipagem
• Processo cíclico para especificar:
• requisitos definidos pelo usuário
• necessidades de hardware e software
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 77
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Prototipagem
Ouvir o Desenho e
Cliente Construção
Avaliação
do Cliente
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 78
20
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Prototipagem
• Pontos positivos
•grande interação com o usuário
•qualidade da definição da interface
• Pontos negativos
•expectativa do usuário
•compromissos com a tecnologia
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 79
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Incremental
Requisitos
Projeto Projeto
Integraçào Integração
Aceite Aceite
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 80
21
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Incremental
Rapid Application Development- RAD
Modelagem Modelagem
do Negócio do Negócio
Modelagem Modelagem
dos Dados dos Dados
Modelagem Modelagem
de Processos de Processos
Geração do Geração do
Aplicativo Aplicativo
Testes Testes
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 81
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Incremental
Rapid Application Development- RAD
1-Modelagem do negócio: definição das atividades a serem
executadas e seus requisitos de informação
2-Modelagem dos dados – Definição dos objetos de dados que
suportam o negócio
3-Modelagem do tratamento da informação – Descrição dos
processos de manipulação dos objetos de dados
4-Geração da aplicação – usando técnicas de geração de
código e bibliotecas de componentes
5-Testes – Tempo de testes reduzido devido ao uso de
componentes
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 82
22
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
Incremental
Rapid Application Development- RAD
Pontos positivos
uso de componentes
redução do tempo
Pontos negativos
tamanho da equipe
necessidade de comprometimento
não adequada a projetos de risco
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 83
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
XP – Extreme Programming
Comunicação
Simplicidade
Feedback
Coragem
Respeito
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 84
23
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
XP - Práticas
Jogo de Planejamento
Pequenas Versões
Metáfora
Projeto Simples
Time Coeso
Testes de Aceitação
Ritmo Sustentável
Reuniões em pé
Posse Coletiva
Programação em Pares (Pair Programming)
Refatoração (Refactoring)
Integração Contínua (Continuous Integration)
Desenvolvimento Orientado a Testes (Test Driven Development)
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 85
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
XP
Proposta:
Desenvolver softwares de forma que as mudanças sejam
implementadas a medida em que as mesmas vão surgindo
durante o desenvolvimento do software.
Cliente satisfeito significa "software eficiente"
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 86
24
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
XP
Se adapta às inevitáveis mudanças que ocorrem durante o
desenvolvimento
Desenvolver software da maneira mais rápida possível:
ainda assim confiável e eficiente.
Como:
ignorando, adiando ou gastando menos tempo com atividades
como documentação, projeto e modelagem.
Garantia:
O software é sempre testado a medida em que novas
mudanças são implementadas
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 87
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
SCRUM
O Scrum é um processo de desenvolvimento iterativo e
incremental para gerenciamento de projetos e
desenvolvimento ágil de software.
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 88
25
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
SCRUM
Cada sprint é uma iteração que segue um ciclo (PDCA)
e entrega incremento de software pronto.
Um backlog é conjunto de requisitos, priorizado pelo
Product Owner (responsável pelo ROI e por conhecer
as necessidades do cliente);
Há entrega de conjunto fixo de itens do backlog em
série de interações curtas ou sprints;
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 89
EscolaEscola
de Ciência
de Ciência
e e
Tecnologia
Tecnologia
SCRUM
Breve reunião diária, ou daily scrum, em que cada
participante fala sobre o progresso conseguido, o
trabalho a ser realizado e/ou o que o impede de seguir
avançando (também chamado de Standup Meeting ou
Daily Meeting, já que os membros da equipe
geralmente ficam em pé para não prolongar a reunião).
Breve sessão de planejamento, na qual os itens do
backlog para uma sprint (iteração) são definidos;
Retrospectiva, na qual todos os membros da equipe
refletem sobre a sprint passada.
Disciplina: Fundamentos
NOME DA DISCIPLINA
de Engenharia de Software 90
26