Professional Documents
Culture Documents
Contratos
Modelagem Funcional
casos de uso expandidos que mostram como possveis usurios trocam informaes com o sistema modelo conceitual que representa estaticamente a informao a ser gerenciada pelo sistema
Modelagem Funcional
Especificao das funes externas do sistema Operaes de Sistema - inputs Consultas de Sistema - outputs
Artefatos necessrios
Modelo conceitual Diagramas de seqncia ou casos de uso expandidos
Contratos
Cada operao ou consulta do sistema implica a existncia de uma inteno por parte do usurio, a qual capturada pelos contratos de operaes de sistema e nos contratos de consulta de sistema
Pr-condies
definem o que deve ser verdadeiro na estrutura da informao armazenada para que a operao ou consulta possa ser executada elas no sero testadas durante a execuo algum mecanismo externo dever garantir sua validade antes de habilitar a execuo da operao ou consulta de sistema correspondente
Ps-condies
estabelecem o que uma operao de sistema muda na estrutura da informao armazenada modificao nos dados armazenados no apropriado que se gerem resultados
Resultados
Conjunto de informaes retornado por uma consulta No confundir ps-condies com resultados de consultas
10
Excees
eventos que, se ocorrerem, impedem o prosseguimento correto da operao usualmente no podem ser garantidas a priori sero testadas durante a execuo s excees ligadas com as regras do negcio
11
12
Tipos de Pr-condies
Garantia de parmetros: pr-condies que garantem que os parmetros da operao ou consulta correspondem a elementos vlidos do sistema de informao Restrio complementar: pr-condies que garantem que a informao se encontra em uma determinada situao desejada
13
14
Garantia de Parmetros
Em um contexto no ambguo
possvel simplificar a escrita da pr-condio
Classe Videolocadora operao: identificaCliente(nomeCliente:String) pr: Existe uma instncia da classe Cliente tal que o atributo nome desta instncia igual ao parmetro nomeDoCliente. Classe Videolocadora operao: identificaCliente(nomeCliente:String) pr: Existe um Cliente cujo nome igual a nomeDoCliente.
self.cadastropexists(nome=nomeCliente)
15 16
Restrio complementar
exemplo: se o modelo conceitual especifica que uma associao tem multiplicidade de papel 0..1, uma prcondio complementar poder especificar que, para uma instncia especfica, a associao efetivamente existe (ou no existe) uma pr-condio nunca poder contradizer as especificaes do modelo conceitual, apenas complement-las
17
18
Exemplo
Cl
l
oper o: i entific pr :
liente(nomeCliente: tring)
iste m Cli
t c o
igual a
Cli
! #
t .
$
ste Cli
"
21
22
23
24
Associaes temporrias
so usadas para representar informaes que no precisam persistir usar esteretipo <<temp>>
pr :
4
iste um cli
t Corrente.
7
self.clienteCorrentepsize=1
25 26
Ps-condies semnticas
Instncia: criao e destruio Associao: criao e destruio Atributo: modificao de valor
27
28
31
32
Ps-condio condicional
exemplo: se no houver nenhum emprestimoAberto associado ao clienteCorrente, ento um novo Emprestimo foi criado e associado ao clienteCorrente como emprestimoAberto
34
Excees
Situaes de erro ou falha que no podem ser evitadas ou verificadas antes de iniciar a execuo da operao propriamente dita Muitas vezes, situaes identificadas como excees so, na verdade, precondies sobre as quais o analista no pensou muito
Classe Videolocadora
Excees
operao: identificaCliente(nomeC:String) pr: Existe um Cliente com nome igual a nomeC. ps: O Cliente foi associado como clienteCorrente . excees: Cliente com pendncia: O debito do Cliente diferente de zero.
self.cadastropselect(nome=nomeC).debito<>0
35 36
Em OCL
operao: cadastraCliente(nomeC,enderecoC,telefoneC:String) pr: No existe nenhum Cliente com nome = nomeC. ps: Foi criado um Cliente e adicionado ao ca astro. Os atributos nome, en ereco e telefone do Cliente foram alterados para nomeC, en erecoC e telefoneC. O atributo e ito do Cliente foi alterado para 0,00.
9 @ 9 9 9
37
38
Em OCL
Cl
A B B C D H
i
E C F
l
F G A E F
r
A I
Cl
V W W X c
i
` X a
l
a b V ` a
r
V d
opera o: alteraCliente(nomeC,enderecoC,telefoneC: tring) pr : ps: s atri utos endereco e telefone do Cliente foram alterados para enderecoC e telefoneC .
T U P
nomeC.
ps:
39
40
Em OCL
i
p h q
l
q r f p q
r
f t
41
42
Opo 1
Colocar como pr-condio da operao a no existncia de associao do Cliente com Reserva, e incluir um mecanismo de interface que s habilite para excluso os clientes que no tem reserva (como foi feito em relao aos emprstimos).
43
44
Opo 2
Colocar como exceo da operao a verificao da existncia de alguma reserva. Neste caso, se o usurio tentar excluir algum cliente que tenha alguma reserva em seu nome a operao no ser concluda, e uma exceo ser disparada, possivelmente causando a exibio de uma mensagem de erro.
Opo 3
Fazer a ao de destruio do Cliente se propagar para as reservas em seu nome. Neste caso, deveria ser adicionada ao contrato uma ps-condio do tipo: todas as reservas associadas ao cliente foram excludas .
45
46
Em OCL
Classe Videolocadora consulta: consultaCliente(nomeC:String) pr: Existe um Cliente com nome = nomeC. retorno: Retorna o en ereco e o telefone do Cliente
v
47
48
Em OCL
Cl
x y y
l
x
r
x
49
50
Exemplo
Cl
e
l
d
r
f
Cl
r
h
No existe clienteCorrente ps: Cliente com nome = nomeC foi associado Videolocadora como clienteCorrente
i
53
54
Classe Videolocadora operao: emprestaFita(codigoF:String) pr: Existe um clienteCorrente Existe uma Fita com co igo = co igoF
m m
ps:
Se no existia um emprestimoA erto para o clienteCorrente, ento foi criado um Emprestimo com ata igual a data de hoje, valorTotal igual a 0,00, e associado como emprestimoA erto ao clienteCorrente.
n
pr: retorno: ara cada Fita que no esteja associada por apareceEm: a) co igo
l k
Foi criado um Esta oDeItemDeEmprestimo EmAn amento e associado ao ItemDeEmprestimo. O Esta oDeItemDeEmprestimo EmAn amento foi associado
m m
O prazo do ItemDeEmprestimo foi alterado para o prazo do TipoDeFilme do Filme da Fita. O valor do ItemDeEmprestimo foi alterado para o valor do TipoDeFilme do Filme da Fita. O valorTotal do emprestimoA erto foi alterado para o valorTotal anterior somado ao valor do ItemDeEmprestimo.
n
Fita.
55
56
Cl
r s s t u
i
v t w
l
w x r v w
r
r
pr :
y
Existe um emprestimoAberto para um clienteCorrente retorno: Para cada ItemDeEmprestimo do emprestimoAberto: a) b) titulo do Filme da Fita do EstadoDoItemDeEmprestimo; prazo.
z
57
58
Classe Videolocadora operao: finalizaEmprestimo() pr: Existe um emprestimoA erto para um clienteCorrente. O emprestimoA erto possui pelo menos um ItemDeEmprestimo.
{ {
ps: Foi destruda a associao com emprestimoA erto. Foi destruda a associao com clienteCorrente.
{
59
10