Financial support from FAPESP #00/10881-4 An Evolution Process for Application Frameworks Maria Istela Cagnin 1 , José Carlos Maldonado 1 , Paulo C. Masiero 1 , Rosana T. V. Braga 1 , Rosângela Dellosso Penteado 2 1 Instituto de Ciências Matemáticas e de Computação, Universidade de São Paulo – USP São Carlos-SP, Brazil, CEP 13560-970 2 Departamento de Computação , Universidade Federal de São Carlos – UFSCar São Carlos-SP, Brazil, CEP 13.565-905 e-mail: [istela, jcmaldon, masiero, rtvb]@icmc.usp.br, rosangel@dc.ufscar.br Abstract Application frameworks, as occurs with any software, evolve as they are used. The initial versions often do not satisfy all the domain requirements for which the framework has been built, thus, soon after the framework is released for use, the evolution process starts. As it is a generic architecture of a domain, framework maintenance activities differ from maintenance activities of conventional applications. An evolution process for application frameworks, comprising eight steps, is proposed. This process is based on the evolution of a framework for the information systems domain. 1. Introduction A framework is a set of prefabricated software building blocks that programmers can use, extend, or customize for specific computing solutions. With frameworks, software developers do not have to start from scratch each time they write an application [16]. The framework architecture consists of fixed parts (frozen spots) and variables parts (hot spots) [5]. The fixed structure defines the system overall architecture– its basic components and their interrelationships – and is primarily used without modification in all framework instantiations. The variable structure contains the components that can be adapted and extended by the domain application engineer to satisfy the needs of a particular system (business rules, functional requirements inherent to the organization, internal policies, etc). Instantiation of new applications in the domain is done by component selection (black box) or by class specialization of the variable structure (white box). As frameworks technology consolidates and applications are instantiated based on them, the need for a comprehensive and formally organized process for framework maintenance and evolution grows. The authors of this paper could not find in the literature a proposal for such type of process. The process proposed in this paper was motivated by two reengineering case studies, using the PARFAIT agile reengineering process [7], which uses the GREN framework [1] as the basis for legacy systems reengineering. GREN is the acronym for Gestão de Recursos de Negócios (in portuguese), which means “Business Resource Management”, and support purchase, sale and rental of business resources. It was developed based on the GRN pattern language that records knowledge about that domain [2]. During the usage of the PARFAIT process, it was noticed that the legacy system had several functionalities not implemented in GREN. The process here presented is generic and can be the basis for the evolution of other framework types, as for instance, those based on components and on aspects [10]. This paper is organized in the following way. In Section 2, works related to the context of this paper are discussed. In Section 3, the proposed process for framework evolution is presented,