departamento de sistemas de computação universidade de são ... · modelo conceitual departamento...
TRANSCRIPT
Modelo Conceitual
Departamento de Sistemas de ComputaçãoUniversidade de São PauloAnálise e Projeto Orientados a Objetos
Prof. Seiji Isotani ([email protected])
Slides baseados no material da Profa Dra Rosana T. V. Braga
2
O que já foi visto até agora
Consultar Livro
Emprestar Livro
Devolver Livro
Atendente
Incluir LivroBibliotecária
Comprar Livro
Leitor
Diagrama de Casos de Uso
Casos de Uso Completo Abstrato
Caso de Uso: Emprestar Livro
Ator Principal: Atendente
Interessados e Interesses:
- Atendente: deseja registrar que um ou mais livros estão em posse de um leitor, para
controlar se a devolução será feita no tempo determinado.
- Leitor: deseja emprestar um ou mais livros, de forma rápida e segura.
- Bibliotecário: deseja controlar o uso dos livros, para que não se percam e para que
sempre se saiba com que leitor estão no momento.
Pré-Condições: O Atendente é identificado e autenticado.
Garantia de Sucesso (Pós-Condições): Os dados do novo empréstimo estão armazenados
no Sistema. Os livros emprestados possuem status “emprestado”
Cenário de Sucesso Principal:
1. O Leitor chega ao balcão de atendimento da biblioteca e diz ao atendente que deseja
emprestar um ou mais livros da biblioteca.
2. O Atendente seleciona a opção para realizar um novo empréstimo.
3. O Atendente solicita ao leitor sua carteira de identificação, seja de estudante ou
professor.
4. O Atendente informa ao sistema a identificação do leitor.
5. O Sistema exibe o nome do leitor e sua situação.
6. O Atendente solicita os livros a serem emprestados.
7. Para cada um deles, informa ao sistema o código de identificação do livro.
8. O Sistema informa a data de devolução de cada livro.
9. Se necessário, o Atendente desbloqueia os livros para que possam sair da biblioteca.
10. O Leitor sai com os livros.
Fluxos Alternativos:
(1-8). A qualquer momento o Leitor informa ao Atendente que desistiu do empréstimo.
3. O Leitor informa ao Atendente que esqueceu a carteira de identificação.
1. O Atendente faz uma busca pelo cadastro do Leitor e pede a ele alguma
informação pessoal para garantir que ele é mesmo quem diz ser.
4. O Leitor está impedido de fazer empréstimo, por ter não estar apto.
1.Cancelar a operação.
7a. O Livro não pode ser emprestado, pois está reservado para outro leitor.
1. O Atendente informa ao Leitor que não poderá emprestar o livro e pergunta se
deseja reservá-lo.
2. Cancelar a operação (se for o único livro)
7b. O Livro não pode ser emprestado, pois é um livro reservado somente para consulta.
1. Cancelar a operação (se for o único livro)
3
O que vamos ver hoje
1. O Leitor chega ao balcão de atendimento da biblioteca e diz ao atendente que deseja
emprestar um ou mais livros da biblioteca.
2. O Atendente seleciona a opção para adicionar um novo empréstimo.
3. O Atendente solicita ao leitor sua carteirinha, seja de estudante ou professor.
4. O Atendente informa ao sistema a identificação do leitor.
5. O Sistema exibe o nome do leitor e sua situação.
6. O Atendente solicita os livros a serem emprestados.
7. Para cada um deles, informa ao sistema o código de identificação do livro.
8. O Sistema informa a data de devolução de cada livro.
9. O Atendente desbloqueia os livros para que possam sair da biblioteca.
10. O Leitor sai com os livros.
Casos de Uso com substantivos e
verbos sublinhados
Atendente
nome
Leitor
nome
tipo : char
0..n1..1 0..n1..1
registra
Empréstimo/Devolução
data do empréstimo
situação : Char0..n1..1 0..n1..1
faz
LinhaDoEmpréstimo
data_prevista_devolução
data_entrega_real
1..n
1..1
1..n
1..1 possui
Bibliotecaria
nome
Reserva
período
situacao : char0..n
1..1
0..n
1..1
^
faz
0..1
0..1
0..1
0..1
corresponde a
0..1
0..1
0..1
0..1 corresponde a
CopiaDoLivro
nro sequencial
situacao : char
liberadoParaEmprestimo : char
1..1
0..n
1..1
0..n
< refere-se a
Livro
titulo : String[30]
autor : String[30]
ano : int
ISBN : string[20]
editora : int
tipo : char
0..n1..1 0..n1..1
registra
1..1
0..n
1..1
0..n
refere-se a >
0..n
1..1
0..n
1..1possui
Modelo Conceitual
1. O Leitor chega ao balcão de atendimento da biblioteca e diz ao atendente que deseja
emprestar um ou mais livros da biblioteca.
2. O Atendente seleciona a opção para adicionar um novo empréstimo.
3. O Atendente solicita ao leitor sua carteirinha, seja de estudante ou professor.
4. O Atendente informa ao sistema a identificação do leitor.
5. O Sistema exibe o nome do leitor e sua situação.
6. O Atendente solicita os livros a serem emprestados.
7. Para cada um deles, informa ao sistema o código de identificação do livro.
8. O Sistema informa a data de devolução de cada livro.
9. O Atendente desbloqueia os livros para que possam sair da biblioteca.
10. O Leitor sai com os livros.
Caso de Uso 1
Caso de Uso n
4
O que ainda vamos estudar
Diagrama de Seqüência do Sistema
(para cada caso de uso)Modelo Conceitual
+
Casos de Uso
:Atendente:Atendente SistemaSistema
3: encerrarEmpréstimo()
1: iniciarEmpréstimo(id_Leitor)
2: emprestarLivro(id_Livro)
* mais livros a
emprestar
5
O que ainda vamos estudar
Diagrama de Seqüência do Sistema
(para cada caso de uso)
:Atendente:Atendente SistemaSistema
3: encerrarEmpréstimo()
1: iniciarEmpréstimo(id_Leitor)
2: emprestarLivro(id_Livro)
* mais livros a
emprestar
Contrato da Operação
(para cada operação)
Operação: encerrarEmpréstimo()
Referências Cruzadas: Caso de uso: “Emprestar Livro”
Pré-Condições: Um leitor apto a emprestar livros já foi identificado;
pelo menos um livro já foi identificado e está disponível para ser
emprestado.
Pós-Condições: um novo empréstimo foi registrado; o novo empréstimo
foi relacionado ao leitor já identificado na operação “iniciar o
empréstimo”; a situação dos livros emprestados foi alterada para
“emprestado”.
6
O que ainda vamos estudar
Contrato da Operação
(para cada operação)
Operação: encerrarEmpréstimo()
Referências Cruzadas: Caso de uso: “Emprestar Livro”
Pré-Condições: Um leitor apto a emprestar livros já foi identificado;
pelo menos um livro já foi identificado e está disponível para ser
emprestado.
Pós-Condições: um novo empréstimo foi registrado; o novo empréstimo
foi relacionado ao leitor já identificado na operação “iniciar o
empréstimo”; a situação dos livros emprestados foi alterada para
“emprestado”.
emprestaFita(f Codigo)----> :Videolocadora
emprestimoCorrente: Emprestimo
clienteCorrente: Cliente
f itas: Fita
item: ItemDeEmprestimo
3: adiciona(f ita)
4: criar()
5: associaItem()
6: associaFita(f ita)
2: empresta(f ita)1: f ita:=get(f Codigo)
Diagrama de Colaboração
(para cada operação)
7
O que ainda vamos estudar
emprestaFita(f Codigo)----> :Videolocadora
emprestimoCorrente: Emprestimo
clienteCorrente: Cliente
f itas: Fita
item: ItemDeEmprestimo
3: adiciona(f ita)
4: criar()
5: associaItem()
6: associaFita(f ita)
2: empresta(f ita)1: f ita:=get(f Codigo)
Diagramas de Colaboração
(para todas as operações)
1..1
Leitor
nometipo
calcularDataDevolucao( )
0..*
1..*
1..1
Emprestimo
data_do_emprestimosituacao : char
adicionarCopia( )devolverCopia( )
1..1 0..*
faz
1..1
CopiaDoLivro
nro_sequencialsituacao : charliberadoParaEmprestimo : char
mudarSituacao( )codCopia( )sinal izarDevolucao( )
0..*
LinhaDoEmprestimo
data_prevista_devoluçãodata_entrega_real
codCopia( )atualizarDataDev( )
1..*
1..1possui
1..10..*
refere-se a
Diagrama de Classes de Projeto
: Emprestimo
linh: LinhaDoEmprestimo
2: criar(d, copiaLiv ro)
adicionarCopia(copiaLiv ro)--->
:Leitor
1: d:=calcularDataDev olução()
Modelo Conceitual
artefato do domínio do problema e não do domínio da solução
não deve ser confundido com a arquitetura do software
não deve ser confundido com o modelo de dados
9
Modelo Conceitual
Mostra todos os conceitos importantes no domínio do sistema, bem como as associações entre esses conceitos. A idéia é fazer com que o usuário que tem acesso a esse modelo entenda os principais elementos do domínio que estão envolvidos no sistema a ser desenvolvido
Não mostra artefatos de software ou classes. O modelo conceitual ajuda a esclarecer a
terminologia ou vocabulário do domínio.
Elementos Básicos do Modelo Conceitual
Conceitos
Atributos
Associações
11
Como Identificar Conceitos ?
Alguns conceitos são bastante óbvios quando se descreve o sistema, como por exemplo os conceitos Leitor e Livro quando se fala em um sistema de Biblioteca.
Livro
titulo
autor
ano
ISBN
editora
tipo
Leitor
nome
tipo
Como Encontrar Conceitos
Verificar o texto dos casos de uso expandidos
Selecionar termos que representam informação transmitida do e para o sistema
Agrupar sinônimos
13
Como Identificar Atributos ?
Substantivos sublinhados a partir do texto do caso de uso podem ser candidatos a atributos dos conceitos já identificados.
Cautela: não torne o modelo conceitual muito complexo desnecessariamente.◦ limite-se a adicionar os atributos importantes para
compreender o conceito, ou atributos que serão importantes para o futuro projeto do sistema
14
Como Identificar Atributos ?
Exemplo
Nome do conceito
Atributos do conceito
Leitor
idLeitornomesi tuacao
Livro
idLivro
Empréstimo
dataDeDevolucao
15
Associações
Associação é um relacionamento entre conceitos, que precisa ser lembrado pelo sistema durante seu funcionamento ◦ Por exemplo, existe uma associação entre Empréstimo e
Leitor, que precisa ser lembrada pelo sistema, pois quando o Empréstimo termina o Leitor deve ter sua situação regularizada.
16
Como identificar Associações?
Algumas associações são bastante simples de serem identificadas, bastando aplicar certas regras básicas. Outras associações são implícitas e podem requerer mais experiência do analista para identificá-las logo na fase de requisitos, ou podem surgir mais adiante, na fase de projeto.
Cautela: incluir associações em demasia causa um efeito indesejado, levando a um modelo confuso e conseqüentemente com pouca legibilidade.
Portanto, uma regra básica é evitar colocar associações redundantes
17
Como identificar Associações?
Regra 1: Um conceito que, fisicamente ou logicamente, faz parte de outro.
Por exemplo, um livro que está fisicamente armazenado em uma estante ou um Item de Empréstimo que logicamente faz parte do Empréstimo.
18
Como identificar Associações?
Regra 2: Um conceito que serve para descrever ou qualificar outro conceito.
Por exemplo, um Livro pode ser classificado em diversas Categorias ou por Autor; um Item de Estoque que é descrito por uma Especificação de Produto.
19
Como identificar Associações?
Regra 3: Um conceito que é responsável por registrar ou manter informações sobre outro.
Por exemplo, o Atendente é quem registra e atende o Leitor; a Bibliotecária é responsável pelos Livros.
20
Associações na UML
AtendenteLeitor
idLeitornomesi tuacao
0..*1..1
registra
0..*1..1
Nome da associação
Multiplicidade da
associação
Lê-se: Um Atendente
registra 0 ou mais
Leitores. Um leitor
é registrado por
um atendente
21
Associações na UML
Direção de leitura do
nome da associação
A direção só deve ser
colocada se for da
direita para a esquerda
ou de baixo para cima.
22
Multiplicidade
C2
C2
C2
C2
C2
*
1..*
1..40
5
3,5,8
zero ou mais
Muitos (as)
um ou mais
um a quarenta
exatamente cinco
exatamente três, cinco ou
oito
C1
C1
C1
C1
C1
23
Associação Reflexiva
Pessoa
nome1
0..n
+pai
1
é pai de+filho 0..n
Papel
24
Especialização/Generalização/Herança
Herança é um mecanismo que permite que características comuns a diversos tipos sejam colocadas em um tipo base, ou supertipo.◦ A partir de um tipo base, outros tipos podem ser especificados (os
subtipos). ◦ Cada subtipo apresenta as características (estrutura e atributos) do
supertipo e acrescenta a ele novas características. ◦ Dizemos que um subtipo herda todas as propriedades do supertipo e
acrescenta suas características próprias e exclusivas. ◦ As propriedades do supertipo não precisam ser repetidas em cada
subtipo.
25
Tipos e Especialização na UML
A Gas
temperatura
Forno
capacidade
Microondas
horariopotencia
Elétrico
v oltagem
A Lenha
quantMaxLenha
Analógico Digital
Camping
Acendimento com Fósf oroAcendimento Elétrico
26
Regras de Herança
A regra “é-um” estabelece que todos os membros do conjunto de um subtipo devem ser membros do conjunto do supertipo, ou seja o subtipo é um supertipo. ◦ Por exemplo, podemos dizer que um microondas digital é
um forno, e por isso possui todos os atributos (e comportamentos) esperados de um forno.
27
Regras de Herança
A regra dos 100% estabelece que 100% da definição do supertipo dever ser aplicado ao subtipo◦ se o supertipo possui um dado atributo, é necessário
garantir que todos os subtipos também o possuam, ou seja, ele deve fazer sentido para elas e deve ser importante conhecer seu conteúdo.
◦ O mesmo vale para as associações do supertipo, que devem ser aplicáveis aos subtipos.
28
Regras de Herança
Por exemplo, se incluirmos o conceito Cozinheiro nomodelo do forno, e associarmos ele ao conceitoforno, significando que o Cozinheiro utiliza o Forno,isso deve ser verdadeiro para todos os subtipos, ouseja, todos os tipos de forno devem poder serutilizáveis por um cozinheiro.
29
Agregação
Agregação é um mecanismo pelo qual um tipo incluiatributos (e comportamento) de outros tipos a eleagregados, indicando a existência de um todo,composto por partes.◦ Um exemplo de agregação é um carro: consiste de 4 rodas,
um motor, chassis, caixa de câmbio, e assim por diante.
30
Agregação na UML
BotaoAcendedor
Queimador
Estufa
Forno
capacidade
PainelDeControle
1..61..6
Tampa
Fogão
1..61..6
11
11
11
11
Música
nomecantor
CD
tituloano 1..n1..n
31
Agregação Composta
A agregação composta ou composição ocorre quando a multiplicidade na extremidade do composto pode ser no máximo 1. A notação em UML é um losango negro
Automóvel Roda
4 1
forte dependência do “todo” em relação à “parte” tempo de vida delimitado (as “partes” não podem existir sem o
“todo”). Algumas propriedades do “todo” se propagam para suas “partes”
(e.g. disposição, localização, criação e destruição das “partes”).
32
Agregação compartilhada
A agregação compartilhada, denotada em UML por um losango vazio, denota que o a multiplicidade na extremidade do composto pode ser maior do que um.
Pacote de
UMLElemento
de UML
*
referencia
33
Tipo Associativo
É uma associação que também possui propriedades de tipo (ou um tipo que tem propriedades de uma associação). É mostrada como um tipo e é ligada por uma linha tracejada a uma associação.
1..n
Empresa Pessoa1..n0..n
+empregador
0..n
+empregado
Emprego
salario
34
Tipo Associativo
Indícios de que um tipo associativo pode ser útil em um modelo conceitual:◦ Um atributo está relacionado com uma associação◦ As instâncias do tipo associativo têm um tempo de vida dependente do
tempo de vida da associação◦ Existe uma associação muitos-para-muitos entre dois conceitos, bem como
informações relacionadas à associação propriamente dita
Empresa
Emprego
salario1..n
1
1..n
+empregador 1
oferece
Pessoa1
0..n+empregado
1possui
0..n
Onde Está o Modelo Conceitual?
Exercício-Exemplo
36
Como Identificar Conceitos ?
muitos conceitos estão geralmente implícitos e requerem uma maior maturidade do analista para descobri-los.
37
Como Identificar Conceitos ?
Checklist de possíveis conceitos:
Objetos físicos ou tangíveis: Livro, Leitor
Especificação de Projetos ou descrição de coisas: EspecificaçãodeLivro, CategoriaDeLivro
Lugares: Biblioteca, Sala de Aula
Transações: Emprestimo, Reserva
Linha de Itens de Transações: LinhaDeEmprestimo
Papéis desempenhados por pessoas: Atendente, Chefe de Biblioteca
Contêineres de outras coisas: Estante, Armário
Coisas em um contêiner: Cópia de Livro, Revista
Catálogos: Catálogo de Livros, de Revistas,
etc. (ver livro Larman)
38
Como Identificar Conceitos ?
Sugestões básicas: Passo 1: Isole, no documento de requisitos ou na
descrição dos casos de uso elaboradas na fase anterior, todos os substantivos presentes no texto
39
Passo 1: Isolar os substantivos
1. O Leitor chega ao balcão de atendimento da biblioteca e diz ao atendente que
deseja emprestar um ou mais livros da biblioteca.
2. O Atendente seleciona a opção para adicionar um novo empréstimo.
3. O Atendente solicita ao leitor sua carteirinha, seja de estudante ou professor.
4. O Atendente informa ao sistema a identificação do leitor.
5. O Sistema exibe o nome do leitor e sua situação.
6. O Atendente solicita os livros a serem emprestados.
7. Para cada um deles, informa ao sistema o código de identificação do livro.
8. O Sistema informa a data de devolução de cada livro.
Parte de um caso de uso do sistema de biblioteca
40
Exemplo: Biblioteca
Lista de candidatos:
Leitor
Balcão
Biblioteca
Atendente
Livros
Opção
Empréstimo
Carteirinha
Estudante
Professor
Sistema
Identificação de leitor
Nome do leitor
Código de identificação do
livro
Data de devolução
. . .
41
Como Identificar Conceitos ?
Sugestões básicas: Passo 2: Para cada substantivo◦ verifique se é relacionado a assuntos importantes no
domínio do sistema. ◦ Descarte: os que fogem do escopo do sistema, os que são similares a outros conceitos já identificados, os que são propriedades de outros substantivos.
42
Exemplo: Biblioteca
Lista de candidatos:
Leitor
Balcão
Biblioteca
Atendente
Livros
Opção
Empréstimo
Carteirinha
Estudante
Professor
Sistema
Identificação de leitor
Nome do leitor
Código de identificação do
livro
Data de devolução
. . .
43
Como Identificar Conceitos ?
Sugestões básicas: Passo 3: Isole os verbos que poderiam ser
transformados em substantivos (possivelmente com a ajuda de outras palavras). ◦ Concentre-se nos verbos que representam ações de interesse
para o sistema, ou seja, aqueles relacionados a eventos e transações que possuem informações importantes e que devem ser lembradas pelo sistema.
44
Exemplo: Biblioteca
1. O Leitor chega ao balcão de atendimento da biblioteca e diz ao
atendente que deseja emprestar um ou mais livros da biblioteca.
2. O Atendente seleciona a opção para adicionar um novo empréstimo.
3. O Atendente solicita ao leitor sua carteirinha, seja de estudante ou
professor.
4. O Atendente informa ao sistema a identificação do leitor.
5. O Sistema exibe o nome do leitor e sua situação.
. . .
45
Exemplo: Biblioteca
Lista de candidatos:
Emprestar
Adicionar
Informar
...
já havia sido
acrescentado pelo
substantivo empréstimo
46
Como Identificar Conceitos ?
Sugestões básicas: Passo 4: Para cada candidato a conceito, verifique se
ele é composto de outras partes que sejam de interesse do sistema, mesmo que essas não apareçam explicitamente no texto.◦ Por exemplo, um empréstimo normalmente refere-se a
vários livros emprestados em uma mesma ocasião para um mesmo leitor Linha Do Empréstimo é um outro conceito Copia do livro também é outro conceito
(Obs. poderia ser também: Item Do Empréstimo )
47
Exemplo: Biblioteca
Lista de candidatos:
Leitor
Balcão
Biblioteca
Atendente
Livros
Opção
Empréstimo
Carteirinha
Estudante
Professor
Sistema
Identificação de leitor
Nome do leitor
Código de identificação do
livro
Data de devolução
. . .
48
Exemplo: Biblioteca
Lista de candidatos:
Leitor
Balcão
Biblioteca
Atendente
Livros
Opção
Empréstimo
Carteirinha
Estudante
Professor
Sistema
Identificação de leitor
Nome do leitor
Código de identificação do
livro
Data de devolução
. . .
Atributos
+Linha de empréstimo
+Copia do livro
49
Exemplo: Biblioteca
Linha de empréstimo
Atendente
Leitor
Livro
Empréstimo
Cópia do Livro
registra faz
Agregado à
Refere-se à
possui
50
Exemplo: Biblioteca
Linha de empréstimo
Atendente
Leitor
Livro
Empréstimo
Cópia do Livro
registra faz
Agregado à
Refere-se à
possui
+idLeitor
+nome
+tipo
+idLivro
+datadevolução
Atendente
nome
Leitor
nometipo
0..n1..1 0..n1..1
registra
Bibliotecaria
nome
Reserva
períodosituacao
0..n
1..1
0..n
1..1
^faz
CopiaDoLivro
nro sequencialsituacaoliberadoParaEmprestimo
Livro
tituloautoranoISBNeditoratipo
0..n1..1 0..n1..1
registra
1..1
0..n
1..1
0..n
refere-se a >
0..n
1..1
0..n
1..1
possui
Empréstimo/Devolução
data do empréstimosituação0..n1..1 0..n1..1
faz
0..1
0..1
0..1
0..1
corresponde a
LinhaDoEmpréstimo
data_prevista_devoluçãodata_entrega_real
0..1
0..1
0..1
0..1
corresponde a
1..1
0..n
1..1
0..n
refere-se a
1..n1..n
Biblioteca