Configurando Protocolos de Interação na Abordagem R-RIO
Resumo
Aplicações modernas possuem natureza dinâmica e necessitam de suporte para se adaptarem a novas demandas funcionais e não-funcionais. Novas demandas funcionais são criadas por usuários das aplicações, que precisam funções não previstas originalmente ou necessitam alterar funções existentes. Durante o ciclo de vida das aplicações, podem também surgir requisitos não-funcionais que, em geral, não estão associados diretamente com a aplicação. Modelos mais usuais para o desenvolvimento de software não oferecem as facilidades necessárias para a produção de aplicações que se adaptem dinamicamente a essas demandas. Portanto, uma abordagem que facilite a concepção dessas aplicações se faz necessária. Apresentamos neste artigo a abordagem R-RIO, que estende o conceito tradicional de configuração, permitindo que se descreva a arquitetura das aplicações a partir de componentes e suas interações e, adicionalmente, seus aspectos não-funcionais como a distribuição, coordenação e protocolos de comunicação. A arquitetura de uma aplicação é descrita com o uso de CBabel, a linguagem de configuração de R-RIO. A partir da descrição da arquitetura um middleware, chamado configurador, pode criar instâncias de seus componentes e iniciar a execução da aplicação. O configurador também oferece suporte para adaptação das aplicações que necessitam reagir à mudanças de requisitos ou de condições de operação, inclusive durante a fase de funcionamento. O exemplo do Jogo da Velha (TicTacToe) é utilizado para ilustrar a concepção de uma aplicação com um protocolo de interação complexo utilizando-se R-RIO e para permitir uma comparação com outras abordagens.
Referências
Astley, M. e Agha, G., "Customizations and Composition of Distributed Objects: Middleware Abstractions for Policy Management", ACM SIGSOFT'98 - 6th. International Syposioum on Foundations of Software Engineering, Lake BuenaVista, Florida, pp. 1-9, Novembro, 1998.
Aksit, M. "Composition and Separation of Concerns in the Object-Oriented Model", ACM Computing Surveys, 28A (4), Dezembro, 1996.
Allen, R., Garlan, D., "Beyond Definition/Use: Architectural Interconnection", ACM SIGPLAN Notices, Volume 29, No 8, IDL Workshop, pp. 35-44, Agosto, 1994.
____, "Aspect™ Specification", Xerox, Paulo Alto Center, Março, 1998.
Bergmans, Lodewijk M.J.; "Composing Concurrent Objects - Applying Composition Filters for the Development and Reuse of Concurrent Object-Oriented Programmming", PhD Thesis, Universiteit Twente, Finlandia, 1996.
Bishop, J. and Faria, R, "Connectors in Configuration Programming Languages: are They Necessary?", IEEE Third International Conference on Configurable Distributed Systems, Annapolis, Maio, 1996.
Chiba, S., "Open C++ Programmer's Guide for Version 2", Xerox PARC, Technical Report SPL-96-024, Xerox PARC, Maio,1996.
Fraga, J., Farines, J., Furtado, O., Siqueira, F., "Programação de Aplicações Distribuídas Tempo-Real em Sistemas Abertos, XXIII Seminário Integrado de Software e Hardware, Recife, PE, Agosto, 1996.
Gamma, E. et. Alli, "Design Patterns - Elements of Reusable Object-Oriented Software", Addison-Wesley Publishing Co., EUA, 1995.
Golm, M.; "Design and Implementation of a Meta Architecture for Java", M.Sc. Thesis, Instituto de Matemática, Erlanngen-Nüremberg University, Alemanha, 1997.
Helm, R., Holland, I.M. e Gangopadhyay, D., "Contracts: Specifying Behavioral Compositions in Object-Oriented Systems", OOPSLA'90, Ottawa, Outubro, 1990.
Issarny, V. and Bidan, C., "Aster: A CORBA-based Software Interconnection System Supporting Distributed System Customization", International Conference on Configurable Distributed Systems, Annapolis, Maio, 1996.
Jackson, M, e Zave, P., "Distributed Feature Composition: A Virtual Architecture for Telecommunications Services", IEEE Trasaction on Software Enginnering, Vol. 24, No. 10, pp. 831-847, Outubro, 1998.
Arnold, K. e Gosling, J., "The Java Programming Language", Second Edition, Sun Microsystems, Addison Wesley, EUA, 1998.
Johnson, R. E., "Frameworks = (Components + Patterns)", Communications of the ACM, pp. 39-42, Outubro, Vol. 40, No. 10, 1997.
Jones, M. B., "Interposition Agents: Transparently Interposing User Code at the System Interface", 14th ACM Symp.on Operating Systems Principles, Asheville, 1993.
Kiczales, G. and Irwing, J. et alli, "Aspect-Oriented Programming", Position Paper for the ACM Workshop on Strategic Directions in Computing Research, MIT, June, 1996.
Kiczales, G., Lamping, J., Lopes, C. V., Maeda, C., Mendhekar, A., "Open Implementations Design Guidelines", 19th International Conference on Software Engineering, ACM Press, 1997.
Kiczales, G., Lopes, C. V., "Aspect Oriented Programming with AspectJ - Tutorial / Part 4", Xerox PARC, www.parc.xerox.com/aop, 1998.
Laddaga, R. and Veitch, J., "Dynamic Object Technology", Communications of the ACM, Vol. 40, No. 5, May, 1997.
Lobosco, M. "R-RIO: Um Ambiente de Suporte à Construção e Evolução de Sistemas Distribuídos", dissertação de mestrado, CAA/UFF, Março,1999.
Lopes, Cristina I. V.; "D: A Language Framework for Distributed Programming", Doctor of Philosophy Thesis, College of Computer Science, Northeastern University, Novembro, 1997.
Loques, O., Botafogo, R., Leite, J., "A Configuration Approach for Distributed Object-Oriented System Customization", IEEE Third International Workshop on Object-oriented Real-time Dependable Systems, Newport Beach, Fevereiro, 1997.
Loques, O., Leite, J., Sztajnberg, A e Lobosco, M., "Towards Integrating Meta-Level Programming and Configuration Programming", SBES 99, Florianópolis, Outubro, 1999.
Magee, J., Dulay, N., Kramer, J., "Structuring parallel and distributed programs", Int. Workshop on Configurable Distributed Systems, pp. 102-117, IEE, Março, 1992.
Malucelli, V. V, "Babel - Construindo Aplicações por Evolução", dissertação de mestrado, DEE / PUC-RJ, Fevereiro, 1996.
Monroe, R. T., Kompanek, A., Melton, R. e Garlan, D., "Architectural Styles, Design Patterns and Objects", IEEE Software, Vol. 14, No. 1, pp. 43-52, Janeiro de 1997.
Oliva, A., e Buzato, L. E., "Composition of Meta-Objects in Guaraná", ECOOP 98, Workshop Reflection, Canada, 1998.
OMG, "The Common Object Request Broker: Architecture and Specification", Revision 2.0, Julho, 1996.
Rine, D. C., "Supporting Reuse with Object Technology", IEEE Computer, Vol. 30, No. 10, pp. 43-45, Outubro, 1997.
Shaw, M., DeLine, R., et alli, "Abstractions for software architecture and tools to support them", IEEE Transactions on Software Engineering, Vol. 21, No. 4, Abril, 1995.
Sztajnberg, A, "Cap 2 - Análise de Propostas Correlatas", proposta de tema de tese de doutorado, COPPE/UFRJ, Julho, 1999.
Wegner, P., "Interoperability", ACM Computing Surveys, Vol. 28, No. 1, Março,1996