Sie sind auf Seite 1von 54

Ncleo de Computao Eletrnica

Curso de Programao de Computadores


Maio a Setembro/2000

Anlise e Projeto de Sistemas

Anlise OO / UML
Renata Araujo
Ricardo Storino

Ciclo de Vida de Software

Definio dos requisitos


Anlise

Documentos so gerados
a cada fase e servem de
entrada para a fase seguinte

Projeto
Implementao
Teste/Avaliao
Implantao
Manuteno

Ciclo de Vida - Modelo Cascata


Definio de Requisitos
Intenes

Transformaes
Requisitos
do
Software

Anlise

Especifica
o do
Software

Projeto

Projeto
do
Software

Documentos gerados
durante o ciclo de vida

Implementao

Cdigo
do
Software

Teste

Sistema
pronto
para operar

Definio de Requisitos

Desejos
Intenes
Procedimentos
Dados

Identificar

Organiz-los de forma coerente

Definir de uma forma geral

Requisitos
do
Software

desejos, intenes, procedimentos


atuais e dados;

o que ser tratado pelo software


interface com o que fica de fora do
software

Anlise do Software

Entendimento e Representao

Requisitos
do
Software

Especificao
do
Software

Domnio do problema
Conceitos
Funcionalidades
Casos de uso

Baseado nos fatores crticos de


sucesso do software

Anlise Orientada a Objetos

Objetivos

Representar todos os conceitos do mundo real que so


relevantes para o sistema
Modelagem do Sistema segundo o paradigma OO
Descrever a estrutura de classes do sistema

Produtos

Modelo/representao do software
Modelo de Anlise do Sistema

Documentao

Representao grfica do diagrama de classes do Sistema e das


interaes entre os objetos destas classes
Detalhamento e complementao do diagrama de classes do
sistema

Anlise Orientada a Objetos

Diagramas da UML

Viso Externa

Diagrama de Casos de Uso

Viso de Interao

Viso Estrutural (Esttica)

Diagrama de Classes

Viso Comportamental
(Dinmica)

Diagrama de Sequncia
Diagrama de Colaborao

Diagrama de Estado
Diagrama de Atividade

Viso da Arquitetura
(Implementao)

Diagrama de Componentes
Diagrama de Implantao
Diagrama de Pacotes

Diagramas de Caso de Uso

Especificam a viso externa do sistema


Descrevem como o sistema percebido por seus
usurios
Descrevem as interaes entre os usurios e o
sistema
Consulta de
saldo

Solicitao de
extrato

Ator
9

Interaes

Diagramas de Classe

Descrevem a parte esttica do sistema, ignorando seu


processamento

Apresentam

Classes (objetos)
Atributos
Relacionamentos

10

Herana
Agregao
Associao

Servios

Diagramas de Estado

Apresentam as sequncias
de estados que um objeto
assume em sua existncia
em resposta a estmulos
recebidos
Complemento das descries
estticas de classes

Classe Pedido
Pedido enviado
Pedido Registrado
Pedido para anlise requisitado
Pedido em Anlise
Pedido para aprovao
Pedido em Aprovao

11

Relacionam os possveis
estados que os objetos de
uma classe podem ter e quais
os eventos que causam
mudanas em seu estado.

Aprovao emitida
Pedido Aprovado
Pedido ser atendido

Diagramas de Sequncia

Apresentam a interao entre


os objetos no decorrer do
tempo
Janela

Vendedor
1: situao
financeira do
cliente

Pedido

Mostra a sequncia de
mensagens entre objetos

Nota Fiscal

2: obter pedidos
(cliente)
3: obter notas fiscais (pedido)
4: obter faturas vencidas (nota fiscal)
5: obter faturas a vencer (nota fiscal)
6: obter limite de crdito (cliente)

12

Fatura

Cliente

Diagrama de Classes

13

Passos para confeco

Identificao de Classes

Identificao de
relacionamentos

Definio de atributos

Definio de servios

Identificao de Classes

O domnio do problema

Os requisitos da aplicao

14

Um determinado domnio de problemas inclui informaes


relativas ao mundo real

Considerados os objetivos da aplicao a ser construda,


apenas um subconjunto dessas informaes necessita ser
representado

Identificao de Classes
No mundo real

Cliente

15

Em uma dada
aplicao/sistema

Nome
Endereo
Altura
Peso
Idade
Sexo
Renda Mensal
Cor dos Cabelos
Nmero de Dependentes
...

Cliente

Nome
Endereo
Idade
Sexo
Renda Mensal
Nmero de Dependentes

Identificao de Classes
No mundo real

Numa aplicao/sistema

Cliente

Cliente
Nome
Time

Nome

Endereo
Carro
Endereo

16

Dependentes

Identificao de Classes

O que procurar?

Objetos

Agentes

Ex. cliente, atendente etc.

Unidades organizacionais

Ex. Pessoas, clientes, turmas, cursos, produtos etc.

Ex. local para entrega, setor etc.

Eventos

Reclamao do cliente, pedido pago etc.

Quaisquer conceitos que sero armazenados e lembrados pelo sistema.

17

Identificao de Classes

O que Considerar?

Armazenamento necessrio

Mais de um objeto em uma classe

possvel identificar facilmente os objetos desta classe?


Evite classes que representem um s objeto

Atributos sempre aplicveis

18

O sistema precisar armazenar informaes sobre os objetos


desta classe?

Todos os atributos identificados para a classe so aplicveis a


todas as suas instncias?

Identificao de Classes

Notao de classe

Nome da Classe
<lista de atributos>
<Lista de servios/operaes>

19

Identificao de Classes

Recomendaes

Nomenclatura de classes

Nome da classe deve descrever claramente o conceito


representado
Uso de termos de conhecimento de todos
Evitar abreviaturas
Estabelecimento de padres para nomeao de classes
Evitar ambigidades (dupla interpretao)

Prtica

20

Uso Fast Case

Definio de Atributos

Objetivo

O que considerar?

21

Identificar e formalizar a definio dos atributos de cada


classe presente no diagrama de classes

Necessidade do sistema em armazenar as caractersticas das


instncias das classes

Definio de Atributos

Representao grfica

Nome da Classe
<lista de atributos>
<Lista de servios/operaes>

22

Definio de Atributos

Notao de atributos

Visibilidade Nome do Atributo: Tipo de Expresso = Valor Inicial {Propriedade}

Visibilidade:

Critrio de acesso ao atributo


Opcional

+ visibilidade pblica (default)

# visibilidade protegida

Atributo acessado apenas pelos servios da prpria classe ou por servios de classes
dentro de um mesmo pacote

- visibilidade privada

23

Atributo pode ser acessado por todos, inclusive por servios de outras classes

Atributo acessado por operaes da prpria classe

Definio de Atributos

Notao de atributos

Visibilidade Nome do Atributo: Tipo de Expresso = Valor Inicial {Propriedade}

Visibilidade:

Aluno

+ Nome
# Endereo
- Crditos

24

Definio de Atributos

Notao de atributos

Visibilidade Nome do Atributo: Tipo de Expresso = Valor Inicial {Propriedade}

Nome do atributo

Obrigatrio!!!!
Necessidade de padronizao
Clareza de significado
Evitar abreviaturas
Aluno

+ Nome
# EndereoDoAluno
- CrditosObtidos

25

Definio de Atributos

Notao de atributos

Visibilidade Nome do Atributo: Tipo de Expresso = Valor Inicial {Propriedade}

Tipo de Expresso

Opcional
Tipo de implementao do atributo

Inteiro
String
Real
...

Aluno

+ Nome: string
# EndereoDoAluno: string
- CrditosObtidos: int

26

Definio de Atributos

Notao de atributos

Visibilidade Nome do Atributo: Tipo de Expresso = Valor Inicial {Propriedade}

Valor Inicial

Valor inicial do atributo


Opcional

Aluno

+ Nome: string
# EndereoDoAluno: string
- CrditosObtidos: int = 0

27

Definio de Atributos

Notao de atributos

Visibilidade Nome do Atributo: Tipo de Expresso = Valor Inicial {Propriedade}

Propriedade

Opcional
Maior detalhamento do atributo

Descrio
Tipo

28

Esttico
Constante
Varivel

Domnio de Valores

Aluno
+ Nome: string
# EndereoDoAluno: string
-CrditosObtidos: int = 0
-NumMximoDeCrditos: int = 70 {constant}

Definio de Atributos

Notao de atributos

Nome da Classe
Atributo
Atributo:tipo do dado
Atributo:tipo do dado = valor inicial

29

Exemplo
Aluno
Nome
Endereo:string
Crditos:inteiro = 0

Prtica

Uso Fast Case

Definio de Servios

Objetivo

O que considerar?

30

Identificar e formalizar a definio das operaes de cada


classe presente no diagrama de classes

Necessidade de cada classe em realizar operaes que


atendam s funcionalidades do sistema

Definio de Servios

Representao Grfica

Nome da Classe
<lista de atributos>
<Lista de servios/operaes>

31

Definio de Servios

Notao de servios

Visibilidade Nome do Servio (Parmetro): Expresso de Tipo de Retorno {Propriedade}

Visibilidade:

Critrio de acesso ao servio


Opcional

+ visibilidade pblica (default)

# visibilidade protegida

Servio acessado apenas pelos servios da prpria classe ou por servios de classes
dentro de um mesmo pacote

- visibilidade privada

32

Servio pode ser acessado por todos, inclusive por servios de outras classes

Servio acessado por operaes da prpria classe

Definio de Servios

Notao de servios

Visibilidade Nome do Servio (Parmetro): Expresso de Tipo de Retorno {Propriedade}

Visibilidade:

Aluno
Nome
Endereo
Crditos
+ InformarNome( ):string
# InformarEndereo( ):string
- CancelarCrditos( cdigoCadeira )

33

Definio de Servios

Notao de servios

Visibilidade Nome do Servio (Parmetro): Expresso de Tipo de Retorno {Propriedade}

Nome do servio

Obrigatrio!!!!
Necessidade de padronizao
Clareza de significado
Evitar abreviaturas

Aluno
Nome
Endereo
Crditos
+ InformarNome( ):string
# InformarEndereo( ):string
- CancelarCrditos( cdigoCadeira )

34

Definio de Servios

Notao de Servios

Visibilidade Nome do Servio (Parmetro): Expresso de Tipo de Retorno {Propriedade}

Parmetros

Lista de valores utilizados pelo servio

Aluno
Nome
Endereo
Crditos

35

+ InformarNome( ):string
# InformarEndereo( ):string
-CancelarCrditos( cdigoCadeira )
-AtualizarCrditos( cdigoCadeira, ano, nmero de Crditos )

Definio de Servios

Notao de servios

Visibilidade Nome do Servio (Parmetro): Expresso de Tipo de Retorno {Propriedade}

Expresso de tipo de retorno

Tipo do valor de retonor do servio

Aluno
Nome
Endereo
Crditos

36

+ InformarNome( ):string
# InformarEndereo( ):string
-CancelarCrditos( cdigoCadeira )
-AtualizarCrditos( cdigoCadeira, ano, nmero de Crditos )

Definio de Atributos

Notao de servios

Visibilidade Nome do Servio (Parmetro):


Expresso de Tipo de Retorno {Propriedade}

Propriedade

37

Prs e ps condies
Excees
Propriedades dependentes da
linguagem de programao

Opcional
Maior detalhamento do servio
Classificao
Construtor:
incializam/constroem
instncias da classe
Destrutor: destrem
instncias da classe
Modificador de atributos:
modificam valores de
atributos
Seletor de atributos: utilizam
mas no modificam valores
de atributos

Aluno
Nome
Endereo
Crditos

+ CriarAluno( nome ) { construtor }


+ InformarNome( ):string
# InformarEndereo( ):string
-CancelarCrditos( cdigoCadeira ) { modificador }
-AtualizarCrditos( cdigoCadeira, ano, nmero de Crditos )

Definio de Servios

Persistncia

Construtores e Destrutores

38

Objetos Persistentes armazenado no banco de dados


Objetos transientes em memria

Coleta automtica de lixo

Servios para acesso a atributos

Prtica

Uso Fast Case

Identificao de Relacionamentos

Objetivo

O que considerar?

Necessidade do sistema em lembrar relacionamentos entre


as classes

O que procurar?

39

Identificar associaes, agregaes e relacionamentos de


generalizao/ especializao (herana) entre classes

Todos os relacionamentos entre instncias de classes que


sejam relevantes para o sistema

Identificao de Relacionamentos

40

Associao

Relacionamentos simples entre instncias de classes

Descrevem algum vnculo, relacionamento ou


interdependncia entre instncias de classes

Identificao de Relacionamentos

Associao - Representao

Unria
Pessoa

0..*
pai de

1..2

Binria
Aluno

0..*

Cadeira

Cursa
0..*

41

Identificao de Relacionamentos

Associao - Representao

N-ria
Avaliao

*
Funcionrio

42

*
Projeto

*
Quesito

Identificao de Relacionamentos

Agregao

Relacionamentos com uma semntica bem definida: a de


composio

Relacionamentos que representem:

montagens e suas partes


Ex. Um carro e suas partes
(motor, chassi, rodas )

recipientes e seus contedos

conjuntos e seus membros

43

Ex. Vo e passageiros
Ex. Turma e alunos

Identificao de Relacionamentos

Agregao - notao

Departamento

Empresa

1..*

Parte

44

Todo

Identificao de Relacionamentos

Herana

O que procurar?

Diferenas e similaridades entre classes


Vrias classes com caractersticas comuns

Notao

Veculo
Ano
Cor

Carro
Ano
Cor
No de Portas

45

nibus
Ano
Cor
No de Assentos

Caminho
Ano
Cor
Capacidade

Generalizao / Especializao

O que procurar? (cont.)

Uma classe com atributos aplicveis apenas a subconjuntos de suas


instncias
Funcionrio
Nome
Nasc
Salrio
Projeto

Gerente
Projeto

46

Funcionrio_Maria
Funcionrio_Joo
Nome = Maria
Nome = Joo
Nasc = 16/02/70
Nasc = 10/05/65
Salrio = 2500
Salrio = 3000
Projeto =
Projeto = Call Center

Identificao de Relacionamentos

Nome/Semntica do relacionamento

Multiplicidade

1
somente um
* muitos (zero ou mais)
0..*
muitos (zero ou mais)
0..1
opcional (zero ou um)
1..*
maior ou igual a um
M..N
sequncia especfica

47

Ex. 1..27 (de um a 27), 23..* (acima de 23)

Papis
Navegabilidade
Restries
Prtica

Uso Fast Case

Diagramas de Estado

Objetos de uma classe possuem um ciclo de vida

48

So gerados
Assumem posies (estados)
Do origem a outros objetos
Deixam de existir (so destrudos)

O estudo dos diferentes estados de um objeto de uma


classe e das transies entre estes estados permite o
levantamento de servios adicionais a serem
incorporados na classe

Diagramas de Estado

Notao

Estado:

condio ou situao durante a vida de um objeto no qual


satisfaz alguma condio, executa alguma atividade em resposta
a um evento ou espera pela ocorrncia de algum evento.

<nome do estado>

Incio
Fim
49

Diagramas de Estado

Notao

Evento:

Ocorrncia que deve ser reconhecida e gerar uma reao pelo


sistema em estudo.
A ocorrncia de um evento provoca a transio entre estados de
instncias de alguma classe pertencente ao sistema

evento
Estado 1

Estado 2

50

Diagramas de Estado

Exemplo Classe PedidoDeCompra


Envio de pedido

Prtica

Pedido Registrado

Pedido Atendido

Requisio de
anlise de
pedido

Pedido
aprovado

Pedido em Anlise
Pedido no pode ser
atendido neste
momento

Pedido j pode ser


atendido

51

Pedido Aprovado

Pedido
cancelado

Pedido Pendente
Pedido cancelado

Atendimento a
Pedido

Pedido cancelado

Pedido cancelado

Uso Fast Case

Diagramas de Sequncia

52

Objetivo

Identificar o envio de mensagens entre os objetos das


diversas classes do diagrama em resposta a cada caso de
uso

Um diagrama de sequncia mostra interaes de objetos


organizadas em uma sequncia de tempo e de mensagens
trocadas

Diagrama de Sequncia
Tempo
(top-down)
ator

um objeto

(evento)

criar

outro objeto

mensagem

retorno

ativao

excluir
Linha de vida

53

Smbolo de
excluso

Diagrama de Sequncia
Prtica
Janela

Pedido

Nota Fiscal

Vendedor
1: situao
financeira do
cliente

2: obter pedidos
(cliente)

3: obter notas fiscais (pedido)


4: obter faturas vencidas (nota fiscal)
5: obter faturas a vencer (nota fiscal)
6: obter limite de crdito (cliente)

54

Fatura

Uso Fast Case


Cliente