On Computing the Canonical Features of Software Systems

Software applications typically have many features that vary in their similarity. We define a measurement of similarity between pairs of features based on their underlying implementations and use this measurement to compute a set of canonical features. The canonical features set (CFS) consists of a small number of features that are as dissimilar as possible to each other, yet are most representative of the features that are not in the CFS. The members of the CFS are distinguishing features and understanding their implementation provides the engineer with an overview of the system undergoing scrutiny. The members of the CFS can also be used as cluster centroids to partition the entire set of features. Partitioning the set of features can simplify the understanding of large and complex software systems. Additionally, when a specific feature must undergo maintenance, it is helpful to know which features are most closely related to it. We demonstrate the utility of our method through the analysis of the Jext, Firefox, and Gaim software systems

[1]  T. Motzkin,et al.  Maxima for Graphs and a New Proof of a Theorem of Turán , 1965, Canadian Journal of Mathematics.

[2]  Kaleem Siddiqi,et al.  Matching Hierarchical Structures Using Association Graphs , 1999, IEEE Trans. Pattern Anal. Mach. Intell..

[3]  Ali Shokoufandeh,et al.  Studying the Evolution of Software Systems Using Change Clusters , 2006, 14th IEEE International Conference on Program Comprehension (ICPC'06).

[4]  Ali Shokoufandeh,et al.  Scenariographer: a tool for reverse engineering class usage scenarios from method invocation sequences , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[5]  Spiros Mancoridis,et al.  A hierarchy of dynamic software views: from object-interactions to feature-interactions , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[6]  Ali Shokoufandeh,et al.  Stable Bounded Canonical Sets and Image Matching , 2005, EMMCVPR.

[7]  David S. Johnson,et al.  Computers and Intractability: A Guide to the Theory of NP-Completeness , 1978 .

[8]  Harald C. Gall,et al.  System evolution tracking through execution trace analysis , 2005, 13th International Workshop on Program Comprehension (IWPC'05).

[9]  Rainer Koschke,et al.  Locating Features in Source Code , 2003, IEEE Trans. Software Eng..

[10]  Alexander E. Quilici,et al.  Proceedings on the 5th working conference on reverse engineering , 1998 .

[11]  David Notkin,et al.  Software reflexion models: bridging the gap between source and high-level models , 1995, SIGSOFT FSE.

[12]  Rainer Koschke,et al.  Aiding program comprehension by static and dynamic feature analysis , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[13]  Bin Luo,et al.  A framework for dynamic program analyzers , 1993, OOPSLA '93.

[14]  David Notkin,et al.  Software Reflexion Models: Bridging the Gap between Design and Implementation , 2001, IEEE Trans. Software Eng..

[15]  Giuliano Antoniol,et al.  Towards employing use-cases and dynamic analysis to comprehend Mozilla , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).