Desenvolvimento de Software para Sistemas Multiagentes

Documentos relacionados
Modelando sistemas Multiagentes Analisando Metodologias

JADEX: A BDI REASONING ENGINE. Alexander Pokahr, Lars Braubach e Winfried Lamersdorf Springer US - Multi-Agent Programming 2005 pp.

Ferramenta MVCASE - Estágio Atual: Especificação, Projeto e Construção de Componentes

Um Arcabouço open source em Python para DBC com

SID - Sistema Interativo Distribuído

Requisitos para Ferramentas de Gestão de Projetos de Software

Prof. Esp. Fabiano Taguchi

Uma Abordagem para Engenharia de Requisitos no Domínio de Software Embarcado

Uma Linha de Produto de Software para Módulos de Aprendizagem Interativa

Roni Fabio Banaszewski UTFPR Universidade Tecnológica Federal do Paraná

Engenharia de Software. Processos. Desenvolvimento de Software Tradicionais 2014/2. Prof. Luís Fernando Garcia

Uma ontologia para modelagem de conteúdo para Ensino a Distância. An ontology for modeling distance learning contents

Uma Abordagem para Geração de uma Arquitetura de Linha de Produtos de Software Dinâmica

Processos de software

Reuso de Software Aula Maio 2012

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos

INSTITUTO FEDERAL DE SÃO PAULO CAMPUS PRESIDENTE EPITÁCIO MODELO DOS PROCESSOS DE SOFTWARE

Project Builder: Apoio a Gestão de Projetos do Nível G ao C do MPS.BR

Guia do Processo de Teste Metodologia Celepar

Escolhendo um Modelo de Ciclo de Vida

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPI JOÃO CÂMARA RATIONAL UNIFIED PROCESS - RUP

Título do trabalho: e-sciencenet 2.0: Uma Rede Ponto-a-Ponto Semântica; Nome do aluno: Tadeu Moreira de Classe; Nome do(s) orientador(es): Regina

Princípios da Engenharia de Software aula 03

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software

UNIVERSIDADE REGIONAL DE BLUMENAU FERRAMENTA DE GERÊNCIA DE REQUISITOS DE SOFTWARE INTEGRADA COM ENTERPRISE ARCHITECT

contidos na descrição do serviço para localizar, contactar e chamar o serviço. A figura mostra os componentes e a interação entre eles.

Arquitetura de software

ENGENHARIA DE SOFTWARE

Reengenharia de Software

CORDIS-FBC: um Ambiente de Desenvolvimento de Software para Cardiologia

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

Agenda da Aula. Arquitetura de Software e Padrões Arquiteturais. Elementos de um Padrão. Arquitetura de Software. Arquitetura de Software

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

1.1. Declaração do Problema e Limitações dos Trabalhos Relacionados Um Framework Conceitual para SMAs

Prof. Ms. Ronaldo Martins da Costa

Processo. Processo unificado. Principais Características do UP. Principais Características do UP RUP. Unified Process (Processo Unificado)

Introdução INTRODUÇÃO AO SWEBOK. Origens do corpo de conhecimentos da Engenharia de Software: Introdução a Computação e Engenharia de Software

InGriDE: Um Ambiente Integrado de Desenvolvimento para Computação em Grade

O Fluxo de Requisitos

UML. Rodrigo Leite Durães.

Comparação entre Metodologias Rational Unified Process (RUP) e extreme Programming(XP)

Gerência Flexível de Processos de Software com o Ambiente WebAPSEE 1

MAPAS CONCEITUAIS NA EDUCAÇÃO: PROPONDO UMA NOVA INTERFACE PARA AMBIENTES DE APRENDIZAGEM BASEADOS NA PLATAFORMA MOODLE

Adriano Medeiros dos Santos. Suporte a Componentes Compostos Para o Middleware SCS. Dissertação de Mestrado

Um Framework Baseado em Sistemas Multiagentes para Simulação de Estratégias de Investimento no Mercado Financeiro

Rational Unified Process (RUP)

Modelagem De Sistemas

Introdução Diagrama de Classes Diagrama de Seqüência Diagrama de Atividades. Diagramas UML. Classe, Seqüência e Atividades. Marcio E. F.

Visão Geral do Trabalho de Pesquisa

Introdução Introdução

Reunião de boas vindas

PDS. Aula 1.4 Modelos de Processo. Prof. Dr. Bruno Moreno

Mo#vação. Objec#vo. Estudar uma abordagem de desenvolvimento de so9ware orientada pelos objectos. Linguagens usadas: UML (Unified Modeling Language)

Como Modelar com UML 2

Apresentação do Capítulo 4 MDA (Model-Driven Archtecture) ALUNO: DOMENICO SCHETTINI FILHO NÚMERO USP:

As Visões. Visões arquiteturais (revisão)

3 Trabalhos relacionados

PADRÕES DE PROJETO: DESIGN PATTERNS

Tipos para uma Linguagem de Transformação

Visões Arquiteturais. Visões Arquiteturais. Visões Arquiteturais. Visão Conceitual

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE

DESENVOLVIMENTO DE UM LABORATÓRIO DIDÁTICO PARA ELETRÔNICA USANDO PLATAFORMA DE INSTRUMENTAÇÃO VIRTUAL COM ACESSO VIA WEB

Comunicado 125 Técnico

Engenharia Reversa e Reengenharia. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2015

Processo Unificado (PU) Unified Process

Introdução a Teste de Software

Paradigmas da Engenharia de Software AULA PROF. ABRAHAO LOPES

Ciclo de vida: fases x atividades

Análise Estruturada. Modelagem de Software Prof. Flávio de Oliveira Silva, Ph.D.

CICLO DE VIDA DE SOFTWARE

Ainda que muitos modelos sejam semelhantes entre os modelos de ciclo de vida, existem alguns aspectos que os diferenciam:

MANUAL PARA DESENVOLVIMENTO DE SOFTWARE TRABALHO DE CONCLUSAO DE CURSO EM SISTEMAS DE INFORMAÇÃO

Processos de Software

Engenharia de Requisitos

Qualidade de Software: Visão Geral. SSC 121-Engenharia de Software 1 Profa. Dra. Elisa Yumi Nakagawa

ENGENHARIA DE SOFTWARE

1 Introdução. 1.1 Teoria dos Sistemas 23/4/2010

Engenharia de Software

Resumo parcial da Tese de Doutorado. Um modelo de Sistema de Gestão do Conhecimento para grupos de pesquisa e desenvolvimento.

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Introdução à Análise e Projeto de Sistemas

Elementos Fundamentais para a Melhoria da Qualidade de Software nas Organizações de TI

2

XP EXTREME PROGRAMMING. AGO106 - Gestão

FA PorT: Um Framework para Sistemas Portfólio-Tutor utilizando Agentes

Ciclo de Vida de Sistemas de Informação

De Olho na Pista. Documento de Arquitetura. De Olho na Pista Documento de Arquitetura Data: 23/03/2013. AJA Software

Fábricas de Software. Processos de Software. Fábricas de Software. Fábricas de Software 17/08/2010. Jorge Dias

RUP RATIONAL UNIFIED PROCESS PRÁTICAS RECOMENDADAS. Prof. Fabiano Papaiz IFRN

Arquitetura de Software: Introdução

Objetos e Componentes Distribuídos: EJB

Orientador Prof. Marcel Hugo

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos

Sistemas de Banco de Dados

Atividades de Desenvolvimento. Desenvolvimento de Software. Especificação de Requisitos. Atividades de Desenvolvimento. Especificação de Requisitos

Unidade 4 Projeto de Banco de Dados

Transcrição:

Desenvolvimento de Software para Sistemas Multiagentes Hyggo Oliveira de Almeida 1, Evandro Costa 2, Angelo Perkusich 1 1 Departamento de Engenharia Elétrica Universidade Federal de Campina Grande Av. Aprigio Veloso, 882, Bodocongó Campina Grande, PB, Brasil 2 Departamento de Tecnologia da Informação Universidade Federal de Alagoas {hyggo,perkusic}@dee.ufcg.edu.br, evandro@tci.ufal.br Abstract. A abordagem multiagentes tem sido apontada como adequada para o desenvolvimento de sistemas de software complexos. Investimentos em Engenharia de Software para dar suporte à utilização desta abordagem em larga escala têm sido realizados. Porém, nestes trabalhos não são levadas em conta características como dinamicidade do sistema e flexibilidade da solução. Neste trabalho, apresenta-se uma infra-estrutura de engenharia para o desenvolvimento de software utilizando a abordagem multiagentes denominada COMPOR. Trata-se de um conjunto de diretrizes e ferramentas para o desenvolvimento de software com foco na obtenção de flexibilidade e adaptabilidade da solução. Além disso, um estudo de casos no domínio de empresas virtuais é apresentado. Resumo. Many researchers have been claimed that the multiagent approach is suitable for the development of complex software systems. Many works have been proposed to apply the multiagent approach on large scale software development. However, the dynamic feature of the system and the flexibility and adaptability of the solution have not been considered. This work presents an engineering infrastructure for software development through a multiagent approach, named COMPOR. This infrastructure represents a set of guidelines and tools to develop software for complex, open and dynamic systems. In order to illustrate its usefulness, the development of a complex virtual enterprise application is presented. 1. Introdução: problemática, objetivo e contribuições Muitos pesquisadores têm apontado a abordagem multiagentes como adequada ao desenvolvimento de sistemas de software complexos [Jennings 2001, Zambonelli et al. 2003]. De acordo com esta abordagem, um sistema de software deve ser visto como uma organização de agentes autônomos como abstração para gerenciar a sua complexidade. Neste contexto, a Engenharia de Software baseada em Agentes [Jennings 2001] tem como objetivo disponibilizar metodologias, ferramentas e infra-estruturas gerenciáveis para permitir o desenvolvimento de sistemas multiagentes em larga escala. Contudo, em se tratando de software, os requisitos definidos em primeira instância de análise tendem a ser refinados ou alterados com a iteração do ciclo de desenvolvimento. Em relação à abstração multiagentes, isto se reflete na alteração dos relacionamentos dos Mestre pelo Departamento de Sistemas e Computação, Universidade Federal de Campina Grande (Suportado pela CAPES). O segundo e o terceiro autores foram orientadores do trabalho. XVIII CTD 80

agentes e na entrada ou saída de agentes no sistema. Muitos investimentos em Engenharia de Software para prover ferramentas e metodologias para a utilização da abordagem multiagentes em larga escala têm sido realizados. Porém, na maioria destes trabalhos, o impacto da alteração ou refinamento dos requisitos sobre o software não é levado em conta. Sendo assim, os relacionamentos entre os agentes do sistema não se alteram e novos agentes não podem passar a fazer parte do sistema ou, quando tais características são providas, isto não é refletido para as fases de projeto e implementação do software. Em resumo, o desenvolvimento do software não reflete a realidade de cenários evolutivos, cada vez mais presentes no contexto de engenharia de software. Neste trabalho tem-se como objetivo disponibilizar uma infra-estrutura de engenharia, denominada COMPOR, para o desenvolvimento de software para sistemas complexos, abertos e dinâmicos, através de uma abordagem multiagentes. Trata-se de um conjunto de diretrizes e ferramentas para o desenvolvimento de software com foco na obtenção de flexibilidade e adaptabilidade. Estas diretrizes devem guiar o desenvolvedor desde a análise do problema até a implementação do software, com o auxílio das ferramentas computacionais desenvolvidas no contexto do COMPOR. A integração das diretrizes com as ferramentas também representa uma contribuição relevante em relação aos diversos trabalhos relacionados, detalhados em [Almeida 2004], que focalizam apenas alguns aspectos específicos do desenvolvimento de software para sistemas multiagentes. Mais especificamente, pode-se dividir este objetivo principal nos seguintes objetivos específicos, os quais constituem as contribuições deste trabalho e que são apresentados nas próximas seções do artigo: 1. Disponibilização de um conjunto de diretrizes de análise, projeto, implementação e testes para o desenvolvimento de software para sistemas multiagentes, levandose em conta as características de dinamicidade destes sistemas, decorrente da alteração nos seus requisitos. 2. Disponibilização de um modelo de componentes para estabelecer regras sobre a composição de funcionalidades dos agentes. O modelo deve permitir a troca de funcionalidades e componentes com o mínimo de impacto sobre o restante do agente, garantindo assim uma maior flexibilidade na solução proposta. 3. Desenvolvimento de um arcabouço baseado em componentes que implemente as especificações do modelo de componentes definido anteriormente. 4. Desenvolvimento de um ambiente integrado para a construção de software para sistemas multiagentes utilizando como base o arcabouço definido anteriormente. O ambiente também deve contemplar ferramentas para monitoramento e execução do software desenvolvido. 5. Desenvolvimento de uma aplicação no contexto de empresas virtuais, enfatizando a utilidade da infra-estrutura definida anteriormente, como um estudo de caso. 2. Diretrizes metodológicas - COMPOR-M As diretrizes metodológicas COMPOR-M (Methodology) têm como objetivo reduzir a distância entre análise, projeto e a implementação do software multiagentes. Para tanto, são contempladas quatro fases clássicas do desenvolvimento de software: análise, projeto, implementação e testes. O desenvolvimento é iterativo/incremental e não está vinculado a nenhum modelo de desenvolvimento. As diretrizes determinam apenas as atividades de cada fase, com transições seguindo a seqüência clássica de desenvolvimento de software. XVIII CTD 81

Fase de Análise: as diretrizes de análise são baseadas na análise de domínio MATHEMA [Costa et al. 1998]. Suas diretrizes foram generalizadas para englobar os diversos domínios de aplicação de sistemas multiagentes. Em síntese, as diretrizes de análise guiam o desenvolvedor na análise do domínio do problema, particionado em contextos, em busca das habilidades necessárias para a resolução do problema. As habilidades, suas dependências e os contextos a que pertencem são descritas através de um Diagrama de Habilidades [Almeida 2004]. Fase de Projeto: uma vez identificadas as habilidades necessárias em cada contexto para a resolução do problema, pode-se então definir o projeto arquitetural da sociedade de agentes, assim como a arquitetura interna de cada agente. O resultado da aplicação das diretrizes de projeto são representados em um Diagrama de Agentes [Almeida 2004], apresentando uma visão da arquitetura de agentes, e em um Diagrama de Componentes [Almeida 2004], com o projeto interno de cada agente. Fase de Implementação: na fase de implementação, assim como acontece no Desenvolvimento Baseado em Componentes, os componentes identificados na fase de projeto, caso não existam, devem ser implementados. A implementação dos novos componentes deve ser feita com base no modelo de componentes descrito na Seção 3.. Após a implementação de todos os componentes definidos na fase de projeto, o componente Planejador de cada agente é definido. O Planejador é um script de execução de cada agente que coordenará as suas funcionalidades e suas ações em relação à sociedade. Fase de Testes: o investimento na fase de testes vem se tornando indispensável no desenvolvimento de software. Como visto anteriormente, as funcionalidades dos agentes são providas pelos componentes e, sendo assim, testes em cada um dos componentes tornamse independentes dos testes dos agentes e da sociedade como um todo. As diretrizes englobam os testes de serviços, testes de dependências dos componentes de um agente e testes de dependências entre os agentes da sociedade. 3. Modelo de componentes - COMPOR-CM Embora o modelo COMPOR-CM (Component Model) [Costa et al. 2003] tenha sido criado para dar suporte à arquitetura de agentes COMPOR, também é aplicável a outros tipos de sistemas. O modelo tem base no princípio de que a inexistência de referências explícitas, ou diretas, entre provedores de funcionalidades tem como conseqüência uma maior flexibilidade na inserção, remoção e alteração destes provedores, inclusive em tempo de execução. Sistemas que possuem esta flexibilidade como requisito podem utilizar o modelo COMPOR-CM, ainda que não se utilizem da abordagem de agentes. Dois tipos de entidade são definidas em COMPOR-CM: os contêineres e os componentes funcionais. Os componentes funcionais implementam as funcionalidades do sistema, disponibilizando-as em forma de serviços. Os componentes funcionais não são compostos por outros componentes, ou seja, não possuem componentes-filhos. Os contêineres, por sua vez, não implementam funcionalidades, apenas gerenciam o acesso aos serviços dos seus componentes-filhos. No modelo COMPOR-CM são definidos modelos de especificação e interação entre componentes, assim como um processo de disponibilização de componentes [Almeida 2004]. A seguir, apresenta-se o modelo de interação baseada em serviços. XVIII CTD 82

Modelo de interação baseada em serviços: após a inserção de um componente em um determinado contêiner, seus serviços tornam-se disponíveis a qualquer outro componente do sistema. Sendo assim, supondo a existência do serviço salvar implementado pelo componente K, pode-se solicitar a execução deste serviço a partir de um componente X, sem fazer referência a K. Este processo é apresentado na Figura 1, onde pode-se verificar que não há referência alguma entre o componente solicitante do serviço ( X ) e o componente provedor do mesmo ( K ). Desta forma, é possível alterar o componente que provê o serviço salvar sem modificar o restante da estrutura. 3 O Contêiner 2 então encaminha a solicitação ao seu contêiner-pai (Contêiner 1) 2 O Contêiner 2 verifica, de acordo com sua tabela de serviços, que nenhum dos seus componentes-filhos implementa o serviço salvar salvar? Serviço calcular imprimir Componente X Y 4 O Contêiner 1 verifica, de acordo com sua tabela de serviços, que um de seus componentes-filhos implementa o serviço salvar (Contêiner 3). Para o Contêiner 1, o Contêiner 3 é visto como um componente que implementa o serviço. Contêiner 2 Serviço Componente calcular Contêiner 2 imprimir Contêiner 2 salvar Contêiner 3 Contêiner 1 5 O Contêiner 1 então encaminha a solicitação de serviço para o Contêiner 3. Contêiner 3 6 O Contêiner 3 não implementa o serviço mas possui em sua tabela uma referência ao real implementador do serviço - componente K. Serviço Componente salvar K 1 O componente X solicita a execução do serviço salvar ao seu contêiner-pai X Y K Não há referência entre X e K 7 O Contêiner 3 então encaminha a solicitação de serviço para o componente funcional K, que executa o serviço salvar e retorna o resultado da execução. Figura 1. Interação baseada em serviços: localização e execução sem referência entre componentes funcionais 4. Arcabouço baseado em componentes - COMPOR-F O arcabouço COMPOR-F (Framework) [Almeida et al. 2004] implementa as especificações do modelo de componentes COMPOR-CM. COMPOR-F tem seu projeto baseado no padrão Composite [Gamma et al. 1995]. As classes FunctionalComponent e Container são instanciadas, respectivamente, em componentes funcionais e contêineres, os quais são conceitualizados no modelo COMPOR-CM. A interface ComponentIF garante a composição recursiva, permitindo que os contêineres desconheçam a implementação dos seus componentes-filhos, que podem ser tanto componentes funcionais como outros contêineres. A implementação da arquitetura de agentes é então definida como uma extensão das classes Container e FuncionalComponent. A classe Agent estende a classe Container gerenciando o acesso a seus componentes filhos e permitindo a troca de componentes em tempo de execução. Os modelos de classe da arquitetura de componentes e agentes são detalhados em [Almeida 2004]. 5. Ambiente de desenvolvimento - COMPOR-E Para automatizar o processo de desenvolvimento e tornar mais eficiente a utilização do arcabouço COMPOR-F, um ambiente integrado para o desenvolvimento de sistemas mul- XVIII CTD 83

tiagentes foi construído. O ambiente COMPOR-E (Environment) [Almeida et al. 2003] possui um conjunto de ferramentas para auxiliar o desenvolvedor nas diversas fases de concepção de um software utilizando a abordagem multiagentes (Ver Figura 2). Para isso, o ambiente se baseia nas diretrizes definidas na Seção 2., dando suporte às fases de análise, projeto, implementação, testes e gerência de execução [Almeida 2004]. Figura 2. Ambiente de desenvolvimento 6. Estudo de caso - Empresa virtual Para ilustrar a aplicabilidade da infra-estrutura de Engenharia de Software proposta neste trabalho, apresenta-se a utilização do COMPOR no desenvolvimento de um sistema de empresa virtual. Por restrições de espaço, a descrição do sistema e seu desenvolvimento usando a infra-estrutura COMPOR foram omitidos deste artigo, sendo detalhados em [Almeida 2004]. 7. Considerações finais Este trabalho constituiu-se em uma investigação sobre o tema Engenharia de Software para Sistemas Multiagentes, tendo como ponto de partida resultados obtidos no mencionado ambiente MATHEMA. Nesta perspectiva, foi proposta uma infra-estrutura de engenharia para o desenvolvimento de sistemas de software complexos. Os objetivos descritos foram alcançados tendo como contribuições principais as diretrizes, modelo de componentes, arcabouço e ambiente de desenvolvimento apresentados. Estas contribuições foram publicadas separadamente em congressos nacionais e internacionais, assim como a infra-estrutura como um todo, publicada em revista. Esta dissertação foi apresentada, a convite, no Workshop de Teses e Dissertações (WTES/SBES 2003) como um dos três melhores trabalhos do evento. As referências e demais detalhes sobre o trabalho podem ser encontradas no próprio documento da dissertação, disponível, em versão eletrônica, em http://www.dee.ufcg.edu.br/ hyggo/dissertacao.zip. Além disso, o trabalho deu origem a um projeto de pesquisa, denominado COM- POR. Dentro do contexto deste projeto, seja para utilização, validação ou formalização XVIII CTD 84

da infra-estrutura, tem-se: cinco trabalhos de conclusão de graduação (sendo quatro concluídos), três dissertações de mestrado (sendo três concluídos) e uma tese de doutorado, sendo realizada pelo autor deste trabalho. Referências Almeida, H. O. (2004). COMPOR - Desenvolvimento de Software para Sistemas Multi- Agentes. Dissertação de Mestrado, Universidade Federal de Campina Grande, Campina Grande, Brasil. Almeida, H. O., Loureiro, E., Ferreira, G. V., Paes, R. B., Perkusich, A., and Costa, E. B. (2003). Ambiente integrado para o desenvolvimento de sistemas multi-agentes. In Proceedings of Simpósio Brasileiro de Engenharia de Software - Sessão de ferramentas - SBES 2003, volume 17, páginas 55 60, Manaus, Brasil. Almeida, H. O., Perkusich, A., Costa, E. B., and Paes, R. B. (2004). COMPOR: a Methodology, a Component Model, a Component based Framework and Tools to Build Multiagent Systems. CLEI Electronic Journal, 7(1). Costa, E. B., Almeida, H. O., Paes, R. B., and Perkusich, A. (2003). COMPOR: a Component-based Framework for building Multi-agent Systems. In Proceedings of 2nd International Workshop on Software Engineering for Large-Scale Multi-agent Systems - on ICSE 2003 - Portland - EUA, páginas 84 89. Costa, E. B., Perkusich, A., and Ferneda, E. (1998). From a Tridimensional view of Domain Knowledge to Multi-agent Tutoring System. In Proceedings of 14th Brazilian Symposium on Artificial Intelligence - Lecture notes on artificial intelligence, LNAI 1515, volume 991, páginas 61 72, Porto Alegre, Brasil. Springer Verlag. Gamma, E., Helm, R., Johnson, R., and Vlissides, J. (1995). Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley. Jennings, N. R. (2001). An agent-based approach for building complex software systems. Commun. ACM, 44(4):35 41. Zambonelli, F., Jennings, N. R., and Wooldridge, M. (2003). Developing multiagent systems: The Gaia methodology. ACM Trans. Softw. Eng. Methodol., 12(3):317 370. XVIII CTD 85