Você está na página 1de 12

27/08/18

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

Por que é necessário?


http://www.icse-conferences.org

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?!

Disciplina gerencial e tecnológica


que lida com a produção e manutenção
sistemática de produtos de software
desenvolvidos dentro de estimativas
de custo e tempo

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

Características Processo de Eng. de SW


•  A Engenharia de Software se refere a software
(sistemas) desenvolvidos por grupos ao invés
de indivíduos Conjunto de atividades cujo
•  Usa princípios de engenharia ao invés de arte objetivo é o desenvolvimento
•  Inclui tanto aspectos técnicos quanto não
técnicos ou a evolução de software

25 26

Modelo do Proc. de Desen. De Software Gerência do Projeto


Requisito
Vantagens e
Desvantagens
Design
Motivar
Implementação Alocação
Melhoria da qualidade
Validação
n  Pessoas n  Processo

n  Motivação n  Qualidade (Métricas)


Evolução
n  Alocação n  Melhoria
27 28

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?

O que cliente quer?


Requisitos!

33 34

Requisito Caso de Uso


Facilita
•  Serviços que o sistema deve fornecer e comunicação
Sacar
com o cliente
restrições à operação do mesmo
•  Classificação
–  funcional Depositar
•  creditar, debitar
–  não funcional
•  Performance, segurança Transferir

35 36

6
27/08/18

O cliente não sabe o


que ele realmente deseja!

Fácil?! Problemas na comunicação

Mudança constante de requisitos.
Definir bem o escopo
37 38

Engenharia de Requisitos Modelagem


•  Instrumento para o entendimento e
comunicação do produto final que será
Identificação, especificação desenvolvido.
e descrição dos requisitos •  Problema
–  simplicidade (favorece a comunicação)
do sistema de software.
–  complexidade (favorece a precisão) do modelo

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

Caso de Uso Modelo de


Análise

Refinamento
45 46

Implementação (2a fase)


“I conclude there are two ways of •  Segue o design proposto
constructing a software design.
•  Que paradigma e linguagem de programação
One way is to make it so simple
usar?
there are obviously no
–  A mesma para todas os contextos?
deficiencies, and the other way is
•  Sistema Operacional
to make it so complicated that •  Sistema em tempo real
there are no obvious deficiencies.” •  Locadora de DVD
Tony Hoare

47 48

8
27/08/18

Programa Ferramenta CASE


public class Conta {
int saldo;
void tranferir(int x, Conta b) {
Requisito if (checaUsu(us,senha)) Requisito
Não-Funcional
Funcional saldo = saldo-x; Compilar,
Depurar,
}… CVS, …
}
Case = Computer-Aided Software Engineering

49 50

Como evitar isso?!

Abertura – Olimpíadas 2008


51 52

Validação e Verificação (3a fase) Teste de Unidade


•  Testes public class TestaConta
–  Como fazer? extends TestCase {
–  Que tipo de teste fazer? Saldo Inicial: 100 Conta c = new Conta(100)
•  Unidade Entrada Saída void testDebitar() {
•  Integração 50 50 c.debitar(50)
•  Validação, ... 30 70 assert(c.saldo() == 50);

•  Métodos formais }
–  Prova de Teoremas …
–  Verificação de Modelos }

53 54

9
27/08/18

JUnit Métodos Formais Comportamento


Estrutura

Especificação ∀c: Classe | ∃ a: Atributo |


a ∈ atributo(c) ∧ .. ⇒ ..

Automático
Provas Abstração

public class Conta {


int saldo;
void tranferir(int x, Conta b) {
Programa if (checaUsu(us,senha))
saldo = saldo-x;
} …}

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

Evolução (4a fase)


•  Incluir novos requisitos
–  Novos dispositivos móveis
•  Corrigir erros
•  Preparar o programa para mudanças
Refatoramentos..
–  Refatoramentos
•  Fase mais custosa do ciclo de vida de software

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

Atualiza todas as classes que a


utilizam, arquivos do projeto
63 64

65 66

11
27/08/18

Referências

Capítulo 1

67

12

Você também pode gostar