Padrão State Reflexivo: Refinamento do Padrão de Projeto State para uma Arquitetura Reflexiva
Resumo
Padrões constituem boas soluções de projeto para problemas recorrentes dentro de um contexto particular. À medida que os padrões são aplicados, aumenta-se o entendimento sobre os mesmos, e as soluções apresentadas por eles podem evoluir, tomando-os cada vez mais maduros. Este artigo apresenta um refinamento para o padrão de projeto State e discute vários problemas associados à sua implementação. Para a aplicação do padrão State, são necessárias decisões de projeto que envolvem aspectos de controle relacionados ao comportamento dinâmico de um objeto, como por exemplo, a definição e o controle das transições de estado. O padrão proposto, denominado padrão State Reflexivo, utiliza uma arquitetura reflexiva para a implementação destes aspectos de controle no meta-nível, separando-os dos aspectos funcionais implementados no nível base. São definidas também algumas variações do padrão State Reflexivo para o domínio de tolerância a falhas, dando origem a um sistema de padrões que auxilia o desenvolvimento de software tolerante a falhas.
Referências
F. Buschmann, R. Meunier, H Rohnert, P. Sommerlad, M. Stal. A System of Patterns: pattern-oriented software architecture. John Wiley & Sons, 1996.
G.Booch, J. Rambaugh e I.Jacbson. Unified Modelling Language. Versão 1.0, Rational Software Corporation, janeiro de 1997,
L.E.Buzato, C.M.F.Rubira and M.L. Lisboa. A Reflective Object-Oriented Architecture for Developing Fault-Tolerant Software. Journal of the Brazilian Computer Society, 4(2):39-48, novembro de 1997.
M. de Champlain. A Design Pattern for the Meta Finite-State Machines. Proceedings of the Circuits, Systems and Computers Conference (CSC'96), Hellenic Naval Academy, Piraeus, Greece, Junho de 1996.
M.G.Coelho, C.M.F.Rubira, L.E.Buzato. Uma Abordagem Reflexiva para a Construção de Frameworks para Interfaces Homem-Computador. XI Simpósio Brasileiro de Engenharia de Software (SBES'97), pag. 115-130, Fortaleza, CE, Outubro de 1997.
P.Dyson and B. Anderson. State Patterns. Pattern Languages of Program Design 3, Addison-Wesley, 1997. Eds. R.Martin, D.Riehle, F.Buschmann.
E.Gama, R. Helm, R Johnson e J. Vlissides. Design Patterns: Elements of Reusable Object Oriented Software. Addison-Wesley Publishing, 1995.
D.Harel. Statecharts: A Visual Formalism for Complex Systems. Science of Computer Programming, 8: 231-274, North-Holland, 1987.
A. Lee e T. Anderson. Fault Tolerance: Principles and Practice, Springer Verlag Wien New York, 1990.
P.Maes. Concepts and Experiments in Computational Reflection. Proc. OOPSLA'87, ACM SIGPLAN Notices, 22(12):147-155, outubro de 1987.
A.Oliva, L.E.Buzato. An Overview of MOLDS: A Meta-Object Library for Distributed Systems. Technical Report IC-98-15, Instituto de Computação, Universidade Estadual de Campinas, Abril 1998.
A.Oliva, I.C.Garcia, L.E.Buzato. The Reflexive Architecture of Guaraná. Technical Report IC-98-14, Instituto de Computação, Universidade Estadual de Campinas, abril 1998.
J. Odrowski and P. Sogaard. Pattern Integration - Variations of State. PLoP'96 Writer's Workshop. [link]
G.Palfinger. State Action Mapper. PLoP'97 Writer's Workshop [link].
E.M.Quadros e C.M.F. Rubira. Construção de um Framework para Sistemas Controladores de Trens Utilizando Padrões de Projeto e Metapadrões. XI Simpósio Brasileiro de Engenharia de Software (SBES'97), Fortaleza, CE, Outubro 1997.
E.M. Quadros. Uma Abordagem Orientada a Objetos para Programação Distribuída Confiável. Dissertação de Mestrado, Inst. de Computação, Universidade Estadual de Campinas, junho de 1997.
A. Ran. MOODS: Models for Object-Oriented Design of State. Pattern Languages of Program Design 2, Addison-Wesley, 1996. Eds.J.M. Vlissides, 1.0.Couplien e N.L. Kerth.
C.M.F. Rubira. Structuring Fault-Tolerant Object-Oriented Systems Using Inheritance and Delegation. PhD thesis, Dept. of Computing Science, University of Newcastle upon Tyne, outubro de 1994.
A. Weinand, E.Gama e R.Marty. Design and Implementation of ET++, a Seamless Object-Oriented Application Framework. Structured programming, (2), 1989.