Resumo: Gerenciamento de variabilidade (GV) possibilita adaptação de sistemas de software para contextos específicos de uma forma pré-planejada, lidando com semelhanças e variabilidade desses sistemas. GV tem sido considerada em vários tópicos de pesquisa e foi consolidada principalmente na área de Linha de Produto de Software (LPS). Várias ferramentas de variabilidade de software têm sido propostas com o objetivo de apoiar empresas na customização de novos produtos de software. Nota-se que a indústria tem adotado diferentes estratégias para gerenciar variabilidades, inclusive produzir suas próprias soluções resultando em sobreposição parcial de funcionalidades dessas ferramentas; além de subutilização das capacidades de tais ferramentas. Por exemplo, as atividades de modelar variabilidades são executadas em ferramentas de variabilidade de software e em editores de texto, tornando o GV inconsistente. Além disso, as soluções proprietárias mais conhecidas alavancam os custos de uso e adoção dessas ferramentas. A padronização de ferramentas de variabilidade de software é necessária, pois permite que empresas desenvolvam suas próprias ferramentas por meio de técnicas documentadas e testadas. Além disso, permite manter a consistência na terminologia usada com base no padrão proposto, aumentando a reusabilidade e convergindo para um conhecimento sólido sobre GV. Iniciativas para padronizar o GV em LPS foram estabelecidas como as normas ISO/IEC 26550 e ISO/IEC 26555, que fornecem modelos de referência e processos que envolvem LPS e GV. No entanto, modelos de referência são altamente abstratos e geralmente não estão diretamente ligado às práticas de implementação. Em outra perspectiva, arquitetura de referência é um tipo especial de arquitetura de software e reúne conhecimento de domínios específicos, facilitando o desenvolvimento, padronização e evolução de sistemas de software. Para mitigar a necessidade de um padrão para ferramentas de variabilidade de software pode-se adotar tal conceito. Portanto, o objetivo deste trabalho é especificar uma arquitetura de referência para ferramentas de variabilidade de software. Assim, o principal resultado é o estabelecimento da VMTools-RA, uma arquitetura de referência que reúne o conhecimento e a experiência de GV fornecendo mais confiança na tecnologia, evolução e reuso. Para tanto, foi utilizado o processo ProSA-RA, que sistematiza o projeto, representação e avaliação de arquiteturas de referência. Tal proposta foi avaliada por meio de um estudo qualitativo utilizando um checklist, e por um exemplo de aplicação com a instanciação arquitetural de uma ferramenta de variabilidade de software baseada na VMTools-RA. Os resultados empíricos preliminares fornecem indícios de que a VMTools-RA é uma arquitetura de referência viável para o desenvolvimento de novas ferramentas de variabilidade de software.
Abstract: Variability Management (VM) makes it possible to easily adapt software systems for specific contexts in a preplanned manner, dealing with commonalities and variabilities of these systems. VM has been considered in several research topics and was mainly consolidated by the Software Product Line (SPL) area. A diversity of software variability tools has been proposed to support companies in the customization of new software products. It is observed industry has adopted different strategies to manage variabilities, including produce its own solutions resulting in partially overlapped of functionality of such tools; as well as underutilization of such solutions without using all of the tools capacities. For example, the variability model activities are performed in software variability tools and text editors, resulting in inconsistencies in the VM activity. Furthermore, the most known proprietary solutions leverage the costs to use and adopt such VM tools. The standardization of software variability tools is necessary, because it allows companies to develop their own tools through documented and tested techniques. Besides, it allows to maintain consistency in the terminology used based on the proposed standard, increasing the reuse, and converging to a solid knowledge about VM. Standardization efforts for VM in the SPL context have been established, such as ISO / IEC 26550 and ISO / IEC 26555 standards, which provide reference models and processes involving SPL and VM. However, reference models are highly abstract and they are not usually directly connected to implementation practices. In another perspective, reference architecture is a special type of software architecture and gathers knowledge from specific domains, facilitating the development, standardization, and evolution of software systems. To mitigate the standard necessity for software variability tools the concept of reference architecture can be adopted. Therefore, the purpose of this work is to specify a reference architecture to software variability tools. Hence, the main result is the establishment of VMTools-RA, a reference architecture that combines knowledge and experience in VM providing more confidence in the technology, evolution, and reuse. Therefore, we used the ProSA-RA process, which systematizes the project, representation, and evaluation of reference architectures. Such proposal was evaluated by a qualitative study using a checklist, and with a sample application by instantiating a software variability tool based on the VMTools-RA. The preliminary empirical results provide evidences that VMTools-RA is a viable reference architecture for developing new software variability tools. |