Metodologia Orientada a Objetos

Download Report

Transcript Metodologia Orientada a Objetos

Orientação para Objetos
Projeto de Sistemas Aplicativos
para a Internet
FEA/USP
EAD-5881 – Tecnologia de Informática
Prof. Antonio Geraldo da Rocha Vidal
[email protected]
1
Conteúdo
1. Conceitos de Orientação a Objetos



Classes
Objetos
Programação
2. Introdução à Linguagem Java

Conceitos e recursos básicos
3. Projeto de Sistemas Orientados a
Objetos
4. UML - Unified Modeling Language
2
Paradigma
“Paradigma é um conjunto de regras
que estabelece fronteiras e descreve
como resolver problemas dentro destas
fronteiras. Os paradigmas influenciam
nossa percepção: ajudam-nos a
organizar e a coordenar a maneira
como olhamos para o mundo...”
Daniel Morris e Joel Brandon
3
Paradigmas
Tradicional: baseia-se na compreensão de
um sistema de informação como um conjunto
de programas que executam processos sobre
dados.
Objetos: vê um sistema de informação como
uma coletânea de objetos que interagem
entre si, apresentam características próprias,
que
são
representadas
pelas
suas
propriedades (dados) e métodos (processos).
4
Paradigmas
Programa
Classe
Processos
Propriedades
Dados
Métodos
Tradicional
Objetos
5
Orientação a Objetos - OO
Análise, projeto e programação orientados a
objetos representam uma mudança de
paradigma em relação às técnicas clássicas.
Objetos são os componentes de um sistema
que pertencem a uma classe e possuem:







Encapsulamento
Herança
Polimorfismo
Propriedades
Métodos
Eventos
Mensagens
Reutilização
Flexibilidade
Interoperabilidade
6
Bases das Metodologias OO
Diretamente derivada dos conceitos da
programação orientada a objetos, a análise e
o projeto orientados a objeto definem uma
nova maneira de pensar nos problemas
utilizando modelos organizados a partir de
conceitos do mundo real.
O componente fundamental é a classe de
objetos, algo que combina estrutura e
comportamento em uma única entidade que
pode derivar várias ocorrências ou instâncias
de objetos semelhantes.
7
Origens da OO
Linguagens de Programação: Simula,
Smaltalk, Flavours, Objective C, C++,
Java, C#, Object Pascal e outras.
Inteligência Artificial: frames.
Banco de Dados: modelos semânticos
de dados.
8
Expectativas da OO
A tecnologia de objetos oferece a modularidade de
seus elementos podendo-se tomar um subconjunto
existente e integrá-lo de uma maneira diferente em
outra parte do software (sistema aplicativo).
Uma aplicação no universo de objetos consiste de um
conjunto de blocos de construção auto-contidos
e predefinidos que podem ser localizados, reparados
ou substituídos.
A construção de código auto-contido propicia o teste
completo antes de ser utilizado dentro da lógica de
um sistema de informação.
9
Expectativas da OO
Possibilita incrementos graduais de componentes
aos já instalados, ampliando a abrangência do
sistema.
A combinação de módulos provê inicialmente um
nível básico de funcionalidade que é estendido
sucessivamente para atender novas situações, em
um progresso contínuo da aplicação perante os
usuários.
Forte direcionamento à reutilização de artefatos de
software já existentes, que são criados uma única
vez e disseminados.
10
Objetos Concretos
Coisas
Tangíveis
Automóvel
Eventos
Casamento
Transações
Transação
comercial
11
Objetos de Software
Objetos são pacotes de software compostos por
dados e procedimentos, que atuam sobre estes
dados.
Os procedimentos são também conhecidos
como métodos e determinam o comportamento
do objeto.
Os dados são também conhecidos como
propriedades e determinam o estado do
objeto.
Objeto = dado + procedimento
Objeto = estado + comportamento
12
Objetos de Software
Comportamentos
Variáveis
Dados
Procedimentos
Propriedades
Métodos
13
Objeto Automóvel
Mover
Preço
Dimensões
Cor
Potência
Buzinar
Parar
14
Objetos de Software
Todo acesso aos dados ou propriedades de um objeto
é feito através da sua interface, que expõe métodos e
propriedades a outros objetos.
15
Encapsulamento
É definido como uma técnica para
minimizar interdependências entre
“módulos” através da definição de
interfaces externas.
Interface
Mudanças na implementação de uma classe que preserve
a interface externa não afetam outras definições de classes.
16
Interfaces de Classes
Uma Interface descreve um grupo de classes
com as mesmas:


Propriedades constantes;
Métodos abstratos;
Uma Interface define a estrutura ou
“esqueleto” padrão de uma classe.
Não implementa nenhum comportamento
real, mas apenas os declara.
Implementa propriedades constantes e
métodos abstratos.
17
Mensagens
Objetos interagem e comunicam-se
através de mensagens...
Andar(...)
Emissor
Receptor
As mensagens identificam os métodos a serem executados
no objeto receptor e passam-lhes alguma informação. 18
Métodos
Um determinado método define um
comportamento do objeto.
Tipos básicos de métodos:




Construtor (constrói estados)
Destruidor (destrói estados)
Transformador (transforma estados)
Acesso (fornece estados)
19
Abstração
Focalizar o essencial, ignorar
propriedades acidentais ou específicas.
Classe Automóvel
Classe Mamífero
A abstração deve sempre ter algum objetivo, pois é o objetivo
ele que determina o que é e o que não é essencial
20
Classes de Objetos
Uma classe de objetos descreve um
grupo de objetos com:



Propriedades semelhantes;
Comportamentos semelhantes;
Relacionamentos comuns com outros
objetos.
21
Classes
Classificação
Classe Automóvel
Atributos
Potência
Velocidade
Cor...
Instanciação
Objetos
Instâncias
Métodos
Acelerar
Frear
Buzinar...
22
Classes
Classe Pai
Super Classe
Atributos e métodos
da classe.
Subclasse
Instanciação de classe
Atributos e métodos
específicos.
Subclasse
23
Classes vs. Subclasses
Classes:


Contém informações sobre como uma subclasse
ou um objeto deve ser e como deve se comportar.
Definem a forma e o comportamento padrão de
subclasses e objetos nela baseados.
Subclasses:




São instâncias ou ocorrências de uma classe.
Herdam todas as suas características padrão de
uma classe.
Além disso, podem possuir características
específicas.
Podem derivar outras subclasses ou objetos nelas
baseados.
24
Classes vs. Objetos
Classes:


Contém informações sobre como um objeto deve
ser e como deve se comportar.
Definem a forma e o comportamento padrão de
objetos nela baseados.
Objetos:




São instâncias ou ocorrências de uma classe.
Herdam todas as suas características padrão de
uma classe ou subclasse.
Além disso, podem possuir características
específicas.
Não podem derivar outros objetos neles baseados.
25
Relacionamentos entre Classes
Generalização
Herança
Agregação
Polimorfismo
26
Generalização /
Especialização
Generalização é o relacionamento entre
uma classe e uma ou mais versões
refinadas dessa classe.
Generalização
Generalização é a abstração que permite compartilhar
semelhanças entre classes, preservando suas diferenças.
Especialização
27
Hierarquia de Classes
Super Classe
Classe Primitiva
Sub Classe A
Classe Derivada
Sub Classe B
Classe Derivada
Sub Classe C
Classe Derivada
28
Herança
Uma classe derivada ou subclasse herda
as propriedades e métodos da classe
mãe ou superclasse, mas pode:



Adicionar novos métodos próprios;
Estender suas propriedades/atributos;
Redefinir a implementação de métodos
existentes.
29
Herança
Localização de Métodos e Propriedades na Hierarquia
Super Classe
Classe Primitiva
Sub Classe A
Classe Derivada
Sub Classe B
Classe Derivada
Sub Classe C
Classe Derivada
Subsub Classe 1
Subsub Classe 2
Calcular()
Instância
30
Herança
Generalização
Propriedades e
métodos comuns
compartilhados
por classes.
Automóvel
Automóvel
Esportivo
Ferrari
Propriedades e
métodos
diferentes de
uma subclasse,
acrescentando ou
alterando
características
herdadas.
Especialização
31
Agregação
Um objeto agregado é “construído” por vários componentes
Automóvel
Chassi
Carroceria
Suspensão
Motor
Agregação Fixa
32
Agregação
Um objeto agregado é “feito” de componentes
Empresa
Departamento
Setor
Agregação Variável
Pessoa
33
Polimorfismo
Refere-se a:


Vários comportamentos que um mesmo método
ou operação pode assumir;
Capacidade de um nome referir-se a objetos
diferentes que executam certas responsabilidades
dependendo da mensagem que lhes é passada.
Um nome pode denotar objetos de muitas
subclasses diferentes que estão relacionadas
por alguma superclasse comum. Assim, um
objeto identificado por esse nome tem a
capacidade de responder a algum conjunto
comum de operações de modos diferentes.
34
Evento vs. Estado
Evento:



Uma ocorrência significativa no mundo real que
deve ser tratada pelos objetos de software.
São atividades específicas e predeterminadas,
provocada pelo usuário ou pelo sistema.
Possuem métodos de objetos associados a eles.
Estado:

Situação de um objeto em um dado instante do
tempo.
35
Objetos: propriedades
Características ou atributos dos objetos que
são próprias da classe ou subclasse à qual
pertencem.
Exemplo: objeto JOSÉ, pertencente à
subclasse CLIENTE, da subclasse PESSOA
FÍSICA, da classe PESSOA.






Número: 000001
CPF: 999.888.777-66
Nome: José da Silva
Endereço: Rua da Independência, 709
Telefone: 3089-9090
Etc.
36
Objetos: métodos & eventos
Cada objeto reconhece e pode responder a
ações denominadas eventos próprios da sua
classe/subclasse.
Eventos:


São atividades específicas e predeterminadas
provocada pelo usuário ou pelo sistema.
Possuem métodos associados a eles.
Métodos:


São comportamentos ou procedimentos
associados ao objeto.
Métodos podem existir independentemente de
eventos.
37
Objetos: mensagens
Objetos recebem mensagens de outros
objetos com os quais se relacionam.
Mensagens:



Transferem informações de um objeto para
outro.
São enviadas e recebidas através de
eventos.
São caracterizadas pelos métodos ou
comportamentos dos objetos; tanto do que
envia como do que recebe.
38
Objetos: polimorfismo
Usando a mesma mensagem, objetos
podem assumir características e
comportamentos diferentes:



De acordo com contextos específicos;
De acordo com eventos específicos;
De acordo com eventos e contextos
específicos.
Um objeto pode assumir várias formas:


Propriedades/atributos diferentes;
Métodos/comportamentos diferentes.
39
Linguagens Orientadas a Objetos
40
Introdução às Linguagens
Orientadas a Objetos
Conceitos Básicos
(Válidos para C++, C#, Java, J++ e J#)
41
Java
It’s a jungle out there
So drink your Java
Propaganda do Printer’s Café
em Palo Alto CA/USA
42
Por que surgiu o Java?
Software para eletro-domésticos (1992)



Mínimo uso de memória
Mínimo preço
C++ simplificado
Desenvolvida pela Sun Microsystems Inc.
(1994)
Distribuição de software através da Internet
(1996)
Novo paradigma de programação:



Orientada a objeto
Totalmente aberta
43
Independente de plataforma e sistema operacional
Características do Java da
Sun
Linguagem orientada a objetos
Estrutura semelhante ao C++
Gera Bytecodes


Interpretada
Alta Performance (JIT)
Segurança


Endereçamento restrito
Objetos assinados
Aplicação Carregada Localmente
44
Características do Java da
Sun
Aplicações Personalizadas
Independência de Arquitetura


Neutra
Distribuída
Não há herança múltipla
Não há aritmética de ponteiros
Inclui tratamento de exceções
Implementa “Coletor de Lixo”
45
Arquitetura de Programas Java
46
Java Script
Primeira Versão do Java
Aplicação Interna ao HTML
Interpretada
Não havia o conceito de ByteCodes
<script language=“Java Script”
Function -------{ .......
}
</script>
47
Applet Java
Aplicação executada quando se chama
uma página WWW
É carregada na Máquina Cliente
Restringe-se a uma determinada área
(janela)
<applet code=“apl.class”
codebase=“http://www.fia.fea.usp.br/vidal
align=left
width=300
height=100
<param name=tamanho value=30>
<param name=fonte value “Arial”>
</applet:
48
Aplicação Java
Aplicação executada “stand-alone”
Exige somente a presença do
interpretador Java (Java Virtual Machine)
public class HelloWorldApp
{
// Definição do Método MAIN
public static void main (String args[])
{
String text = "Hello World!";
System.out.println(text);
}
}
49
Java e Orientação a Objetos
Java suporta as principais características da
programação orientada a objeto através de
seus construtores de classes e de interfaces.
Uma classe é um modelo que descreve um
conjunto inteiro de objetos. Em geral, uma
classe tem os mesmos membros, isto é,
propriedades (dados) e métodos
(procedimentos), que os objetos criados a
partir dela.
Uma interface representa uma coleção de
comportamentos relacionados. Contém
somente declarações de métodos e
50
propriedades constantes.
Criando Classes
Uma classe é composta por métodos
(comportamento) e propriedades
(variáveis que determinam o estado).
public class Pessoa {
// Variáveis ou propriedades
String Nome;
boolean ComFome;
// Métodos
int Comer(int quantidade)
{ //... }
}
Métodos mudam o estado das variáveis
51
Exemplo de Definição de
Classe (propriedades)
public class Morador...
{
String nomeCompleto;
String apartamento;
String telefone;
int anoChegada;
....
52
Exemplo de Definição de
Classe (métodos)
public class Morador...
{....
public morador(String no, String ap,
String te, int an)
{ nomeCompleto = no;
apartamento = ap;
telefone = te;
anoChegada = an;
}
public int permanencia()
{ return (2002 - anoChegada); }
}
53
Criando Objetos
Criação do Objeto lassie a partir da
classe Cachorro:
/*Crie uma variável de referência
para a classe Cachorro:*/
Cachorro lassie;
/*Crie um objeto da classe Cachorro
e designe-o para a referência:*/
lassie = new Cachorro();
54
Usando Objetos
Executando um método do objeto
criado:
Cachorro.latir();
/* Errado! -não se pode fazer todos
os cachorros latirem.*/
lassie.latir();
/* Correto! pode-se fazer um
determinado cachorro latir.*/
55
Exemplo de Instanciação de
uma Classe
...
Morador prof;
....
prof = new morador(“Vidal”, “82”, “3081-0001”,1998);
...
56
Exemplo de Métodos com
Mensagens
.....
Morador prof;
int p;
....
prof = new morador(“Vidal”, “81”, “3081-0001”,1998);
....
p = prof.permanencia(); // acionando o método
// permanencia para o
// objeto definido em prof
indica o envio de mensagem para o
objeto prof
....
57
Herança
A herança permite a você reutilizar e
modificar código já existe.
A herança forma relações hierárquicas entre
classes ou interfaces.
A meu ver a mais significativa contribuição do
paradigma da Orientação para Objetos para o
desenvolvimento de software.
58
Exemplo de Herança
import morador;
public class morador_inq extends morador
{
int aluguel;
public morador_inq(String no, String ap,
String tel, int an, int va)
{ super(no, ap, tel, an);
aluguel = va;
}
}
59
Exemplo de Agregação
Objeto Composto
public class material extends Object
{
String rotulo;
Boolean emCaixa;
int anoEstocagem;
double valor;
Morador proprietario;
public material (....)
....
60
Exemplo de Agregação
Objeto Composto
public class material extends Object
{....
public material (String ro, double va,
boolean em, Morador pro, int an)
{rotulo = ro; valor = va;
emCaixa = em; proprietario = pro;
anoEstocagem = an;
}
public int permanencia()
{ return (2002 - anoEstocagem); }
61
Pacotes
Um pacote é um grupo de classes
relacionadas.
Eles são semelhantes a bibliotecas em
outras linguagens de programação.
Ajudam a organizar classes,
relacionando-as em categorias com
funcionalidades (métodos e
comportamentos) semelhantes.
62
Pacotes JAVA
java.lang
java.util
java.io
java.awt
java.applet
Para usar um pacote pré-existente, você
deve importá-lo para o seu programa.
63
Pacotes Java
64
Análise e Projeto de Sistemas
Orientados a Objeto
UML - Unified Modeling Language
65
Conteúdo
Visão Geral
UML
Técnicas de Modelagem
Análise: Classes
Projeto: Objetos, Interface e Sistema
Considerações Finais
66
Metodologia
Conjunto de técnicas e diretrizes para
construção, manutenção e melhoria de
produtos de software.
Fornece uma base de comunicação: um
conjunto de técnicas e uma base para
engenharia de software.
67
Fases Clássicas do
Desenvolvimento de Sistemas
Definição de
Requisitos
Domínio do Problema
Análise
Projeto
Implementação
Teste
Domínio da Solução
Implantação
68
Metodologia OO
Uma metodologia de desenvolvimento
de sistemas é considerada Orientada a
Objetos se ela orienta a construção de
sistemas a partir do entendimento do
mundo real como um conjunto de
objetos que comunicam-se entre si de
forma coordenada.
69
Metodologia OO
Principais Atividades:



Entender quais são os objetos envolvidos
no domínio do problema.
Entender como se comunicam no mundo
real.
Projetar a forma como devem ser
implementados.
70
UML – Unified Modeling Language
Booch
Odell
Rumbaugh
UML
Shlaer-Mellor
Gamma et al
Jacobson
Meyer
Harel
Fusion
Wirgs-Brock
Objetivo: linguagem de modelagem unificada que tratasse assuntos de escala
inerentes a sistemas complexos e de missão crítica, que se tornasse poderosa o
suficiente para modelar qualquer tipo de aplicação em tempo real, cliente/servidor,
71
orientada a objetos e outros tipos e padrões de software.
A UML
Os fomentadores da UML não inventaram a
maioria das idéias, em vez disso, seu papel
foi selecionar e integrar as melhores práticas,
tornando-a um meio padrão de expressar
projetos de sistemas.
Ajuda a desmistificar o processo de
modelagem de sistemas de software.
Linguagem-padrão para encorajar os
desenvolvedores a modelar os seus sistemas
de software, antes de construí-los.
Adoção rápida e muito difundida.
72
A UML
Tornou-se o modo-padrão para desenhar
diagramas de projetos orientados a objetos.
Também foi adotada em campos nãoorientados a objetos.
É projetada para ser independente do
processo de software.
É uma linguagem padrão para especificar,
visualizar, documentar e construir
componentes de um sistema de informação.
Pode ser utilizada em todos os processos ao
longo do ciclo de desenvolvimento e através
de diferentes tecnologias de implementação.73
A UML
É uma linguagem de modelagem; não é uma
metodologia. Não possui um processo!
Uma linguagem de modelagem é a notação,
principalmente gráfica, utilizada por métodos
para expressar projetos.
O processo é a sugestão de quais passos
devem ser seguidos na elaboração de um
projeto.
A linguagem de modelagem é a parte-chave
do processo para a comunicação.
74
A UML
Está na sua versão 1.3 de 1999.
Define uma notação e um metamodelo:


Notação é a parte gráfica dos modelos; é a
sintaxe da linguagem de modelagem.
Metamodelo é um diagrama, geralmente o
diagrama de classes, que define a como notação
deve ser utilizada corretamente.
A UML tem pouco rigor; suas notações
apelam para a intuição em vez da definição
formal. O mais importante é a utilidade para
o projeto.
Atualmente é um padrão do OMG – Object
75
Management Group.
A UML pode ser usada para:
1. Mostrar as fronteiras de um sistema e suas funções
2.
3.
4.
5.
6.
principais utilizando atores e casos de uso;
Ilustrar a realização de casos de uso com
diagramas de interação;
Representar uma estrutura estática de um sistema
utilizando diagramas de classe;
Modelar o comportamento de objetos com
diagramas de transição de estados;
Revelar a arquitetura de implementação física com
diagramas de componente e de implantação;
Estender sua funcionalidade através de
estereótipos.
76
UML & Análise e Projeto
O objetivo real do desenvolvimento de
software é o código executável.
Nenhum usuário ficará satisfeito apenas
com diagramas de projeto bonitos.
O usuário quer um software que seja
executado!
Portanto, ao utilizar a UML é importante
pensar em como ela ajudará a escrever
o código executável.
77
Processo de
Desenvolvimento
CONCEPÇÃO
Projeto Lógico
(Análise
Conceitual)
REQUISITOS
Revisão
de Processos
de Negócio
ELABORAÇÃO
Projeto Físico
(Projeto de
Software)
1 2 3 ...
Interativo e Incremental
RISCOS:
•Requisitos
•Tecnologia
•Pessoal Habilitado
•Fatores Políticos
CONSTRUÇÃO
Implementação
(Desenvolvimento)
ITERAÇÕES:
•Análise
•Projeto
•Implementação
•Teste & Ajuste
•Treinamento
Domínio do Problema
Domínio da Solução
TRANSIÇÃO
Teste
Ajuste
Treinamento
78
Tipos de Análise
Análise Estática: descreve as
estruturas e os relacionamentos entre
os objetos do domínio do problema
(Diagrama de Classe de Objetos).
Análise Dinâmica: descreve o
comportamento dos objetos em termos
de suas mudanças ao longo do tempo
(Diagrama de Transição de Estados e
Diagrama de Interação).
79
Modelagem com a UML
1. O que fazem e desejam os usuários do sistema?
2.
3.
4.
5.
6.
(análise de processos e casos de uso).
Quais são os objetos no mundo real que interagem
com o sistema em estudo e suas associações?
(diagrama de classes e MER).
Quais objetos são necessários para cada caso de
uso? (análise de processos, casos de uso e CRC).
Como colaboram entre si objetos dentro de um
caso de uso? (diagramas de interação).
Como serão implementados os controles de tempo
real? (diagramas de estados e de atividades).
Como será construído o sistema? (diagrama de
pacotes, diagrama de componentes, diagrama de
implantação).
80
ANÁLISE DE PROCESSOS
(Não faz parte formal da UML)
Processos & Organizações
Uma organização pode ser vista como
um grande processo que recebe
insumos, informações e recursos do
ambiente, os processa e os devolve ao
ambiente na forma de serviços.
A organização também pode ser vista
como um conjunto de processos
operacionais e gerenciais, que se
desdobram em etapas, e que por sua vez
se subdividem em atividades e estas em
tarefas.
82
Revisão vs. Reengenharia
de Processos
•Qualidade Total
•Racionalização e Produtividade
•Desenvolvimento de Processos
Evolua lenta e
gradualmente (Kaizen).
Baixo Risco
Melhoria Contínua
Melhoria, Programas, Projetos
Mudanças suaves,
graduais e
contínuas.
Não informatize,
destrua (Hammer).
Alto Risco
Reengenharia
Redesenho, Reprojeto
Mudanças drásticas,
fundamentais e
descontínuas.
83
Mudança Organizacional
Do foco nas funções...(Sistemas Isolados)
84
Mudança Organizacional
...ao foco nos Processos (Sistemas Integrados).
85
Processo
É um conjunto de atividades estruturadas, seqüenciais e
medidas que transforma um ou mais tipos de entrada e
cria um produto ou serviço que tem valor para
determinados usuários, clientes ou mercados.
Fornecedores
PROCESSO
Produtos/ Clientes
Serviços
Entradas
Requisitos
86
Características dos Processos
Processos eficientes e eficazes possuem
as seguintes características:





Repetitibilidade
Estabilidade
Previsibilidade
Mensurabilidade
Documentação
87
Elementos de um Processo
Nome
Escopo e Limites
Clientes (internos e/ou externos)
Fornecedores (internos e/ou externos)
Requisitos de Entrada e Saída
Atividades e Participantes
Mapa do Processo
Indicadores e Medidas (tempo, custo etc.)
Informações! (incluindo sua documentação)
88
Diagrama de um Processo
Fornecedor
Processo
Cliente
Entradas
Transformação
Saídas
• Informações
• Insumos
• Instruções
• Materiais
• Tecnologia
Atividades
com
Valor
Agregado
• Produtos
• Serviços
• Informações
(informação é serviço)
89
Análise do Processo
Conhecimentos
Habilidades
Fornecedor
- Insumos
- Informações
- Instruções
- Materiais
- Tecnologia
Requisitos
Métodos
Procedimentos
Regras
PROCESSO
Saídas
Entradas
Recursos
Instalações
Requisitos
Cliente
Produtos
- Serviços
- Informações
Padrões de
Desempenho
90
Metodologia para Análise do
Processo
1. Identificação de Produtos e Processos:

A partir do entendimento dos negócios da organização.
2. Matriz Serviço/Fornecedor/Cliente:
Detalha os produtos finais e intermediários de um
processo
 Detalha seus fornecedores e clientes internos e externos
 Detalha as responsabilidades envolvidas

3. Mapa do Processo:
Fluxograma de atividades: identificando as unidades
organizacionais, tarefas, tempos, pessoas e interfaces
envolvidas em cada atividade.
 Fluxograma de informações: identificando as
informações utilizadas no processo, detalhando seu
recebimento, processamento, envio, registro e interfaces
envolvidas.
91

Matriz Fornecedor X Cliente
Cliente
A
Fornecedor
A
Fornecedor
B
Fornecedor
C
Cliente
B
Serviço
1
Cliente
C
...
Cliente
X
Serviço
3
Serviço
2
Serviço
4
...
Fornecedor
X
Serviço
X
92
Símbolos para Fluxogramas
Operação
Entrada
Preparação
Operação Manual
Conector Página
Dados
Decisão
Conector
Disco
Documento
Início/Fim
Arquivar
Processo
Extrair
Armazenamento
Acesso
Consulta
93
Mapa de Processo
Depto.1
Processo de Negócio
Início
Atividade 1
Decisão
Depto. 3
Depto. 2
Não
Sim
Atividade 2
Fim
Atividade 3
94
Mapa de
Processo
Processo de Pedidos de Venda
Unidade
Organizacional
Loja
Vendas
Evento
Pedido
Recebido
Pedido
Reigstrado
Atividade
Entrar
Pedido
Informação
Pedido do
Cliente
Processar
Pedido
Clientes
Regulares
Pedido
Pronto
Perguntar ao
Cliente
Vendas
Necessidade
de
Informações
Vendas
Informações
Recebidas
Preparar
Pedido
Suplementar
Pedido
Suplementado
95
Ciclo de Melhoria de
Processos
Análise do
Processo
Entendimento
do Negócio
Projeto do
Processo
Implementação
do Processo
(automação)
Gerenciamento do Processo
96
Benefícios para a Aplicação
da Tecnologia da Informação
Identificação clara do que deverá ser automatizado
Aponta a priorização das atividades a serem
automatizadas
Visão do todo com responsabilidades bem definidas
Garantia de automatização de um processo já
racionalizado e preparado para usar a TI
Necessidades de suporte de Sistemas de Informação já
identificadas (dados, políticas, normas, regras do
negócio, procedimentos, recursos, capacitação etc.)
Redução do tempo para obtenção da visão global.
97
UML: Casos de Uso
(UML Use Case)
A partir dos Processos de Negócio explicita
requisitos de usuários em partes
significativas.
Descreve a funcionalidade do sistema
percebida por atores externos ligados ao
Processo de Negócio.
Um ator interage com o sistema podendo ser
um usuário, dispositivo ou outro sistema.
O planejamento e a construção de sistemas é
realizado pela implementação de alguns
Casos de Uso em cada iteração.
98
UML: Casos de Uso
Técnica proposta por Jacobson (1992).
Conceitos básicos:
 Cenário: é uma seqüência de passos que
descreve uma interação entre um usuário e
um sistema.
 Caso de uso: é um conjunto de cenários
amarrados por um objetivo comum de um
usuário.
Base para testes dos requisitos do sistema.
99
UML: Casos de Uso
Características dos Casos de Uso:


Há um caso comum, em que tudo dá certo, e que
ocorre com mais freqüência.
Há casos alternativos, menos freqüentes, que
podem ocorrer quando algo sai fora do comum
(outros caminhos ou erros).
Captura de Casos de Uso:


Descrição do cenário primário como uma
seqüência de passos numerados.
Descrição descrição das alternativas, como
variações daquela seqüência de passos mais
comum.
100
UML: Casos de Uso –
Exemplo
Compra de um Produto na Web
1. O cliente navega pelo catálogo e seleciona itens
a serem comprados.
2. O cliente vai para o check out.
3. O cliente preenche o formulário para remessa.
4. O sistema apresenta a informação total
incluindo: faturamento, remessa, preços e
impostos.
5. O cliente preenche a informação de cartão de
crédito.
6. O sistema autoriza a compra.
7. O sistema confirma imediatamente a venda.
8. O sistema envia uma confirmação para o cliente
101
via e-mail.
UML: Casos de Uso –
Exemplo
Caso Alternativo 1 – Falha na Autorização:

No passo 6, o sistema falha na autorização da
compra por cartão de crédito. Permite ainda ao
cliente reenviar a informação do cartão de
crédito ou tentar novamente com outro.
Caso Alternativo 2 – Cliente Habitual


O sistema mostra a informação total e os quatro
últimos dígitos do cartão de crédito.
O cliente pode aceitar ou escrever por cima
destas opções e retornar para o Caso Comum no
passo 6.
102
UML: Diagrama de Casos de Uso
Sistema
«uses»
Caso de Uso
Ator
103
UML: Diagrama de Classes
(UML Static Structure)
Um dos mais importantes componentes da UML.
Mostra a estrutura estática de conceitos, tipos e
classes do sistema.
 Conceitos mostram como os usuários pensam
sobre o mundo real.
 Tipos mostram interfaces de componentes de
software.
 Classes mostram a implementação dos
componentes de software.
É considerado estático pois a estrutura descrita é
sempre válida para o sistema.
104
UML: Diagrama de Classes
Gráfico bidimensional de elementos de
modelagem que pode conter:
 Tipos
 Pacotes
 Relacionamentos
 Classes
Um diagrama de objetos é uma variação do
diagrama de classes que mostra objetos em
vez de classes.
105
UML: Diagrama de Classes
Pedido
-Número
-Data
+IncluirPedido()
+AtenderPedido()
Composição
Agregação
1
1..*
-Pedido
-Pedido -Cliente
0..*
1
Produto
-Item
-Produto
-Quantidade
+IncluirItem()
+CalcularT otal()
-Código
-Nome
-Limite Crédido
-Endereço
+Incluir()
+Avaliar()
Dados/Propriedades
Operações/Métodos
Multiplicidade
-Item
Item Pedido
Cliente
Associação
0..*
1
Hardware
-Código
-Nome
-Preço
-SaldoEstoque
+IncluirProduto()
+AtualizarPreço()
+AtualizarSaldo()
Software
Super Classe
Generalização
Suprimento
Subclasse
106
Diagrama de Classes - Exemplo
Person
-lastName : char
-firstName : char
-address : char
-city : char
-state : char
-zipcode : char
-phoneNumber :
char
-faxNumber : char
-email : char
Person::Employe
e
-salary : float
-cpfNum : char
-title : char
«event» +ir() :
float
Person::Client
Person::Supplier
-creditLimit : float
-creditCarg :
char
-expireDate
+prazo() : int:
char
-productName :
char
-productPrice : float
-cgcNum
: char
+salePrice()
: float
107
Cartões CRC
(Não fazem parte formal da UML)
Ajudam a chegar à essência do objetivo
de uma classe.
Bons para explorar como implementar
Casos de Uso.
Devem se utilizados para simplificar e
esclarecer detalhes.
Úteis para o entendimento de Classes e
Objetos.
108
Cartões CRC
Responsabilidade
PEDIDO
Colaboração
Verifique se os itens estão em estoque
Determine o Preço
Item Pedido
Produto
Verifique se o pagamento é válido
Despache para o endereço de entrega
Cliente
Cliente
109
UML: Diagramas de
Interação
(Sequence & Collaboration)
São modelos que descrevem como grupos de
objetos colaboram em algum comportamento
do sistema.
Tipicamente capturam o comportamento de
um único Caso de Uso.
Mostram vários objetos e as mensagens que
são passadas entre estes objetos em um
Caso de Uso.
Categorias de Diagramas de Interação:
 Diagramas de Seqüência
 Diagramas de Colaboração
110
UML: Diagramas de Seqüência
(UML Sequence)
Mostram o fluxo global de controle da
interação entre objetos através de
mensagens.
Permitem o entendimento da seqüência de
métodos em classes distintas que revela o
comportamento pretendido.
Ajudam o entendimento de processos
concorrentes.
As duas dimensões de um diagrama de
seqüência são tempo (vertical) e objetos
(horizontal).
111
UML: Diagrama de Seqüência
Entrada de Pedido
Pedido
Item de Pedido
Produto
Prepare()
Adicione Item()
VerificarEstoque()
RetirarEstoque()
Message1()
Item Reposição
Retorno OK()
PrecisaRepor()
Message2()
Item Entrega
112
UML: Diagramas de Colaboração
(UML Collaboration)
Mostra uma interação dinâmica de um Caso
de Uso organizada em torno de objetos e
seus vínculos mútuos.
Utiliza números de seqüência para evidenciar
a seqüência de mensagens.
Flechas indicam as mensagens enviadas
dentro de um dado Caso de Uso.
Mostra como objetos são ligados entre si.
Utiliza o layout de Diagramas de Classes ou
de Pacotes para esboçar a colaboração entre
objetos.
113
UML: Diagrama de Colaboração
Pedido
Item Pedido
Item Entrega
Produto
IncluirProduto()
Janela Entrada Pedido
Incluir()
Incluir()
Incluir()
VerificarEstoque()
AtualizarSaldo()
Item Reposição
114
UML: Diagramas de Estados
(UML Statechart)
Mostram como um único objeto se comporta
através de muitos Casos de Uso.
Mostra seqüências de estados que um objeto
ou uma interação assume em sua vida em
resposta a eventos, juntamente com suas
respostas e ações.
É um complemento de uma classe
relacionando os possíveis estados que objetos
da classe podem ter e quais eventos podem
causar a mudança de estado (transição).
115
UML: Diagrama de Estados
Registrando Pedido
Analise
requisitada
Analisando Pedido
Pedido não pode
ser atendido no
momento
Alterando Pedido
Cancelamento de Pedido
Pedido deve ser
cancelado
Pedido para
Aprovação
Pedido já pode
ser atendido
Pedido Pendente
Cancelamento
de Pedido
Solicitado
Alteração de
Pedido Solicitada
Pedido enviado
Aprovando Pedido
Eventos
Pedido deve ser
Atendido
Atendendo Pedido
Pedido Atendido
116
UML: Diagramas de
Atividades
(UML Activity)
Mostra comportamento com estrutura de
controle.
Pode mostrar:



Muitos objetos em muitos usos.
Muitos objetos em Caso de Uso único.
A implementação de métodos.
É um diagrama de estados especial onde a
maioria dos estados é de ação e a maioria
das transições é ativada por conclusão das
ações dos estados de origem.
Seu propósito é estudar fluxos dirigidos por
processamento interno, descrevendo as
atividades desempenhadas numa operação.117
UML: Diagrama de Atividades
Registrar
Pedido
Autorizar
Pagamento
Cancelar
Pedido
Atualizar
Estoqe
Aceitar
Pedido
118
UML: Pacotes
(UML Deployment)
Mostra grupos de classes e as
dependências entre elas.
Pessoa
Indivíduo
Organização
119
UML: Diagramas de Componentes
(UML Component)
São mostradas dependências entre
componentes de software.
Tipos de componentes:



Código-fonte
Código-binário
Executáveis.
120
UML: Diagrama de Componentes
Componente
da Interface 2
Componente
da Interface 1
Componente
de Negócios 1
121
UML: Diagramas de Implantação
(UML Deployment)
Mostra elementos de configuração de
processamento e os componentes de
software, processos e objetos que neles se
mantêm.
Inclui o uso físico do sistema considerando
computadores, dispositivos e suas
interconexões.
Mostram o layout físico dos componentes nos
nós de hardware.
122
UML: Diagrama de Implantação
ESTAÇÃO
CLIENTE
(PC)
Entrada do Pedido
SERVIDOR
WEB
Registro do Pedido
SERVIDOR
BANCO DE
DADOS
ESTAÇÃO
CLIENTE
(PC)
123
Relacionamento entre as
Técnicas de Modelagem
Revisão de
Processos
Use Case
Diagrama de
Classes
DTE
Pacotes
CRC
DI
Componentes
Implantação
124
Tecnologias de Implementação
Ferramentas CASE:

Rational Rose (Rational), Visio Enterprise (Microsoft) etc.
Linguagens Orientadas a Objetos:

Java, J++, J#, C#, VB.NET, C++ e Smalltalk
Ambientes de Desenvolvimento:





VisualAge for Java (WebSphere) (IBM)
Oracle Applications (Oracle)
Visual Studio .NET (Microsoft)
Visual Café (Symantec)
Jbuilder (Borland/Inprise)
Banco de Dados Orientado a Objetos:



O2 (O2 Technology)
Objectstore (Object Design Inc.)
Jasmine (Computer Associates)
125
Implementação de uma
Metodologia OO
Mudança de paradigma – requer treinamento
intensivo.
Protótipos sem compromisso.
Os primeiros sistemas devem ser “livres”.
Grupo formal de metodologia – proposta e
treinamento.
Acerto do ambiente de desenvolvimento –
suporte e padrões.
Administração de classes/objetos – Biblioteca
de Classes.
Ferramenta CASE.
126
Benefícios da OO
Reutilização de código.
Estabilidade.
O projetista pensa em termos de
comportamento dos objetos e não em
detalhes de baixo nível.
Construção de objetos cada vez mais
complexos.
Confiabilidade.
Verificação de precisão.
Novos mercados de software.
Desenvolvimento acelerado.
Integridade.
127
Benefícios da OO
Programação facilitada.
Manutenção facilitada.
Ciclo de vida dinâmico.
Refinamento durante a construção.
Modelagem mais realista.
Melhor comunicação entre profissionais de
sistemas e usuários.
Interoperabilidade.
Processamento Cliente/Servidor.
Processamento distribuído e paralelo.
Bibliotecas de classes industrializadas e
corporativas.
128
Fim! Obrigado e Sucesso!
129