Pub Date : 2004-06-24DOI: 10.1109/WPC.2004.1311053
Camilo Sarmiento, Silvia Takahashi
Reverse engineering for program understanding is always the first step in a reengineering project. When CASE tools are used to develop legacy applications, there are hidden assets that are not usually available. These assets may be very useful for program understanding because they contain design and architectural information usually only found, if at all, in the applications' documentation or are implicit in the code. Reverse engineering this type of applications requires taking advantage of these assets. In this paper, we describe a case study in which we reverse engineer a large legacy application which was constructed using SNAP, a CASE tool for the AS400. By exploiting vital information generated by SNAP, we were able to obtain representations of the application's persistent data and of dependency information of programs that make up the application. This experience led to the definition of guidelines that can be used to tackle the problem of reengineering applications that were developed with CASE tools.
{"title":"Understanding CASE generated legacy applications: a case study","authors":"Camilo Sarmiento, Silvia Takahashi","doi":"10.1109/WPC.2004.1311053","DOIUrl":"https://doi.org/10.1109/WPC.2004.1311053","url":null,"abstract":"Reverse engineering for program understanding is always the first step in a reengineering project. When CASE tools are used to develop legacy applications, there are hidden assets that are not usually available. These assets may be very useful for program understanding because they contain design and architectural information usually only found, if at all, in the applications' documentation or are implicit in the code. Reverse engineering this type of applications requires taking advantage of these assets. In this paper, we describe a case study in which we reverse engineer a large legacy application which was constructed using SNAP, a CASE tool for the AS400. By exploiting vital information generated by SNAP, we were able to obtain representations of the application's persistent data and of dependency information of programs that make up the application. This experience led to the definition of guidelines that can be used to tackle the problem of reengineering applications that were developed with CASE tools.","PeriodicalId":164866,"journal":{"name":"Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004.","volume":"65 6 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-06-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128351799","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}
Pub Date : 2004-06-24DOI: 10.1109/WPC.2004.1311066
A. Mohan, N. Gold
As programs evolve they become harder to maintain as the source code becomes more difficult to comprehend. One aspect of comprehensibility is related to the programming style exhibited by the program. However, as this aspect itself is changed during the maintenance process, we must attempt to maintain the original programming style quality to maintain the comprehensibility of the program. This paper presents the initial findings of an investigation of how one area of programming style (typographical style), changes over the lifetime of a program. The aim is to draw upon these findings to indicate how typographical style should be measured, and where necessary changed, to ensure program comprehensibility.
{"title":"Programming style changes in evolving source code","authors":"A. Mohan, N. Gold","doi":"10.1109/WPC.2004.1311066","DOIUrl":"https://doi.org/10.1109/WPC.2004.1311066","url":null,"abstract":"As programs evolve they become harder to maintain as the source code becomes more difficult to comprehend. One aspect of comprehensibility is related to the programming style exhibited by the program. However, as this aspect itself is changed during the maintenance process, we must attempt to maintain the original programming style quality to maintain the comprehensibility of the program. This paper presents the initial findings of an investigation of how one area of programming style (typographical style), changes over the lifetime of a program. The aim is to draw upon these findings to indicate how typographical style should be measured, and where necessary changed, to ensure program comprehensibility.","PeriodicalId":164866,"journal":{"name":"Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004.","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-06-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130616355","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}
Pub Date : 2004-06-24DOI: 10.1109/WPC.2004.1311067
Jingwei Wu, R. Holt
Program model linking has been largely overlooked and not constrained properly in the extraction of software system models. This often results in inaccurate system models at different levels of abstraction even if programs can be extracted correctly. This paper describes two constrained approaches toward accurate linkage resolution. The first approach is purely based on a set of linking heuristics. The second approach leverages the software build process and also utilizes linking heuristics. We compare these two approaches and discuss their benefits and limitations. The empirical results from a case study of the PostgreSQL database system are also presented. Our study shows that inappropriate linkage resolution leads to a relatively large number of dependency anomalies at higher levels of abstraction. These anomalies can be effectively removed using our proposed approaches.
{"title":"Resolving linkage anomalies in extracted software system models","authors":"Jingwei Wu, R. Holt","doi":"10.1109/WPC.2004.1311067","DOIUrl":"https://doi.org/10.1109/WPC.2004.1311067","url":null,"abstract":"Program model linking has been largely overlooked and not constrained properly in the extraction of software system models. This often results in inaccurate system models at different levels of abstraction even if programs can be extracted correctly. This paper describes two constrained approaches toward accurate linkage resolution. The first approach is purely based on a set of linking heuristics. The second approach leverages the software build process and also utilizes linking heuristics. We compare these two approaches and discuss their benefits and limitations. The empirical results from a case study of the PostgreSQL database system are also presented. Our study shows that inappropriate linkage resolution leads to a relatively large number of dependency anomalies at higher levels of abstraction. These anomalies can be effectively removed using our proposed approaches.","PeriodicalId":164866,"journal":{"name":"Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004.","volume":"30 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-06-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128091196","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}
Pub Date : 2004-06-24DOI: 10.1109/WPC.2004.1311074
B. Cleary, C. Exton
The CHIVE visualisation framework is an attempt to provide program comprehension and visualisation tool developers with a flexible means for creating 3-dimensional visualisations of hierarchies such as those that occur in program source. The CHIVE framework supports user definable datasets, multiple graph layouts and an environment in which users can interact with visualisations created from applying a graph layout to a dataset.
{"title":"CHIVE - a program source visualisation framework","authors":"B. Cleary, C. Exton","doi":"10.1109/WPC.2004.1311074","DOIUrl":"https://doi.org/10.1109/WPC.2004.1311074","url":null,"abstract":"The CHIVE visualisation framework is an attempt to provide program comprehension and visualisation tool developers with a flexible means for creating 3-dimensional visualisations of hierarchies such as those that occur in program source. The CHIVE framework supports user definable datasets, multiple graph layouts and an environment in which users can interact with visualisations created from applying a graph layout to a dataset.","PeriodicalId":164866,"journal":{"name":"Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004.","volume":"42 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-06-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134326996","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}
Pub Date : 2004-06-24DOI: 10.1109/WPC.2004.1311048
G. Canfora, A. Cimitile, C. A. Visaggio
Pair programming is increasingly attracting researchers' and practitioners' attention. One of the claimed benefits of pair programming consists of easing socialization among programmers, with the effect of transferring tacit knowledge. Designing software systems requires a strong employment of tacit knowledge, such as individual experience and skills. In this paper, the authors, explore the hypothesis that working in pairs can speed up and enforce the knowledge building process among designers. We name "pair designing" the application of pair programming concepts to the design stage. An experiment has been performed to test the effect of pair designing on knowledge building. This paper discusses preliminary results, which confirm the hypothesis of a positive effect of working in pairs on the process of knowledge building.
{"title":"Working in pairs as a means for design knowledge building: an empirical study","authors":"G. Canfora, A. Cimitile, C. A. Visaggio","doi":"10.1109/WPC.2004.1311048","DOIUrl":"https://doi.org/10.1109/WPC.2004.1311048","url":null,"abstract":"Pair programming is increasingly attracting researchers' and practitioners' attention. One of the claimed benefits of pair programming consists of easing socialization among programmers, with the effect of transferring tacit knowledge. Designing software systems requires a strong employment of tacit knowledge, such as individual experience and skills. In this paper, the authors, explore the hypothesis that working in pairs can speed up and enforce the knowledge building process among designers. We name \"pair designing\" the application of pair programming concepts to the design stage. An experiment has been performed to test the effect of pair designing on knowledge building. This paper discusses preliminary results, which confirm the hypothesis of a positive effect of working in pairs on the process of knowledge building.","PeriodicalId":164866,"journal":{"name":"Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004.","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-06-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130230089","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}
Pub Date : 2004-06-24DOI: 10.1109/WPC.2004.1311061
Zhihua Wen, Vassilios Tzerpos
Selecting an appropriate software clustering algorithm that can help the process of understanding a large software system is a challenging issue. The effectiveness of a particular algorithm may be influenced by a number of different factors, such as the types of decompositions produced, or the way clusters are named. In this paper, we introduce an effectiveness measure for software clustering algorithms based on Mojo distance, and describe an algorithm that calculates its value. We also present experiments that demonstrate its improved performance over previous measures, and show how it can be used to assess the effectiveness of software clustering algorithms.
{"title":"An effectiveness measure for software clustering algorithms","authors":"Zhihua Wen, Vassilios Tzerpos","doi":"10.1109/WPC.2004.1311061","DOIUrl":"https://doi.org/10.1109/WPC.2004.1311061","url":null,"abstract":"Selecting an appropriate software clustering algorithm that can help the process of understanding a large software system is a challenging issue. The effectiveness of a particular algorithm may be influenced by a number of different factors, such as the types of decompositions produced, or the way clusters are named. In this paper, we introduce an effectiveness measure for software clustering algorithms based on Mojo distance, and describe an algorithm that calculates its value. We also present experiments that demonstrate its improved performance over previous measures, and show how it can be used to assess the effectiveness of software clustering algorithms.","PeriodicalId":164866,"journal":{"name":"Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004.","volume":"104 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-06-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132527724","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}
Pub Date : 2004-06-24DOI: 10.1109/WPC.2004.1311068
B. Korel, L. Tahat
System modeling is a widely used technique to model state-based systems. System models are frequently large and complex and are hard to understand. In addition, they are frequently modified because of specification changes. Understanding the effect of these changes on the model and the system may be very difficult for large models. In this paper, we present an approach that may support understanding the effect of model modifications. The goal is to identify these parts of the model that may exhibit different behavior because of the modification. In this approach, the difference between the original model and the modified model is identified and then affected parts of the model are computed based on model dependence analysis. Our initial experience shows that the approach may be helpful in understanding the effect of modifications on the system.
{"title":"Understanding modifications in state-based models","authors":"B. Korel, L. Tahat","doi":"10.1109/WPC.2004.1311068","DOIUrl":"https://doi.org/10.1109/WPC.2004.1311068","url":null,"abstract":"System modeling is a widely used technique to model state-based systems. System models are frequently large and complex and are hard to understand. In addition, they are frequently modified because of specification changes. Understanding the effect of these changes on the model and the system may be very difficult for large models. In this paper, we present an approach that may support understanding the effect of model modifications. The goal is to identify these parts of the model that may exhibit different behavior because of the modification. In this approach, the difference between the original model and the modified model is identified and then affected parts of the model are computed based on model dependence analysis. Our initial experience shows that the approach may be helpful in understanding the effect of modifications on the system.","PeriodicalId":164866,"journal":{"name":"Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004.","volume":"6 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-06-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126562492","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}
Pub Date : 2004-06-24DOI: 10.1109/WPC.2004.1311052
Christoph Stoermer, L. O'Brien, C. Verhoef
Architectural views help to better understand and analyze software from particular stakeholder perspectives. Views are abstractions that are generated in an architecture reconstruction effort with collapsing strategies. Collapsing is the mechanism to aggregate detailed source information into architectural elements that constitute the architectural views. The elements are presented in a particular viewtype and style. Traditional software architecture reconstruction tools assume that source elements are collapsed into mostly one container. However, the satellite tracking system case study, outlined in this paper, required the introduction of multicollapses. Multicollapses allow the aggregation of one element into multiple containers. Multicollapses are either the result of applying incorrect collapsing strategies or an excellent starting point for software analysis to gain better understanding of existing software. We describe implementation and visualization aspects of multicollapses within an architecture reconstruction environment.
{"title":"Architectural views through collapsing strategies","authors":"Christoph Stoermer, L. O'Brien, C. Verhoef","doi":"10.1109/WPC.2004.1311052","DOIUrl":"https://doi.org/10.1109/WPC.2004.1311052","url":null,"abstract":"Architectural views help to better understand and analyze software from particular stakeholder perspectives. Views are abstractions that are generated in an architecture reconstruction effort with collapsing strategies. Collapsing is the mechanism to aggregate detailed source information into architectural elements that constitute the architectural views. The elements are presented in a particular viewtype and style. Traditional software architecture reconstruction tools assume that source elements are collapsed into mostly one container. However, the satellite tracking system case study, outlined in this paper, required the introduction of multicollapses. Multicollapses allow the aggregation of one element into multiple containers. Multicollapses are either the result of applying incorrect collapsing strategies or an excellent starting point for software analysis to gain better understanding of existing software. We describe implementation and visualization aspects of multicollapses within an architecture reconstruction environment.","PeriodicalId":164866,"journal":{"name":"Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004.","volume":"14 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-06-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127683511","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}
Pub Date : 2004-06-24DOI: 10.1109/WPC.2004.1311049
A. Hamou-Lhadj, T. Lethbridge, Lianjiang Fu
Building efficient tools for the analysis and exploration of large execution traces can be a very challenging task. Our experience with building a tool called SEAT (software exploration and analysis tool) shows that there is a need to address several key research questions in order to overcome these challenges. SEAT is intended to integrate several filtering techniques to tackle the size explosion problem that make traces hard to understand. However, the incorporation of these techniques into one efficient tool raises many issues. This paper focuses on these issues and underlies future research directions to advance the area of dynamic analysis of large software systems.
{"title":"Challenges and requirements for an effective trace exploration tool","authors":"A. Hamou-Lhadj, T. Lethbridge, Lianjiang Fu","doi":"10.1109/WPC.2004.1311049","DOIUrl":"https://doi.org/10.1109/WPC.2004.1311049","url":null,"abstract":"Building efficient tools for the analysis and exploration of large execution traces can be a very challenging task. Our experience with building a tool called SEAT (software exploration and analysis tool) shows that there is a need to address several key research questions in order to overcome these challenges. SEAT is intended to integrate several filtering techniques to tackle the size explosion problem that make traces hard to understand. However, the incorporation of these techniques into one efficient tool raises many issues. This paper focuses on these issues and underlies future research directions to advance the area of dynamic analysis of large software systems.","PeriodicalId":164866,"journal":{"name":"Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004.","volume":"81 2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-06-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116700644","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}
Pub Date : 2004-06-24DOI: 10.1109/WPC.2004.1311071
L. O'Brien, Dennis B. Smith
The availability of the Web has made it possible to provide new life to legacy systems as Web services components within a service-oriented architecture. Web services are self-contained, modular applications that can be described, published, located, and invoked over a network, generally, the World Wide Web. The service-oriented architecture describes three roles: service provider, service requester and service broker; and three basic operations: publish, find and bind. A network component can play any or all of these roles. Web services focus on the integration and infrastructure complexities of B2B by leveraging the benefits of Web service technologies, Internet standards and common infrastructures. While the migration to Web services has the potential of providing significant value to legacy systems and components, a number of critical program comprehension issues need to be addressed. These include understanding the legacy systems and components in enough detail to make decisions on the types of changes that need to be made for using them within the new service-oriented architecture, understanding the legacy and target architectures, and analyzing the specific Web service technologies that will be required and how to incorporate the legacy components as services. This working session will discuss approaches for addressing these issues. Based on the results of the session, a working model will be developed that lists current approaches, their strengths and weaknesses, as well as current open issues.
{"title":"Working session: program comprehension strategies for Web service and service-oriented architectures","authors":"L. O'Brien, Dennis B. Smith","doi":"10.1109/WPC.2004.1311071","DOIUrl":"https://doi.org/10.1109/WPC.2004.1311071","url":null,"abstract":"The availability of the Web has made it possible to provide new life to legacy systems as Web services components within a service-oriented architecture. Web services are self-contained, modular applications that can be described, published, located, and invoked over a network, generally, the World Wide Web. The service-oriented architecture describes three roles: service provider, service requester and service broker; and three basic operations: publish, find and bind. A network component can play any or all of these roles. Web services focus on the integration and infrastructure complexities of B2B by leveraging the benefits of Web service technologies, Internet standards and common infrastructures. While the migration to Web services has the potential of providing significant value to legacy systems and components, a number of critical program comprehension issues need to be addressed. These include understanding the legacy systems and components in enough detail to make decisions on the types of changes that need to be made for using them within the new service-oriented architecture, understanding the legacy and target architectures, and analyzing the specific Web service technologies that will be required and how to incorporate the legacy components as services. This working session will discuss approaches for addressing these issues. Based on the results of the session, a working model will be developed that lists current approaches, their strengths and weaknesses, as well as current open issues.","PeriodicalId":164866,"journal":{"name":"Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004.","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2004-06-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115458835","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}