ExpertCommittee Documentação Maíra Gatti Ricardo Gralhoz 2005/1.
Transcript of ExpertCommittee Documentação Maíra Gatti Ricardo Gralhoz 2005/1.
ExpertCommittee
Documentação
Maíra GattiRicardo Gralhoz
2005/1
Laboratório de Engenharia de Software – PUC-Rio 2
Sumário
1- Modelagem em MAS-ML
2- Diagramas da Implementação
3- Mapeamento das abstrações
4–Aplicação desenvolvida
5-Roteiro para instalação
6- Conclusão sobre Implementação usando JADE x Modelagem MAS-ML
Laboratório de Engenharia de Software – PUC-Rio 3
1- Modelagem em MAS-ML
Elementos Estruturais
–Ambiente
–Organização
–Objetos
–Agente
–Papéis de Agente
Diagramas Estáticos
–Diagramas de Organização
–Diagramas de Papéis
–Diagramas de Classes
Diagramas Dinâmicos
–Diagramas de Seqüência
–Diagramas de Atividades
Críticas sobre a Linguagem de Modelagem
Laboratório de Engenharia de Software – PUC-Rio 4
ExpertComitteEnvironment
ExpertComitteeEnvironment
private Researcher : researcherprivate Collection : Papersprivate Agent : UserAgentprivate Agent: AcademicEventOrganization
public get_Papers : Collection public set_Papers( papers Collection) : voidpublic get_Researcher : Object public set_Researcher( researcher Researcher) : voidpublic get_User : UserAgent public set_User( UserAgent user) : voidpublic check_User_Can_Come_In( user : Agent): booleanpublic check_User_Can_Leave( user : Agent): boolean
Laboratório de Engenharia de Software – PUC-Rio 5
AcademicEventOrganization<main-organization>
<<goal>> boolean : management_of_submissions_and_revisions = true{ <<sub-goal>> boolean : define_members_of_organization = true defining_members <<sub-goal>> boolean : define_deadlines_of_event = true defining_deadlines} <<belief>> Date : deadline_of_paper_submission<<belief>> Date : deadline_of_answering_revision_proposal<<belief>> Date : deadline_of_sending_papers_for_revision<<belief>> Date : deadline_of_sending_revisions_to_chair<<belief>> Date : deadline_of_sending_camera_ready<<belief>> Chair: chair = null<<belief>> Coordinator: coordinator = null<<belief>> Vector: members_CP = null <<belief>> Vector: reviewers = null<<belief>> Vector: submitted_papers = null<<axiom>> boolean: send_information_about_revisions = true<<axiom>> boolean: resolve_conflict_when_paper_is_strongly_accepted_and_rejected = true<<axiom>> boolean: minimum_of_three_reviews_by_paper = true<<axiom>> boolean: maximum_of_three_papers_by_reviewer = true<<axiom>> boolean: reviewer_cannot_review_paper_from_his_instituton = true<<axiom>> boolean: coordinator_select_1.5_number_of_requested_reviewers = true
{ } define_reviewers { }{ } define_chair{ }{ } define_coordinator { }{ } define_members_CP { }{ } define_deadlines{ }defining_deadlines { define_deadlines } define_deadlines_of_eventdefining_members { define_members_CP, define_reviewers, define_chair, define_coordinator } define_members_of_organization
Laboratório de Engenharia de Software – PUC-Rio 6
Objetos
Paper
Title : StringAbstract: StringAuthor : ResearcherInstitution : StringArea : StringFile : StringFileCameraReady : String
getPaper() : PapersetPaper(Paper paper)...
Revision
getResult() : StringsetResult(String result)getFile() : StringsetFile(String file)
result : StringFile : String
Vote
getVote() : VotesetVote(Paper paper)
vote : String
Researcher
Name : StringInstitution : StringInterestArea : String
getResearcher() : ResearchersetResearcher(Researcher researcher)getNome() : StringgetInstitution() : StringgetInterestArea() : String
Agenda
getAgenda() : AgendasetAgenda (Date date, String description)
date : DateDescription : String
Laboratório de Engenharia de Software – PUC-Rio 7
Modeling the Agents and Agent Roles
Coordinator UserAgent
Reviewer
Chair
Author
MemberCP
UserAgent/Author
UserAgent/MemberCP
UserAgent/Coordinator
UserAgent/Chair
UserAgent/Reviewer
Laboratório de Engenharia de Software – PUC-Rio 8
Modeling the Agents and Agent Roles
UserAgent
....<<belief>> Paper : paper = null
….
Laboratório de Engenharia de Software – PUC-Rio 9
<<goal>> boolean : submit_paper = true<<goal>> boolean : publish_paper = true
<<right>> submit_paper<<duty>> {if paper was accepted} send_camera_ready
PublicationPaper { message: {label: Proposal, content: Paper, sender: Author, receiver: Chair} message: {label: AcceptProposal, content: PaperAndRevisions, sender: Chair, receiver: Author }, message: {label: RejectProposal, content: PaperAndRevisions, sender: Chair, receiver: Author }, message: {label: Inform, content: CameraReady, sender: Author, receiver: Chair}}
Author
Action that must be executed if the
condition is satisfied
Laboratório de Engenharia de Software – PUC-Rio 10
UserAgent/Author
<<goal>> boolean : submit_paper = true submitting_paper<<goal>> boolean : publish_paper = true publishing_paper
{before paper submission deadline} submit_paper {}{if paper was accepted and before sending camera-ready deadline} send_camera_ready {}
submitting_paper{ submit_paper } → submit_paperpublishing_paper{ send_camera_ready } → publish_paper
Laboratório de Engenharia de Software – PUC-Rio 11
<<goal>> boolean : evaluate_revision_proposal = true<<goal>> boolean : review_papers = true
<<right>> consult_agenda<<right>> calculate_free_time<<duty>> accept_or_reject_revision_proposal<<duty>> make_reviews<<duty>> classify_paper<<duty>> send_reviews_to_chair
RevisionProposal{ message: {label: Proposal, content: RevisionProposal, sender: Chair, receiver: Reviewer} message: {label: AcceptProposal, content: RevisionProposal, sender: Reviewer, receiver: Chair}, message: {label: RejectProposal, content: RevisionProposal, sender: Reviewer, receiver: Chair}}PaperRevision{ message: {label: Inform, content: PapersToReview, sender: Chair, receiver: Reviewer} message: {label: Inform, content: PapersAndRevisions, sender: Reviewer, receiver: Chair}}
Reviewer
Laboratório de Engenharia de Software – PUC-Rio 12
UserAgent/ Reviewer
<<goal>> boolean : evaluate_revision_proposal = true evaluating_revision_proposal<<goal>> boolean : review_papers = true reviewing_papers<<belief>> Agenda: agenda<<belief>> Integer: number-of-days-to-revise-one-paper<<belief>> Vector: areas-of-interest
{} consult_agenda {}{} calculate_free_time {}{before accepting orrejecting revision proposal deadline} accept_or_reject_revision_proposal {}
{} make_reviews {}{} classify_paper {}{before sending reviews to chair deadline} send_reviews_to_chair {}
evaluating_revision_proposal { consult_agenda, calculate_free_time,
accept_or_reject_revision_proposal } → evaluate_revision_proposalreviewing_papers {
make_reviews, classify_paper, send_reviews_to_chair } → review_papers
Laboratório de Engenharia de Software – PUC-Rio 13
<<goal>> boolean : select_new_reviewers = true<<belief>> Vector: reviewers_database
<<right>> consult_database<<duty>> calculate_1.5_of_number_of_requested_reviewers<<duty>> send_additional_reviewers
AdditionalReviewersSelection{ message: {label: Request, content: ReviewersNeed, sender: Chair, receiver: Coordinator } message: {label: Inform, content: AdditionalReviewers, sender: Coordinator, receiver: Chair}}
Coordinator
Laboratório de Engenharia de Software – PUC-Rio 14
UserAgent/Coordinator
<<goal>> boolean : select_new_reviewers = true selecting_new_reviewers
{} consult_database {}{} calculate_1.5_of_number_of_requested_reviewers {}{} send_additional_reviewers {}
selecting_new_reviewers { consult_database, calculate_1.5_of_number_of_requested_reviewers, send_additional_reviewers } → select_new_reviewers
Laboratório de Engenharia de Software – PUC-Rio 15
<<goal>> boolean : vote_papers_in_conflict = true<<belief>> Hashtable : papers_and_revisions_in_conflict
<<duty>> vote_conflicts<<duty>> send_votes_to_chair
VotingConflicts{ message: {label: Request, content: PapersAndRevisionsInConflict, sender: Chair,
receiver: MemberCP} message: {label: Inform, content: PapersAndRevisionsAndVotes, sender: MemberCP,
receiver: Chair}}
MemberCP
Laboratório de Engenharia de Software – PUC-Rio 16
UserAgent/MemberCP
<<goal>> boolean : vote_papers_in_conflict = true voting_papers<<belief>> Hashtable : papers_and_revisions_in_conflict
{} vote_conflicts {}{} send_votes_to_chair {}voting_papers {
vote_conflicts, send_votes_to_chair } → vote_papers_in_conflict
Laboratório de Engenharia de Software – PUC-Rio 17
<<goal>> boolean : distribute_revision_proposals_to_reviewers = true<<goal>> boolean : allocate_additional_reviewers_when_necessary = true<<goal>> boolean : send_papers_for_revision = true<<goal>> boolean : register_reviews_of_papers = true<<goal>> boolean : resolve_revision_conflicts_when_necessary = true<<goal>> boolean : send_final_result_to_authors = true<<goal>> boolean : receive_all_camera_ready = true<<belief>> Hashtable : revision_proposals<<belief>> UserAgents : contracted_reviewers<<belief>> Hashtable : papers_and_revisions_and_votes
<<duty>> relate_papers_and_reviewers<<duty>> prepare_revision_proposals<<duty>> send_revision_proposals<<duty>> verify_necessity_of_new_reviewers<<right>> request_new_reviewers<<duty>> evaluate_relation_of_new_reviewers<<duty>> relate_papers_and_new_reviewers<<duty>> send_all_papers_for_revision<<duty>> register_papers_reviews<<duty>> evaluate_revisions_to_detect_conflicts<<duty>> send_conflicts_to_members_of_program_committee<<duty>> evaluate_votes_about_conflicts<<duty>> find_and_register_final_result<<duty>> publish_final_result<<duty>> receive_all_camera_readyPublicationPaper {…}RevisionProposal {…}PaperRevision{…}AdditionalReviewersSelection{…}PapersInConflictDistribution {…}VotingConflicts{…}
Chair
Laboratório de Engenharia de Software – PUC-Rio 18
UserAgent/Chair
<<goal>> boolean : distribute_revision_proposals_to_reviewers = true → distributing_revision_proposals<<goal>> boolean : allocate_additional_reviewers_when_necessary = true → allocating_additional_reviewers<<goal>> boolean : send_papers_for_revision = true → sending_papers_for_revision<<goal>> boolean : register_reviews_of_papers = true → registering_reviews<<goal>> boolean : resolve_revision_conflicts_when_necessary = true → resolving_revision_conflicts<<goal>> boolean : send_final_result_to_authors = true → sending_final_result<<goal>> boolean : receive_all_camera_ready = true → receiving_all_camera_ready
{after paper submission deadline} relate_papers_and_reviewers {}{} prepare_revision_proposals {}{} send_revision_proposals {}{after answering revision proposal deadline} verify_necessity_of_new_reviewers {}{if additional reviewers are needed} request_new_reviewers {}{} evaluate_relation_of_new_reviewers {}{} relate_papers_and_new_reviewers {}{before sending papers for revision deadline} send_all_papers_for_revision {}{} register_papers_reviews {}{after sending reviews to chair deadline} evaluate_revisions_to_detect_conflicts {}{if conflicts exist} send_conflicts_to_members_of_program_committee {}{if received all votes} evaluate_votes_about_conflicts {}{} find_and_register_final_result {}{} publish_final_result {}{after sending camera ready deadline} receive_all_camera_ready {}
…
Laboratório de Engenharia de Software – PUC-Rio 19
UserAgent/Chair
…distributing_revision_proposals {
relate_papers_and_reviewers, prepare_revision_proposals, send_revision_proposals } → distribute_revision_proposals_to_reviewers
allocating_additional_reviewers { verify_necessity_of_new_reviewers, request_new_reviewers, evaluate_relation_of_new_reviewers, relate_papers_and_new_reviewers } → allocate_additional_reviewers_when_necessary
sending_papers_for_revision { send_all_papers_for_revision } → send_papers_for_revision
registering_reviews { register_papers_reviews } → register_reviews_of_papers
resolving_revision_conflicts { evaluate_revisions_to_detect_conflicts, send_conflicts_to_members_of_program_committee, evaluate_votes_about_conflicts } → resolve_revision_conflicts_when_necessary
sending_final_result { find_and_register_final_result,publish_final_result } → send_final_result_to_authors
receiving_all_camera_ready { receive_all_camera_ready } → receive_all_camera_ready
Diagramas de Organização
Laboratório de Engenharia de Software – PUC-Rio 21
Diagramas de Organização
• Objetivo– Modelar as organizações e os relacionamentos entre as organizações e
outras entidades do SMA.• Participantes
– Ambiente: ExpertComitteEnvironment– Organização principal (main-organization): AcademicEventOrganization– Agente: UserAgent– Papéis:
• Author• Chair• Coordinator• Reviewer• MemberCP
Laboratório de Engenharia de Software – PUC-Rio 22
AcademicEventOrganization
Object / Environment
Agent
Organization
Legend:
Role
ExpertComitteEnvironment
Coordinator
UserAgent
Reviewer
Chair
Author
AcademicEventOrganization
MemberCP
inhabitplay
ownership
Diagramas de Papéis
Laboratório de Engenharia de Software – PUC-Rio 24
Diagrama de Papéis
• Objetivo:– Modelar os papéis e os relacionamentos entre os papéis.
• Participantes:– Papéis:
• Author• Chair• Coordinator• Reviewer• MemeberCP
– Objetos• Paper• Revision• Vote• Agenda
Laboratório de Engenharia de Software – PUC-Rio 25
Diagrama de Papéis
Agent role
Legend:
Object
MemberCPCoordinator
Chair
Vote Paper
Author
Reviewer Revision
*
*
*
*
*
*
*
* *
3 ..*
*
Agenda*
Diagramas de Classes
Laboratório de Engenharia de Software – PUC-Rio 27
Diagrama de classes
• Objetivo:– Representar os relacionamentos entre classes e outras
entidades do SMA, e representar os relacionamentos entre agentes, ambientes e organizações.
• Participantes:– Agente: UserAgent– Ambiente: ExpertComitteEnvironment– Objetos:
• Paper• Revision• Vote• Researcher
Laboratório de Engenharia de Software – PUC-Rio 28
Diagrama de Classes
UserAgent
Paper
Revision
Vote
Researcheré
ExpertComitteEnvironment
1
3..*
1 *
Diagramas Dinâmicos
Laboratório de Engenharia de Software – PUC-Rio 30
Diagramas Dinâmicos
• Diagramas de Seqüência• Diagramas de Atividade
Laboratório de Engenharia de Software – PUC-Rio 31
Diagramas de Seqüência
• Objetivos:– Representar as interações entre as instâncias do SMA:
• Modelar trocas de mensagens• Modelar protocolos
– E representar as ações internas dessas instâncias:• Modelar planos e ações
Laboratório de Engenharia de Software – PUC-Rio 32
Diagramas de Seqüência
• Modelando Troca de Mensagens e Protocolos– Objetivo
• Modelar o conjunto de mensagens que entidades podem enviar e receber enquanto desempenhando papéis.
– Diagramas• Publication Paper Protocol (Publicação de Artigo)• Revision Proposal Protocol (Propostas de Revisão de Artigo)• Additional Reviewers Selection Protocol (Contratação de Revisores
Adicionais)• Paper Revision Protocol (Revisão de Artigo)• Voting Conflicts Protocol (Resolução de Conflito)
Laboratório de Engenharia de Software – PUC-Rio 33
Message
Publication Paper Protocol
Proposal (Paper)
RejectProposal (Paper)
AcceptProposal (PaperAndRevisions)
Inform (CameraReady)
: Author : Chair
else
Publication Paper
[ before paper submission deadline ]
[ before camera ready deadline ]
Laboratório de Engenharia de Software – PUC-Rio 34
Revision Proposal Protocol
Proposal (RevisionProposal)
RejectProposal (RevisionProposal)
AcceptProposal (RevisionProposal)
: Chair : Reviewer
else
Revision Proposal
[ before revision proposal deadline ]
Laboratório de Engenharia de Software – PUC-Rio 35
Additional Reviewers Selection Protocol
Request (ReviewersNeed)
Inform (AdditionalReviewers)
: Chair : Coordinator
Additional Reviewers Selection
Laboratório de Engenharia de Software – PUC-Rio 36
Paper Revision Protocol
Inform (PapersToReview)
Inform (PapersAndRevisions)
: Chair : Reviewer
Paper Revision
[ before deadline of sending revisions to chair ]
[ before deadline of sending papers for revision]
Laboratório de Engenharia de Software – PUC-Rio 37
Voting Conflicts Protocol
Request (RevisionsInConflict)
Inform (RevisionsAndVotes)
: Chair : MemberCP
Voting Conflicts
Laboratório de Engenharia de Software – PUC-Rio 38
Diagramas de Seqüência
• Modelando Planos e Ações– Objetivo
• Modelar execução interna do User Agent, da AcademicEventOrganization pela execução de seus planos e ações.
– Diagramas• Gerenciamento de Submissões e Revisões• Submissão e Propostas de Revisão de Artigo• Publicação de Artigo• Revisão de Artigos• Contratação de Novos Revisores• Detecção de Conflitos
Laboratório de Engenharia de Software – PUC-Rio 39
Mapeamento dos Planos e AçõesEm Diagramas de Seqüência
• AcademicEventOrganization– Planos e Ações
• management_of_submissions_and_revisions– defining_members_of_organizations
» define_reviewers» define_chair» define_coordinator» define_members_CP
– defining_deadlines_of_event» define_deadlines
– Diagrama– Management of submissions and revisions
Laboratório de Engenharia de Software – PUC-Rio 40
Management of submissions and revisions
: AcademicEventOrganization
defining_members
define_reviewers
define_chair
Executionof a Plan
Executionof an Action
<<create>>[for each reviewer]
Reviewer/Reviewer : UserAgent/Reviewer
<<create>>Chair/Chair : UserAgent/ Chair
define_coordinator
<<create>>Coordinator/Coordinator : UserAgent/ Coordinator
<<create>>
define_members_CP
[for each member]
MemberCP/MemberCP : UserAgent/MemberCP
Role
define_deadlines
: AcademicEventOrganization
Laboratório de Engenharia de Software – PUC-Rio 41
Mapeamento dos Planos e AçõesEm Diagramas de Seqüência
• Planos e Ações– User Agent/Author
• submitting_paper (submit_paper)
– User Agent/Reviewer• evaluating_revision_proposal (consult_agenda, calculate_free_time,
accept_or_reject_revision_proposal)
– User Agent/Chair• distributing_revision_proposal (relate_paper_and_reviews,
prepare_revision_proposals, send_revision_proposals)
• Diagrama• Submission and Proposals of Paper Revision
Laboratório de Engenharia de Software – PUC-Rio 42
Submission and Proposals of Paper Revision
Proposal(RevisionProposal)
Reviewer/Reviewer : UserAgent/Reviewer/
AcademicEventOrganization
Chair/Chair : UserAgent/Chair/
AcademicEventOrganization
Proposal (Paper) distributing_revision_proposals
relate_papers_and_reviewers
prepare_revision_proposals
submiting_paper
submit_paper
send_revision_proposals
evaluating_revision_proposals
consult_agenda
calculate_free_time
accept_or_reject_revision_proposal
elseAcceptProposal(RevisionProposal)
RejectProposal(RevisionProposal)
Author/Author : UserAgent/Author/AcademicEventOrganization
Agenda
getAgenda
Laboratório de Engenharia de Software – PUC-Rio 43
Mapeamento dos Planos e AçõesEm Diagramas de Seqüência
• Planos e Ações– User Agent/Author
• publishing_paper (send_camera_ready)
– User Agent/Chair• sending_final_result (find_and_register_final_result,
publish_final_result)• receiving_all_camera_ready (receive_all_camera_ready)
• Diagrama• Publishing Paper
Laboratório de Engenharia de Software – PUC-Rio 44
Publishing Paper
Chair/Chair :UserAgent/Chair/
AcademicEventOrganization
sending_final_result
find_and_register_final_result
publish_final_result
publishing_paper
Author/Author : UserAgent/Author/
AcademicEventOrganization
else
RejectProposal(Paper)
AcceptProposal(PaperAndRevisions)
Inform (CameraReady) receiving_all_camera_ready
receive_all_camera_ready
send_camera_ready
Laboratório de Engenharia de Software – PUC-Rio 45
Mapeamento dos Planos e AçõesEm Diagramas de Seqüência
• Planos e Ações– User Agent/Reviewer
• reviewing_papers (make_reviews, classify_paper, send_reviews_to_chair)
– User Agent/Chair• sending_papers_for_revision (send_all_papers_for_revision)• registering_reviews (register_paper_reviews)
• Diagrama– Papers Revision
Laboratório de Engenharia de Software – PUC-Rio 46
Papers Revision
Reviewer/Reviewer: UserAgent/Reviewer/
AcademicEventOrganization
Chair/Chair: UserAgent/Chair/
AcademicEventOrganization
make_reviews
classify_paper
send_reviews_to_chair
Inform(PapersAndRevisions)
registering_reviews
register_papers_reviews
sending_papers_for_revision
send_all_papers_for_revision
Inform(PapersToReview)
reviewing_papers
Revision
setFile
setResult
Laboratório de Engenharia de Software – PUC-Rio 47
Mapeamento dos Planos e AçõesEm Diagramas de Seqüência
• Planos e Ações– User Agent/Coordinator
• selecting_new_reviewers (consult_database, calculate_1.5_of_number_of_requested_reviewers, send_addtional_reviewers)
– User Agent/Chair• allocating_addicional_reviewers (verify_necessity_of_new_reviewers,
request_new_reviewers, evaluate_relation_of_new_reviewers ,relate_papers_and_new_reviewers)
• Diagrama– Allocating Addicional Reviewers
Laboratório de Engenharia de Software – PUC-Rio 48
Allocating Addicional Reviewers
Request(ReviewersNeed)
Coordinator/ Coordinator : UserAgent/Coordinator/
AcademicEventOrganization
Chair/Chair: UserAgent/Chair/AcademicEventOrganization
allocating_addicional_reviewers
verify_necessity_of_new_reviewers
request_new_reviewers selecting_new_reviewers
consult_database
calculate_1.5_of_number_of_requested_reviewers
send_addtional_reviewersInform(AdditionalReviewers)
[ If is needed ]
evaluate_relation_of_new_reviewers
relate_papers_and_new_reviewers
Laboratório de Engenharia de Software – PUC-Rio 49
Mapeamento dos Planos e AçõesEm Diagramas de Seqüência
• Planos e Ações– User Agent/MemberCP
• voting_papers (vote_conflicts,send_vote_to_chair)
– User Agent/Chair• resolving_revision_conflitcts (evaluate_revisions_to_detect_conflicts,
send_conflicts_to_program_committee, evaluate_votes_about_conflicts)
• Diagrama– Conflicts Detection
Laboratório de Engenharia de Software – PUC-Rio 50
Conflicts Detection
resolving_revision_conflicts
evaluate_revisions_to_detect_conflicts
send_conflicts_to_program_committee
Request(PapersAndRevisionsInConflict)voting_papers
vote_conflicts
send_votes_to_chair
Inform(PapersAndRevisionsAndVotes)
evaluate_votes_about_conflicts
MemberCP/MemberCP: UserAgent/MemberCP/
AcademicEventOrganization
Chair/Chair: UserAgent/Chair/AcademicEventOrganization
Vote
setVote
Diagramas de Atividade
Laboratório de Engenharia de Software – PUC-Rio 52
Diagramas de Atividade
• Objetivo– Representar a modelagem de planos e ações de um agente.
• Componentes– Planos– Ações– Troca de Mensagens e Protocolos
Laboratório de Engenharia de Software – PUC-Rio 53
Mapeamento dos Planos e AçõesEm Diagramas de Atividade
• AcademicEventOrganization– Planos e Ações
• management_of_submissions_and_revisions– defining_members_of_organizations
» define_reviewers» define_chair» define_coordinator» define_members_CP
– defining_deadlines_of_event» define_deadlines
Laboratório de Engenharia de Software – PUC-Rio 54
Definindo Membros da Organização
define_reviewers
defining_members_of_organizations <<subgoal>> define_members_of_organization
define_chair
define_membersCP
define_coordinator
Laboratório de Engenharia de Software – PUC-Rio 55
Definindo Deadlines para o Evento
define_deadlines
defining_deadlines <<subgoal>> define_deadlines_of_event
Laboratório de Engenharia de Software – PUC-Rio 56
Mapeamento dos Planos e AçõesEm Diagramas de Atividade
• Planos e Ações– UserAgent/Reviewer
• reviewing_papers (make_reviews, classify_paper, send_reviews_to_chair)
– UserAgent/Chair• sending_papers_for_revision (send_all_papers_for_revision)• registering_reviews (register_paper_reviews)
Laboratório de Engenharia de Software – PUC-Rio 57
Revisão de Artigos
make_reviews
reviewing_papers <<subgoal>> review_paper<<role>> reviewer
classify_paper send_reviews_to_chair
Laboratório de Engenharia de Software – PUC-Rio 58
Mapeamento dos Planos e AçõesEm Diagramas de Atividade
• Planos e Ações– User Agent/Author
• submitting_paper (submit_paper)
– User Agent/Reviewer• evaluating_revision_proposal (consult_agenda, calculate_free_time,
accept_or_reject_revision_proposal)• revising_papers (make_reviews, classify_paper,
send_reviews_to_chair)
– User Agent/Chair• distributing_revision_proposal (relate_paper_and_reviews,
prepare_revision_proposals, send_revision_proposals)
Laboratório de Engenharia de Software – PUC-Rio 59
Submissão de Artigo
submit_paper
submitting_paper <<goal>> submit_paper<<role>> author
<<message>>Proposal
Laboratório de Engenharia de Software – PUC-Rio 60
Distribuição de propostas de revisão
relate_paper_and_reviews
distributing_revision_proposals <<goal>> distribute_revision_proposals_to_reviewers<<role>> chair
prepare_revision_proposals
send_revision_proposals<<message>>
Proposal
Laboratório de Engenharia de Software – PUC-Rio 61
Avaliação de Revisão de Propostas
consult_agenda
evaluating_revision_proposals <<goal>> evaluate_revision_proposal<<role>> reviewer
calculate_free_time
accept_or_reject_revision_proposal
<<message>>
Reject Proposal
<<message>>
Accept Proposal
[deadline not compatible with free time in belief agenda]
Laboratório de Engenharia de Software – PUC-Rio 62
Mapeamento dos Planos e AçõesEm Diagramas de Atividade
• Planos e Ações– User Agent/Author
• publishing_paper (send_camera_ready)
– User Agent/Chair• sending_final_result (find_and_register_final_result,
publish_final_result)• receiving_all_camera_ready (receive_all_camera_ready)
Laboratório de Engenharia de Software – PUC-Rio 63
Enviando resultado final
find_and_register_final_result
sending_final_result <<goal>> send_final_result_to_authors<<role>> chair
publish_final_result
<<message>>
Reject Proposal
<<message>>
Accept Proposal
Laboratório de Engenharia de Software – PUC-Rio 64
Publicando artigo
send_camera_ready
publishing_paper <<goal>> publish_paper<<role>> author
<<message>>Inform
Laboratório de Engenharia de Software – PUC-Rio 65
Recebendo camera-ready
receive_all_camera_ready
receiving_all_camera_ready <<goal>> receive_all_camera_ready<<role>> chair
Laboratório de Engenharia de Software – PUC-Rio 66
Mapeamento dos Planos e AçõesEm Diagramas de Atividade
• Planos e Ações– User Agent/Coordinator
• selecting_new_reviewers (consult_database, calculate_1.5_of_number_of_requested_reviewers, send_addtional_reviewers)
– User Agent/Chair• allocating_addicional_reviewers (verify_necessity_of_new_reviewers,
request_new_reviewers, , evaluate_relation_of_new_reviewers relate_papers_and_new_reviewers)
Laboratório de Engenharia de Software – PUC-Rio 67
Alocando novos revisores
verify_necessity_of_new_reviewers
allocationg_addicional_reviewers <<goal>> allocate_addicional_reviewers_when_necessary<<role>> chair
request_new_reviewers
[if it is needed]
<<message>>Request
Laboratório de Engenharia de Software – PUC-Rio 68
Selecionando novos revisores
consult_database
selecting_new_reviewers <<goal>> select_new_reviewers<<role>> coordinator
send_addtional_reviewers<<message>>
Inform
calculate_1.5_of_number_of_requested_reviewers
Laboratório de Engenharia de Software – PUC-Rio 69
Avaliando relação de novos revisores
allocationg_addicional_reviewers <<goal>> allocate_addicional_reviewers_when_necessary<<role>> chair
relate_papers_and_new_reviewers
evaluate_relationg_of_new_reviewers
Laboratório de Engenharia de Software – PUC-Rio 70
Mapeamento dos Planos e AçõesEm Diagramas de Atividade
• Planos e Ações– User Agent/MemberCP
• voting_papers (vote_conflicts,send_vote_to_chair)
– User Agent/Chair• resolving_revision_conflitcts (evaluate_revisions_to_detect_conflicts,
send_conflicts_to_program_committee, evaluate_votes_about_conflicts)
Laboratório de Engenharia de Software – PUC-Rio 71
Resolvendo conflitos de revisão
evaluate_revisions_to_detect_conflicts
resolving_revision_conflicts <<goal>> resolve_revision_conflicts_when_necessary<<role>> chair
<<message>>Informsend_conflicts_to_program_commitee
Laboratório de Engenharia de Software – PUC-Rio 72
Votando nos artigos
vote_conflicts
voting_papers <<goal>> vote_papers_in_conflict<<role>> memberCP
<<message>>Informsend_votes_to_chair
Laboratório de Engenharia de Software – PUC-Rio 73
Avaliando votos
evaluate_votes_about_conflicts
resolving_revision_conflicts <<goal>> resolve_revision_conflicts_when_necessary<<role>> chair
Laboratório de Engenharia de Software – PUC-Rio 74
Críticas da Linguagem de Modelagem MAS-ML
• Aprendizado e uso da Linguagem de Modelagem: – Qual foi o grau de dificuldade no aprendizado sobre a
Linguagem de Modelagem?• Facilidade no entendimento do conceito• Dificuldade na experimentação
– Ambiente: Qual o critério para que ele seja ativo ou passivo?– Organização principal: Quais são os beliefs?– Papel de objeto: intuição inicial -> todo objeto possui um papel dentro
de uma organização => Errado!– Diagrama de classes:
» Ao modelar o agente, não era claro que quando um agente desempenha mais de um papel e que, nem todo papel tem uma associação com um objeto, esta associação não deve ser representada.
– Diagrama de Papéis» Ao modelar as entidades no diagrama, não era claro que, se um
objeto está associado a todos os papéis de agentes, ele não precisa ser representado no diagrama.
Laboratório de Engenharia de Software – PUC-Rio 75
Críticas da Linguagem de Modelagem MAS-ML
• (Cont.) Aprendizado e uso da Linguagem de Modelagem : – Qual foi o grau de dificuldade no aprendizado sobre a
Linguagem de Modelagem?• Diagrama de Atividades:
– A literatura não fornece detalhes sobre diversos cenários de um diagrama de atividade.
– Dúvidas para modelar uma mensagem quando a mesma invoca um plano.
» Não existe.
Laboratório de Engenharia de Software – PUC-Rio 76
Críticas da Linguagem de Modelagem MAS-ML
• Aprendizado e uso da Linguagem de Modelagem:– Como você avalia o material (artigos, ferramentas) disponíveis
sobre a Linguagem de Modelagem?• Dificuldade de achar exemplos mais detalhados.• Generalização -> solução por intuição.
Laboratório de Engenharia de Software – PUC-Rio 77
2- Diagramas da Implementação
• Diagrama de Classes;• Diagrama de Seqüência;
Laboratório de Engenharia de Software – PUC-Rio 78
AcademicEventOrganizationPlan(from model)
AuthorPlan(from model)
Author(from model)
-author
ChairPlan(from model)
CoordinatorPlan(from model)
Coordinator(from model)
-coordinator
MemberProgramComiteePlan(from model)
MemberProgramComitee(from model)
-memberProgramComitee
Chair(from model)
-chair
ReviewerPlan(from model)
Reviewer(from model)
-belief_contracted_reviewers
-reviewer
Agenda(from model)
-belief_agenda
AcademicEventOrganization(from model)
<<singleton>>
-org
Researcher(from model)
Revision(from model) Vote
(from model)
Paper(from model)
-Author -paper
-paper
Behaviour(from jade)
Agent(from jade)
Plan(from model)
Goal(from model)
0..*
1
0..*
1
0..*+subGoal
0..*
Right(from model)
Duty(from model)
ECAgent(from model)
0..*0..*
0..*0..*
0..*0..*
0..*0..*
UserAgent(from model)#org
ACLMessage(from jade)
Protocol(from model)
0..*0..*
0..*0..*
ECFachada(from model)
<<singleton>>ExpertComitteeEnvironment
(from model)
<<singleton>>
-reviewer
2.1. Diagrama de Classes
Laboratório de Engenharia de Software – PUC-Rio 79
2.2. Diagrama de SeqüênciaSubmetendo artigo
: Autor : home.jsp
H S
: Servlet :
cmdSubmeterArtigo :
ECFachada :
ExpertComitteeEnvironment :
AcademicEventOrganization :
JadeAgentInst : Paper : Author
submeterArtigo( )doPost( )
execute( )submeterArtigo( ) getInstance( )
AcademicEventOrganization( )<<create>>( )
setTitle(Logical View::java::lang::String)
setAuthor(Researcher)
setInstitution(Logical View::java::lang::String)
setFile(Logical View::java::lang::String)
setArea(Logical View::java::lang::String)
setAbstract(Logical View::java::lang::String)
Author(Researcher,Paper)
<<create>>( )
Motivação JADE Implementação (Mapeamento / DC / Demo) Conclusão
Laboratório de Engenharia de Software – PUC-Rio 80
2.2. Diagrama de Seqüência (..)Troca de Mensagens - Enviar
: Author : AuthorPlan : Protocol : ACLMessage
AuthorPlan(Author)selecting_plan( )
submit_paper( )[if this.name = 'submitting_paper' then]
getProtocol(Logical View::java::lang::String)
getMessage( )addReceiver( )
send( )
Motivação JADE Implementação (Mapeamento / DC / Demo) Conclusão
Laboratório de Engenharia de Software – PUC-Rio 81
2.2. Diagrama de Seqüência (..) Troca de mensagens - Recebimento
: ChairPlan : Chair : ACLMessage
: Goal
receive( )
[if msg.getName() == 'proposalPaper' then]
getContentObject( )
setPaper(Paper)
getSender( )
setAuthorAID( )
getGoal( )
[selecionando o goal distribute_revision_proposals_to_reviewers]
getPlan(Logical View::java::lang::String)
[selecionando o plano distributing_revision_proposals]
addBehaviour( )
Motivação JADE Implementação (Mapeamento / DC / Demo) Conclusão
Laboratório de Engenharia de Software – PUC-Rio 82
3- Mapeamento das abstrações
Características de MAS-ML que foram facilmente implementadas:
• AGENTS:foi criado o ECAgent (do domínio), como herança de Agent de JADE. A partir deste, foi criada a classe UserAgent;
• A comunicação entre agentes foi bem implementada• O ciclo de vida de uma agente em JADE é muito
similar ao de MAS-ML;• O comportamento de cada agente dentro dos PLANS foi
fácil de ser implementado, apesar de ter sido criada uma nova classe que estende a classe Behaviour de JADE;
Laboratório de Engenharia de Software – PUC-Rio 83
3- Mapeamento das abstrações(..)
Características de sistemas multi-agentes que não puderam ser implementadas somente com JADE:
• ROLES – cada papel se tornou um agente. Este também herdou características do agente userAgent;
• DUTIES, RIGHTS e GOALS – foram criadas novas classes;
• BELIEFS – foram implementados com atributos dos agentes;
• ENVIRONMET e ORGANIZATION - foram criadas novas classes;
• PROTOCOLS – foi criada uma nova classe.
Laboratório de Engenharia de Software – PUC-Rio 84
4–Aplicação desenvolvida
• Cenários principais: Submissão de artigo; Distribuição de propostas de revisão; Avaliação de proposta de revisão; Distribuição dos artigos aos revisores; Enviar revisão dos artigos; Divulgação da revisão de artigos; Artigo aceito X rejeitado;
• Execução do EC utilizando a Web.– Formulário de entrada de dados;– Relatório da execução;
Laboratório de Engenharia de Software – PUC-Rio 85
5-Roteiro para instalação
Passo 1: Descompactar a pasta ExpertComittee.zip;
Passo 2: Abrir a pasta ExpertComitte;Passo 3: Copiar o arquivo ec.war e a pasta ec
para a pasta webapps do Tomcat.Passo 4: Deve-se usar a URL
http://localhost:8080/ec para acessar a página inicial do sistema.
Laboratório de Engenharia de Software – PUC-Rio 86
6- Conclusão sobre Implementação usando JADE x Modelagem MAS-ML
6.1. Aprendizado e uso da tecnologia JADE
6.2. Pontos fortes de JADE
6.3. Pontos fracos de JADE
6.4. Melhorias
Laboratório de Engenharia de Software – PUC-Rio 87
6.1. Aprendizado e uso da tecnologia JADE
• A idéia geral de JADE é de fácil entendimento, mas montar o ambiente de desenvolvimento tem um grau médio de dificuldade e em certos casos, difícil. O uso requer estudo prévio, e pôde ser facilitado com o uso de exemplos prontos.
• As ferramentas oferecidas pelo JADE são muito boas, pois funcionam de maneira eficaz, possuem recursos interessantes (inclusive visuais) como o Sniffer.
• Para JADE existem diversos artigos disponíveis, por ser uma tecnologia muito difundida entre os pesquisadores de SMA. Contudo, os principais artigos usados são extensos e, em alguns casos, faltam exemplos mais simples e explicações menos abstratas e mais práticas.
Laboratório de Engenharia de Software – PUC-Rio 88
6.2. Pontos fortes de JADE
• Material é vasto, e bem dirigido;• A comunicação entre agentes foi bem implementada e é
de fácil aprendizado. Foi possível, com certa criatividade, adaptar as MESSAGES;
• Os estados dos agentes foram bem implementados;• Ferramentas de suporte facilitam o trabalho do
Engenheiro de Software;• A biblioteca de classes foi bem desenvolvida;• As facilidades de JADE colaboraram para o
desenvolvimento de um bom trabalho;• Não foram encontrados erros de funcionamento da
tecnologia;• Depois de entendido o funcionamento de JADE,o
comportamento dos agentes é fácil de ser implementado.
Laboratório de Engenharia de Software – PUC-Rio 89
6.3. Pontos fracos de JADE
• Pesquisas demoradas em cada etapa da implementação, usando JADE - que não implementa diversas abstrações de MAS-ML.
• A etapa inicial (mapear as definições para código) foi trabalhosa, pois foi necessário criar um conjunto de novas classes para atender aos conceitos relacionados aos agentes;
• Para implementar a comunicação entre agentes, foi necessário know-how de JADE (fomos bem orientados pelo Rodrigo Paes);
• Dificuldades na implementação da Organização em “controlar” a ação dos agentes (autônomos);
• A instalação do JADE não está muito bem explicada no material disponível;
Laboratório de Engenharia de Software – PUC-Rio 90
6.4. Melhorias
• Pré / post conditions: modelados como contrato;
• Uma extensão de Jade partindo da modelagem em MAS-ML como ponto de partida as novas classes criadas: Duty, Right, Goal, Belief, Plan e Protocol.
Laboratório de Engenharia de Software – PUC-Rio 91
6.4. Melhorias
• Planos– Como implementamos
• Existe uma única classe para cada agente estendendo a classe Plan, que possui um nome
– Exemplo: Author -> AuthorPlan
• Sempre que um agente seleciona um plano de um goal, ele seta o nome do plano
• Quando o action (método do Jade) de cada plano for executado, ele testa o nome do plano e chama o conjunto de ações correspondentes ao mesmo.
– Como poderia ser feito• Cada plano seria uma classe e seu action não precisaria fazer o teste.
Laboratório de Engenharia de Software – PUC-Rio 92
Bibliografia
• Silva, V.; Garcia, A.; Brandao, A.; Chavez, C.; Lucena, C.; Alencar, P. ?Taming Agents and Objects in Software Engineering? In: Garcia, A.; Lucena, C.; Zamboneli, F.; Omicini, A; Castro, J. (Eds.), Software Engineering for Large-Scale Multi-Agent Systems, Springer-Verlag, LNCS 2603, pp. 1-26, 2003.
• Silva, V.; Lucena, C. "From a Conceptual Framework for Agents and Objects to a Multi-Agent System Modeling Language", In: Sycara, K., Wooldridge, M. (Edts.), Journal of Autonomous Agents and Multi-Agent Systems, Kluwer Academic Publishers, 2004. (aceito para publicação).
• Java Agent DEvelopment Framework , 2004