Introdução à
Engenharia de Software
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
1
Engenharia de Software
Ementa
Conceitos de Engenharia de Software.
Produto e processo de desenvolvimento
de software. Extração, análise e especificação
de requisitos. Métodos de desenvolvimento de
software. Verificação, validação e manutenção
de especificações de software. Planejamento
e gestão de projetos. Estimativas: métricas e
modelos de custo, estudo de viabilidade
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
2
Engenharia de Software
Programa
1. INTRODUÇÃO
1.1 Definições e Objetivos
1.2 Conceitos Básicos
1.3 Características do Software
1.4 Componentes e Aplicações do
Software
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
3
Engenharia de Software
Programa
2. PROCESSO DE SOFTWARE
2.1 Modelo de Processo
2.2 Ciclo de Vida Clássico/Modelo Cascata
2.3 Modelo Evolucionário
2.4 Modelo Espiral
2.5 Técnicas de Quarta Geração
2.6 Desenvolvimento Rápido de Software
2.7 Combinando Paradigmas
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
4
Engenharia de Software
Programa
3. REQUISITOS DE SOFTWARE
3.1 Classificação de requisitos
3.2 Técnicas de extração de requisitos
3.3 Documento de requisitos de software
3.4 Processos de Engenharia de Requisitos
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
5
Engenharia de Software
Programa
4. GERENCIAMENTO DE CUSTO
4.1 Planejamento
4.2 Estudo de Viabilidade
4.3 Estimativa
4.4 Métricas de Software
4.5 Gerenciamento de Pessoal
4.6 Gerenciamento de Grupos
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
6
Engenharia de Software
Programa
5. MODELOS DE SISTEMA
5.1 Modelos de Contexto
5.2 Modelos de Comportamento
5.3 Métodos Estruturados
5.4 Métodos Orientado a Objeto
– Casos de Uso
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
7
Engenharia de Software
Programa
6. MODELO PARA PROJETO
6.1 Hierarquia de módulos e objetos
6.2 Estratégias para derivar o projeto
6.3 Qualidade do projeto:
coesão, acoplamento
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
8
Engenharia de Software
Programa
7. MODELO DE DADOS
7.1 Diagrama de Entidade e Relacionamento
7.2 Tipos de Entidades
7.3 Tipos de Relacionamento
7.4 Normalização
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
9
Engenharia de Software
Programa
8. VERIFICAÇÃO, VALIDAÇÃO E TESTE
8.1 Planejamento de verificação e
validação
8.2 Inspeções de Software
8.3 Teste de Software
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
10
Engenharia de Software
Programa
9. EVOLUÇÃO DE SOFTWARE
9.1 Manutenção de Software
9.2 Tipos de Manutenção
9.3 Previsão de mudanças
9.4 Processo de Evolução
9.5 Evolução de Sistemas Legados
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
11
Engenharia de Software
Programa
10. GERENCIAMENTO DE QUALIDADE
10.1 Qualidade de Processo e de
Produto
10.2 Padrões de Qualidade
10.3 Controle de Qualidade
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
12
Engenharia de Software
Bibliografia Básica
― Sommerville, Ian, Engenharia de Software.
Ed. Addison Wesley, 8º Edição
― PRESSMAN, ROGER, Engenharia de Software.
Ed. Mc-Graw Hill, 6º Edição, 2006.
― POMPILHO, S. Análise Essencial – Guia Prático
de Análise de Sistemas. Ed. Infobook, 1995.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
13
Engenharia de Software
Bibliografia de Apoio
― http://wps.prenhall.com/br_pfleeger_engsoftware_2
― www.aw.com/sommerville_br
― http://www.computer.org/portal/web/swebok/html/copyright
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
14
Objetivos
• Compreender o que é Engenharia de
Software e por que ela é importante.
• Mostrar as distinções e relacionamentos
entre sistema e software.
• Mostrar as principais questões sobre
engenharia software.
• Compreender questões profissionais e
éticas relevantes para os engenheiros de
software.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
15
Por que?
• Por que tanta demora para entregar o
sistema?
• Por que os prazos se atrasam?
• Por que os custos são altos?
• Por que não achar todos os erros antes
de entregar?
• Por que é difícil medir o progresso do
desenvolvimento de um software?
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
16
Desafio
No mercado atual, não há dúvida
de que os profissionais de TI
envolvidos com projetos de
desenvolvimento de software e
soluções corporativas têm um
claro desafio:
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
17
Desafio
PRODUZIR soluções mais rápidas,
melhores e mais baratas
que antes (melhor ainda ser mais
rápidas, melhores e mais baratas
que a concorrência)
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
18
Desafio
• Desenvolver software é um problema
de métodos e técnica, em suma, de
atividade humana.
• Gerenciar projetos de TI é gerenciar
riscos assumidos e vencidos por seres
humanos inteligentes.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
19
Evolução do Software
Período
Evolução
1950-1960 Orientação a batch
Software totalmente customizado
Distribuição limitada
1960-1970 Multiusuários
Tempo Real
Banco de Dados
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
20
Desafio
Período
Evolução
1980-1990 Sistemas distribuídos
Inteligência Embutida
Hardware de baixo custo
1990-2000 Sistemas de desktop poderosos
Tecnologia orientada a objeto
Sistemas Especialistas....
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
21
Desafio
Período
Evolução
2000 - atual As tecnologias orientadas a
objetos
Uso das técnicas de "quarta
geração" para o
desenvolvimento de software
Os sistemas especialistas e o
software de inteligência
artificial.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
22
Aplicação do Software
Básico
Coleção de programas escritos para
apoio a outros programas.
Tempo Real Software que monitora / analisa /
controla eventos do mundo real.
Comercial Processa informações comerciais,
reestruturação de dados para tomada
de decisões.
Científico Algoritmos de processamento de
números(astronomia,vulcanologia).
e de
engenharia
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
23
Aplicação do Software
Embutido
usado para controlar produtos e
sistemas para os mercados
industriais e de consumo.
Computador Processamento de textos, planilhas,
Pessoal
computação gráfica.
Inteligência faz uso de algoritmos não numéricos
Artificial
para resolver problemas que não
sejam favoráveis à computação ou à
análise direta.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
24
O que é Sistema?
é um conjunto de elementos interdependentes que realizam
operações visando atingir metas
especificadas.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
25
Sistema de Computação
é aquele destinado ao suporte ou
automação de tarefas através de
processamento de informações.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
26
Componentes de Sistemas de
Computação
Hardware Computadores,periféricos e
redes.
Software Os programas e arquivos
de dados.
Usuários Usuários e operadores que
realizam as tarefas e
procedimentos.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
27
Componentes de Sistemas de
Computação (cont.)
Atividades realizadas
Procedimentos pelos usuários e
operadores, bem como
pelos programas.
Manuais e formulários que
Documentação descrevem as operações
do sistema.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
28
Exemplos de Sistemas Computacionais
•
•
•
•
•
•
•
Automação Bancária
Frequência e Folha de Pagamento
Controle de Tráfego Urbano
Controle Acadêmico
Editoração de Jornais e Revistas
Controle de Elevadores
Automação de Biblioteca
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
29
O que é Software?
• Programas de computadores
associados a documentação.
• É um conjunto de soluções
algorítmicas, codificadas numa
linguagem de programação,
executado numa máquina real.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
30
Tipos de produtos de software
• Genéricos (COTS – Commercial OffThe Shelf) - tipo stand-alone, pacotes
de software, como por exemplo,
processadores de texto, ferramentas de
gerenciamento.
• Sob encomenda ( personalizado) –
desenvolvido para um cliente em
particular.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
31
Componentes do Software
Estruturas
de Dados
Plano
Especificação
de Requisitos
Projeto
Listagem
Programa
Funcionando
Plano de
Testes
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
32
Características do Software
• Complexidade
• Conformidade
• Mutabilidade
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
33
Características do Software
• Complexidade
– Software é mais complexo do
que qualquer outro produto
construídos por seres humanos.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
34
Características do Software
• Conformidade
– O software deve ser desenvolvido
conforme o ambiente. Não é o ambiente
que deve se adaptar ao software.
–Desenvolvido ou projetado por
engenharia, não manufaturado no
sentido clássico (industrial).
–Sucesso é medido pela qualidade e não
quantidade.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
35
Características do Software
• Mutabilidade
– Existe sempre uma pressão para se
fazer mudanças em um software.
–Não se “desgasta”, mas se deteriora
devido as mudanças.
–A maioria é feita sob medida em vez de
ser montada a partir de catálogos de
componentes existentes (reusabilidade
de software).
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
36
Falhas do Hardware
Defeitos de projeto e manufatura
índice
de
falhas
“desgaste”
“mortalidade
infantil”
Problemas
Ambientais
(poeira, vibração,
abuso, temperaturas, ...)
tempo
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
37
Falhas do Software
mudanças
curva real
índice de
falhas
curva idealizada
tempo
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
38
Falhas do Hardware/Software
• Quando um componente de hardware se
desgasta é substituído por uma “peça de
reposição”
• Não existe “peça de reposição” para software
– Toda falha indica um erro no projeto ou no
processo de tradução para o código
executável
– Manutenção do software é mais complexa
do que a do hardware
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
39
Formas do Software
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
40
Crise do Software
• Refere-se a um conjunto de
problemas encontrados no
desenvolvimento de software.
• Problemas não se limitam a
softwares que não funcionam
adequadamente.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
41
Crise do Software
• Prazos ultrapassados
• Custos acima do previsto
• Não atendimento dos requisitos
do usuário
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
42
Crise do Software
• Elevado custo de manutenção
–1/3 dos projetos são cancelados
–2/3 dos projetos extrapolam o
orçamento
• Custo hardware x software
– 1970 = 8:2
– 1991 = 2:8
– Hoje = 1:9
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
43
Crise do Software
• As estimativas de prazo e de custo
são imprecisas:
– Não dedicamos tempo para coletar
dados sobre o processo de
desenvolvimento de software
– Estimativas são feitas a olho, com
resultados ruins
–Os prazos arrastam-se por meses
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
44
Crise do Software
• As estimativas de prazo e de custo
são imprecisas (cont.)
– Causa insatisfação para o cliente e
falta de confiança.
– Sem nenhuma indicação sólida de
produtividade, não podemos avaliar
com precisão a eficácia de novas
ferramentas, métodos ou padrões.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
45
Crise do Sofware
• A produtividade das pessoas da área
de software não tem acompanhado a
demanda por seus serviços
– Os projetos de desenvolvimento de
software normalmente são
efetuados apenas com um vago
indício das exigências do cliente
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
46
Crise do Sofware
• O software existente é muito difícil
de manter:
– A tarefa de manutenção devora o
orçamento destinado ao software
– A facilidade de manutenção não foi
enfatizada como um critério
importante.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
47
Crise do Sofware
Solução para a Crise do Sofware 
Engenharia de Software aliada a:
TÉCNICAS E FERRAMENTAS
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
48
Causas dos problemas associados à
crise de software
• Filosofia do Software.
• Falhas das Pessoas Responsáveis
pelo Desenvolvimento de
Software.
• Mitos do Software.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
49
Filosofia do Software
O software é um elemento de sistema
lógico e não físico.
Consequentemente, o sucesso é medido
pela qualidade de uma única entidade e
não pela qualidade de muitas entidades
manufaturadas.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
50
Falhas das Pessoas Responsáveis pelo
Desenvolvimento de Software
– Gerentes sem nenhum background
em software.
– Os profissionais da área de software
têm recebido pouco treinamento
formal em novas técnicas para o
desenvolvimento de software.
– Resistência a mudanças.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
51
Mitos do Software
Mitos do Administrativos, do
Cliente e do Profissional
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
52
Problemas Administrativos
• Gerentes se encontram sob
pressão
– manter orçamentos
– evitar que os prazos sejam
ultrapassados
– melhorar a qualidade
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
53
Mitos Administrativos
• Mito: Já temos um manual repleto
de padrões e procedimentos para
a construção de software.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
54
Mitos Administrativos
• Realidade:
– Será que o manual é usado?
– Os profissionais sabem que ele
existe?
– Ele reflete a prática moderna de
desenvolvimento de software?
–Ele é completo?
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
55
Mitos Administrativos
• Mito: Meu pessoal tem
ferramentas de desenvolvimento
de software de última geração;
afinal compramos para eles os
mais novos computadores.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
56
Mitos Administrativos
• Realidade:
—É preciso muito mais do que os mais
recentes computadores para se fazer um
desenvolvimento de software de alta
qualidade.
—Ferramentas de Engenharia de Software
Auxiliada por Computador - CASE
(Computer-Aided Software Engineering) são
mais importantes do que o hardware.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
57
Mitos Administrativos
• Mito:
Se nós estamos atrasados nos
prazos, podemos adicionar mais
programadores e tirar o atraso.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
58
Mitos Administrativos
• Realidade:
– O desenvolvimento de software não é
um processo mecânico igual à
manufatura.
– Acrescentar pessoas em um projeto
torna-o ainda mais atrasado. Pessoas
podem ser acrescentadas.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
59
Mitos dos Clientes
• Mito: Uma declaração geral dos
objetivos é suficiente para se
começar a escrever programas podemos preencher os detalhes
mais tarde.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
60
Mitos dos Clientes
• Realidade:
– Uma definição inicial ruim é a principal
causa de fracassos dos esforços de
desenvolvimento de software.
– É fundamental uma descrição formal e
detalhada do domínio da informação,
função, desempenho, interfaces,
restrições de projeto e critérios de
validação.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
61
Mitos dos Clientes
• Mito: Os requisitos de projeto
modificam-se continuamente,
mas as mudanças podem ser
facilmente acomodadas, porque
o software é flexível.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
62
Mitos dos Clientes
• Realidade:
– Requisitos podem ser mudados, mas o
impacto varia de acordo com o tempo
que é introduzido (projeto e custo).
– Uma mudança, quando solicitada
tardiamente num projeto, é mais
dispendiosa do que a mesma mudança
solicitada nas fases iniciais.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
63
Mitos do Profissional
• Mito: Assim que escrevermos o
programa e o colocarmos em
funcionamento nosso trabalho
estará completo.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
64
Mitos do Profissional
• Realidade:
– Os dados da indústria indicam
que entre 50 e 70% de todo
esforço gasto num programa
serão despendidos depois que
ele for entregue pela primeira
vez ao cliente
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
65
Mitos do Profissional
• Mito: Enquanto não tiver o
programa "funcionando", eu não
terei realmente nenhuma maneira
de avaliar sua qualidade.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
66
Mitos do Profissional
• Realidade:
– Mecanismo (Revisão Técnica Formal) de
garantia de qualidade de software é
aplicado desde o começo do projeto.
–Revisões de software são um “filtro de
qualidade” - descobre erros/defeitos.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
67
Mitos do Profissional
• Mito: A única coisa a ser entregue
em um projeto bem sucedido é o
programa funcionando.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
68
Mitos do Profissional
• Realidade:
–Um programa funcionando é somente
uma parte de uma Configuração de
Software que inclui todos os itens de
informação produzidos durante a
construção e manutenção do software.
A DOCUMENTAÇÃO é o alicerce
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
69
Categorias de Tamanho de Softwares
Categoria
Tamanho da
Equipe
Duração
Tamanho do
Fonte
(linhas de
código)
Trivial
1
1-4 semanas
500
Pequeno
1
1-6 meses
1000 a 2000
Médio
2-5
1-2 anos
5 mil a 50 mil
Grande
5-20
2-3 anos
50 mil a 100 mil
Muito grande
100-200
4-5 anos
1 milhão
Extremamente
grande
2000-5000
5-10 anos
1 a 10 milhões
ex: O Win 95: teve 11 milhões de linhas e 200 programadores /
O Nestscape teve 3 milhões de linhas e 120 programadores
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
70
Solução
• Reconhecer os problemas e suas causas e
desmascarar os mitos do software são os
primeiros passos
• Métodos e Técnicas para disciplinar o
processo de desenvolvimento do
software.
.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
71
SOLUÇÃO
• Reconhecer os problemas e suas causas e
desmascarar os mitos do software são os
primeiros passos
• Métodos e Técnicas para disciplinar o
processo de desenvolvimento do
software.
.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
72
Aspectos históricos da
Engenharia de Software
• 1968 Conferência da OTAN
• Objetivo: resolver a “Crise do Software”
• Software é entregue
– Atrasado
– Com orçamento estourado
– Com falhas residuais
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
73
Aspectos históricos da
Engenharia de Software
• Eles não encontraram uma
solução, mas definiram uma
meta: Engenharia de Software.
• Custo do hardware decrescente e
custo do software em ascensão.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
74
O que é Engenharia de Software?
• Fritz Bauer – 1969 ( primeira definição)
“O estabelecimento e uso de sólidos
princípios de engenharia para que se
possa obter economicamente um
software que seja confiável e que
funcione eficientemente em
máquinas reais”
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
75
O que é Engenharia de Software?
• IEEE, 1993
“A aplicação de uma abordagem
sistemática, disciplinada e quantificável
para o desenvolvimento, operação e
manutenção do software. O estudo de
abordagens e princípios a fim de obter
economicamente softwares confiáveis e
que executem de forma eficiente nas
máquinas reais”
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
76
O que é Engenharia de Software?
Programador
(técnicas)
1. Paradigma de
tentativa e erro
1. Paradigma adaptado
ao escopo do sistema
2. Estrutura de Dados
2. Análise e Projeto
3. Linguagens de
Programação
3. Ferramentas CASE
e SGBD´s
Profa. Maria Auxiliadora
Engenheiro (técnicas)
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
77
O que é Engenharia de Software?
• É uma disciplina que integra métodos,
ferramentas e procedimentos para o
desenvolvimento de software de
computador.
• Possibilitar ao gerente o controle do
processo de desenvolvimento.
• Oferecer ao profissional uma base para a
construção de software de alta qualidade.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
78
Engenharia de Software - Método
• Proporcionam os detalhes de “como
fazer” para construir o software.
• Envolvem um amplo conjunto de
tarefas.
• Um método de ES é uma
aproximação estruturada para o
desenvolvimento de software.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
79
Engenharia de Software - Método
• Todos os métodos pretendem
–Criar modelos do sistema que
possam ser representados
graficamente;
–Usar estes métodos como
especificação.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
80
Engenharia de Software - Método
• Década de 70 (DeMarco e Jackson):
–Orientado à função.
• 80s-90s (Booch e Rumbaugh):
–Métodos orientados a objeto.
• Atualmente os diferentes métodos estão
integrados numa aproximação unificada
baseada em Unified Modeling Language
(UML).
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
81
Engenharia de Software - Método
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
82
Engenharia de Software - Método
• Métodos devem incluir os
seguintes componentes:
–Descrição gráficas
–Regras
–Recomendações
–Diretrizes de processo
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
83
Engenharia de Software - Método
• Descrição gráficas.
Descrições dos modelos do
sistema que deverão ser
desenvolvidos e da notação
usada para os definir.
Ex. Modelos de objetos, fluxos de dados etc.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
84
Engenharia de Software - Método
• Regras
Restrições que se aplicam a modelos de
sistema.
Ex.Cada entidade deve ter um único nome.
• Recomendações
Conselho em prática de projeto.
Ex.Nenhum objeto deve ter mais que sete
subobjetos.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
85
Engenharia de Software - Método
• Diretrizes de processo
– Descrição das atividades que
podem ser seguidas.
–
–Atributos de objetos devem
ser documentados.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
86
Engenharia de Software - Ferramentas
• Fornecem suporte automatizado ou
semi- automatizado aos métodos.
• Existem atualmente ferramentas para
sustentar cada um dos métodos.
• Quando as ferramentas são integradas
é estabelecido um sistema de suporte
ao desenvolvimento de software
chamado CASE.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
87
O que é CASE
(Computer-Aided Software Engineering)
• Upper-CASE - Ferramenta para dar
apoio às fases iniciais do processo de
software.
• Lower-CASE - Ferramenta para dar
apoio à implementação a aos testes.
–Ex.(Poseidon para UML , ArgoUML ..)
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
88
Engenharia de Software - Procedimentos
– Constituem o elo de ligação que mantém
juntos os métodos e as ferramentas para
desenvolvimento do software.
– Sequência em que os métodos serão aplicados.
– Controles que ajudam assegurar a qualidade e
coordenar as alterações.
– Marcos de referência que possibilitam
administrar o progresso do software.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
89
Engenharia de Software - Procedimentos
Métodos
Procedimentos
Resultados
Ferramentas
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
90
Princípios da Engenharia de Software
• Todo engenheiro de software deve
desenvolver com:
– Rigor e Formalidade
– Separação de interesses
– Modularidade
– Abstração
– Antecipação de mudanças
– Generalidade
– Possibilidades de evolução
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
91
Princípios da Engenharia de Software
• Rigor e Formalidade
O rigor é a abordagem que produz
produtos mais confiáveis pelo
controle das variáveis envolvidas.
Formalidade é o requisito de que o
processo seja dirigido e avaliado
por leis matemáticas.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
92
Princípios da Engenharia de Software
• Separação de interesses
Separar conceitos permite-nos
trabalhar com aspectos individuais e
diferentes de um mesmo problema.
Esta separação facilita o entendimento,
focando a atenção em certas
características mais significativas.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
93
Princípios da Engenharia de Software
• Modularidade
Consiste na divisão de sistemas
complexos em partes menores e mais
simples (módulos) com características
desejáveis (coesão e acoplamento).
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
94
Princípios da Engenharia de Software
• Modularidade (cont.)
– Decomposição é o ato de dividir um
problema original em subproblemas
recursivamente.
– Composição é o ato de juntar os
elementos componentes de um
problema até chegar ao sistema
completo. Ajuda na manutenção do
sistema.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
95
Princípios da Engenharia de Software
• Antecipação de mudanças
Sistemas de softwares são desenvolvidos
enquanto seus requisitos ainda não
estão totalmente claros. Quando o
sistema é finalmente liberado, novos
requisitos podem ser descobertos e
velhos requisitos atualizados através do
“feedback” do usuário.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
96
Princípios da Engenharia de Software
• Generalidade / Especialidade
Soluções genéricas tendem a ser mais
caras em termos de recursos e em
tempo de desenvolvimento, ao
contrário das soluções específicas. No
processo de produção de software
estas questões devem ser
cuidadosamente analisadas.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
97
Princípios da Engenharia de Software
• Incrementabilidade
Caracteriza o processo em modo
passo a passo, incrementalmente. O
objetivo desejado é atingido por
aproximações sucessivas. Útil quando
os requisitos iniciais não foram todos
obtidos antes do início do
desenvolvimento da aplicação.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
98
Quais os custos da Engenharia de
Software?
• A distribuição dos custos através do
processo de software depende do
processo usado e do tipo de software a
desenvolver.
• Custos de desenvolvimento de um
software complexo quando se conseguem
definir custos separadamente para
especificação, desenho, implementação,
integração e testes.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
99
Quais os custos da Engenharia de
Software?
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
100
Quais os custos da Engenharia de
Software?
0
25
Especificação
50
Desenho
Desenvolvimento
75
100
Integração e Teste
Custos segundo aproximação evolutiva
0
25
50
Especificação Desenvolvimento Evolutivo
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
75
100
Testes do Sistema
101
Quais os custos da Engenharia de
Software?
Custos relativos entre desenvolvimento e manutenção do software
0
25
Desenvolvimento
50
75
100
Manutenção
 Custos de desenvolvimento de produtos de software
genéricos:
0
Especificação
Profa. Maria Auxiliadora
25
Desenvolvimento
50
75
100
Teste
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
102
Custo em relação a falhas
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
103
Impacto dos custo de manutenção
• Manutenção corretiva [aproximadamente 20%]
– 60 a 70% das necessidades de
correção são falhas de especificação
ou design.
• Manutenção evolutiva (melhoria)
– Aperfeiçoamento [aproximadamente 60%]
– Adaptação [aproximadamente 20%]
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
104
Principais desafios enfrentados pela
Engenharia de Software
• Sistemas de legado - Devem ser
mantidos e devem ser atualizado.
• Heterogeneidade - Operar com
sistemas distribuídos e incluem uma
mistura de hardware e software.
• Fornecimento - Entrega mais rápida
de software.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
105
Responsabilidade profissional e ética
• Confiabilidade – respeitar a
confiabilidade de seus
empregadores ou clientes.
• Competência – os engenheiros
não devem aceitar serviços que
estejam for a do seu limite de
competência.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
106
Responsabilidade profissional e ética
• Direito de propriedade intelectual –
os engenheiros devem estar
cientes das leis locais que
regulam o uso da propriedade
intelectual, como patentes e
direitos autorais.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
107
Resumindo
Engenharia de Software
• Aplicação de teoria, modelos, formalismos,
técnicas e ferramentas da ciência da
computação e áreas afins para o
desenvolvimento sistemático de software.
• Produção da documentação formal
destinada a comunicação entre os
membros da equipe de desenvolvimento
bem como aos usuários.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
108
Resumindo
Engenharia de Software
• Encontrar caminhos para se
"construir" softwares de qualidade.
• Fatores externos, perceptíveis aos
usuários e clientes, devem ser
distinguidos dos fatores internos,
perceptíveis aos projetistas e
implementadores.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
109
Resumindo
Engenharia de Software
• A manutenção de software, que
consome grande parte dos custos do
software, é penalizada pela
dificuldade em se implementar
mudanças no software produto, e
pela excessiva dependência dos
programas da estrutura física dos
dados que eles manipulam.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
110
Prática
• Visualizando a informática em uma
empresa, cite exemplos de:
–Mitos utilizados pelo analista ou pelo
administrador de uma empresa
específica.
–Falhas que ocasionaram grandes custos.
–Falhas que ocasionaram mudanças de
projetos.
Profa. Maria Auxiliadora
Fonte:
PRESSMAN, ROGER - Engenharia de Software - 6° Edição
SOMMERVILLE
- Engenharia de Software - 8° Edição
111
Download

Engenharia de Software