Uma abordagem de reengenharia interativa orientada a características para sistemas embutidos legados

Made available in DSpace on 2016-06-02T19:05:27Z (GMT). No. of bitstreams: 1 1694.pdf: 901058 bytes, checksum: e514a96a13b1c36a4d60a8b5b7008adb (MD5) Previous issue date: 2007-10-28 === To reduce costs, to minimize risks, to anticipate deadlines and to optimize resources of new product designs it...

Full description

Bibliographic Details
Main Author: Ramos, Marcelo Augusto
Other Authors: Penteado, Rosângela Aparecida Dellosso
Format: Others
Language:Portuguese
Published: Universidade Federal de São Carlos 2016
Subjects:
Online Access:https://repositorio.ufscar.br/handle/ufscar/365
Description
Summary:Made available in DSpace on 2016-06-02T19:05:27Z (GMT). No. of bitstreams: 1 1694.pdf: 901058 bytes, checksum: e514a96a13b1c36a4d60a8b5b7008adb (MD5) Previous issue date: 2007-10-28 === To reduce costs, to minimize risks, to anticipate deadlines and to optimize resources of new product designs it is recommended, whenever possible, to reuse artifacts of existing successful similar products. However, these artifacts must be of easy adaptation to meet the requirements of the new products with a few or no need of re-design or re-coding. This work describes a feature oriented iterative reengineering approach to concomitantly achieve both the revitalization of embedded legacy systems and the incremental creation of a core of reusable artifacts, to support the development of other similar systems, members of a product family. Such systems are generally small and pass through frequent maintenances to support the evolution of the hardware they integrate, accelerating the natural software degradation process. The accomplishment of a reengineering process can extend the life cycle of these systems, improving their structural properties for a better adaptation to changes. Agile principles and techniques are applied throughout the process, providing continuous interactions with the customer and deliveries of executable and tested partially modernized versions in short and frequent intervals, with documentation in appropriate level and prepared for future modifications. Software Product Line techniques are used for the domain modeling and for the design of generic software components. Its activities are accomplished without the need of code freezing or duplication and allow maintenances and interruptions at anytime, without prejudice of the enhancements already developed in all previously ended iterations. A case study is presented to exemplify the proposed approach in a real environment and to evaluate its results. === Para reduzir custos, minimizar riscos, antecipar prazos e otimizar recursos de projetos de novos produtos recomenda-se, sempre que possível, a reutilização de artefatos de produtos similares e bem sucedidos existentes. Porém, esses artefatos devem ser de fácil adaptação para que satisfaçam aos requisitos desses novos produtos com pouca ou nenhuma necessidade de re-projeto ou de re-codificação. Este trabalho descreve uma abordagem de reengenharia iterativa orientada a características para realizar concomitantemente a revitalização de sistemas embutidos legados e a criação incremental de um núcleo de artefatos reutilizáveis, para apoiar o desenvolvimento de outros sistemas similares, membros de uma família de produtos. Tais sistemas são geralmente pequenos e sofrem constantes manutenções para apoiarem a evolução do hardware que integram, acelerando o processo natural de degradação do software. A realização de um processo de reengenharia pode prolongar a vida útil desses sistemas, melhorando suas propriedades estruturais para uma melhor adaptação a mudanças. Princípios e técnicas ágeis são aplicados ao longo de todo o processo, provendo interações contínuas com o cliente, entregas de versões executáveis testadas e parcialmente modernizadas em intervalos curtos e freqüentes, com documentação em nível apropriado e preparadas para modificações futuras. Técnicas de Linha de Produtos de Software são utilizadas para a modelagem de domínio e para o projeto de componentes genéricos de software. Suas atividades são realizadas sem a necessidade de congelamentos ou duplicações de código e permitem que manutenções e paralisações ocorram a qualquer instante, sem prejuízo das melhorias já desenvolvidas nas iterações previamente concluídas. Um estudo de caso é apresentado para exemplificar a aplicação da abordagem proposta em um ambiente real e para avaliar os seus resultados.