UNIVERSITE´ DE MONTREAL´ CONTEXT-AWARE SOURCE CODE IDENTIFIER SPLITTING AND EXPANSION FOR SOFTWARE MAINTENANCE LATIFA GUERROUJ DEPARTEMENT´ DE GENIE´ INFORMATIQUE ET GENIE´ LOGICIEL ECOLE´ POLYTECHNIQUE DE MONTREAL´ THESE` PRESENT´ EE´ EN VUE DE L'OBTENTION DU DIPLOME^ DE PHILOSOPHIÆ DOCTOR (GENIE´ INFORMATIQUE) AOUT^ 2013 ⃝c Latifa Guerrouj, 2013. UNIVERSITE´ DE MONTREAL´ ECOLE´ POLYTECHNIQUE DE MONTREAL´ Cette th`ese intitul´ee: CONTEXT-AWARE SOURCE CODE IDENTIFIER SPLITTING AND EXPANSION FOR SOFTWARE MAINTENANCE pr´esent´eepar: GUERROUJ Latifa en vue de l'obtention du dipl^ome de: Philosophiæ Doctor a ´et´ed^ument accept´eepar le jury d'examen constitu´ede: Mme BOUCHENEB Hanifa, Doctorat, pr´esidente M. ANTONIOL Giuliano, Ph.D., membre et directeur de recherche M. GUEH´ ENEUC´ Yann-Ga¨el, Doct., membre et codirecteur de recherche M. DESMARAIS Michel C., Ph.D., membre Mme LAWRIE Dawn J., Ph.D., membre iii This dissertation is dedicated to my parents. For their endless love, support and encouragement. iv ACKNOWLEDGMENTS I am very grateful to both Giulio and Yann for their support, encouragement, and intel- lectual input. I worked with you for four years or even less, but what I learned from you will last forever. Giulio, your passion about research was a source of inspiration and motivation for me. Also, your mentoring and support have been instrumental in achieving my goals. Yann, your enthusiasm and guidance have always been a strength for me to keep moving forward. Research would not be as much fun without students and researchers to collaborate with. It has been a real pleasure and great privilege working with Massimiliano Di Penta (University of Sannio), Denys Poshyvanyk (College of William and Mary), and their teams. In particular, I would like to thank Max for being always available to provide help and excellent advice and for hosting me in Europe and sharing with me not only the research expertise but also a joyful time and fun. Many thanks also to Denys and his wonderful team for all the great collaborations we achieved together. Thanks to all present and past SOCCER and Ptidej groups' members, in particular, Foutse Khomh and Bram Adams, for their help, relevant opinions and especially their en- couragements during all the past years of my Ph.D., and to all my friends who inspired me along the way and never hesitated to share ideas and fun. I would also like to thank my professors at Ecole´ Polytechnique de Montr´eal, the department of Software Engineering and Computer Science (DGIGL), and all the people that helped in the administrative process of this thesis. I am very thankful to Radouane Mrabet and Line Dub´ewho always believed in me and gave me excellent advice. And a heartfelt thank to my Mother and Father, who instilled the following in me as a child: an achievement is an achievement when mind, heart and principles agree. The most important thanks goes to my family. My two little nephews: Amine and Omar, and beautiful niece: kawtar. Thanks for your innocent smiles that were my source of motivation in the hard time. You always tried to call at just the right time. To all my friends, students and beloved, thank you for your friendship, love, and appre- ciation. I can not list all your names here but you know well that you are always in my mind. Finally, I would like to gratefully thanks the jury members who accepted to evaluate this thesis. v RESUM´ E´ La compr´ehension du code source des programmes logiciels est une ´etape n´ecessaire pour plusieurs t^aches de compr´ehension de programmes, r´etro-ing´enierie, ou re-documentation. Dans le code source, les informations textuelles telles que les identifiants et les commentaires repr´esentent une source d'information importante. Le probl`eme d'extraction et d'analyse des informations textuelles utilis´eesdans les arte- facts logiciels n'a ´et´ereconnu par la communaut´edu g´enie logiciel que r´ecemment. Des m´ethodes de recherche d'information ont ´et´epropos´eespour aider les t^aches de compr´ehen- sion de programmes telles que la localisation des concepts et la tra¸cabilit´edes exigences au code source. Afin de mieux tirer b´en´efice des approches bas´eessur la recherche d'information, le langage utilis´eau niveau de tous les artefacts logiciels doit ^etre le m^eme. Ceci est d^uau fait que les requ^etes de la recherche d'information ne peuvent pas retourner des documents pertinents si le vocabulaire utilis´edans les requ^etes contient des mots qui ne figurent pas au niveau du vocabulaire du code source. Malheureusement, le code source contient une proportion ´elev´ee de mots qui ne sont pas significatifs, e.g., abr´eviations, acronymes, ou con- cat´enation de ces types. En effet, le code source utilise un langage diff´erent de celui des autres artefacts logiciels. Cette discordance de vocabulaire provient de l'hypoth`eseimplicite faite par les techniques de recherche de l'information et du traitement de langage naturel qui supposent l'utilisation du m^eme vocabulaire. Ainsi, la normalisation du vocabulaire du code source est un grand d´efi. La normalisation aligne le vocabulaire utilis´edans le code source des syst`emes logiciels avec celui des autres artefacts logiciels. La normalisation consiste `ad´ecomposer les identifi- ants (i.e., noms de classes, m´ethodes, variables, attributs, param`etres, etc.) en termes et `a ´etendre ces termes aux concepts (i.e., mots d'un dictionnaire sp´ecifique) correspondants. Dans cette th`ese,nous proposons deux contributions `ala normalisation avec deux nou- velles approches contextuelles : TIDIER et TRIS. Nous prenons en compte le contexte car nos ´etudes exp´erimentales ont montr´el'importance des informations contextuelles pour la normalisation du vocabulaire du code source. En effet, nous avons effectu´edeux ´etudes ex- p´erimentales avec des ´etudiants de baccalaur´eat, ma^ıtrise et doctorat ainsi que des stagiaires post-doctoraux. Nous avons choisi al´eatoirement un ensemble d'identifiants `apartir d'un corpus de syst`emes ´ecrits en C et nous avons demand´eaux participants de les normaliser en utilisant diff´erents niveaux de contexte. En particulier, nous avons consid´er´eun contexte interne qui consiste en le contenu des fonctions, fichiers et syst`emes contenant les identifiants ainsi qu'un niveau externe sous forme de documentation externe. Les r´esultats montrent vi l'importance des informations contextuelles pour la normalisation. Ils r´ev`elent ´egalement que les fichiers de code source sont plus utiles que les fonctions et que le contexte construit au niveau des syst`emes logiciels n'apporte pas plus d'am´elioration que celle obtenue avec le contexte construit au niveau des fichiers. La documentation externe, par contre, aide parfois. En r´esum´e,les r´esultats confirment notre hypoth`esesur l'importance du contexte pour la compr´ehension de programmes logiciels en g´en´eral et la normalisation du vocabulaire utilis´e dans le code source syst`emes logiciels en particulier. Ainsi, nous proposons une approche contextuelle TIDIER, inspir´ee par les techniques de la reconnaissance de la parole et utilisant le contexte sous forme de dictionnaires sp´ecialis´es(i.e., contenant des acronymes, abr´eviations et termes sp´ecifiques au domaine des syst`eme logiciels). TIDIER est plus pr´eformante que les approches qui la pr´ec´edent (i.e., CamelCase et samurai). Sp´ecifiquement, TIDIER atteint 54% de pr´ecision en termes de d´ecomposition des identifiants lors de l'utilisation un dictionnaire construit au niveau du syst`eme logiciel en question et enrichi par la connaissance du domaine. CamelCase et Samurai atteint seulement 30% et 31% en termes de pr´ecision, respectivement. En outre, TIDIER est la premi`ere approche qui met en correspondance les termes abr´eg´esavec les concepts qui leurs correspondent avec une pr´ecision de 48% pour un ensemble de 73 abr´eviations. La limitation principale de TIDIER est sa complexit´ecubique qui nous a motiv´e`apro- poser une solution plus rapide mais tout aussi performante, nomm´eeTRIS. TRIS est inspir´ee par TIDIER, certes elle traite le probl`eme de la normalisation diff´eremment. En effet, elle le consid`ere comme un probl`eme d'optimisation (minimisation) dont le but est de trouver le chemin le plus court (i.e., d´ecomposition et extension optimales) dans un graphe acyclique. En outre, elle utilise la fr´equence des termes comme contexte local afin de d´eterminer la nor- malisation la plus probable. TRIS est plus performante que CamelCase, Samurai et TIDIER, en termes de pr´ecision et de rappel, pour des syst`emes logiciels ´ecrits en C et C++. Aussi, elle fait mieux que GenTest de 4% en termes d'exactitude de d´ecomposition d'identifiants. L'am´elioration apport´ee par rapport `aGenTest n'est cependant pas statistiquement significa- tive. TRIS utilise une repr´esentation bas´ee sur une arborescence qui r´eduit consid´erablement sa complexit´eet la rend plus efficace en terme de temps de calcul. Ainsi, TRIS produit rapide- ment une normalisation optimale en utilisant un algorithme ayant une complexit´equadratique en la longueur de l'identifiant `anormaliser. Ayant d´evelopp´edes approches contextuelles pour la normalisation, nous analysons alors son impact sur deux t^aches de maintenance logicielle bas´ees sur la recherche d'information, `asavoir, la tra¸cabilit´edes exigences au code source et la localisation des concepts. Nous ´etudions l'effet de trois strat´egies de normalisation : CamelCase, Samurai et l'oracle sur deux techniques de localisation des concepts. La premi`ere est bas´eesur les informations textuelles vii seulement, quant `ala deuxi`eme, elle combine les informations textuelles et dynamiques (traces d'ex´ecution).
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages179 Page
-
File Size-