Typical OO applications implement several functional features that are interwoven into the same class hierarchies. In the absence of aspect-oriented techniques to develop and compose functionalities, developers resort to object-oriented design and programming idioms. Given a legacy OO application, it pays to identify existing functional features to help understand the structure of the application and potentially to extract those features into separate software modules that can be maintained and reused individually.We are interested in the identification of functional features in legacy OO code. We first characterize what we mean by functional feature, and then explore the footprints that such features are likely to exhibit in a legacy application that integrates many of them. We identified three such footprints: 1) aggregation, 2) multiple inheritance, and 3) repetition (ADHOC). We describe a set of algorithms for recognizing such footprints in legacy code, and then present the results of experiments where we applied those algorithms to five open source applications: JHotDraw, FreeMind, JReversePro, JavaWebMail, and Lucene. Our results show that: 1) the different algorithms are able to identify the important functional features/dimensions within an application, 2) they can identify opportunities for reuse and refactoring, 3) they are complementary, and 4) they can serve as the basis for a design aid. We compare our work to related research, and conclude by discussing directions for future research.
Amal Elkharraz, Petko Valtchev and Hafedh Mili, "Concept Analysis as a Framework for Mining Functional Features from Legacy Code," in Formal Concept Analysis, 8th International Conference, ICFCA 2010, Agadir, Morocco, March 15-18, 2010. Proceedings, 2010, pp. 267--282.
Amal Elkharraz, Petko Valtchev and Hafedh Mili, "Concept analysis as a framework for mining functional features from legacy code.," in Proc. of the 8th Intl. Conf. on Formal Concept Analysis (ICFCA'10), 2010, pp. 267-282.
Amal Elkharraz, Petko Valtchev and Hafedh Mili, "Using Concepts Analysis for Mining Functional Features from Legacy Code," in 21st International Conference on Tools with Artificial Intelligence, ICTAI'09, 2009.
Amal Elkharraz, Hafedh Mili and Petko Valtchev, "Mining Functional Aspects From Legacy Code," in Proceedings of the 20th IEEE Intl. Conf. on Tools with Artificial Intelligence (ICTAI’08), Dayton (OH), USA, 2008, pp. 305-312.
Hafedh Mili, Houari A. Sahraoui, Hakim Lounis, Hamid Mcheick and Amal Elkharraz, "Concerned About Separation," in Fundamental Approaches to Software Engineering, 9th International Conference, FASE 2006, Held as Part of the Joint European Conf, 2006, pp. 247--261.
Hafedh Mili, Houari Sahraoui, Hakim Lounis, Hamid Mcheick and Amal Elkharraz, "A Hierarchical Task Network Planning Approch for Optimizing Energy Production," in the 9th International Conference on Fundamental Approaches to Software Engineering FASE 2006, Vienne, Autriche, 2006.
Hamid Mcheick, Hafedh Mili, Amal Elkharraz and Salah Sadou, "A comparison of aspect oriented software development techniques for distributed applications," UQÀM, Rapport Technique LATECE, 2005.
Hafedh Mili, Amal Elkharraz and Hamid Mcheick, "Understanding separation of concerns," in 'atelier Early Aspects, de la conférence Aspect Oriented Software Development (AOSD'04), Lancaster, Raoyaume-Uni, 2004.
The separation of concerns, as a conceptual tool, enables us to manage the complexity of the software systems that we develop. Such was the intent behind the OORAM [Reenskaugh et al., 1995]. When the idea is taken further to software packaging, greater reuse and maintainability are achieved. There have been a number of approaches aimed at modularizing software around the natural boundaries of the various concerns, including subject oriented programming [Harrison & Ossher, 93], composition filters [Aksit & Bergmans, 1992], aspect-oriented programming [Kiczales et al., 97], our own view-oriented programming [Mili et al., 99-02], and many others. The growing body of experiences in using separation of concerns techniques have identified a number of issues, both fundamental ones (what is an aspect, what is a concern, which concerns are separable, which aspects are composable) as well as technical ones (how to use a particular technique to solve a particular problem). Rather than focussing on the mechanics—and semantics—of aspect-oriented software development methods, we should really focus on the semantics of separation of concerns. What is it that we are trying to separate, and which concerns are even separable, before we worry about how to compose the artifacts that address them. We propose a conceptual framework based on a transformational view of software development. In particular, we distinguish between essential separability and inseparability, which characterize requirements, from accidental separability and inseparability, which characterize the realizations of those requirements.