1. INTRODUCTION
1.2 Enzymatic degradation of recalcitrant polysaccharides
1.2.3 Glycoside hydrolases
Os outros componentes, respons´aveis por gerar os produtos da ferramenta, tamb´em devem ser estendidos para criar novos resultados para a nova anota¸c˜ao. A extens˜ao do n´ucleo permite identificar a anota¸c˜ao, disparando os componentes geradores para obter os resultados. Todos os componentes geradores utilizados precisam estar preparados para tratar todas as anota¸c˜oes identificadas.
Os geradores que acompanham a ferramenta apresentam uma estrutura semelhante `a estrutura da pr´opria ferramenta, utilizando f´abricas e associa¸c˜oes de classes que geram o resultado para cada anota¸c˜ao identificada pela ferramenta. Nesses geradores as classes PredicatedSpecializationCodeHandler e PredicatedSpecializationDatabaseHandlertratam uniformemente as anota¸c˜oes de especializa¸c˜ao defi- nida por predicados. Isso ´e poss´ıvel uma vez que a nova classe PredicatedSpecializationAbstraction2 do n´ucleo utiliza uma representa¸c˜ao interna compat´ıvel com a anota¸c˜ao PredicatedSpecialization. Para abstra¸c˜oes semelhantes `as j´a existentes, essa ´e uma solu¸c˜ao poss´ıvel, sendo apenas necess´ario asso- ciar na f´abrica do gerador a representa¸c˜ao do n´ucleo PredicatedSpecializationAbstraction2 `as classes repons´aveis por gerar os produtos, como em:
public class DefaultCodeBuilderFactory implements AbstractBuilderFactory {
public AbstractCodeBuilder createBuilder(String destinyDirectory){ AbstractCodeBuilder ret = new CodeBuilder(destinyDirectory); configureCodeBuilder(ret);
return ret; }
private void configureCodeBuilder(AbstractCodeBuilder cb){ cb.registerCodeHandler( EntityAbstraction.class.getName(), new EntityCodeHandler()); cb.registerCodeHandler( GeneralizationAbstraction.class.getName(), new GeneralizationCodeHandler()); cb.registerCodeHandler( SpecializationAbstraction.class.getName(), new SpecializationCodeHandler()); cb.registerCodeHandler( RelationshipAssociationAbstraction.class.getName(), new RelationshipAssociationCodeHandler()); cb.registerCodeHandler( CompositeAssociationAbstraction.class.getName(), new CompositeAssociationCodeHandler()); cb.registerCodeHandler( RelationshipObjectAbstraction.class.getName(), new RelationshipObjectCodeHandler()); cb.registerCodeHandler( PredicatedSpecializationAbstraction.class.getName(), new PredicatedSpecializationCodeHandler()); cb.registerCodeHandler( PredicatedSpecializationAbstraction2.class.getName(), new PredicatedSpecializationCodeHandler());
D.2. CRIANDO NOVAS ANOTAC¸ ˜OES 127
} }
Nos ´ultimos dois comandos podemos verificar que a mesma classe geradora ´e utilizada para as duas representa¸c˜oes de especializa¸c˜ao definida por predicado. Por´em, para anota¸c˜oes diferentes, pode ser ne- cess´ario criar novas classes geradoras e novas f´abricas. Quando novas f´abricas dos componentes geradores forem desenvolvidas, ´e necess´ario substituir no arquivo de configura¸c˜ao da ferramenta a entrada relativa ao gerador alterado, indicando a nova f´abrica criada.
Dessa forma, essa ferramenta apresenta uma estrutura elaborada para estimular e simplificar a cria¸c˜ao de extens˜oes. Essas extens˜oes podem ser novas anota¸c˜oes representando novas abstra¸c˜oes de dados ou novos componentes geradores, que permitam obter novos produtos com base no projeto conceitual, sejam eles classes para outros arcabou¸cos ou linguagens, projetos f´ısicos para outras abordagens, ou qualquer outro tipo de produto como documentos ou diagramas.
Referˆencias Bibliogr´aficas
[1] Agile Alliance. Dispon´ıvel em http://www.agilealliance.org/. Acessado em Outubro de 2006. [2] Agile Manifesto for software development. Dispon´ıvel em http://www.agilemanifesto.org/. Aces-
sado em Outubro de 2006.
[3] S. Ambler. Agile Database Techniques. Wiley Publishing, Inc, 2003.
[4] S. Ambler. The Object Primer Third Edition Agile Model-Driven Development with UML 2.0. Cam- bridge, Cambridge, UK, 2004.
[5] S. Ambler. Agile/Evolutionary Data Modeling: From Domain Modeling to Physical Modeling. Dis- pon´ıvel em http://www.agiledata.org/essays/agileDataModeling.html, Acessado em Outubro de 2006.
[6] K. Beck. Extreme Programming Explained: Embracing Change. Addison-Wesley, 1999.
[7] J. S. Brown and P. Duguid. The Social Life of Information. Harvard Business School Press, 2000. [8] P. P. Chen. The entity relationship model - toward an unified view of data. ACM Transactions
on Database Systems, 1(1):9, Mar. 1976. Reprinted in M. Stonebraker, Readings in Database Sys.,
Morgan Kaufmann, San Mateo, CA, 1988.
[9] E. F. Codd. Extending the relational model to capture more meaning. ACM Transactions on
Database Systems, 4(4):394–434, Dec. 1979.
[10] A. S. da Silva, A. H. F. Laender, and M. A. Casanova. On the relational representation of complex specialization structures. Inf. Syst, 25(6-7):399–415, 2000.
[11] O. J. Dahl and K. Nygaard. Simula, an algol-based simulation language. Comunications of the
ACM(9):671-678, 1996.
[12] Enterprise Java Beans. Dispon´ıvel em http://java.sun.com/products/ejb/. Acessado em Outubro de 2006.
[13] R. A. Elmasri and S. B. Navathe. Fundamentals of Database Systems. Addison-Wesley Longman Publishing Co., Inc., 4th edition, 2004.
[14] D. Firesmith. Use Cases: The Pros and Cons in Wisdowm of the Gurus. SIGS books, 1996. [15] E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Design Patterns. Addison-Wesley, 1995.
[16] I. Jacobson. Object-Oriented Software Engineering. A Use Case Driven Approach. Addison-Wesley, 1992.
[17] I. Jacobson, G. Booch, and J. Rumbaugh. The Unified Software Development Process. Addison- Wesley, 1999.
[18] Javassist. Dispon´ıvel em http://www.csg.is.titech.ac.jp/~chiba/javassist/. Acessado em Outubro de 2006.
[19] P´agina do junit. Dispon´ıvel em http://junit.sourceforge.net/. Acessado em Outubro de 2006. [20] H. F. Korth and A. Silberschatz. Sistema de Banco de Dados. McGraw-Hill, 1989.
[21] G. Krasner and S. Pope. A cookbook for using model-view-controller user interface paradigm in smaltalk-80. Journal of Object Oriented Programming 1(3):26-49, 1988.
[22] Naked Objects. Dispon´ıvel em http://www.nakedobjects.org/. Acessado em Outubro de 2006. [23] R. Pawson. Naked objects. PhD thesis, University of Dublin, Trinity College, 2004.
[24] R. Pawson and J. L. Bravard. The case for expressive systems. Sloan Management Review Winter
1995:41-48, 1995.
[25] R. Pawson and R. Matthews. Naked Objects. Wiley and Sons, 2002.
[26] R. Pawson, R. Matthews, and D. Haywood. The naked object architecture series. Dispon´ıvel em http://www.theserverside.com/articles/article.tss?l=NakedObjectSeries_1. Acessado em Outubro de 2006.
[27] R. Pawson and V. Wade. Agile Development Using Naked Objects. In Extreme Programming and
Agile Processes in Software Engineering, 4th International Conference, XP 2003,Genova, Italy, May 25-29, 2003 Proceedings, volume 2675 of Lecture Notes in Computer Science, pages 97–103. Springer,
2003.
[28] P. Schuh. Agility and the Database. Dispon´ıvel em http://www.agilealliance.org/articles/ schuhpeteragilityandt/file. Acessado em Outubro de 2006.
[29] Sybase PowerDesigner. Dispon´ıvel em http://www.sybase.com/. Acessado em Outubro de 2006. [30] F. Taylor. The Principles of Scientific Management. W.W. Norton and Co., 1911.
[31] T. Teorey, S. Lightstone, and T. Nadeau. Database Modeling & Design. Morgan Kaufmann Pu- blishers, Inc., 4th edition, 2006.
[32] T. J. Teorey. Database Modeling & Design. Morgan Kaufmann Publishers, Inc., 1999.
[33] Toad Data Moduler. Dispon´ıvel em http://www.quest.com/. Acessado em Outubro de 2006. [34] Unified Model Language. Dispon´ıvel em http://www.uml.org/. Acessado em Outubro de 2006.