Escolar Documentos
Profissional Documentos
Cultura Documentos
DE SOFTWARE
Fundamentos
Software
Engenharia de Software
Processos de Software
ENGENHARIA
DE SOFTWARE
Software
Contexto do Software
Composio do Software
Caractersticas do Software
Tipos de Software
Crise do Software
ENGENHARIA
DE SOFTWARE
Contexto
Composio
Caractersticas
Tipos
Crise do Software
Software
Contexto
O software um elemento de um
sistema baseado em computador
Alm do software
Hardware
Pessoas
Bases de Dados
ENGENHARIA
DE SOFTWARE
Sistema Baseado
em Computador
pessoas
software
Entrada
hardware
Sada
bases de dados
ENGENHARIA
DE SOFTWARE
Contexto
Composio
Caractersticas
Tipos
Crise do Software
Software
...
O software a parte programvel de
um sistema baseado em computador
um elemento central - Realiza
estruturas complexas e flexveis que
trazem:
funes
utilidade e,
valor ao sistema
ENGENHARIA
DE SOFTWARE
Contexto
Composio
Caractersticas
Tipos
Crise do Software
Software
O Papel Evolutivo do Software
Multiuso
Tempo Real
Base de Dados
Produtos
Hardware Barato
Batch do
Consumidor
1950
1960
Distribuido
Inteligentemente
1970
1980
1990
Sistemas
Potentes
Orientado a
Objectos
Redes
Neuronais
Computao
Paralela
2000
ENGENHARIA
DE SOFTWARE
Contexto
Composio
Caractersticas
Tipos
Crise do Software
Software
Composio do Software
Programas
Instrues
Estruturas de Dados
Cdigo Fonte
Modelos e Diagramas
Documentao
ENGENHARIA
DE SOFTWARE
Contexto
Composio
Caractersticas
Tipos
Crise do software
Software
Caractersticas do Software
O software um elemento lgico
Assim:
O software desenvolvido e no
manufaturado;
O software no se desgasta - ao invs,
se deteriora;
Boa parte do software ainda feita
sob medida.
Contexto
Composio
Caractersticas
Tipos
Crise do software
Software
Curva das Falhas do Hardware
Desgaste
Taxa de Falhas
ENGENHARIA
DE SOFTWARE
Tempo
Contexto
Composio
Caractersticas
Tipos
Crise do software
Software
Curva de Falhas de Software
Ideal
Taxa das Falhas
ENGENHARIA
DE SOFTWARE
Tempo
Contexto
Composio
Caractersticas
Tipos
Crise do software
Software
Curvas de Falhas do Software
Real
Taxa das Falhas
ENGENHARIA
DE SOFTWARE
Curva real
Mudana
Curva
idealizada
Tempo
ENGENHARIA
DE SOFTWARE
Contexto
Composio
Caractersticas
Tipos
Crise do Software
Software
Crise do Software
Em geral, desenvolver e manter software
tem sido um esforo:
Caro
Cujos resultados
Entregues fora do prazo
No faz o que deveria fazer
Baixa qualidade
Defeitos
Dificuldade de utilizao
Lento
Etc.
ENGENHARIA
DE SOFTWARE
Os Mitos do Software I
Dos Gestores:
Possumos normas ento est
tudo controlado
Possumos as melhores
maquinas e ferramentas
Podemos sempre contratar
mais pessoas
ENGENHARIA
DE SOFTWARE
Os Mitos do Software II
Dos Utilizadores:
Basta definir em geral
Os requisitos dos processos
O software deve ser flexvel
ENGENHARIA
DE SOFTWARE
ENGENHARIA
DE SOFTWARE
Contexto
Composio
Caractersticas
Tipos
Crise do Software
Software
Alguns Tipos
Software de Sistema
Sistema Operacional, Compiladores,
SGBD
Sistema de Informao
Gesto, controle, operao, apoio a
deciso, planejamento, etc ...
Software Aplicativo
Editor de Texto, Planilhas, Utilitrios,
jogos, etc ...
ENGENHARIA
DE SOFTWARE
Engenharia de Software
Definio
Software como Produto
Projetos
Pessoas
Dimenses da Eng. Software
ENGENHARIA
DE SOFTWARE
Definio
Produto
Projetos
Pessoas
Dimenses
Engenharia de Software
Definio
Estudo e aplicao de engenharia para
a produo e manuteno de software
Engenharia em sentido abordagens:
Sistemticas
Disciplinadas
Quantificveis
Tecnicamente, as abordagens da
engenharia de software so chamadas
de Processos de Software.
ENGENHARIA
DE SOFTWARE
Definio
Produto
Projetos
Pessoas
Dimenses
Engenharia de Software
Software como Produto
A Eng. Software se preocupa com o
software como produto.
Esto fora do seu escopo:
Programas feitos unicamente para
diverso do programador
Pequenos programas descartveis,
feitos por algum exclusivamente
como meio para resolver um
problema, e que no sero utilizados
por outros.
ENGENHARIA
DE SOFTWARE
Definio
Produto
Projetos
Pessoas
Dimenses
Engenharia de Software
... Definio
Estabelecimento e uso dos princpios
bsicos da engenharia para obter
economicamente software que seja
vivel e trabalhe eficientemente em
mquinas reais.
(Fritz Bauer)
ENGENHARIA
DE SOFTWARE
Definio
Produto
Projetos
Pessoas
Dimenses
Engenharia de Software
Ciclo de vida do Software
Como todo produto industrial, o
software tem um ciclo de vida
Concebido
Desenvolvido
Entra em operao, sujeito a
manuteno
retirado de operao
ENGENHARIA
DE SOFTWARE
Engenharia de Software
Proj 1
Proj 2
Proj n
...
Necessidade
Desenvolvimento
Retirada
ENGENHARIA
DE SOFTWARE
Definio
Produto
Projetos
Pessoas
Dimenses
Engenharia de Software
Projetos
Normalmente, o desenvolvimento e
manuteno do software so feitos dentro de
projetos
Todo Projeto tem:
Datas incio e fim
Equipe
Desenvolvedores
Gerente de Projeto
ENGENHARIA
DE SOFTWARE
Engenharia de Software
Definio
Produto
Projetos
Pessoas
Dimenses
Projeto
Gerentes
Execuo de um
Processo Sistemtico
Desenvolvedores
Software
Produto
ENGENHARIA
DE SOFTWARE
Definio
Produto
Projetos
Pessoas
Dimenses
Engenharia de Software
Pessoas
Alm da equipe de desenvolvimento e
manuteno
Cliente
Pessoa fsica ou jurdica que contrata
a execuo de um projeto
Usurio
Pessoa que efetivamente utilizar o
produto final
ENGENHARIA
DE SOFTWARE
Definio
Produto
Projetos
Pessoas
Dimenses
Engenharia de Software
Quatro Dimenses
Manuteno
Desenvolvimento
Tcnica
Gerencial
Um Processo de Software completo
deve cobrir as 4 dimenses!
ENGENHARIA
DE SOFTWARE
Processos de Software
A noo de Processo
Elementos de um Processo
Modelos de Processo
Exemplo de Processo
Modelo de Capacitao e
Maturidade (CMM)
Mtodos & Ferramentas
Resumo
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Processos de Software
A Noo de Processo
Um processo uma receita a ser
seguida em um projeto
Como uma receita um processo deve
dizer
Quem .........
Faz o qu ...
Quando ......
Como .........
Papis
Atividades, Produtos
Fases, Etapas
Mtodos, Ferramentas
ENGENHARIA
DE SOFTWARE
Processos de Software
Necessidade
Papis
Processo
Software
Fases, Etapas
Produtos
Atividades
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Processos de Software
Elementos
Todo processo tem uma parte
especfica e uma parte genrica
compartilhada com outros processos
Em geral:
Fases, Etapas
Atividades, Produtos
Elementos
Especficos
Papis
Elementos
Compartilhados
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Processos de Software
Modelos de Processo
A organizao dos elementos
especficos de um dado processo
tendem a seguir modelos de
processo existentes:
Codifica-Remenda
Modelo Cascata
Prototipagem
Modelo Espiral
Modelos Iterativo-Incrementais
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Processos de Software
Codifica-Remenda
Idia:
Partindo apenas de uma especificao
(ou nem isso), os desenvolvedores
comeam imediatamente a codificar,
remendando a medida que os erros
vo sendo descobertos.
H apenas duas atividades (codificar e
remendar); no mximo trs
(especificar); executadas de maneira
catica.
ENGENHARIA
DE SOFTWARE
Codifica-Remenda
Codifica-Remenda
Processos de Software
Especificao
(???)
?!
Produto
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Processos de Software
Comentrios
provavelmente o modelo mais
utilizado
Para alguns desenvolvedores esse
modelo atraente pois no requer
nenhuma sofisticao tcnica ou
gerencial
um modelo de alto risco ...
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Processos de Software
Modelo Cascata
Idia
Executar em estrita seqncia
Captura de Requisitos
Anlise
Design
Codificao
Testes
Implantao
ENGENHARIA
DE SOFTWARE
Requisitos
Modelo
ModeloCascata
Cascata
Anlise
Design
Codificao
Teste
Implantao
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Processos de Software
Comentrios
Requisitos, anlise, etc., so fases
O fim de cada fase so pontos de controle
que facilitam a gesto dos projetos
Projetos raramente seguem o fluxo
seqencial que o modelo prope.
difcil determinar todas as exigncias
explicitamente.
O cliente deve ser paciente.
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Processos de Software
Prototipagem
Idia
No incio do desenvolvimento construir
prottipos
Estes servem primariamente para refinar o
entendimento dos requisitos do sistema
ENGENHARIA
DE SOFTWARE
Prototipagem
Prototipagem
coleta de
requisitos
Projeto
rpido
construo
do prottipo
avaliao
do prottipo
refinamento
do prottipo
engenharia
do produto
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Processos de Software
Comentrios
O primeiro prottipo normalmente tem
que ser completamente redesenhado
Decises apressadas podem
comprometer a qualidade global do
Projeto
No se deve esquecer que o prottipo
no o sistema final. Ele apenas
serve como guia para este.
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Processos de Software
Modelo Espiral
Idia
Software um sistema complexo
Como tal deve evolui e no ser
projetado e construdo de uma nica
vez.
Ciclo evolutivo
Planejamento
Anlise de Risco
Engenharia
Avaliao
ENGENHARIA
DE SOFTWARE
requisitos iniciais
planejamento
planejamento
baseado na avaliao
anlise de riscos
anlise de riscos
baseado na
avaliao
sistema
final
avaliao
avaliao
produto
inicial
Produto
Intermedirio
engenharia
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Processos de Software
Comentrios
A idia bsica de desenvolvimento
evolutivo do modelo espiral
atualmente a mais empregada
O principal problema do modelo
espiral que ele requer gesto muito
sofisticada para ser previsvel e
confivel
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Processos de Software
Modelos Interativo-Incrementais
Atualmente a tendncia tem sido combinar o
melhor dos vrios modelos
Do modelo cascata
A idia de execuo seqencial com pontos de
controle bem definidos
Da Prototipagem
A idia de gerar o mais cedo possvel verses
(executveis)
Do modelo espiral
A base do desenvolvimento evolutivo
ENGENHARIA
DE SOFTWARE
Iterao 1
Incio
Ciclo
.......
Iterao n
Requisitos
Requisitos
Requisitos
Anlise
Anlise
Anlise
Design
Design
Design
Codificao
U A P D I T
Iterao 2
Codificao
Codificao
Testes
Testes
Testes
U A P D I T
U A P D I T
U A P D I T
....
Incremento 1
Incremento 2
Incremento n
Fim
Ciclo
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Processos de Software
Comentrios
Nos modelos iterativos-incrementais
Requisitos, anlise, design,
codificao, testes, ..., so MacroAtividades
Ao fim de cada iterao h uma
verso parcial (executvel) do produto
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Processos de Software
AE/PE (Yourdon/Constantine)
Modelo Cascata
Processo Unificado
(Booch/Rumbaugh/Jacobson)
Iterativo-Incremental
ENGENHARIA
DE SOFTWARE
Processos Unificado
ConcepoElaborao
Incio
Ciclo
Objetivos
Escopo
Construo
Transio
Fim
Ciclo
Arquitetura
Verso beta
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Processos de Software
Modelos Maturidade e Capacitao
A produo industrial de software uma
atividade coletiva empreendida por
organizaes
A maturidade de uma organizao mede o
grau de competncia (tcnica e gerencial)
para produzir software de boa qualidade,
dentro de prazos e com custos aceitveis e
previsveis.
A existncia de processos definidos
necessria maturidade de uma
organizao produtora de software
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Processos de Software
SEI CMM-SW
Nvel 1 Inicial
No segue rotinas
Processos Caticos
Nvel 2 Repetitivo
Segue rotinas
Processos Disciplinados
Nvel 3 Definido
Escolhe rotinas
Processos Padronizados
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Processos de Software
SEI CMM-SW
Nvel 4 Gerido
Cria e aperfeioa rotinas
Processos Previsveis
Nvel 5 Otimizante
Otimiza rotinas
Processos em melhoria contnua
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Processos de Software
Mtodos & Ferramentas
Na base dos processos de software
existem
Mtodos
Ferramentas
ENGENHARIA
DE SOFTWARE
Processos
de Software
Processo
Necessidade
Papis
Software
Fases, Etapas
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Processos de Software
...
Mtodos e Ferramentas so
compartilhados entre processos
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Resumo
A Engenharia de Software
Engloba processo, mtodos tcnicos e
gerenciais e ferramentas
A idia sistematizar o desenvolvimento e
manuteno de software
Com isto, espera-se a produo de software
Alta qualidade
Baixo Custo
Dentro de prazos
ENGENHARIA
DE SOFTWARE
Noo
Elementos
Modelos
Exemplo
CMM
Mtodos & Ferram
Resumo
Resumo
Direcionamento
A Eng. Software uma rea vasta
Nos concentraremos em estudar
Mtodos e Ferramentas
Tcnicos
Voltadas ao desenvolvimento de
software