Engenharia de Software
Aula 01 – Introdução
Prof. Adriana M. Martins
Introdução à Engenharia de
Software




Introdução
Definição
Histórico
Conceitos
Concepção
 Projeto
 Arquitetura
 Topologia

Introdução



Atualmente dependemos de
tecnologia praticamente em todos os
aspectos da vida.
Sistemas complexos dependem de
softwares bem desenvolvidos –
relação de alto custo x benefício.
Os softwares tornam nossa vida
mais confortável, eficiente e efetiva.
O que é Engenharia de
Software?
“É uma disciplina de Engenharia, cuja meta é
o desenvolvimento de sistemas de
software com uma boa relação custo x
benefício.”
Sommerville
Software é algo abstrato e intangível, fácil de
se tornar complexo e mais difícil de ser
compreendido.
O que é Engenharia de
Software?
“É a engenharia para construção de
sistemas, cuja estrutura abrange um
processo, um conjunto de métodos e
ferramentas, visando que este seja
útil e funcione de forma adequada.”
Pressman
O que é Engenharia de
Software?
“É a engenharia para construção de
sistemas, cuja estrutura abrange um
processo, um conjunto de métodos e
ferramentas, visando que este seja
útil e funcione de forma adequada.”
Pressman
O que é Engenharia de
Software?
“É a engenharia utilizada para
construção de softwares que nos
auxiliem a resolver problemas.”
Pflegger
Qual a natureza
do problema?
Problema1
Uso de tecnologia
como ferramenta
para implementar a
solução
PROBLEMA
Problema2
SOLUÇÃO
Problema3
Histórico



ESOF é uma engenharia nova;
A noção da mesma surgiu em 1968,
numa conferência organizada para
discutir a “Crise do Software”.
A criação de hardwares robustos
nesta época indicava a necessidade
de softwares mais elaborados e
complexos do que os já existentes.
TAREFA: Pesquisar sobre a “Crise do Software”
Histórico

A construção de softwares
complexos mostrou necessidade de
formalização do processo, pois:




Havia atraso na entrega;
Custos maiores do que os iniciais, que
os tornavam não confiáveis;
Possuíam difícil manutenção e
Baixo desempenho.
Exemplo Prático - Visões de
diferentes usuários...
O que o líder
do projeto
entendeu
O que o usuário
explicou que
queria
O que o
analista
projetou
Visões de diferentes
usuários...
O que o consultor
definiu
O que o
programador fez
O que foi
documentado
Visões de diferentes usuários...
O que foi
cobrado
O que foi
instalado
O que restou após a
manutenção
Visões de diferentes usuários...
O que o
usuário
realmente
precisava!!
Histórico

Novas técnicas e novos métodos
eram necessários para controlar a
complexidade inerente dos grandes
sistemas de software.

O objetivo principal em se utilizar a
‘engenharia’ para construção dos
softwares é produzir softwares
complexos que atendam às
expectativas dos usuários e sejam
entregues dentro do orçamento e
prazos previstos.
Histórico


Novas tecnologias resultam em
convergência de sistemas
computacionais com novos desafios
na sua construção.
Algumas empresas tem problemas
pela ausência de metodologia para
construção de softwares. Porém,
hoje é possível aplicar um processo
e obter melhores resultados no fim
da construção.
Qual o papel do Engenheiro
de Software?


Cientistas da Computação: lidam
com investigação, provas de
teoremas sobre como funcionam os
computadores e linguagens de
programação por si só.
Engenheiros de Software: utilizam
linguagens de programação e
computadores como ferramentas a
serem utilizadas num projeto e na
implementação da solução de um
problema.
Qual o papel do Engenheiro
de Software?
C. Computação
Teorias
Funções
Computacionais
Cliente
Problema
Engenharia de Software
Técnicas e Ferramentas para
resolver problemas!
Questões Ativas da Indústria
de Software


No passado, o software era
desenvolvido por um programador
solitário. Hoje ele é construído por
uma equipe de especialistas em
software.
Cada especialista está concentrado
em uma parte da tecnologia
necessária para construção do
software complexo.
Questões Ativas da Indústria
de Software

Questões:





Por que leva-se tanto tempo para construir
um software?
Por que os custos de desenvolvimento são
tão altos?
Por que não podemos achar todos os erros
antes da entrega do software para o
cliente?
Por que gastamos tanto tempo e esforço
mantendo programas existentes?
Porque temos dificuldades em avaliar o
progresso enquanto o software é
desenvolvido e mantido?
Download

ESOF - INF Aula 01 - Introducao