MAC 0332 Engenharia de Software
Marco A. Gerosa IME / USP
Decisões e erros comuns de modelagem
MAC0332
Engenharia de Software
Marco Aurélio Gerosa
gerosa@ime.usp.br
MAC 0332 Engenharia de Software
Erros comuns
H i s t ó r i c o E s c o l a r a lu n o
d is c ip lin a n o t a F in a l n u m F a lt a s V e n d e d o r e s
c o d n o m e s a la r io t e le f o n e
B i b l i o t e c a is b n
t í t u lo n u m P a g s t ip o D e C a p a
C a r d á p i o c o d
n o m e
in g r e d ie n t e s p r e ç o
G r a d e c u r s o d is c ip lin a c a r g a H o r á r ia n u m C r e d it o s
MAC 0332 Engenharia de Software
Uso do coletivo pelo item
• Nem sempre está errado. Ex:
• Daria para pensar neste mesmo modelo com cardinalidades
*:4, *:1, 1:4, 1:1
Marco A. Gerosa 3 IME / USP
R o d a s
f a b r ic a n t e a r o
c a lo t a e s p e s s u r a
A u t o m ó v e lc o d
f a b r ic a n t e m o d e lo
a n o F a b r ic a ç ã o
1 1
MAC 0332 Engenharia de Software
Qual o erro?
P r o d u t o c o d
n o m e m o d e lo
it e n s E m E s t o q u e f o t o
c o r p r e ç o n u m S é r ie
e s t a d o D e C o n s e r v a ç ã o d t A q u is iç ã o
lo c a liz a ç ã o E s t o q u e V e n d a
c o d c lie n t e v e n d e d o r
d a t a 1 *
F a b r i c a n t e c o d
n o m e e n d e r e ç o t e le f o n e
* *
MAC 0332 Engenharia de Software
Melhorando a modelagem
Marco A. Gerosa 5 IME / USP
I t e m D e P r o d u t o n u m S é r ie
e s t a d o D e C o n s e r v a ç ã o p r e ç o P a g o
V e n d a c o d
c lie n t e v e n d e d o r d a t a
1 *
F a b r i c a n t e c o d
n o m e e n d e r e ç o t e le f o n e
* P r o d u t o c o d
n o m e m o d e lo f o t o c o r p r e ç o
T i p o D e P r o d u t o c o d
n o m e d e s c r iç ã o
* 1
* 1
1
MAC 0332 Engenharia de Software
Outro exemplo
E x a m e c o d
n o m e d e s c r iç ã o p r e c is a J e ju m d a t a E n t r e g a r e s u lt a d o C o n s u l t a
c o d
p a c ie n t e m é d ic o
d u r a ç ã o 1 p r e s c r e v e *
L a b o r a t ó r i o c o d
n o m e e n d e r e ç o t e le f o n e é _ f e it o _ e m
* *
MAC 0332 Engenharia de Software
Melhorando a modelagem
Marco A. Gerosa 7 IME / USP
C o n s u l t a c o d
p a c ie n t e m é d ic o
d u r a ç ã o 1 *
p r e s c r e v e
L a b o r a t ó r i o c o d
n o m e e n d e r e ç o t e le f o n e
* *
E x a m e c o d
d a t a E n t r e g a r e s u lt a d o
D e s c r i t o r D e E x a m e c o d
n o m e d e s c r iç ã o p r e c is a J e ju m
* 1
o f e r e c e c o r r e s p o n d e a
MAC 0332 Engenharia de Software
Redundância?
C o n s u l t a c o d
p a c ie n t e m é d ic o
d u r a ç ã o 1 *
p r e s c r e v e
L a b o r a t ó r i o c o d
n o m e e n d e r e ç o t e le f o n e
* *
E x a m e P r e s c r i t o c o d
d a t a E n t r e g a r e s u lt a d o
D e s c r i t o r D e E x a m e c o d
n o m e d e s c r iç ã o p r e c is a J e ju m
* 1
T i p o E x a m e c o d
n o m e d e s c r ic a o
* 1
o f e r e c e
* 1
MAC 0332 Engenharia de Software
Redundância?
Marco A. Gerosa 9 IME / USP
D is c ip lin a
T u r m a
P r o f e s s o r A lu n o
1
1
* *
*
*
*
*
*
*
MAC 0332 Engenharia de Software
Navegação entre classes
A lu n o D is c ip lin a
T u r m a
* *
1
*
A lu n o
D is c ip lin a
T u r m a
* *
1
*
MAC 0332 Engenharia de Software
Uso de associação para ações
Marco A. Gerosa 11 IME / USP
C lie n t e F ilm e
*
*
c o n s u lt a
G e r e n t e C a t e g o r ia
* 1
c a d a s t r a
MAC 0332 Engenharia de Software
Decisão de como representar informações
• Como atributo de classe
• Como atributo de instância
• Como atributo de classe e de instância
• Como classe relacionada
• Como hierarquia de classes
• Como hierarquia de classes relacionada
MAC 0332 Engenharia de Software
I) II) II) III) III) IV) IV)
V) VI)
VII) VIII)
Marco A. Gerosa 13 IME / USP
P r o d u t o
$ c a t e g o r ia n o m e
P r o d u t o c a t e g o r ia n o m e
P r o d u t o c a t e g o r ia [ 0 . . * ]
n o m e * 1
P r o d u t o n o m e
C a t e g o r i a n o m e C a t e g o r ia
* *
P r o d u t o n o m e
C a t e g o r i a n o m e C a t e g o r ia
P r o d u t o
P r o d u t o C o n g e l a d o P r o d u t o B e b i d a P r o d u t o D o c e
* 1
P r o d u t o C a t e g o r i a
C o n g e l a d o B e b i d a D o c e
* *
P r o d u t o C a t e g o r i a
C o n g e l a d o B e b i d a D o c e
MAC 0332 Engenharia de Software
• Qual das soluções anteriores você adotaria em cada uma das seguintes situações (justifique)?
• O operador pode alterar a categoria de um produto, porém somente o gerente pode criar novas categorias (tudo feito via interface do sistema).
• Há um conjunto fixo de categorias, que não vai ser alterado depois que o sistema estiver pronto.
• É necessário saber a categoria do produto apenas a título informativo, para ser exibida juntamente com os dados do produto
• Há um conjunto fixo de categorias e a maioria das operações que podem ser feitas com produtos dependem da sua categoria.
MAC 0332 Engenharia de Software
Aspecto temporal da informação
• O que muda nas modelagens abaixo se quisermos guardar o histórico de endereços?
Marco A. Gerosa 15 IME / USP
C l i e n t e n o m e
e n d e r e ç o b a ir r o c id a d e
M o t o r i s t a 1 1 V e í c u l o
P a s s a g e i r o * 1 Ô n i b u s
E m p r e s a * * S ó c i o
MAC 0332 Engenharia de Software
Histórico
C l i e n t e n o m e
E n d e r e ç o
1 * e n d e r e ç o
b a ir r o c id a d e
C l i e n t e n o m e
e n d e r e ç o [ 0 . . * ] b a ir r o [ 0 . . * ] c id a d e [ 0 . . * ]
M o t o r i s t a * * V e í c u l o P a s s a g e i r o * * Ô n i b u s
E m p r e s a * * S ó c i o
MAC 0332 Engenharia de Software
Histórico
Marco A. Gerosa 17 IME / USP
M o t o r i s t a * * V e í c u l o
V i a g e m
d a t a in í c io d a t a f im
P a s s a g e i r o * * Ô n i b u s
V i a g e m d a t a in í c io d a t a f im
E m p r e s a * * S ó c i o
d a t a in í c io d a t a f im
E m p r e s a S ó c i o
Questão: volume de informação e política de arquivamento
MAC 0332 Engenharia de Software
Exercício
• Represente para cada uma das situações abaixo dois modelos: um onde só é registrada a informação atual e outro onde o histórico é armazenado.
• A nota do aluno nas disciplinas em que está cursando.
• O telefone do cliente.
• O time campeão de um campeonato.
• O empréstimo de um livro por um cliente.
• Os moradores de uma residência.
• As disciplinas de um curso.
MAC 0332 Engenharia de Software
Registro de informação calculada
Marco A. Gerosa 19 IME / USP
D i s c i p l i n a
c o d
n o m e
q t d e T u r m a s
T u r m a
c o d
h o r a r io
1 *
P e d i d o n u m
d a t a
v a lo r T o t a l
P r o d u t o c o d
d e s c r ic a o v a lo r
* *
N o t a F i s c a l n u m
d a t a
v a lo r T o t a l
I t e m N o t a F i s c a l c o d
d e s c r ic a o q t d e
v a lo r U n it a r io
d e s c o n t o F o r n e c id o
1 *
P e s s o a c p f
n o m e i d a d e
d a t a N a s c im e n t o