A process is proposed to support comprehension of COTS components. In this process, software developers build a COTS comprehension model to support component selection. We integrate the process with a UML component based software development approach. We illustrate our approach using a hotel reservation system.
{"title":"A COTS component comprehension process","authors":"A. Andrews, A. Stefik, Nina Picone, Sudipto Ghosh","doi":"10.1109/WPC.2005.1","DOIUrl":"https://doi.org/10.1109/WPC.2005.1","url":null,"abstract":"A process is proposed to support comprehension of COTS components. In this process, software developers build a COTS comprehension model to support component selection. We integrate the process with a UML component based software development approach. We illustrate our approach using a hotel reservation system.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"62 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-05-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132397505","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Applications built in a strongly decoupled, event-based interaction style have many commendable characteristics, including ease of dynamic configuration, accommodation of platform heterogeneity, and ease of distribution over a network. It is not always easy, however, to humanly grasp the dynamic behavior of such applications, since many threads are active and events are asynchronously (and profusely) transmitted. This paper presents a novel, complete approach that aids in the understanding, debugging, and visualization of the behaviors of event-based applications. It applies to real, implemented systems, without requiring the presence of component source code, and supports partial or incomplete, heuristic behavior specifications. A prototype implementation of our approach was applied to two systems, including the prototype itself, indicating that our approach is feasible, scalable, and shows promising results in terms of increasing the understandability of these types of systems.
{"title":"An (architecture-centric) approach for tracing, organizing, and understanding events in event-based software architectures","authors":"Scott A. Hendrickson, Eric M. Dashofy, R. Taylor","doi":"10.1109/WPC.2005.6","DOIUrl":"https://doi.org/10.1109/WPC.2005.6","url":null,"abstract":"Applications built in a strongly decoupled, event-based interaction style have many commendable characteristics, including ease of dynamic configuration, accommodation of platform heterogeneity, and ease of distribution over a network. It is not always easy, however, to humanly grasp the dynamic behavior of such applications, since many threads are active and events are asynchronously (and profusely) transmitted. This paper presents a novel, complete approach that aids in the understanding, debugging, and visualization of the behaviors of event-based applications. It applies to real, implemented systems, without requiring the presence of component source code, and supports partial or incomplete, heuristic behavior specifications. A prototype implementation of our approach was applied to two systems, including the prototype itself, indicating that our approach is feasible, scalable, and shows promising results in terms of increasing the understandability of these types of systems.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"29 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-05-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125693880","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Comprehension is a key activity that underpins a variety of software maintenance and engineering tasks. The task of understanding object-oriented systems is hampered by the fact that the code segments that are related to a user-level function tend to be distributed across the system. We introduce a tool-supported code extraction technique that addresses this issue. Given a minimal amount of information about a behavioural element of the system that is of interest (such as a use-case), it extracts a trail of the methods (and method invocations) through the system that are needed in order to achieve an understanding of the implementation of the element of interest. We demonstrate the feasibility of our approach by implementing it as part of a code extraction tool, presenting a case study and evaluating the approach and tool against a set of established criteria for program comprehension tools.
{"title":"Understanding object-oriented source code from the behavioural perspective","authors":"Neil Walkinshaw, M. Roper, M. Wood","doi":"10.1109/WPC.2005.44","DOIUrl":"https://doi.org/10.1109/WPC.2005.44","url":null,"abstract":"Comprehension is a key activity that underpins a variety of software maintenance and engineering tasks. The task of understanding object-oriented systems is hampered by the fact that the code segments that are related to a user-level function tend to be distributed across the system. We introduce a tool-supported code extraction technique that addresses this issue. Given a minimal amount of information about a behavioural element of the system that is of interest (such as a use-case), it extracts a trail of the methods (and method invocations) through the system that are needed in order to achieve an understanding of the implementation of the element of interest. We demonstrate the feasibility of our approach by implementing it as part of a code extraction tool, presenting a case study and evaluating the approach and tool against a set of established criteria for program comprehension tools.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"12 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-05-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124204005","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
M. Ceccato, M. Marin, K. Mens, L. Moonen, P. Tonella, T. Tourwé
The fact that crosscutting concerns (aspects) cannot be well modularized in object oriented software is an impediment to program comprehension: the implementation of a concern is typically scattered over many locations and tangled with the implementation of other concerns, resulting in a system that is hard to explore and understand. Aspect mining aims to identify crosscutting concerns in a system, thereby improving the system's comprehensibility and enabling migration of existing (object-oriented) programs to aspect-oriented ones. In this paper, we compare three aspect mining techniques that were developed independently by different research teams: fan-in analysis, identifier analysis and dynamic analysis. We apply each technique to the same case (JHotDraw) and mutually compare the individual results of each technique based on the discovered aspects and on the level of detail and quality of those aspects. Strengths, weaknesses and underlying assumptions of each technique are discussed, as well as their complementarity. We conclude with a discussion of possible ways to combine the techniques in order to achieve a better overall aspect-mining technique.
{"title":"A qualitative comparison of three aspect mining techniques","authors":"M. Ceccato, M. Marin, K. Mens, L. Moonen, P. Tonella, T. Tourwé","doi":"10.1109/WPC.2005.2","DOIUrl":"https://doi.org/10.1109/WPC.2005.2","url":null,"abstract":"The fact that crosscutting concerns (aspects) cannot be well modularized in object oriented software is an impediment to program comprehension: the implementation of a concern is typically scattered over many locations and tangled with the implementation of other concerns, resulting in a system that is hard to explore and understand. Aspect mining aims to identify crosscutting concerns in a system, thereby improving the system's comprehensibility and enabling migration of existing (object-oriented) programs to aspect-oriented ones. In this paper, we compare three aspect mining techniques that were developed independently by different research teams: fan-in analysis, identifier analysis and dynamic analysis. We apply each technique to the same case (JHotDraw) and mutually compare the individual results of each technique based on the discovered aspects and on the level of detail and quality of those aspects. Strengths, weaknesses and underlying assumptions of each technique are discussed, as well as their complementarity. We conclude with a discussion of possible ways to combine the techniques in order to achieve a better overall aspect-mining technique.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-05-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133582296","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
M. Fischer, Johann Oberleitner, H. Gall, T. Gschwind
Execution traces produced from instrumented code reflect a system's actual implementation. This information can be used to recover interaction patterns between different entities such as methods, files, or modules. Some solutions for the detection of patterns and their visualization exist, but are limited to small amounts of data and are incapable of comparing data from different versions of a large software system. In this paper, we propose a methodology to analyze and compare the execution traces of different versions of a software system to provide insights into its evolution. We recover high-level module views that facilitate the comprehension of each module's evolution. Our methodology allows us to track the evolution of particular modules and present the findings in three different kinds of visualizations. Based on these graphical representations, the evolution of the concerned modules can be tracked and comprehended much more effectively. Our EvoTrace approach uses standard database technology and instrumentation facilities of development tools, so exchanging data with other analysis tools is facilitated. Further, we show the applicability of our approach using the Mozilla open source system consisting of about 2 million lines of C/C++ code.
{"title":"System evolution tracking through execution trace analysis","authors":"M. Fischer, Johann Oberleitner, H. Gall, T. Gschwind","doi":"10.1109/WPC.2005.35","DOIUrl":"https://doi.org/10.1109/WPC.2005.35","url":null,"abstract":"Execution traces produced from instrumented code reflect a system's actual implementation. This information can be used to recover interaction patterns between different entities such as methods, files, or modules. Some solutions for the detection of patterns and their visualization exist, but are limited to small amounts of data and are incapable of comparing data from different versions of a large software system. In this paper, we propose a methodology to analyze and compare the execution traces of different versions of a software system to provide insights into its evolution. We recover high-level module views that facilitate the comprehension of each module's evolution. Our methodology allows us to track the evolution of particular modules and present the findings in three different kinds of visualizations. Based on these graphical representations, the evolution of the concerned modules can be tracked and comprehended much more effectively. Our EvoTrace approach uses standard database technology and instrumentation facilities of development tools, so exchanging data with other analysis tools is facilitated. Further, we show the applicability of our approach using the Mozilla open source system consisting of about 2 million lines of C/C++ code.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-05-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114290984","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Previous studies have shown that novices do not tend to extract or use data-flow information during program comprehension. However, for impact analysis and similar tasks, data-flow information is necessary and highly relevant. Visual data-flow programming languages, such as Prograph/CPX, have been commercially successful, suggesting that they provide effective data-flow representations. To explore data-flow representations for program comprehension, we augment Prograph data-flow programs with control-flow features to determine the effects on comprehension. We hypothesize that combined control/data-flow representations will aide comprehension better than data-flow alone. To validate this hypothesis, we present the results of an experiment comparing three combined representations against a data-flow only representation. While the addition of control-flow was found to be beneficial, the complexity of the representations plays an important role. Complex and highly detailed control-flow, although perceived as useful, is less effective when combined with data-flow, than less detailed and less complex control-flow descriptions. This finding suggests a tradeoff exists between a representation's content and complexity. We found a nested representation describing inter-method control-flow to be the most effective for supporting program comprehension.
{"title":"Adding control-flow to a visual data-flow representation","authors":"David Dearman, Anthony Cox, M. Fisher","doi":"10.1109/WPC.2005.5","DOIUrl":"https://doi.org/10.1109/WPC.2005.5","url":null,"abstract":"Previous studies have shown that novices do not tend to extract or use data-flow information during program comprehension. However, for impact analysis and similar tasks, data-flow information is necessary and highly relevant. Visual data-flow programming languages, such as Prograph/CPX, have been commercially successful, suggesting that they provide effective data-flow representations. To explore data-flow representations for program comprehension, we augment Prograph data-flow programs with control-flow features to determine the effects on comprehension. We hypothesize that combined control/data-flow representations will aide comprehension better than data-flow alone. To validate this hypothesis, we present the results of an experiment comparing three combined representations against a data-flow only representation. While the addition of control-flow was found to be beneficial, the complexity of the representations plays an important role. Complex and highly detailed control-flow, although perceived as useful, is less effective when combined with data-flow, than less detailed and less complex control-flow descriptions. This finding suggests a tradeoff exists between a representation's content and complexity. We found a nested representation describing inter-method control-flow to be the most effective for supporting program comprehension.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"33 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-05-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127702299","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
UML class diagrams are helpful for understanding the structure of a software system. Algorithms and tools have been developed to generate UML class diagrams automatically for program understanding purposes. However, many tools often ignore perceptual factors in the layout of these diagrams. Therefore, users still have to spend much time and effort rearranging boxes and lines to make the diagram understandable. This paper presents key criteria and guidelines for the effective layout of UML class diagrams from the perspective of perceptual theories. Two UML tools have been analyzed and evaluated to illustrate how the criteria can be applied to improve the readability of class diagrams.
{"title":"On evaluating the layout of UML class diagrams for program comprehension","authors":"Dabo Sun, Kenny Wong","doi":"10.1109/WPC.2005.26","DOIUrl":"https://doi.org/10.1109/WPC.2005.26","url":null,"abstract":"UML class diagrams are helpful for understanding the structure of a software system. Algorithms and tools have been developed to generate UML class diagrams automatically for program understanding purposes. However, many tools often ignore perceptual factors in the layout of these diagrams. Therefore, users still have to spend much time and effort rearranging boxes and lines to make the diagram understandable. This paper presents key criteria and guidelines for the effective layout of UML class diagrams from the perspective of perceptual theories. Two UML tools have been analyzed and evaluated to illustrate how the criteria can be applied to improve the readability of class diagrams.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"225 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-05-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127203379","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
This paper reports upon the results of an investigation concerning the use and type of Java abstractions employed during software maintenance. The source of data consists of eighty-eight program summaries extracted from online developer mailing lists. Specifically, the summaries describing modifications, thirty-six in total, were examined from the perspective of five task types, including adaptive, corrective, emergency, perfective and preventive. Corrective and perfective task types were the two most commonly found. Abstractions are examined per task type and are also presented in three sequential stages as beginning, middle and end of the summaries. The results show that middle (within program level) abstractions dominate each task type, with the higher (system and architecture level) and lower (code and Java virtual machine level) abstractions following respectively. The results detail the type of abstractions used in each task type and summarise the abstractions found for modifications in general with potential applications to support the design of Java software visualisation tools.
{"title":"An investigation of Java abstraction usage for program modifications","authors":"Pamela O'Shea, C. Exton","doi":"10.1109/WPC.2005.9","DOIUrl":"https://doi.org/10.1109/WPC.2005.9","url":null,"abstract":"This paper reports upon the results of an investigation concerning the use and type of Java abstractions employed during software maintenance. The source of data consists of eighty-eight program summaries extracted from online developer mailing lists. Specifically, the summaries describing modifications, thirty-six in total, were examined from the perspective of five task types, including adaptive, corrective, emergency, perfective and preventive. Corrective and perfective task types were the two most commonly found. Abstractions are examined per task type and are also presented in three sequential stages as beginning, middle and end of the summaries. The results show that middle (within program level) abstractions dominate each task type, with the higher (system and architecture level) and lower (code and Java virtual machine level) abstractions following respectively. The results detail the type of abstractions used in each task type and summarise the abstractions found for modifications in general with potential applications to support the design of Java software visualisation tools.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-05-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127418506","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}