Summary: | A necessidade de evolução de sistemas legados tem aumentado significativamente com o surgimento de novas tecnologias. Para apoiar essa tendência, diversos métodos de reengenharia têm sido propostos. No entanto, poucos possuem apoio computacional efetivo, alguns utilizam padrões de projeto ou padrões específicos de reengenharia, e nenhum utiliza framework baseado em linguagem de padrões. Este trabalho está inserido no domínio de Sistemas de Informação. Propõe a elaboração de um arcabouço de reengenharia ágil baseado em framework, que realiza a engenharia reversa do sistema legado com o apoio de linguagem de padrões de análise, fornecendo entendimento e documentação necessários para instanciar o framework. O entendimento do sistema legado também é apoiado pela sua execução, por meio de casos de teste. Esses casos de teste são utilizados posteriormente para validar o sistema alvo. O framework, cuja construção é baseada em linguagem de padrões, é utilizado para obter o projeto e a implementação do sistema alvo. Para permitir a reengenharia com o apoio do arcabouço definido, um processo ágil de reengenharia foi criado. Como no desenvolvimento de software, grande parte do tempo da reengenharia é despendido com atividades de VV&T. Para minimizar esse problema, uma abordagem de reúso de teste é proposta. Essa abordagem agrega recursos de teste aos padrões da linguagem de padrões de análise, permitindo o reúso, não somente das soluções de análise, como também dos recursos de testes associados. O uso de framework na reengenharia de software colabora para a sua evolução, pois o domínio ao qual pertence pode evoluir, já que nem todos os requisitos do domínio do framework podem ter sido elicitados durante o seu desenvolvimento. Assim, nesta tese é proposto também um processo de evolução de frameworks de aplicação. Os processos e a abordagem propostos são associados ao arcabouço definido para apoiar sua efetividade. Além disso, para avaliar o processo ágil de reengenharia, que fornece reúso em diversos níveis de abstração, um pacote de experimentação também é parcialmente definido. Estudos de caso e exemplos de uso foram conduzidos com os produtos definidos. Ressalta-se que outros estudos devem ser conduzidos para permitir a determinação de resultados com significância estatística. === The need to evolve legacy systems has increased significantly with the advent of new technologies. To support this tendency, several reengineering methods have been proposed. However, few have effective computing support, some use design patterns or reengineering specific patterns and none use pattern language-based frameworks. This thesis's theme belongs to the Information Systems domain. An agile framework based reengineering infrastructure is proposed for the legacy system reverse engineering with the support of an analysis pattern language; also provided the understanding and documentation necessary for framework instantiation. The legacy system understanding is also supported by its execution with test cases. These are also subsequently used to validate the target system. The framework, whose construction is based on the analysis pattern language, is used to obtain the target system design and implementation. To allow the reengineering with the infrastructure support, an agile reengineering process has been created. As in software development, a large portion of the reengineering time is spent with VV&T activities. To minimize this problem, a testing reuse approach is proposed in this thesis. This approach aggregates test resources to the patterns of the analysis pattern language allowing reuse, not only of the analysis solutions, but also of the associated test resources. The framework used in software reengineering contributes to its evolution, as the domain to which they belong may evolve, and some of the framework domain requirements might not have been elicited during its development. Thus, in this thesis, a process for application framework evolution is also proposed. The processes and the approach are associated to the infrastructure defined to support its effectiveness. Furthermore, to evaluate the agile reengineering process that provides reuse at several abstraction levels, an experimentation package is also partially defined. Case studies and examples of use have been conducted with the products defined. We stress that other studies have to be done to enable the determination of results with statistical significance.
|