Linguagens de Modelagem Equipe do Curso de ES para SMA {lucena, furtado, choren, viviane}@inf.puc-rio.br MAS-ML MAS-ML • Estende o meta-modelo de UML com base no framework conceitual TAO • Meta-modelo MAS-ML estende o meta-modelo de UML – Novos estereótipos – Novas meta-classes Laboratório de Engenharia de Software (LES) – PUC-Rio Camada de meta-meta-modelo MOF meta-meta-modelo ER meta-meta-modelo instanciação TAO meta-modelo UML meta-modelo Camada de meta-modelo unificação MAS-ML meta-modelo Camada de modelo de domínio Camada de instância Laboratório de Engenharia de Software (LES) – PUC-Rio MAS-ML modelos Meta-modelo MAS-ML Element 1..* Features 1..* * Classifier AgentMessage 1 * sender receiver Structural Feature Belief Behavioral Feature Class Goal AgentClass OrganizationClass EnvironmentClass ObjectRoleClass AgentRoleClass Active EnvironmentClass Passive EnvironmentClass Property Axiom Right Operation 0..1 0..1 Duty AgentAction 1..* 0..1 * AgentPlan AgentProtocol * 0..1 Legenda precondition precondition * * * Constraint * Laboratório de Engenharia de Software (LES) – PUC-Rio postcondition postcondition Meta-classes do meta-model UML Novas meta-classes Novos estereótipos Meta-modelo MAS-ML AgentClass 0..* play 1 1..* AgentRoleClass 0..* inhabit 0..* play in 1..* 1 play define 1 EnvironmentClass 1..* 1..* inhabit 1 sub-org 1 OrganizationClass 1 sub- 0..* org 1 play in inhabit 1 define 0..* ObjectRoleClass 0..* 0..* play in play 0..* 0..* 1 Class Legenda Meta-classes do meta-modelo UML Novas meta-classes Laboratório de Engenharia de Software (LES) – PUC-Rio Meta-modelo MAS-ML Element 1..* Relationship Association Dependency Ownership Classifier Directed Relationship Inhabit Control Play Generalization Legenda Meta-classes do meta-modelo UML Novas meta-classes Laboratório de Engenharia de Software (LES) – PUC-Rio MAS-ML • MAS-ML modela os aspectos estruturais e dinâmicos descritos no TAO – Aspectos estruturais: entidades, propriedades e relacionamentos – Aspectos dinâmicos: interação entre as entidades e execuções internas • Diagramas estáticos: classes, organizações e papéis • Diagramas dinâmicos: seqüência e atividades Laboratório de Engenharia de Software (LES) – PUC-Rio Diagramas Estáticos Diagrama de Classe de UML • Representa as classes e os relacionamentos entre as classes Item Order User Book Nome_da_classe Imported Books Second-hand Books Laboratório de Engenharia de Software (LES) – PUC-Rio atributo1 atributo2 metodo1 metodo2 metodo3 ... Diagramas para SMA • Como representar agentes, organizações, papéis e ambientes? • Como representar relacionamos específicos de SMA, como inhabit, control e play? • Novo elemento de diagrama para representar novas entidades e relacionamentos Laboratório de Engenharia de Software (LES) – PUC-Rio Elementos dos diagramas Class AgentClass I AgentRoleClass ObjectRoleClass Entidades EnvironmentClass EnvironmentClass Relacionamento Inhabit Relacionamento Control AgentRoleClass Laboratório de Engenharia de Software (LES) – PUC-Rio AgentRoleClass OrganizationClass Elementos dos diagramas Relacionamento Ownership II OrganizationClass OrganizationClass Relacionamento Play Laboratório de Engenharia de Software (LES) – PUC-Rio AgentRoleClass AgentRoleClass AgentClass Agente AgentClass <<goal>> type : name [= default-value] plan-list <<belief>> type : name [= default-value] {precondition-list} action {postcondition-list} plan {action-list} goal-name Laboratório de Engenharia de Software (LES) – PUC-Rio Características estruturais Características comportamentais Organização OrganizationClass <<goal>> type : name [= default-value] plan-list <<belief>> type : name [= default-value] <<axiom>> type : name [= default-value] {precondition-list} action {postcondition-list} plan {action-list} goal-name Laboratório de Engenharia de Software (LES) – PUC-Rio Características estruturais Características comportamentais Papel de Agente AgentRoleClass <<goal>> type : name [= default-value] <<belief>> type : name [= default-value] <<duty>> action <<right>> action protocol-name { messsage: {label: value, content: value, sender : value, receiver: value} ...} Laboratório de Engenharia de Software (LES) – PUC-Rio Características estruturais Características comportamentais Papel de Objeto ObjectRoleClass [visibility] type : name [= default-value] [visibility] name (parameter-list) : returned-value Laboratório de Engenharia de Software (LES) – PUC-Rio Características estruturais Características comportamentais Ambiente EnvironmentClass or EnvironmentClass Características estruturais Características comportamentais Entidades que habitam o ambiente Laboratório de Engenharia de Software (LES) – PUC-Rio Diagrama de Classes • Objetivos: representar os relacionamentos entre classes e outras entidades do SMA e representar os relacionamentos entre agentes, ambientes e organizações. • Classes usadas neste diagrama: – agent class, organization class, environment class e outras definidas por UML. • Relacionamentos usados neste diagrama: – Aqueles já definidos por UML; – inhabit – usado entre classes e ambientes; – association – usado entre agente e classes, entre organizações e classes, e entre ambientes; – specialization – usado entre agentes, entre organizações e entre ambientes. Laboratório de Engenharia de Software (LES) – PUC-Rio Diagrama de Classes Virtual Marketplace Organization A AgentA Item association Book Organization A AgentB specialization Imported Books Second-hand Books inhabit Legend: Object / Environment Organization Agent Laboratório de Engenharia de Software (LES) – PUC-Rio Diagrama de Organizações • Objetivo: modelar as organizações e os relacionamentos entre as organizações e outras entidades do SMA. • Cada diagrama de organização modela uma organização • Classes usadas neste diagrama: – organization class, agent class, agent role class, object role class, class e environment class. • Relacionamentos usados neste diagrama: – ownership – usado entre organizações e papéis que a organização define; – play – usado entre agentes e papéis de agentes, entre suborganizações e papéis de agentes, e entre classes e papéis de objeto; – inhabit – usado entre ambiente e organizações e entre ambiente e agentes. Laboratório de Engenharia de Software (LES) – PUC-Rio Diagrama de Organizações Virtual Marketplace inhabit play User Agent Store Agent Seller Buyer <<main-organization>> General Store Market of Special Goods Market of Used Goods Book Imported Bookstore Second-hand Bookstore Offer Desire Legend: Object / Environment Object role Agent role Laboratório de Engenharia de SoftwareAgent (LES) – PUC-Rio Organization ownership Diagrama de Papéis • Objetivo: modelar os papéis e os relacionamentos entre os papéis • Classes usadas neste diagrama: – agent role class, object role class e class • Relacionamentos usados neste diagrama: – control – usado entre papéis de agente; – dependency – usado entre papéis de objeto, entre papel de agente e papel de objeto e entre papéis de agente; – association – usado entre papéis de objeto, entre papel de agente e papel de objeto, entre papéis de agente e entre qualquer papel e uma classe; – aggregation – usado entre papéis de objeto e entre papéis de agente; – specialization – usado entre papéis de objeto e entre papéis de agente. Laboratório de Engenharia de Software (LES) – PUC-Rio Diagrama de Papéis Offer Desire association aggregation Buyer Seller Seller of Second-hand Books Buyer of Second-hand Books Offer of Second-hand Books Desire of Second-hand Books Market of Special Goods Buyer of Imported Books Seller of Imported Books Desire of Imported Books Offer of Imported Books control Market of Used Goods Seller specialization Legend: Object role Seller of Imported Books Agent role Laboratório de Engenharia de Software (LES) – PUC-Rio Diagramas Dinâmicos Diagrama de Seqüência de UML • Representa a interação entre os objetos e as execuções dos métodos j os e Floricultor centra l CentralFloricultura fl oricul torP etrop o Floricultor j oa o:Denti s ta 1: enviarFlores("Rosas","Maria","Petropolis","Rua x, 9"):boolean 1.1: atendeCidade("Petropolis"):boolean 1.2:[se nao na cid...] getFloricultorNaCidade("Petropolis"):Floricultor 1.3: aceitaEncomenda("Rosas","Rua X,9"):boolean Laboratório de Engenharia de Software (LES) – PUC-Rio Diagrama de Seqüência de MAS-ML • Objetivo: representar as interações entre as instâncias do SMA e representar as ações internas destas instâncias. • Representar interações: troca de mensagens entre entidades – Modelar troca de mensagem: • Redefinir mensagens • Criar novos estereótipos associados à mensagens – Modelar protocolos • Representar ações internas (intra-ações): – Modelar planos e ações Laboratório de Engenharia de Software (LES) – PUC-Rio Elementos dos diagramas • Novos pathnames e novos ícones Objeto obj/role/org/env : Class/ObjectRoleClass/OrganizationClass/EnvironmentClass Agente agent/role/org/env : AgentClass/AgentRoleClass/OrganizationClass/EnvironmentClass Organização Papel org/role/org/env : OrganizationClass/AgentRoleClass/OrganizationClass/EnvironmentClass : RoleClass Active entity Ambiente env : EnvironmentClass Laboratório de Engenharia de Software (LES) – PUC-Rio Passive entity env : EnvironmentClass Redefinindo mensagens • UML: mensagens são chamada de métodos • SMA: mensagens não são diretamente mapeadas para uma execução interna do agente sender sender method_name () message_label (content_description) Laboratório de Engenharia de Software (LES) – PUC-Rio receiver receiver Estereótipos de mensagens • Como representar a criação de entidades de SMA? • UML: uso do estereotipo <<create>> – Estender para representar a criação de entidades de SMA • Como representar a destruição de entidades de SMA? • UML: uso do estereotipo <<destroy>> – Estender para representar a destruição de entidades de SMA Laboratório de Engenharia de Software (LES) – PUC-Rio Criando e destruindo entidades Criando uma organização Anne/FruitBuyer : UserAgent/Buyer <<create>> FruitStore/FruitWholesale: Store/Wholesale .. . .. . Destruindo uma organização - I Anne/FruitBuyer : UserAgent/Buyer .. . FruitStore/FruitWholesale: Store/Wholesale ... <<destroy>> .. . Destruindo uma organização - II Anne/FruitBuyer : UserAgent/Buyer .. . <<destroy>> .. . Laboratório de Engenharia de Software (LES) – PUC-Rio FruitStore : Store ... Estereótipos de mensagens • Como representar a relação entre papéis e entidades que desempenham papéis? Entidade se comprometendo com um novo papel <<role_cancel>> Entidade cancelando papel <<role_activate>> Entidade ativando papel <<role_deactivate>> Entidade desativando papel <<role_change>> Entidade mudando de papel • <<role_commitment>> • • • • Laboratório de Engenharia de Software (LES) – PUC-Rio Criando papel Bob/FruitBuyer : UserAgent/Buyer <<role_commitment>> .. . Criando um papel de agente Bob/ClothesBuyer : UserAgent/Buyer .. . Bob/FruitBuyer : UserAgent/Buyer <<role_commitment>> .. . Laboratório de Engenharia de Software (LES) – PUC-Rio Criando um papel de objeto Apple/DesirerFruit : Item/Desirer .. . Cancelando papel Cancelando papel de agente Bob/FruitBuyer : UserAgent/Buyer Bob/ClothesBuyer : UserAgent/Buyer <<role_cancel>> .. . Cancelando papel de agente Bob/ClothesBuyer : UserAgent/Buyer <<role_cancel>> Cancelando papel de objeto Bob/FruitBuyer : UserAgent/Buyer <<role_cancel>> .. . Laboratório de Engenharia de Software (LES) – PUC-Rio Apple/DesirerFruit : Item/Desirer Desativando e ativando papel Desativar papel Bob/FruitBuyer : UserAgent/Buyer Bob/ClothesBuyer : UserAgent/Buyer <<role_deactivate>> .. . Bob/ClothesBuyer : UserAgent/Buyer <<role_deactivate>> Ativar papel Bob/FruitBuyer : UserAgent/Buyer Bob/ClothesBuyer : UserAgent/Buyer <<role_activate>> .. . Laboratório de Engenharia de Software (LES) – PUC-Rio .. . Cancelando papel e criando novo papel Mudando de papel Bob/FruitBuyer : UserAgent/Buyer <<role_change>> Bob/ClothesBuyer : UserAgent/Buyer .. . Cancelando papel e ativando outro papel Bob/FruitBuyer : UserAgent/Buyer Bob/ClothesBuyer : UserAgent/Buyer <<role_change>> .. . Desativando papel e criando outro papel Bob/FruitBuyer : UserAgent/Buyer <<role_change>> Bob/ClothesBuyer : UserAgent/Buyer .. . Desativando papel e reativando outro papel Bob/FruitBuyer : UserAgent/Buyer Bob/ClothesBuyer : UserAgent/Buyer <<role_change>> Laboratório de Engenharia de Software (LES) – PUC-Rio .. . Modelando protocolos • Um protocolo define um conjunto de mensagens que entidades podem enviar e receber enquanto desempenhando papéis : Seller : Buyer Request (ItemDescription) papel Proposal (ItemDescription) AnswerProposal (RejectItemDescription) else AnswerProposal (AcceptItemDescription) Inform (Bill) Inform (Payment) mensagem Laboratório de Engenharia de Software (LES) – PUC-Rio Modelando planos e ações • Execução interna dos agentes, organizações e ambientes ativos são definidas pela execução dos planos e ações. : GeneralStore Creating_seller : UserAgent/Buyer if (message_label = request) Execution of a Plan Execution of an Action Execution of an Action create_seller <<create>> : UserAgent/Seller inform_buyer_of_seller inform (seller_id) else Laboratório de Engenharia de Software (LES) – PUC-Rio Place-A : VirutalMarketplace plano Bob/buyerOfBooks/Bookfinder/Place-A : UserAgent/Buyer/ GeneralStore/VirtualMarketplace Entering organization BrandNewBookstore/marketOfUsedBooks/Bookfinder/Place-A : Second-handBookstore/MarketOfUsedGoods/ GeneralStore/VirtualMarketplace Search for organization getOrganizations() organização Vector chamada de método Check_organization_goals Request (OrgGoals) Managing entrance Get_organization_goals Inform (OrgGoals) Check_organization_roles Request (OrgRoles) ambiente agente Get_organization_roles Inform (OrgRoles) Select_role_to_play <<role_commitment>> Bob/buyerOfSecond-handBooks/Bookfinder/Place-A : UserAgent/BuyerOfSecond-handBooks/ GeneralStore/VirtualMarketplace Inform (RoleToPlay) ação Register_itself_in_organization Inform (Buyer_of_second_hand_books) estereótipo de mensagem Search_for_announcement Request (Announcement) ... Laboratório de Engenharia de Software (LES) – PUC-Rio Entering organization Diagrama de Atividades de UML • Objetivo: modelar o fluxo das atividades de um sistema • O foco está na seqüência de atividades e não na interação entre os objetos • Atividades: execução não atômica composta de ações • Ação: execução atômica Laboratório de Engenharia de Software (LES) – PUC-Rio Diagrama de Atividades de MAS-ML • Objetivo: representar a modelagem de planos e ações de um agente • O foco está na modelagem de um agente e não na interação entre os agentes • Atividades -> Planos de agentes • Ações -> Ações de agentes Laboratório de Engenharia de Software (LES) – PUC-Rio Modelando planos Evaluation of proposal of reviewing papers ... ... Invoking plans: planos que são invocados por outros planos/ações Distribution of papers to reviewers Distribution of papers to reviewers ... Laboratório de Engenharia de Software (LES) – PUC-Rio Modelando ações • Identificando uma ação pelo seu nome ou utilizando uma linguagem de descrição de ação AddNumbers http://www.les.inf.puc-rio.br/webservices/2005/AddNumbers Ação é vista como um serviço Ação pode ser descrita utilizandose, por exemplo, WSDL ou Identificando o endereço de onde a implementação da ação se encontra Laboratório de Engenharia de Software (LES) – PUC-Rio <?xml version="1.0" encoding="UTF-8"?> <definitions name="AddNumbers" ...> ... <message name="parameterValues"> <part name="firstParameter" type="xs:int"/> <part name="secondParameter" type="xs:int"/> </message> <message name="addResponse"> <part name="value" type="xs:int"/> </message> <portType name="addPortType"> <operation name="add"> <input message="parameterValues"/> <output message="addResponse"/> </operation> </portType> ... </definitions> Planos e Metas • Todo plano está associado a uma meta Evaluation of proposal of reviewing papers <<goal>> Evaluate proposal ... Laboratório de Engenharia de Software (LES) – PUC-Rio ... Condição de guarda • Qualquer informação do estado mental do agente pode ser verificada na condição de guarda ... <<datastore>> Proposal papers Select a paper from the set of proposal papers [deadline not compatible with dates in belief agenda] <<message>> Reject Proposal Laboratório de Engenharia de Software (LES) – PUC-Rio ... Modelando Mensagens i. Identificando a ato de fala ii. Identificando o protocolo iii. Descrevendo a mensagem utilizando ACL (i) <<message>> Reject Proposal (ii) <<message>> protocol: paperProposalDistribution Reject Proposal (iii) <<message>> Reject Proposal (inform :receiver (agent-identifier: chair) :content “all papers rejected” :protocol paperProposalDistribution ) Laboratório de Engenharia de Software (LES) – PUC-Rio Papéis • Associando papéis a execução de planos <<goal>> Evaluate proposal <<role>> Reviewer Evaluation of proposal of reviewing papers ... Laboratório de Engenharia de Software (LES) – PUC-Rio ... Papéis • Usando partições para identificar papéis • Modelando a dinâmica de papéis Distribution of papers to reviewers Chair <<belief>> <<datastore>> reviewers Allocate papers to reviewers <<belief>> <<datastore>> papers ... Deadline Reviewer <<datastore>> reviewers, papers Review papers Laboratório de Engenharia de Software (LES) – PUC-Rio <<role_commitment>> Allocate papers without reviewers to agent Papéis • Modelando a dinâmica de papéis (mudança de papel) (i) ... <<role_cancel>> Action I (Role X) <<role_commitment>> Action J (Role Y) ... (ii) ... <<role_cancel>> Action I (Role X) <<role_activate>> Action J (Role Y) ... (iii) ... <<role_deactivate>> Action I (Role X) <<role_commitment>> Action J (Role Y) ... (iv) ... <<role_deactivate>> Action I (Role X) <<role_activate>> Action J (Role Y) ... Laboratório de Engenharia de Software (LES) – PUC-Rio Papéis e ações • Quando for possível afirmar que um plano será executado no contexto de um determinado papel... • Identificar as obrigações e os direitos dos agentes (informação disponível na definição do papel) <<duty>> Allocate papers to reviewers (Chair) Laboratório de Engenharia de Software (LES) – PUC-Rio <<right>> Reject paper to review (Reviewer) Organizações • Usando partições para identificar organizações Distribution of papers to reviewers Chair Allocate papers to reviewers <<belief>> <<datastore>> papers ... Deadline <<datastore>> reviewers, papers Reviewer <<organization>> Workshop <<belief>> <<datastore>> reviewers Review papers Laboratório de Engenharia de Software (LES) – PUC-Rio <<role_commitment>> Allocate papers without reviewers to agent Organizações • Mudança de organização Evaluation of proposal of reviewing papers <<organization>> Workshop Reviwer <<organization>> Symposium Program Committee ... <<datastore>> Proposal papers Select a paper from the set of proposal papers [deadline not compatible with dates in belief agenda] <<message>> Reject Proposal <<role_cancel>> Leave event Laboratório de Engenharia de Software (LES) – PUC-Rio <<role_commitment>> Enter event ... ... Ambiente • Identificado ambiente • Modelando a mudança de ambiente <<environment>> Env1 <<organization>> A Role Z ... <<role_deactive>> Action M Laboratório de Engenharia de Software (LES) – PUC-Rio <<environment>> Env2 <<organization>> B Role W <<role_commitment>> Action N ...