Article Preview
Top1. Introduction
Today, software engineering targets more quality, efficiency and costs challenges. For this reason software development tends to reuse more than building from scratch. Among the most important reuse disciplines in software development we found software product line (SPL) engineering (Pohl, Bockle, and Van der Linden, 2005) which is a large scale reuse approach aimed at reducing costs and time to market. It consists on developing a common platform for a specific business domain from which applications of this domain can be derived with customization (Clements & Northrop, 2002). To achieve its goal of large scale reuse, a SPL have to be able to support not only actual requirements but also future requirements.
Software product lines are long-living systems and must cope with technology evolution and new business needs. The evolution activity in SPLs is even more complex than evolution of single software. Indeed, the change in a SPL must be propagated in two levels, the platform level and the applications level. However, due to time pressure, developers may implement some changes only in the applications level, especially when the change concerns just one application.
Thereby, if products are changed frequently and independently, the domain platform of the SPL risks to fall into the aging phenomenon coined by coined by Parnas (Parnas, 1994) and instead of having a set of products derived from the same platform, we will have a set of independent applications. For this reason, the change impact analysis in SPL requires greater focus. Recent works on SPL evolution aimed mainly on enhancing the rigor and the reliability of the change impact identification. We separated them into three sets, traceability techniques (Passos et al, 2013) (Jirapanthong & Zismanl, 2009) (Anquetil et al, 2010) (Goknil, Kurtev, Van den Berg & Veldhuisl, 2011), the evolution modeling techniques (Passos et al., 2013) (Urli, Blay-Fornarino, Collet & Mosser, 2012) (Ajila & Kaba, 2008) (Romero et al., 2013), and the assessment techniques (Apel et al., 2013) (Ferreira, Borba, Soares & Gheyi, 2012). These approaches rely essentially on human knowledge and data that have to be manually provided, which is time consuming and error prone in practice.
In this paper we introduce our approach for analyzing co-evolution of the SPL and its products. Co-evolution is a famous principal extensively used in biology (Ehrlich & Raven, 1964) to show how organisms influence each other during their evolution. The co-evolution of hosts-parasites is a famous example from biology: because parasites cause damages to their hosts, hosts develop new capacities to resist to their parasites. However, parasites also develop capacities to overcome this resistance (Anderson & May, 1982). Similarly to biological co-evolution, we intend to study the similarities and the divergences between the platform and the products evolution histories of a SPL in order to detect changes of products that were not propagated to the platform. The aim of this study is to reconsider these changes in the platform and thus protect the latter from the aging phenomenon. The major advantage of the co-evolution analysis is its reliance on the features of the studied organisms instead of human knowledge.
Biological co-evolution analysis consists practically on comparing the evolutionary trees of many populations. An evolutionary tree of a population is a branching diagram showing the inferred evolutionary relationships among its members. Perfect co-evolution of two populations is manifested by perfect similarity of their evolutionary trees which means that the changes of the two populations happened at the same time. Similarly to co-evolution in biology, we will study the co-evolution of many populations of software. Each population is formed by a set of releases of a SPL application. Hence we construct an evolutionary tree for each product and also for the platform, then we compare them in order to find out if there were a shortage in the change impact analysis activity. To fulfill this work we used biological techniques that are cladistics classification (Baxevanis & Ouellette, 2004) and trees reconciliation (Page, 2003).