Escolar Documentos
Profissional Documentos
Cultura Documentos
Introdução à Engenharia de
Software
Rohit Gheyi
1 2
Origem
• Crise de Software
– Dificuldade em produzir
• Alta complexidade
• Falta de técnicas
• Alta demanda de software
– Fora do prazo
– Custo alto
– Sem qualidade
• Conferência Internacional de Engenharia de
Software (anos 70)
3 4
Indústria Nuclear
Marte
Banco do Brasil
http://cbsoft.org/cbsoft2018 5 6
1
27/08/18
Therac 25 Causas...
• Máquina de Radioterapia controlada por
computador (1985-1987)
• 6 acidentes (5 mortes) Falta de verificação
• Overdose de radiação Falta de documentação
Códigos de erro incompreensíveis
7 8
Março…
2010...
9 10
1 dia depois…
Agosto 2010
11 12
2
27/08/18
13
Nov 2015
14
USD 6 bi
Ago
2003
Dez
15
2015 16
17 18
3
27/08/18
19 20
Engenharia de Software
?
O que fazer?!
21 22
Engenheiro de Software
Engenheiros de software devem adotar uma
abordagem sistemática e organizada em seu
software dentro
trabalho e usar técnicas e ferramentas
apropriadas dependendo do problema a ser
do custo e prazo
resolvido, de acordo com as restrições de e com qualidade!
desenvolvimento e os recursos disponíveis.
23 24
4
27/08/18
25 26
Planejamento Cronograma
• Análise de Riscos 100 horas
– Mudança de pessoas
– Mudança de requisitos
– Dependência
– Hardware
– Ferramentas CASE
• Estimar
– Custo e Tempo
29 30
5
27/08/18
Exercício 1 Exercício 2
Estime o custo e tempo de um churrasco. Estime o custo da construção do
instagram.
• Quanto tempo vai levar?
• Quanto vai custar?
• Qual o tamanho do sistema em
linhas de código?
31 32
Exercício 3 Início...
• Qual dos dois exercícios foi mais fácil? Por
que?
Viável?
33 34
35 36
6
27/08/18
39 40
Edifício
Modelagem inicial
Modelagem detalhada Arquiteto Frank Gehry
Construído em 2003
41 42
7
27/08/18
E se...
http://tech.mit.edu/V127/N53/lawsuit/stata_lawsuit.pdf
43 http://tech.mit.edu/V127/N53/lawsuit.html
44
Análise e Projeto
Modelo de
Design
Refinamento
45 46
47 48
8
27/08/18
49 50
53 54
9
27/08/18
Automático
Provas Abstração
55 56
Deadlock,
Alloy FDR Determinismo, …
module banco
accs sig Banco {
Bank Account
contas: set Conta
}
SavAcc ChAc c sig Conta {}
sig ContaCorr extends Conta {}
sig ContaPoup extends Conta {}
57 58
59 60
10
27/08/18
Exemplo
Duplicação de
Código
“É o processo de modificar
um sistema de software class CCorr ext Conta{ class CPoup ext Conta{
para melhorar a estrutura int saldo; int saldo;
interna do código
void saldo() { void saldo() {
sem alterar o seu
return saldo; return saldo;
}… }…
comportamento externo.”
} }
- Martin Fowler
61 62
Eclipse
Mudanças
Chaos Report, 2015
Manuais
65 66
11
27/08/18
Referências
Capítulo 1
67
12