APLICAÇÃO DE PADRÕES DE PROJETO EM UM MODELO DE CONTROLE HOLÔNICO Venyton Nathan Leandro Izidoro (DECOMP/UNICENTRO), Marcos Antonio Quináia (Orientador), e-mail: [email protected], [email protected]. Universidade Estadual do Centro-Oeste/Setor de Ciências Exatas Palavras-chave: Padrões de Projeto, Observer, Controle Holônico. Resumo: O projeto visa testar a aplicação do padrão de projeto Observer em uma arquitetura de controle de fabricação, constituída de um Modelo de Controle Holônico, quem tem o objetivo de tornar ágeis os sistemas modernos de produção industrial. Para demonstrar o funcionamento do padrão na arquitetura holônica, um simulador construído em JAVA é apresentado. Introdução A utilização de padrões foi apresentada por Christopher Alexander e outros no contexto de arquitetura de prédios e cidades. “Cada padrão descreve um problema que ocorre repetidamente de novo e de novo em nosso ambiente, e então descreve a parte central da solução para aquele problema de uma forma que você pode usar esta solução um milhão de vezes, sem nunca implementá-la duas vezes da mesma forma”, [1]. A idéia principal da manufatura holônica é fazer uso das boas propriedades dos sistemas holônicos no contexto de manufatura, desenvolvendo uma classe de sistemas chamada Holonic Manufacturing System (Sistema de Manufatura Holônico) ou HMS. A arquitetura compreende um “Modelo de Controle Holônico”, que utiliza a inteligência artificial para a organização ágil da manufatura e produção. O padrão Observer foi aplicado no “mecanismo de notificação” da arquitetura proposta. Para testar a aplicação do padrão, foi desenvolvido um simulador em Java que demonstra o funcionamento do Observer no mecanismo. Materiais e Métodos O padrão Observer A utilização de padrões de projeto visa o aproveitamento de soluções prontas para problemas comuns no projeto de software. O uso dessas Anais da SIEPE – Semana de Integração Ensino, Pesquisa e Extensão 26 a 30 de outubro de 2009 soluções acarreta na economia com custos de projeto e tempo de desenvolvimento, e é recomendado em quaisquer tipos de projetos, não necessariamente de software. Essas técnicas de engenharia, profundamente estudadas e testadas, garantem que os projetos cumpram seus requisitos, [4]. Cada padrão de projeto deve possuir pelo menos quatro elementos básicos: Nome, Problema, Solução e Consequências, [2]. O padrão Observer tem como objetivo manter a constante atualização e consistência entre objetos relacionados. “Observer é um padrão de projeto que tem intenção de definir uma dependência um-para-muitos entre objetos, de maneira que quando um objeto muda de estado, todos os seus dependentes são notificados e atualizados automaticamente”, [2]. No padrão Observer existe uma interface Subject ou Observable, que deve conter os métodos para registrar, remover e notificar o observador. Também existem as interfaces de observador, que contam com um único método abstrato que é o de “atualizar”. Ambos possuem classes concretas que implementam essas interfaces, uma para o Subject e outra para o observador. Aplicação do padrão na arquitetura. Em [3] é proposto um mecanismo de notificação (Figura 1), baseado na colaboração entre entidades desacopladas. Para o mecanismo funcionar corretamente, deve ocorrer atualização imediata e automática dos subholons da camada posterior à camada onde uma alteração ocorreu. Assim, os sub-holons devem possuir uma conexão com um objeto Observer que irá notificá-los quando uma atualização for necessária. Figura 1 – Mecanismo de notificação [3]. As classes ObsevableAtributo, ObsevablePremissa, ObsevableCondição, ObsevableRegra, ObsevableAção, ObsevableInstigação, ObsevableMétodo e ObsevableRecurso são classes Singleton (pode existir apenas Anais da SIEPE – Semana de Integração Ensino, Pesquisa e Extensão 26 a 30 de outubro de 2009 uma instância de cada) que estendem a classe Observable que possui implementação pronta em Java. As interfaces Atributo, Premissa, Condição, Regra, Ação, Instigação, Método e Recurso implementam a Classe Observer. Cada uma dessas interfaces deve “observar” a classe Observable da camada anterior e quando esta sofre uma alteração, atualizar o Observable da mesma camada. O diagrama da aplicação pode ser visto na Figura 2. Figura 2 – Diagrama de classes da aplicação. O simulador O simulador foi desenvolvido em Java, já que um paradigma orientado a objetos é necessário e, como visto anteriormente, esta linguagem já possui o padrão Observer pré-implementado, bastando importar as classes Observer e Observable da biblioteca “java.util” para o sistema simulador e implementar as devidas interfaces. A tela principal do simulador contém um conjunto de botões que são usados para criar novos observadores. Os observadores (Atributo, Premissa, Regra, Ação, etc.) são representados por pequenas telas com um nome (tipo de sub-holon), um valor numérico e um botão para notificar as Anais da SIEPE – Semana de Integração Ensino, Pesquisa e Extensão 26 a 30 de outubro de 2009 entidades das camadas posteriores, provando assim a aplicabilidade do padrão no mecanismo de notificação. Resultados e Discussão A aplicação do padrão mostrou-se eficiente quando aplicada ao mecanismo de notificação da arquitetura, o que foi observado nas simulações executadas no software simulador. Utilizando de boas práticas de programação no paradigma orientado a objetos, outra vantagem da aplicação do Observer é a facilidade de sua implementação na linguagem Java, visto que a mesma possui o padrão parcialmente pronto em suas bibliotecas. Ficando assim, a critério do programador, somente o domínio da aplicação e a definição das entidades observáveis e observadoras. Conclusões O padrão Observer demonstrou garantir a atualização instantânea das entidades de forma rápida e precisa, proporcionando à arquitetura de controle holônico a eficiência necessária aos seus propósitos. Com o êxito do simulador concluiu-se que o Observer é adequado para esta aplicação, por proporcionar uma solução para o problema, por ser prático, de fácil implementação e eficiente. Referências Alexander, C., Ishkawa, S., Silverstein, M., Lacobson, M., FiksdahlKing, I. e Angel, S. (1977) “A Pattern Language” - Oxford University Press, New York. Gamma, E., Helm, R., Johnson, R. e Vlissides, J. (1994) “Padrões de Projeto: Soluções reutilizáveis de software orientado a objeto”. Simão, J. M. (2005) "A contribution to the development of a hms simulation tool and proposition of a meta-model for holonic control" – CEFET-PR. Sommerville, I. (2003) “Engenharia de Software” 6. ed. São Paulo: Pearson Addison Wesley. Anais da SIEPE – Semana de Integração Ensino, Pesquisa e Extensão 26 a 30 de outubro de 2009