Abstract-A model based on graph isomorphisms is used to formalize software evolution.Step by step we narrow the search space by an informed selection of the attributes based on the current state-of-the-art in software engineering and generate a seed solution. We then traverse the resulting space using graph isomorphisms and other set operations over the vertex sets. The new solutions will preserve the desired attributes. The goal of defining an isomorphism based search mechanism is to construct predictors of evolution that can facilitate the automation of 'software factory' paradigm. The model allows for automation via software tools implementing the concepts.Index Terms-Software evolution, software engineering, software architecture, software process.
I. INTRODUCTIONWe are living in the age of the perpetual beta for a reason: software evolves. Software needs to be constantly updated due to technological, organisational, unforeseen circumstances and fast changes in the existing environment [1]. The relevance of software evolution has only amplified in recent times since the ubiquity of software in diverse application areas, and their complexity, has increased dramatically [2].Software evolution is a multi-faceted problem domain. Methods for software evolution vary and are approached from several perspectives: understanding, modelling, predicting, controlling, automating, visualizing, improving etc., [3]. Many approaches are semi-formal taking domain expertise into account and pro-pose frameworks that address a particular facet of evolution. Even with this single facet scenario cross-cutting concerns may imply that multiple elements of a complex software sys-tem may need to be modified in order to evolve the software to new requirements. Two main problems are faced in evolution: 1) combinatorial search space of possible solutions and 2) risk of introducing inconsistencies if done manually for lack of automated tool support. To address these two main concerns, constructing rigorous software evolution model has gained significant attention in recent research efforts and isrecognised as a significant research challenge [4].Graph based analysis of software systems to aid software evolution is one of the rigorous approaches that has seen a resurgence. Topological analysis of graphs has been applied for analysing complex systems in many areas and such analysis is seen to be relevant to capture useful properties to aid software evolution. For instance in a recent work graph based techniques are used to infer structural changes and to also predict defects in releases [5]. Other works such as apply program dependence graph techniques [6], or use hyper-graphs as the basis for the formalisation to model transmission of attributes in each evolutionary step [7].In our work we are aiming to build a general framework to capture evolution in emerging trends such as software factory paradigm [8] where the artefact under consideration is not just a source code or a single software instance but a collection of assets and a family o...