© 2001 jaelson castromodelando comportamento1 modelando comportamento
TRANSCRIPT
© 2001 Jaelson Castro Modelando Comportamento1
Modelando Comportamento
© 2003 Jaelson Castro Modelando Comportamento 2
Objetivos Explicar por que nós modelamos
comportamento? Introduzir Diagramas de Estado
Statechart. Introduzir Diagramas de Atividades. Explicar o relacionamento do
Diagrama de Classes, Diagrama de Seqüência, Diagrama de Colaboração.
© 2003 Jaelson Castro Modelando Comportamento 3
Por que Modelar Comportamento?
Um Diagrama de Classes é uma visão estática das classes de objetos e suas associações.
Um modelo de comportamento é usado para entender os aspectos do sistema como: evolução, resposta aos estímulos externos, variação temporal.
© 2003 Jaelson Castro Modelando Comportamento 4
Por que Modelar Comportamento?
Comportamento é o aspecto do sistema que descreve as seqüências de operações que ocorrem em resposta aos estímulos externos.
Importante para descrever a seqüência de processamento (ex. Sistemas interativos, tempo real, etc)
© 2003 Jaelson Castro Modelando Comportamento 5
Statecharts Estes são diagramas de transição de estados
(com algumas adições) que descrevem o comportamento de alguns objetos (uma pessoa, um estudante,…)
Transições representam ações que ocorrem rapidamente e não são interropidas.
Estados representam atividades com uma duração mais longa. O que estabelece “rapidamente” e “mais longa” depende da aplicação.
© 2003 Jaelson Castro Modelando Comportamento 6
Diagrama de Estado para Ordem de Pagamento
/get order CheckingDo/check items
DispatchingDo/package items
[some item notIn stock]
Waiting
Item received[some item not
In stock]
Item received[all items in stock]
[all items in stock]
Delivered
/deliver package
start
© 2003 Jaelson Castro Modelando Comportamento 7
Statecharts : Eventos & Estados
Um evento acontece no mundo e o sistema precisa saber disso.
Em resposta ao evento, objetos no sistema podem receber uma mensagem para realizar uma ação (cada ação é uma operação).
Após o envio da mensagem, o objeto normalmente continua no mesmo estado até a outra mensagem chegar.
© 2003 Jaelson Castro Modelando Comportamento 8
Tempo de Vida do Curso
Initialization
Open Closed
Canceled
offerNewCourse/set count=0^create(CourseRoster)
[count=10] addStudent[count<10]
cancelcancel
/delete(CourseRoster)
quarterStarted
[Lochovsky98]
© 2003 Jaelson Castro Modelando Comportamento 9
Estados Um estado representa um período de tempo
durante a vida do objeto quando ele satisfaz condições, realiza ações ou espera por algum evento.
Em geral um estado pode ser caracterizado por um predicado lógico, ex.: “operacional”.
Um predicado pode ser definido em termos de: O(s) valor(es) de um ou mais atributos da classe
Ex. O endereço de uma pessoa A existência de uma ligação com outro objeto
© 2003 Jaelson Castro Modelando Comportamento 10
Diagramas Statechart Um diagrama para cada classe com
comportamento não trivial. Diagrama Statechart mostra:
Todos os eventos que afetam a classe; Todos os seus possíveis estados.
Usado para: Verificar consistência com os Diagramas de
Seqüência; Identificar gatilhos/parâmetros/restrições de
operações.
© 2003 Jaelson Castro Modelando Comportamento 11
Diagramas Statechart - NotaçãoNotação generalizada
StartState 1
End
event(parameters)[condition]/action
State 2
© 2003 Jaelson Castro Modelando Comportamento 12
Diagramas Statechart - Transições
Ações são processos que ocorrem rapidamente e não são interrompidos
Condições (Guarda) retornam um valor lógico “True/False” - a transição ocorre quando “True”
Quando não existe Evento no rótulo a transição ocorre assim que as atividades do estado corrente são concluídas
© 2003 Jaelson Castro Modelando Comportamento 13
Atividades do/stateDiagramName(parameterList) --
“chama” outro diagrama de estado entry/action -- executa a ação quando entra
no estado exit/action -- executa a ação quando sai do
estado
© 2003 Jaelson Castro Modelando Comportamento 14
Atividades
State 1
entry: actiondo: activityexit: action
© 2003 Jaelson Castro Modelando Comportamento 15
addStudentt count=0^CourseRoster.Create()
[count=10]
addStudent [count<10]
cancel
cancel
^CourseRoster.Delete()quarterStarted
Closeddo / FinalizeCourse
Cancelled
entry / RegisterStudentexit / ^CourseRoster.AddStudent(student)
Open
Initializationdo / Initialize
A Evolução de um Curso
© 2003 Jaelson Castro Modelando Comportamento 16
Diagramas de transição de estados podem ser de difícil leitura (quando contém mais de uma dúzia de estados).
Diagramas Statecharts em UML, estados podem conter estados aninhados. Tais composições servem para refinamento de estados.
Estados aninhados (Super Estados)
© 2003 Jaelson Castro Modelando Comportamento 17
Estados aninhados (Super Estados)
Neutral
Forward
Reverse
Transmission
select R
select N
select Fselect N
© 2003 Jaelson Castro Modelando Comportamento 18
Neutral Reverse
Transmission
select R
select N
select Fselect N
SecondFirst Third
Forwardupshift upshift
downshiftdownshift
stop
Estados aninhados (Super Estados)
© 2003 Jaelson Castro Modelando Comportamento 19
Diagrama de Classe: Processamento de um pedido
Order
dateReceivedisPrepaidnumber:Stringprice:Moneycheck itemclose()dispatch()initiate deliveryitem
Customer
addressnamecreditRating():Sring
CorporateCustomer
contactNamecreditLimitcreditRatingbillForMonth(Integer)remind()
PersonalCustomer
creditCard#
{creditRating() =="poor"}
OrderLine
isSatisfied:Booleanprice:Moneyquantity:Integer
Product
Employee
1*
1* 0..1
*
1
*line items
© 2003 Jaelson Castro Modelando Comportamento 20
Super Transição Transições podem ocorrer a partir de
vários estados para um único estado ex. uma ordem de pagamento pode ser
cancelada em algum ponto antes de ser liberada.
Isto pode ser desenhado com várias transições ou através da criação de um super estado.
© 2003 Jaelson Castro Modelando Comportamento 21
Adicione um novo estado e separe as transições para mostrar que um pedido pode ser cancelado antes da sua entrega.
Order
Checking
do: check item
Start
get next item[Not all items checked]
Dispatching
do: initiate delivery
[All items checked && all items available]
Waiting
Item Received[some items not in stock]
[All items checked && some items not in stock]
Delivered
/get first item
Item Received[all items available]
Delivered
Diagrama de Statechart do pedido
© 2003 Jaelson Castro Modelando Comportamento 22
Diagrama de Statechart do pedido: Super Estado & Super Transição
Order
Checking
do: check item
Start
get next item[Not all items checked]
Dispatching
do: initiate delivery
[All items checked && all items available]
Waiting
Item Received[some items not in stock]
[All items checked && some items not in stock]
/get first item
Item Received[all items available]
Active
Cancelled Delivered
Superstate name
cancellation
© 2003 Jaelson Castro Modelando Comportamento 23
Estados Concorrentes Usado quando um dado objeto tem um
conjunto de comportamentos independentes ex. Uma ordem de pagamento pode
estar num estado “sendo verificada” ou “sendo autorizada”
© 2003 Jaelson Castro Modelando Comportamento 24
Cancelled
Delivered
Rejected
Checking
Waiting
Dispatching
Authorizing Authorized
Estados Concorrentes: Pedido
autorização
verificação
© 2003 Jaelson Castro Modelando Comportamento 25
Transições Complexas Transição para a fronteira do super estado
transição para o estado inicial do super estado.
Também podem existir transições diretas para um estado específico (como programa “gotos”).
Transição a partir da fronteira de um super estado transição a partir do estado final de um super estado
© 2003 Jaelson Castro Modelando Comportamento 26
Statecharts & Relacionamento para outros Diagramas Eventos no diagrama de statechart devem
aparecer como um mensagem de entrada para o objeto apropriado num diagrama de seqüência e colaboração.
Um diagrama de statechart é preparado para todas as classes de objeto do Diagrama de Classes com comportamento complexo.
Todo evento deve corresponder a uma operação na classe apropriada.
© 2003 Jaelson Castro Modelando Comportamento 27
Statecharts & Relacionamento para outros Diagramas Toda ação deve corresponder à execução de
uma operação na classe apropriada. Entry/Action, Exit/Action e Do/Activity
num Estado, normalmente será equivalente a operações no Diagrama de Classes.
Toda mensagem de saída enviada a partir de um statechart deve corresponder a uma operação em outra classe.
© 2003 Jaelson Castro Modelando Comportamento 28
Diagramas de Atividade Diagramas de atividade descreve
as atividades que envolvem concorrência e sincronização.
Variação de Statecharts que focaliza num fluxo de atividades que são orientadas pelo processamento interno de um objeto.
© 2003 Jaelson Castro Modelando Comportamento 29
Diagramas de Atividade Pode ser usado
Para modelar uma tarefa humana (parte da modelagem do negócio).
Para descrever uma função do sistema (representada por um Caso de Uso).
Na especificação de operações, (descreve a lógica de uma operação).
© 2003 Jaelson Castro Modelando Comportamento 30
Outro Exemplo: Processamento de um Pedido O Caso de Uso do processamento do pedido:
Quando recebemos um pedido, checamos cada item para vermos se temos no estoque. Se temos, nós atribuímos os itens ao pedido. Se com essa ordem os níveis de estoque do produto atingem um valor mínimo então será necessário fazer um pedido de compra de produtos para o estoque.Enquanto fazemos isso, nós checamos se o pedido foi pago. Se o pagamento foi feito e se tivermos os itens no estoque, o pedido é despachado. Se o pagamento foi feito e nós não tivermos os itens no estoque, deixamos o pedido em espera. Se o pagamento não foi feito, o pedido é cancelado.
© 2003 Jaelson Castro Modelando Comportamento 31
Diagrama de Atividade do Processamento de um Pedido
ReceiveOrder
ReorderItem
DispatchOrder
CheckLineItem
Assign toOrder
AuthorizePayment
CancelOrder
for each lineitem on order*
[in stock]
[need toreorder]
[stock assigned toall line items andpayment authorized]
[succeeded]
[failed]
© 2003 Jaelson Castro Modelando Comportamento 32
Diagramas de Atividade Pontos de decisão:
Fim: podem existir transições num diagrama de atividade com nenhum estado destino; isto pode significar que:
Nem todo processamento deve ter sido especificado, Ou, que outro diagrama de atividade assumirá o controle.
Chargecustomer’s
accountCalculatetotal cost
Getauthorization
[cost < $50]
[cost ≥ $50]
© 2003 Jaelson Castro Modelando Comportamento 33
Raias Um diagrama de atividade pode
ser dividido em raias. Cada raia:
Representa um foco de responsabilidae na atividade
Pode manipular distintas operações de um ou mais objetos.
© 2003 Jaelson Castro Modelando Comportamento 34
Checking
Waiting
Dispatching
Authorizing Authorized
Synchronization barGet Order
[cancelled]
swimlanePurchase
Order Dept.
FinanceDept.
[rejected]
[accepted]
Raias
© 2003 Jaelson Castro Modelando Comportamento 35
Mais Swimlanes
ReceiveOrder
ReorderItem
DispatchOrder
CheckLineItem
Assign toOrder
for each lineitem on order*
[in stock]
[need toreorder]
[stock assigned toall line items andpayment authorized]
AuthorizePayment
CancelOrder
[succeeded]
[failed]
ReceiveSupply
ChooseOutstandingOrder Items
AssignGoods to
Order
for each chosenorder item *
[all outstandingorder items filled]
AddRemainder
to Stock
OrderProcessing
Finance StockManager
© 2003 Jaelson Castro Modelando Comportamento 36
Leituras Adicionais [Booch99] Booch, G. et all. The Unified
Modeling Language User Guide. Chapters 19, 20, 21, 24. Addison-Wesley.
[Fowler00] Fowler, M. et all. UML Distilled: A Brief Guide to the Standard Object Modelling Language. Chapters 8, 9. Addison-Wesley.