Pub Date : 2004-06-24DOI: 10.1109/WPC.2004.1311072
M. D. Backer, G. Dedene, J. Vandenbulcke
This work presents a technique and a tool for Web service composition, execution and visualization. Web services composition refers to the act of interconnecting multiple elementary (or other composite) Web services, in order to create value-added functionality for customers. Graphical tools allow developers to define and create business processes on a "plug and play" basis. Runtime visualization of a business process enables the developers to understand the process and if necessary intervene in the process.
{"title":"Web services composition, execution and visualization","authors":"M. D. Backer, G. Dedene, J. Vandenbulcke","doi":"10.1109/WPC.2004.1311072","DOIUrl":"https://doi.org/10.1109/WPC.2004.1311072","url":null,"abstract":"This work presents a technique and a tool for Web service composition, execution and visualization. Web services composition refers to the act of interconnecting multiple elementary (or other composite) Web services, in order to create value-added functionality for customers. Graphical tools allow developers to define and create business processes on a \"plug and play\" basis. Runtime visualization of a business process enables the developers to understand the process and if necessary intervene in the process.","PeriodicalId":164866,"journal":{"name":"Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004.","volume":"8 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":"126891522","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.1311046
Pierre Kelsen
To maintain software and to adapt it to changing requirements, one needs to have a solid understanding of both its structure and behavior. While there are a number of reverse engineering tools that aid in understanding the runtime behavior of programs, these are mostly based on variants of UML sequence diagrams or statechart diagrams. We propose a new model for understanding runtime behavior that presents several advantages over the more traditional models: it has a simple syntax (a very small subset of UML). Second one can tailor the same type of model to different abstraction levels while maintaining traceability. Third, they have a clearly defined semantics that makes them executable. Finally they capture both static and dynamic aspects of a system. We present three scenarios where our model - named EOP-model - aids with program comprehension: (1) high-level debugging, with which one can observe the execution of the program at a higher level of abstraction; (2) high-level program slicing, which allows to identify the data items in our model that may influence an operation, regardless of the abstraction level, and (3) generating abstract views at varying levels of detail while maintaining traceability between model elements and the code.
{"title":"A simple static model for understanding the dynamic behavior of programs","authors":"Pierre Kelsen","doi":"10.1109/WPC.2004.1311046","DOIUrl":"https://doi.org/10.1109/WPC.2004.1311046","url":null,"abstract":"To maintain software and to adapt it to changing requirements, one needs to have a solid understanding of both its structure and behavior. While there are a number of reverse engineering tools that aid in understanding the runtime behavior of programs, these are mostly based on variants of UML sequence diagrams or statechart diagrams. We propose a new model for understanding runtime behavior that presents several advantages over the more traditional models: it has a simple syntax (a very small subset of UML). Second one can tailor the same type of model to different abstraction levels while maintaining traceability. Third, they have a clearly defined semantics that makes them executable. Finally they capture both static and dynamic aspects of a system. We present three scenarios where our model - named EOP-model - aids with program comprehension: (1) high-level debugging, with which one can observe the execution of the program at a higher level of abstraction; (2) high-level program slicing, which allows to identify the data items in our model that may influence an operation, regardless of the abstraction level, and (3) generating abstract views at varying levels of detail while maintaining traceability between model elements and the code.","PeriodicalId":164866,"journal":{"name":"Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004.","volume":"65 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":"126112143","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.1311051
S. Danicic, A. D. Lucia, M. Harman
Program slicing can be used as a support for program comprehension, because it allows a large program to be divided up into smaller slices, each of which can be understood in isolation from the rest. As such, slicing facilitates the familiar approach of 'divide and conquer'. Union slicing (the union of dynamic slices) is a useful technique for approximating a precise static slice. For program comprehension (and many other applications) it is often important that the union slice be an executable program, rather than merely a collection of statements which are relevant to the slicing criterion. This paper presents an algorithm for computing executable union slices, using conditioned slicing. A case study is used to illustrate the algorithm and how the executable union slice is preferable to the (possibly nonexecutable) union slice. The paper also shows, briefly, that the approach has wider applications than comprehension.
{"title":"Building executable union slices using conditioned slicing","authors":"S. Danicic, A. D. Lucia, M. Harman","doi":"10.1109/WPC.2004.1311051","DOIUrl":"https://doi.org/10.1109/WPC.2004.1311051","url":null,"abstract":"Program slicing can be used as a support for program comprehension, because it allows a large program to be divided up into smaller slices, each of which can be understood in isolation from the rest. As such, slicing facilitates the familiar approach of 'divide and conquer'. Union slicing (the union of dynamic slices) is a useful technique for approximating a precise static slice. For program comprehension (and many other applications) it is often important that the union slice be an executable program, rather than merely a collection of statements which are relevant to the slicing criterion. This paper presents an algorithm for computing executable union slices, using conditioned slicing. A case study is used to illustrate the algorithm and how the executable union slice is preferable to the (possibly nonexecutable) union slice. The paper also shows, briefly, that the approach has wider applications than comprehension.","PeriodicalId":164866,"journal":{"name":"Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004.","volume":"13 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":"128523214","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.1311056
Damiano Distante, T. Parveen, S. Tilley
Many Web sites could improve their users' experience through systematic analysis of transaction paths, so that users' expectations and site design are more closely aligned. This paper outlines preliminary steps towards a technique for reverse engineering Web transactions from a user's perspective. The result of the reverse engineering activity is a conceptual model that is based on extensions to the transaction design portion of the ubiquitous Web applications (UWA) framework. In particular, changes to the definition of an "activity", redefinitions of the "PropertySet" associated with an activity, and refinements to the UWA organization and execution models are proposed.
{"title":"Towards a technique for reverse engineering Web transactions from a user's perspective","authors":"Damiano Distante, T. Parveen, S. Tilley","doi":"10.1109/WPC.2004.1311056","DOIUrl":"https://doi.org/10.1109/WPC.2004.1311056","url":null,"abstract":"Many Web sites could improve their users' experience through systematic analysis of transaction paths, so that users' expectations and site design are more closely aligned. This paper outlines preliminary steps towards a technique for reverse engineering Web transactions from a user's perspective. The result of the reverse engineering activity is a conceptual model that is based on extensions to the transaction design portion of the ubiquitous Web applications (UWA) framework. In particular, changes to the definition of an \"activity\", redefinitions of the \"PropertySet\" associated with an activity, and refinements to the UWA organization and execution models are proposed.","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":"128183361","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.1311047
T. Panas, Jonas Lundberg, Welf Löwe
In this paper, we present a framework for reverse engineering allowing the integration and interaction of different analysis and visualization tools. The framework architecture that we propose uses a dynamic type system to guarantee the proper exchange of data between the tools and a set of wrapper classes to handle their communication. This allows for an easy and secure integration of tools that have originally not been designed to work together. In this sense, existing tools can be (re-)used and integrated. As a proof of concept we also present our own instantiation of the proposed framework architecture.
{"title":"Reuse in reverse engineering","authors":"T. Panas, Jonas Lundberg, Welf Löwe","doi":"10.1109/WPC.2004.1311047","DOIUrl":"https://doi.org/10.1109/WPC.2004.1311047","url":null,"abstract":"In this paper, we present a framework for reverse engineering allowing the integration and interaction of different analysis and visualization tools. The framework architecture that we propose uses a dynamic type system to guarantee the proper exchange of data between the tools and a set of wrapper classes to handle their communication. This allows for an easy and secure integration of tools that have originally not been designed to work together. In this sense, existing tools can be (re-)used and integrated. As a proof of concept we also present our own instantiation of the proposed framework architecture.","PeriodicalId":164866,"journal":{"name":"Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004.","volume":"628 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":"127527363","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.1311065
Andrew Foss, Kenny Wong
Handheld computing devices such as personal digital assistants (PDAs) and the latest mobile phones are becoming widespread, so migrating desktop applications to these platforms is of great interest to developers. However, little information is available to guide the novice especially for the palm OS, the,most popular platform in the PDA and smartphone arena. This paper highlights the migration challenges involved and potential directions in easing this reengineering process. To explore the practical understanding and reengineering issues, a large legacy application was partially migrated to palm OS.
{"title":"On migrating a legacy application to the palm platform","authors":"Andrew Foss, Kenny Wong","doi":"10.1109/WPC.2004.1311065","DOIUrl":"https://doi.org/10.1109/WPC.2004.1311065","url":null,"abstract":"Handheld computing devices such as personal digital assistants (PDAs) and the latest mobile phones are becoming widespread, so migrating desktop applications to these platforms is of great interest to developers. However, little information is available to guide the novice especially for the palm OS, the,most popular platform in the PDA and smartphone arena. This paper highlights the migration challenges involved and potential directions in easing this reengineering process. To explore the practical understanding and reengineering issues, a large legacy application was partially migrated to palm OS.","PeriodicalId":164866,"journal":{"name":"Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004.","volume":"15 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":"132047845","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.1311064
Marco Torchiano
The essential UML logic diagrams are the class diagrams: they represent the classes of objects that make up a program. Object diagrams are used as the basis to show scenarios of dynamic evolution of the software. The use of object diagrams to depict static structure is very rare. The purpose of this study is to investigate whether the use of static object diagrams can improve the comprehension of software systems. We conducted a study with 17 graduate students during a software engineering course. The students were asked to answer questions about a software system. The system was described either with a class diagram or with both a class diagram and an object diagram. The student asked multiple choice questions on four different systems. This study revealed that there is a statistically significant difference in the comprehension achievement for two of the systems. The effect of the presence of object diagrams can be classified of medium size. These results allow us to formulate new research questions that guide our future work in this area.
{"title":"Empirical assessment of UML static object diagrams","authors":"Marco Torchiano","doi":"10.1109/WPC.2004.1311064","DOIUrl":"https://doi.org/10.1109/WPC.2004.1311064","url":null,"abstract":"The essential UML logic diagrams are the class diagrams: they represent the classes of objects that make up a program. Object diagrams are used as the basis to show scenarios of dynamic evolution of the software. The use of object diagrams to depict static structure is very rare. The purpose of this study is to investigate whether the use of static object diagrams can improve the comprehension of software systems. We conducted a study with 17 graduate students during a software engineering course. The students were asked to answer questions about a software system. The system was described either with a class diagram or with both a class diagram and an object diagram. The student asked multiple choice questions on four different systems. This study revealed that there is a statistically significant difference in the comprehension achievement for two of the systems. The effect of the presence of object diagrams can be classified of medium size. These results allow us to formulate new research questions that guide our future work in this area.","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":"114185169","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.1311073
C. Tadonki
Source code documentation is a structured report built from the information available in the source of a given program. 'The goal of such a document is to provide more facility for program comprehension and code maintenance. This is particularly crucial for complex program involving a large amount of routines and special statements. Nowadays, there are more and more specialized programs that are provided to programmers through their source code as a module. Their integration into an existing project requires a quick but accurate overview of their technical structure for immediate comprehension. This task needs a so-called source code documentation tool, also called documentation tool, code documenting tool, or reverse engineering tool. Several tools exist, but most of them are dedicated to a specific programming language, probably because they strongly consider the grammar of the target language and the corresponding statements are then hardcoded. In this paper, we present Universal Report, a source code documentation tool developed with C++ Builder, that does not suffer from this limitation and provides several attractive features for a complete documenting task. The tool is generic, specific information being provided by the user as input for the documenting process. This flexibility is due to powerful heuristics and pattern matching algorithms that can identify standard programming statements for a wide range of programming languages. Various options enable the user to format the output documentation at its convenience, and the intuitive interface makes Universal Report the perfect tool for both new and experienced users.
{"title":"Universal Report: a generic reverse engineering tool","authors":"C. Tadonki","doi":"10.1109/WPC.2004.1311073","DOIUrl":"https://doi.org/10.1109/WPC.2004.1311073","url":null,"abstract":"Source code documentation is a structured report built from the information available in the source of a given program. 'The goal of such a document is to provide more facility for program comprehension and code maintenance. This is particularly crucial for complex program involving a large amount of routines and special statements. Nowadays, there are more and more specialized programs that are provided to programmers through their source code as a module. Their integration into an existing project requires a quick but accurate overview of their technical structure for immediate comprehension. This task needs a so-called source code documentation tool, also called documentation tool, code documenting tool, or reverse engineering tool. Several tools exist, but most of them are dedicated to a specific programming language, probably because they strongly consider the grammar of the target language and the corresponding statements are then hardcoded. In this paper, we present Universal Report, a source code documentation tool developed with C++ Builder, that does not suffer from this limitation and provides several attractive features for a complete documenting task. The tool is generic, specific information being provided by the user as input for the documenting process. This flexibility is due to powerful heuristics and pattern matching algorithms that can identify standard programming statements for a wide range of programming languages. Various options enable the user to format the output documentation at its convenience, and the intuitive interface makes Universal Report the perfect tool for both new and experienced users.","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":"124894655","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.1311058
H. Sneed
In this paper, program comprehension techniques are examined within the context of testing. First, the tasks of a tester are identified, then the information requirements of a tester to fulfill these tasks. Comprehension is viewed as a knowledge acquisition process. The knowledge needed depends on the level at which one is testing. For system testing, other knowledge is required than for unit and integration testing. In light of the scope of testing, the paper concludes that it is the tester who needs the broadest knowledge about a software system. Having established the information requirements of testing, a set of tools are presented which help to satisfy these requirements and their practical application discussed.
{"title":"Program comprehension for the purpose of testing","authors":"H. Sneed","doi":"10.1109/WPC.2004.1311058","DOIUrl":"https://doi.org/10.1109/WPC.2004.1311058","url":null,"abstract":"In this paper, program comprehension techniques are examined within the context of testing. First, the tasks of a tester are identified, then the information requirements of a tester to fulfill these tasks. Comprehension is viewed as a knowledge acquisition process. The knowledge needed depends on the level at which one is testing. For system testing, other knowledge is required than for unit and integration testing. In light of the scope of testing, the paper concludes that it is the tester who needs the broadest knowledge about a software system. Having established the information requirements of testing, a set of tools are presented which help to satisfy these requirements and their practical application discussed.","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":"130902317","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.1311059
A. Capiluppi, M. Morisio, J. Fernández-Ramil
Software evolution empirical studies are made possible only when data is available and easily collectable. Open source software provides a good opportunity for observing software products in various phases of their evolution, growth and maturity. One of the aspects that have not been analyzed yet through empirical studies is the relation that exists between code components growth and the evolving code structure. In this paper, we look at the growth of code elements by measuring the total number of files per release and also by visualizing the folder structure as a tree. Both, the number of files and the shape of the folder tree structure offer proxies to study the evolving complexity of the system. In this study, a number of hypotheses about the evolutionary patterns in the size of files and folders, in the folder tree structure, reflecting common assumptions on software engineering and open source are tested against empirical data reflecting the evolution of the ARLA system. We also relate some of the observed patterns to the arrival rate of new developers. Results show that the number of code components (files and folders) over releases can be interpreted as a linear trend with a superimposed ripple. We also describe the more apparent characteristics of the evolution of the folder tree structure. Furthermore, we observe that the average size of files and folders tends to stabilize over releases. The cumulative number of people who have been involved as developers of the system follows a trend which resembles that of the size in files over releases, suggesting that the latter could provide a good indicator for rate of work and productivity. There was no apparent relation between the arrival rate of developers and the changes observed in the code structure.
{"title":"Structural evolution of an open source system: a case study","authors":"A. Capiluppi, M. Morisio, J. Fernández-Ramil","doi":"10.1109/WPC.2004.1311059","DOIUrl":"https://doi.org/10.1109/WPC.2004.1311059","url":null,"abstract":"Software evolution empirical studies are made possible only when data is available and easily collectable. Open source software provides a good opportunity for observing software products in various phases of their evolution, growth and maturity. One of the aspects that have not been analyzed yet through empirical studies is the relation that exists between code components growth and the evolving code structure. In this paper, we look at the growth of code elements by measuring the total number of files per release and also by visualizing the folder structure as a tree. Both, the number of files and the shape of the folder tree structure offer proxies to study the evolving complexity of the system. In this study, a number of hypotheses about the evolutionary patterns in the size of files and folders, in the folder tree structure, reflecting common assumptions on software engineering and open source are tested against empirical data reflecting the evolution of the ARLA system. We also relate some of the observed patterns to the arrival rate of new developers. Results show that the number of code components (files and folders) over releases can be interpreted as a linear trend with a superimposed ripple. We also describe the more apparent characteristics of the evolution of the folder tree structure. Furthermore, we observe that the average size of files and folders tends to stabilize over releases. The cumulative number of people who have been involved as developers of the system follows a trend which resembles that of the size in files over releases, suggesting that the latter could provide a good indicator for rate of work and productivity. There was no apparent relation between the arrival rate of developers and the changes observed in the code structure.","PeriodicalId":164866,"journal":{"name":"Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004.","volume":"22 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":"114788515","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}