Você está na página 1de 56

ENGENHARIA

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

Continua na mesma Taxa at a


obsolescncia

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

Os Mitos do Software III


Dos Tcnicos:
Quando um programa
funciona est pronto
Enquanto o programa no
estiver a funcionar no posso
avaliar a qualidade do mesmo
S se deve entregar o
programa ao utilizador

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

Operao & Manuteno

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

Na Eng. de Software um projeto deve ser o


resultado da execuo de um Processo
Sistemtico.

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

Mtodos & Ferramentas

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

prottipos podem ser


em papel ou computador
subconjunto das funes
programa em verso inferior desejada

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 baseado nos


requisitos iniciais

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

Iteraes so agrupadas em fases


maiores
Ao fim de cada fase um marco
gerencial

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

Extreme Programming (Beck)


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

Estabelecem como fazer


Incluem atividades de modelagem
Tcnicas descritivas

Ferramentas

Provem suporte automatizado aos


processos e mtodos
CASE Computer Aided Software
Engineering

ENGENHARIA
DE SOFTWARE

Processos
de Software
Processo

Necessidade

Papis

Software

Fases, Etapas

Mtodos & Ferramentas

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

Mtodos e ferramentas utilizados na


maioria dos atuais processos de
software

Você também pode gostar