VIII CONGRESSO DE INICIAÇÃO CIENTÍFICA DA UNIVERSIDADE FEDERAL DE CAMPINA GRANDE PIBIC/CNPq/UFCG-2010 PRINCÍPIOS DE PROJETO PARA DESIGN BY CONTRACT COM JAVA MODELING LANGUAGE José Laerte P. X. Júnior1, Tiago Lima Massoni2 RESUMO A abordagem de Design by Contract (DBC) promove a formalização dos relacionamentos entre módulos (classes) através de contratos. Entretanto, a preservação dos fatores de modularidade não é trivial, uma vez que anotações podem obstruir propriedades como extensibilidade e reusabilidade. Assim, os contratos podem prejudicar a divisão modular original, desencorajando sua utilização devido ao seu alto custo de evolução. Neste artigo, apresentamos e discutimos princípios de projeto para sistemas Orientados a Objeto especificados com a linguagem Java Modeling Language (JML). Com o intuito de avaliar os princípios apresentados, efetuamos um estudo de caso qualitativo em uma grande base de código JML (a API JMLModels). Palavras-chave: Evolução, Design by Contract, princípios de design. PROJECT PRINCIPLES FOR DESIGN BY CONTRACT WITH JAVA MODELING LANGUAGE ABSTRACT The Design by contract (DBC) approach promotes the formalization of relationships between modules (classes) through contracts, determining utilization rules for objects and methods. Nevertheless, the preservation of modularity is not a natural consequence of contracts, since annotations bring extra design issues that may hinder properties such as extensibility and reusability. The contracts may damage original modular division and tend to be abandoned due to high cost of evolution. In this paper we present and discuss design principles for Object Oriented systems specified with the Java Modeling Language (JML). We performed a qualitative case study on a large JML codebase (the JMLModels API), showing the trade-offs of DBC design. Keywords: Evolution, Design by Contract, design principles. 1 Aluno do Curso de Ciência da Computação, Unidade Acadêmica de Sistemas Computacionais, UFCG, Campina Grande, PB, E-mail: [email protected] 2 Cientista da Computação, Professor. Doutor, Unidade Acadêmica de Sistemas Computacionais, UFCG, Campina Grande, PB, E-mail: [email protected]