Você está na página 1de 37

Introdução à Engenharia de Software

Definições

• Engenharia:
– aplicação sistemática de conhecimentos
científicos na criação e construção de soluções
com boa relação custo / benefício.

• Software:
– instruções / programas de computador que
quando executados produzem o resultado,
função e desempenho desejados.

2012 2
Definições

• Engenharia de Software:
– aplicação de abordagem sistemática,
disciplinada e quantificável no desenvolvimento,
operação e manutenção de software.
IEEE, STD 610 – 1990

– estabelecimento e uso de sólidos princípios de


engenharia na obtenção de um software
confiável, eficiente e economicamente viável.
Fritz Bauer - 1969

2012 3
Engenharia

• Métodos: descrições de como proceder


frente a um amplo conjunto de atividades.
– Planejamento
– Análise de requisitos
– Concepção e projeto
– Implementação
– Codificação
– Testes e manutenção.

2012 4
Engenharia

• Técnica: procedimentos definidos no âmbito


de uma etapa de um método. Definem uma
seqüência de atividades, produtos a serem
entregues, controles que asseguram
qualidade, etc.
• Ferramentas: apoio aos métodos e técnicas

2012 5
Software

• Diferenças do software em relação a outros


itens construídos pelo homem:
– é imaterial;
– não sofre desgaste, não é um produto no
sentido usual da palavra;
– custos relacionados ao desenvolvimento
apenas, não há “matéria prima”;
– abstrato e parcial. Para reduzir a complexidade,
modelo de apenas uma parte da realidade.
– imperceptível. Percebido por seu processo,
interface, resultados, etc.

2012 6
Engenharia de Software

• Objetivos:
– aplicar, modelos, formalismos / técnicas e
ferramentas da ciência da computação (e áreas
afins) na produção / desenvolvimento
sistemático de software.
– aplicar métodos, técnicas e ferramentas para o
gerenciamento do processo de produção
(custos, prazos, equipe, qualidade, etc.)
– produzir documentação formal do produto, do
processo, dos critérios de qualidade e manuais.

2012 7
Engenharia de Software

• Origem: reunião em Garmisch (Alemanha –


Out/68). Discussão sobre problemas no
desenvolvimento de Software.
http://homepages.cs.ncl.ac.uk/brian.randell/NATO/index.html

• Motivação:
– baixa qualidade do SW;
– sem atender requisitos;
– “estouro” de orçamento e tempo previsto;
– vez por outra “ingerenciáveis”.

2012 8
Engenharia de Software

“[The major cause of the software crisis is] that the


machines have become several orders of
magnitude more powerful! To put it quite bluntly: as
long as there were no machines, programming was
no problem at all; when we had a few weak
computers, programming became a mild problem,
and now we have gigantic computers,
programming has become an equally gigantic
problem”
Edsger Dijkstra
The Humble Programmer

2012 9
Engenharia de Software

2012 10
Exemplo: Ariane 5

• Projeto da Agência Espacial Européia;


• Objetivo: supremacia européia no espaço;
• 10 anos de pesquisa e desenvolvimento;
• Custo estimado em US$ 8 Bilhões;
• Capacidade 6 toneladas;
• Vôo inaugural em 04/Jun/96;

2012 11
Exemplo: Ariane 5 (cont.)

• Explosão 40 seg. após decolagem;


• Destruição do foguete e carga (avaliada em
US$ 500 Milhões)
• Foguete detonou cargas explosivas de
autodestruição;
• Forças aerodinâmicas estavam destruindo
o foguete, tinha perdido o controle de
direção (altitude);

2012 12
Exemplo: Ariane 5 (cont.)

• Motivo: computadores principal e back-up


deram shut-down ao mesmo tempo!!
• Ocorreu um “run-time error”;
• Programa de converção de ponto flutuante
para inteiro (16 bits) recebeu como entrada
um valor que estava fora da faixa permitida.

Resultado da conversão não era mais


necessário após a decolagem.

2012 13
Evolução do Software

• Primeira Geração (início em 1950):


– sob medida (customizado) e distribuição
limitada;
– processamento em Batch;
– desenvolvimento sem técnicas de engenharia
(programação arte);
– programador / usuário, sistemas sem
documentação;
– grande evolução da ciência, pouca da técnica.

2012 14
Evolução do Software

• Segunda Geração (após 1965):


– melhoria das técnicas de interação com usuário;
– sistema em tempo real / multiusuário;
– gerenciamento de banco de dados;
– surgimento de pacotes de software e
softwarehouses;
– evolução das técnicas de manutenção.

2012 15
Evolução do Software

• Terceira Geração (após 1980):


– sistemas distribuídos;
– acesso instantâneo a bancos de dados;
– sistemas especialistas (inteligência embutida);
– software embarcado, integração com outras
tecnologias;
– crescimento das empresas de software,
diferenciação;
– hardware de “baixo custo”.

2012 16
Evolução do Software

• Quarta Geração (após 1990):


– redes neurais e algoritmos genéricos
(reconhecimento de padrões e aprendizado);
– linguagens específicas a um domínio (DSL);
– computação paralela.

2012 17
Evolução do Software

2012 18
Evolução do Software

• Custo SW suplantou o de HW
• SW visto como fator de diferenciação

2012 19
Características de Software

• Índice de falhas (teórico):

2012 20
Características de Software

• Índice de falhas (real):

2012 21
Software

• Aplicações:
– software básico: programas escritos para apoiar
outros – compiladores, drivers, etc.;
– software de tempo real: análise e controle de
eventos (mundo real) – equipamentos médicos;
– software comercial: operação e administração –
folha, contas a pagar, estoque, etc.;
– software científico e de engenharia:
caracterizado por algoritmos numéricos –
manufatura, astronomia, fadiga mecânica, etc.;

2012 22
Software

• Aplicações (cont.):
– software embutido: residente em memória (read
only) – eletrodomésticos, controle, etc.;
– software PC: pacotes – planilhas, editor de
texto, etc.;
– software WEB: instruções executáveis por
browser – CGI, HTML, Java, Perl, etc.;
– software I.A.: algoritmos não numéricos,
solução de problemas de alta complexidade não
favoráveis à análise direta – redes neurais,
jogos, sistemas especialistas, etc.

2012 23
Software

• Qualidade: TQM e filosofias similares


produzem a cultura necessária ao
desenvolvimento maduro

2012 24
Software

• Processo: framework de atividades e


resultados associados que geram um
produto. Define conjunto de áreas chave de
processo (KPA).

2012 25
Software

• Método: conjunto de tarefas de


desenvolvimento. Inclui análise de
requisitos, projeto, implementação, testes e
manutenção – como fazer.

2012 26
Software

• Ferramentas: suporte (semi-)automatizado


ao desenvolvimento. Instrumento
apropriado ao modelo.

2012 27
Qualidade: Herança

• Vantagem x Desconfiança:
– criar / adquirir novo software?
• “Crise” do final da década de 60:
– baixa qualidade / suspeita;
– Insatisfação;
– critérios imaturos.
• Cultura de desenvolvimento:
– ênfase em escrever / improvisar código;
– soluções imediatas;
– validação e verificação são ignorados

2012 28
Qualidade: Herança

• Paradigmas clássicos: só é possível avaliar


quando o produto esta pronto.
• Falta de acompanhamento estatístico.
• Baixa reutilização.
• Ferramentas insuficientes / inapropriadas
(ex.: CASE).
• Estimativas incorretas (T, $, PW)

2012 29
Qualidade: Atual

• Melhorias, ainda com erros de


planejamento.
• Maiores exigências, menos recursos.
• Otimização mandatória.
• Opção: Engenharia de Software.

2012 30
Processo

• Modelos clássicos:
– seqüencial linear (cascata)
– Rapid Aplication Development (RAD)
– Evolucionários
• Prototipação (descartáveis)
• Incremental (exploratório)
• Expiral (exploratório)

2012 31
Processo

• PDCA:
– Plan: planejamento
– Do: ação / implementação
– Check: verificação / validação
– Act: correção

2012 32
Mitos x Realidade

Descrição geral dos objetivos é suficiente


para desenvolver o programa
x
Visão incompleta / incorreta dos requisitos é a
principal causa de fracasso no
desenvolvimento de software

2012 33
Mitos x Realidade

Caso o cronograma atrase, basta aumentar a


equipe de desenvolvimento
x
Maior atraso devido à necessidade de
treinamento e complexidade da
comunicação

2012 34
Mitos x Realidade

Meta do desenvolvimento é um programa que


funcione
x
Documentação e medidas históricas são a
base de desenvolvimento bem sucedidos

2012 35
Pontos Chave

• Engenharia de Software: utilização dos


princípios de engenharia na obtenção
software.
• Não esquecer os aspectos históricos que
nos trouxeram até este ponto.
• Qualidade: base de todo o trabalho.
• PDCA: filosofia básica de trabalho.

2012 36
2012 37

Você também pode gostar