Você está na página 1de 56

Engenharia de Software

Produo de Software
1- Instrues
Passos que, em execuo, produzem a funo e o
desempenho desejados.

2 - Estruturas de Dados
Armazenamento e manipulao adequada da
informao necessria s instruo.

3 - Documentos
Descrio da operao e do uso dos programas.

Caractersticas do Software
1. Projetado.
2. No se desgasta mas se deteriora.
3. Demanda exigem, em grande parte das
vezes, elaborao sob medida.

Engenharia de Software
Conceito:
uma das reas da Engenharia que trata dos
aspectos de produo de software.

Engenharia de software envolve a aplicao


prtica de conhecimento cientfico para o
projeto e construo de programas de
computador e a documentao associada
necessria para desenvolv-los, oper-los e
mant-los. (Boehm)

Engenharia de Software
Objetivo:

O seu objetivo estabelecer uma


sistemtica abordagem de
desenvolvimento, atravs de
ferramentas e tcnicas apropriadas,
dependendo do problema a ser
abordado, considerando restries e
recursos disponveis.

Engenharia de Software
Fundamentos:
Mtodos: detalhes de como fazer para construir o software
Ferramentas: suporte automatizado aos mtodos
Procedimentos: ligao entre os mtodos e ferramentas

Principais metas:
melhorar a qualidade de produtos de software
aumentar a produtividade do pessoal tcnico
aumentar a satisfao do cliente.

Ciclo de vida
O

Ciclo de vida do produto de


software = Etapas

Comea na concepo do problema


(solicitao do usurio).

Termina quando o sistema sai de uso.

Ciclo de vida - Modelos


Alguns modelos de ciclos de vida mais
conhecidos so:

Clssico: Cascata

Evolutivo: Prototipao

Modelo Espiral

Ciclo de Vida Clssico (Cascata)

modelo mais antigo e o mais amplamente


usado da engenharia de software

modelado em funo do ciclo da


engenharia convencional

requer uma abordagem sistemtica,


seqencial ao desenvolvimento de
software

Cascata
Engenhariade
de
Engenharia
Sistemas
Sistemas
Anlise de
de
Anlise
Requisitos
Requisitos

Projeto
Projeto
Codificao
Codificao
Testes
Testes
Manuteno
Manuteno

10

Atividades do Ciclo de Vida Clssico


ANLISE E ENGENHARIA DE SISTEMAS
Engenharia de
Sistemas
Anlise de
Requisitos

envolve a coleta de requisitos em nvel do


sistema, pequena quantidade de projeto e
anlise de alto nvel
Projeto
Codificao
Testes
Manuteno

viso essencial quando o software


deve fazer interface com outros
elementos (hardware, pessoas e
banco de dados)
11

Atividades do Ciclo de Vida Clssico


ANLISE DE REQUISITOS DE SOFTWARE
processo de coleta dos requisitos intensificado
e concentrado especificamente no software
Engenharia de
Sistemas
Anlise de
Requisitos

deve-se compreender o domnio da informao,


a funo, desempenho e interfaces exigidos
Projeto
Codificao

os requisitos (para o sistema e para o


software) so documentados e revistos com o
cliente

Testes
Manuteno

12

Atividades do Ciclo de Vida Clssico


PROJETO

Engenharia de
Sistemas
Anlise de
Requisitos

traduo dos requisitos do software para um


conjunto de representaes que podem ser
avaliadas quanto qualidade, antes que a
codificao se inicie
Projeto
Codificao
Testes
Manuteno

13

Atividades do Ciclo de Vida Clssico


CODIFICAO

Engenharia de
Sistemas
Anlise de
Requisitos

Projeto
Codificao

traduo das representaes


do projeto para uma linguagem
artificial resultando em
instrues executveis pelo
computador

Testes
Manuteno

14

Atividades do Ciclo de Vida Clssico


TESTES

Concentram-se:
Engenharia de
Sistemas
Anlise de
Requisitos

nos aspectos lgicos internos


do software, garantindo que
todas as instrues tenham
sido testadas

Projeto
Codificao
Testes
Manuteno

15

nos aspectos funcionais


externos, para descobrir erros
e garantir que a entrada
definida produza resultados
que concordem com os
esperados.

Atividades do Ciclo de Vida Clssico


MANUTENO
Engenharia de
Sistemas
Anlise de
Requisitos

o software poder sofrer mudanas depois que


for entregue ao cliente
Projeto
Codificao
Testes
Manuteno

16

causas das mudanas:


erros, adaptao do
software para acomodar
mudanas em seu
ambiente externo e
exigncia do cliente para
acrscimos funcionais e
de desempenho

Prototipao

processo que possibilita que o desenvolvedor


crie um modelo do software que deve ser
construdo.

idealmente, o modelo (prottipo) serve como


um mecanismo para identificar os requisitos de
software.

apropriado para quando o cliente definiu um


conjunto de objetivos gerais para o software,
mas no identificou requisitos de entrada,
processamento e sada com detalhes.
17

Prototipao
incio
fim

construo
produto

obteno
dos
requisitos

construo
prottipo

refinamento
prottipo
avaliao
prottipo

18

projeto
rpido

Atividades da Prototipao
Obteno dos Requisitos:
incio
fim
construo
produto

obteno
dos
requisitos

construo
prottipo

refinamento
prottipo
avaliao
prottipo

19

projeto
rpido

desenvolvedor e cliente definem


os objetivos gerais do software,
identificam quais requisitos so
conhecidos e as reas que
necessitam de definies
adicionais

Projeto Rpido: representao


dos aspectos do software que so
visveis ao usurio (abordagens
de entrada e formatos de sada)

Atividades da Prototipao
incio
fim
construo
produto

obteno
dos
requisitos

Construo Prottipo:
implementao do projeto
projeto
rpido
construo
prottipo

refinamento
prottipo
avaliao
prottipo

rpido

Avaliao do Prottipo:
cliente e desenvolvedor
avaliam o prottipo

20

Atividades da Prototipao
Refinamento dos Requisitos:

incio
fim
construo
produto

obteno
dos
requisitos

construo
prottipo

refinamento
prottipo
avaliao
prottipo

21

projeto
rpido

cliente e desenvolvedor
refinam os requisitos do
software a ser desenvolvido.
Ocorre neste ponto um
processo de iterao que
conduzir a atividade at que
as necessidades do cliente
sejam satisfeitas e o
desenvolvedor compreenda o
que precisa ser feito.

Atividades da Prototipao
incio
fim
construo
produto

obteno
dos
requisitos

projeto
rpido
construo
prottipo

refinamento
prottipo
avaliao
prottipo

22

Construo Produto:
identificados os requisitos, o
prottipo deve ser
descartado e a verso de
produo deve ser
construda considerando os
critrios de qualidade.

Ciclo de Vida em Espiral

engloba as melhores caractersticas do ciclo de


vida Clssico e da Prototipao, adicionando um
novo elemento: a Anlise de Risco

segue a abordagem de passos sistemticos do


Ciclo de Vida Clssico incorporando-os numa
estrutura iterativa que reflete mais
realisticamente o mundo real

usa a Prototipao, em qualquer etapa da


evoluo do produto, como mecanismo de
reduo de riscos
23

Espiral

planejamento

anlise dos
riscos
deciso de continuar ou no

avaliao
do cliente

24

direo de um
sistema concludo
engenharia

Atividades do Ciclo de Vida em Espiral

Planejamento: determinao dos


objetivos, alternativas e restries

Anlise de Risco: anlise das

planejamento
anlise dos
riscos

alternativas e identificao /
resoluo dos riscos

Construo: desenvolvimento do avaliao


produto no nvel seguinte

Avaliao do Cliente: avaliao


do produto e planejamento das
novas
fases
25

do cliente

engenharia

Engenharia de Software
Metodologias

Crise do Software (~1970)

Desenvolvimento de Software de forma artesanal


atravs do desenho de telas e arquivos
Constantes erros de execuo
Pouco tempo para coletar dados
No cumprimento de prazos
Problemas de custos inesperados relacionados a
correo de erros e adaptao do cdigo
Cdigo/documentao ilegvel ou inexistente
Comunicao durante o desenvolvimento muito fraca
Falta de testes complexos
Insatisfao de usurios

27

Surgimento das Metodologias de


Desenvolvimento de Sistemas

28

Evoluo

Tcnica

Enfoque

Abordagem

Anlise Estruturada

Processos e Dados

Anlise Essencial

Controles, Processos Middle - Out (Lista de


Eventos)
e Dados

Anlise OO

Dados, Controles
e Processos

29

Top-Down (Decomposio
Funcional)

Definio de Objetos

Anlise Estruturada

O mais amplamente usado dos mtodos de modelagem


de requisitos
Modelos que retratam fluxo e o contedo da informao
(dados e controle)
O sistema dividido em parties funcionais e
comportamentais e descrevemos a essncia do que
deve ser construdo
Enfatiza a perspectiva das funes, com nfase nos
processos.
Utiliza as seguintes ferramentas:

Diagrama de Fluxo de Dados

Dicionrio de Dados

Especificao da Lgica de Processos

30

Exemplo: DFD

DFD Diagrama de Fluxo de Dados


Tcnica grfica que descreve o fluxo da
informao e as transformaes sofridas por esta
Pode ser utilizado para representar um sistema
em qualquer nvel de abstrao
Notao simples

31

Exemplo: DFD
Pedido_preos

E1
Departamento
de produo
Lista_materiais
necessrios

Entidade
externa

Lista

dor
e
c
rne
o
f
_
os
d
a
D

P1
Escolher
fornecedor

E2
Fornecedores

Preos_material

Processo

D1 Fornecedores
Dado
s

Depsito
De dados
32

_forn
eced
or

P2
Pedir
materiais

Nota_encomenta

Fluxo de dados

Anlise Essencial

uma evoluo da Anlise Estruturada por


adicionar a preocupao com o controle.

Usa uma lista de eventos externos como base


para o particionamento do sistema.

O modelo essencial construdo sem considerar


restries de implementao (assume uma
tecnologia perfeita) essncia do sistema

33

Diagrama de Contexto

34

Constri um DFD para cada evento (DFD de resposta a


eventos). A partir dele feito o agrupamento para formar os
diagramas superiores e inferiores.

Lista de eventos

35

Anlise Essencial

36

Anlise Orientada a Objetos

O mundo real composto por objetos.

Cada objeto tem propriedades e comportamentos.

Ento porqu no desenvolver programas que


simulem no computador os objetos do mundo real
com suas propriedades e comportamentos?

37

Anlise Orientada a Objetos

Nos mtodos tradicionais de anlise, o


comportamento do sistema e seus dados eram
considerados separadamente. Com orientao a
objetos, comportamento e dados so integrados,
assim encapsulando detalhes internos de um objeto

Anlise

dos demais.

Enfoque

Foco

Estruturada Conjunto de programas que executam processos Sistema


e Essencial Sobre dados
Orientada a Conjunto de entidades que tm caractersticas eObjeto
Objetos
Comportamentos prprios
38

UML

UML (Unified Modeling Language) Linguagem de


Modelagem Unificada

uma linguagem de modelagem (visual), no


uma linguagem de programao

Permite a utilizao de diagramas padronizados


para especificao e visualizao de um sistema

39

Diagramas UML
Representao Grfica de um Conjunto de
Elementos

Estrutural (Esttica)

Diagrama de Classes
Diagramas de Objetos
Diagrama de Caso de Uso
Diagrama de Componentes

40

Dinmica
Diagrama de Estados
Diagrama de
Atividades
Diagrama de
Colaborao

Diagrama de Caso de Uso

Usado geralmente nas fases de Levantamento e


Anlise de Requisito do Sistema, mostra como o
sistema ir se comportar.

41

Diagrama de Classes

Define a estrutura de classes do sistema e


estabelece como elas se relacionam.
42

Classes

Uma classe composta por trs sees

Nome da Classe
Atributos
Operaes

43

DVD
Hora
Status
Voltar()
Pausar()
Adiantar()
Parar()
Tocar()

estrutura

comportamento

Diagrama de Objetos
Exibe os valores armazenados pelos
objetos de um Diagrama de Classes

44

Conceito de Orientao a Objetos

OO

O que um Objeto ?

a representao de um objeto real


uma abstrao
tudo que manipulvel e/ou manufaturvel
coisa, pea, artigo de compra e venda
pode ser uma composio de outros objetos

Exemplos

automvel, pessoa, elevador, janela, etc..

OO

Propriedades de um Objeto

o estado do objeto
so atribuitos da coisa
exemplo

Em um automvel temos

ligado/desligado
posio
velocidade
marca/modelo
cor, placa, nmero de portas, etc.

OO

Mtodos de um objeto

representa o comportamento do objeto


muda o estado do objeto
exemplo

Em um automvel temos

ligar/desligar
acelerar
freiar
virar p/ esquerda
virar p/ direita

OO

Eventos de um Objeto

so acontecimentos que fazem o objeto


responder de determinada maneira
alteram o estado e mudam o comportamento
exemplo

Em um automvel temos

usurio...

pisa no acelerador ou no freio


vira o volante para esquerda ou direita
vira a chave na ignio para ON ou OFF

OO

Classe de Objetos

Definio de um tipo de objetos


Define a forma de se criar objetos
uma fbrica de objetos
Todos os objetos de uma classe tm uma estrutura
idntica, mas cada objeto ter seus prprios
atributos
Exemplo

Classe: CARROS (cor, portas, placa, posio, velocidade,


etc.)
Objeto: carro vermelho/2 pts/XXX9999/
(100,10)/100km/h...

OO

Porque usar Objetos ?

Simplicidade: os objetos escondem a


complexidade do cdigo. Pode-se criar
aplicaes sem se conhecer a complexidade
do cdigo.
Reutilizao de cdigo: um objeto, depois de
criado, pode ser reutilizado por outras
aplicaes, e at extender suas funes.
Incluso dinmica: objetos podem ser includos
dinmicamente durante a execuo,
reduzindo o tamanho do arquivo final.

OO

Princpios bsicos de uma linguagem OO


1) Abstrao
o processo de extrair as caractersticas
essenciais de um objeto
a abstrao de um objeto diferente de
acordo com a viso de cada pessoa
ex: livro
Livraria:
Transportadora:

autor, ttulo, assunto, editora, preo


nmero de pginas, formato e
tipo de capa (=>peso)

OO

Princpios bsicos de uma linguagem OO


2) Encapsulamento
o processo de combinar dados e funes
relacionadas em um nico bloco de organizao
agrupa o estado do objeto e as funes que ele
capaz de executar, e que alteram seu prprio
estado
esconde a complexidade do cdigo
exemplo:
radio.ligar := true;
radio.gravar(musica);

OO

Princpios bsicos de uma linguagem OO


3) Herana
o aproveitamento e extenso das
caractersticas de uma classe existente
uma classe mais sofisticada herda as
caractersticas e funcionalidades de uma classe
bsica
exemplo:
Classe CARROS_ESPORTIVOS
como herana da Classe CARROS
* Novos Atributos: turbo, barra de proteo,
intercomunicador, temperatura do
leo, etc.

rdio

OO

Princpios bsicos de uma linguagem OO


4) Polimorfismo
a propriedade de se utilizar um mesmo nome ou
forma para fazer coisas diferentes
muito til para escrever programas versteis, que
possam lidar com vrios tipos diferentes de objetos
exemplo:
tringulo.Desenhe;
retngulo.Desenhe;
crculo.Desenhe;
Sobreposio
de mtodos
reta.Desenhe;

OO

Programao OO (Orientada a Objetos)

Os objetos so a base da tecnologia


Consistem de modelos (abstraes) de objetos reais
Preservam as caractersticas essenciais de um
objeto real: suas propriedades e seu
comportamento (mtodos)

Exemplos de linguagens OO

C++,
Delphi,
Java,
etc.

Você também pode gostar