33 research outputs found

    Método de extração de linha de produtos de software baseado em testes

    No full text
    Many software systems have been developed as single products before Software Product Lines (SPLs) have emerged. Although some promising approaches have been proposed, extracting an SPL from existing software products is still expensive and time consuming. This work presents a method to extract an SPL from single products that relies on software testing already developed. We evaluate testing as the main mean to locate feature code and different sorts of existing artifacts to support the test-based location. We conduct three case studies starting from the derivation of the SPL feature model to the feature code location. Our results indicate (i) interesting rates of precision for feature seed location, where seed means a small portion of the feature code that allows the identification of the remaining portion, and (ii) good rates of recall for locating the whole feature code.Muitos sistemas de software foram desenvolvidas como produtos individuais antes da abordagem de Linha de Produtos de Software (LPS) emergir. Embora algumas abordagens promissoras foram propostas, extrair uma LPS de produtos de software existentes ainda e caro e demorado. Este trabalho apresenta um metodo para extrair uma LPS a partir de produtos unicos que se baseia em testes de software ja desenvolvidos. Nos avaliamos testes como o principal meio para localizar codigo de caracteristicas e diferentes tipos de artefatos existentes para apoiar a tecnica de localizacao baseada em testes. Realizou-se tres estudos de caso iniciando a partir da derivacao do modelo de caracteristicas da LPS ate a localizacao do codigo das caracteristicas. Os nossos resultados indicaram (i) interessantes indices de precisao de localizacao de sementes das caracteristicas, semente e uma pequena porcao do codigo de caracteristica que permite a identificacao da porcao restante, e (ii) boas taxas de cobertura para localizar o codigo completo da caracteristica

    Investigating feature-oriented software comprehension

    No full text
    Atualmente, uma gama de técnicas e ferramentas para a implementação de variabilidade estão disponíveis e vem gradualmente sendo utilizadas para o desenvolvimento de sistemas de software grandes e complexos. Algumas delas alcançaram um alto nível de popularidade na indústria, como a compilação condicional, outras ainda residem o ambiente acadêmico, como Programação Orientada à Características (FOP). Pesquisadores têm investigado as limitações de cada uma delas em busca de facilitar a adoção e de seu uso. No entanto, ainda não existe apoio à implementação de variabilidade em alguns domínios –e.g., sistemas baseados em JavaScript– soma-se a isto a falta de evidências sobre o impacto das differenças e similaridades de tais técnicas na compreensão dos pro- gramas escritos e consequentemente no esforço que estas demandam dos desenvolvedores para a conclusão de suas tarefas de manutenção. Esta tese contribui em ambas direções. Primeiro, apresentamos uma estratégia para engenharia de linhas de produtos baseada em composição híbrida (RiPLE-HC). Híbrida pois mescla abordagens composicionais e anotativas para implementar variabilidade. Se- gundo, construímos um corpo de evidências sobre compreensão de programas com vari- abilidade, incluindo fatores que facilitam e dificultam a compreensão de sistemas equanto utilizando-se de técnicas representativas de ambos os grupos, o popular e o emergente. Na primeira direção, conduziu-se estudos preliminares da viabilidade e scalabilidade da abordagem RiPLE-HC, tanto no ambiente industrial quanto acadêmico. Na segunda direção, conduziu-se uma família de experimentos – chamada de Compreensão da Com- preensão da Implementação de Variabilidade (VICC). Considerou-se tanto estudos quan- titativos quanto qualitativos na família VICC, à saber três quasi-experimentos (VICC1- 3) e um grupo focal (VICC4). Os estudos VICC consideram duas linguages de progra- mação (Java e JavaScript) e uma representação de variabilidade representativa dentre as baseadas em anotação e composição para o desenvolvimento de software orientado à caracteristicas (FOSD). VICC1 utilizou-se de tarefas de localização de interesses, en- quanto VICC2 e VICC3 utilizaram-se de tarefas de correção de problemas, e VICC4 buscou identificar fatores de influência na comprehensão de programas. Embora os participantes do grupo focal tenham destacado os benefícios da FOP para manutenção, os quasi-experimentos não produziram evidencias estatísticas significativas destas vantagens para quaisquer das representações de variabilidade equanto os partici- pantes executavam tarefas de manutenção. Adicionalmente, encontrou-se que que engen- heiros de software podem perceber o efeito de parâmetros de confusão de forma diferente dependendo da representação de variabilidade utilizada.A number of techniques and tools to handle variability are available and they have been increasingly applied in the development of large and complex software systems. Some of them have reached high levels of popularity in industry, such as conditional compilation, whereas some are mostly known in academia, such as Feature-Oriented Programming (FOP). Researchers have addressed the existing drawbacks of both in order to improve adoption and ease their use. However, there is still a lack of support to variability implementation in some domains – e.g., JavaScript -based systems – and also a lack of understanding of the impact of the different ways to implement variability on program comprehension and consequently on the effort they demand from developers, so they could successfully accomplish the assigned maintenance tasks. This thesis contributes in both facets. First, we present the RiSE Product Lines En- gineering approach based on Hybrid Composition (RiPLE-HC) to implement variability in JavaScript-based systems. By hybrid composition, we mean the blending of com- positional and annotative approaches to implement variability. Second, we built an evi- dence corpus on program comprehension in the presence of variability, including factors easing and hindering program comprehension in software systems using representative approaches from both groups of techniques, the popular and the emerging ones. In the first facet, we carried out a preliminary evaluation of the viability and scalabil- ity of the RiPLE-HC approach both, in industry and academic settings. In the second facet, we carried out a family of experiments – named Variability Implementation Com- prehension Comprehension (VICC). We considered quantitative and qualitative stud- ies in the VICC family, namely three quasi-experiments (VICC1-3) and a focus group (VICC4). VICC studies considered two programming languages (Java and JavaScript) and a representative variability representation representing either the annotative or the compositional approaches for Feature-Oriented Software Development (FOSD). VICC1 addressed the concept location tasks, while VICC2 and VICC3 addressed bug-fixing tasks, and VICC4 addressed the influence factors on program comprehension. Although the participants of the focus group highlighted the benefits of the FOP for maintenance, the quasi-experiments yielded no significant statistical difference regardless of the variability representation while addressing maintenance tasks. Additionally, we found that software engineers may perceive confounding parameters differently depending on the used variability representationFundação de Amparo à Pesquisa da Bahia (Fapesb

    RiPLE-HC: JavaScript Systems Meets SPL Composition

    Get PDF
    Context. Software Product Lines (SPL) engineering is increasingly being applied to handle variability in industrial software systems. Problem. The research community has pointed out a series of benefits which modularity brings to software composition, a key aspect in SPL engineering. However, in practice, the reuse in Javascript-based systems relies on the use of package managers (e.g., npm, jam, bower, requireJS), but these approaches do not allow the management of project features. Method. This paper presents the RiPLE-HC, a strategy aimed at blending compositional and annotative approaches to implement variability in Javascript-based systems. Results. We applied the approach in an industrial environment and conducted an academic case study with six open-source systems to evaluate its robustness and scalability. Additionally, we carried a controlled experiment to analyze the impact of the RiPLE-HC code organization on the feature location maintenance tasks. Conclusion. The empirical evaluations yielded evidence of reduced effort in feature location, and positive benefits when introducing systematic reuse aspects in Javascript-based systems.Chin

    A Vision on Open Science for the Evolution of Software Engineering Research and Practice

    Get PDF
    Open Science aims to foster openness and collaboration in research, leading to more significant scientific and social impact. However, practicing Open Science comes with several challenges and is currently not properly rewarded. In this paper, we share our vision for addressing those challenges through a conceptual framework that connects essential building blocks for a change in the Software Engineering community, both culturally and technically. The idea behind this framework is that Open Science is treated as a first-class requirement for better Software Engineering research, practice, recognition, and relevant social impact. There is a long road for us, as a community, to truly embrace and gain from the benefits of Open Science. Nevertheless, we shed light on the directions for promoting the necessary culture shift and empowering the Software Engineering community.</p

    Evaluating Lehman’s Laws of Software Evolution within Software Product Lines Industrial Projects

    Get PDF
    The evolution of a single system is a task where we deal with the modification of a single product. Lehman’s Laws of software evolution were broadly evaluated within this type of system and the results shown that these single systems evolve according to his stated laws over time. However, considering Software Product Lines (SPL), we need to deal with the modification of several products which include common, variable, and product specific assets. Because of the several assets within SPL, each stated law may have a different behavior for each asset kind. Nonetheless, we do not know if all of the stated laws are still valid for SPL since they were partially evaluated in this context. Thus, this paper details an empirical investigation where Lehman’s Laws (LL) of Software Evolution were used in two SPL industrial projects to understand how the SPL assets evolve over time. These projects are related to an application in the medical domain and another in the financial domain, developed by medium-size companies in Brazil. They contain a total of 71 modules and a total of 71.442 bug requests in their tracking system, gathered along the total of more than 10 years. We employed two techniques - the KPSS Test and linear regression analysis, to assess the relationship between LL and SPL assets. Results showed that one law was completely supported (conservation of organizational stability) for all assets within both empirical studies. Two laws were partially supported for both studies depending on the asset type (continuous growth and conservation of familiarity). Finally, the remaining laws had differences among their results for all assets (continuous change, increasing complexity, and declining quality).Journal of Systems and Softwar
    corecore