This paper presents an analysis of software architecture as social artifact, that is, something that software developers talk about and use in their work. This analysis is historical in nature, relying on interviews with software developers with experience spanning four decades and the software engineering literature. We found that 1) only large teams have architecture; 2) architecture is more easily found in discourse than in source; and 3) architecture does not happen at a fixed time in the software lifecycle. These observations taken together suggest that software is a boundary object that developers use to explain the system to each other, thereby making it possible to work together.
{"title":"A small social history of software architecture","authors":"S. Sim","doi":"10.1109/WPC.2005.3","DOIUrl":"https://doi.org/10.1109/WPC.2005.3","url":null,"abstract":"This paper presents an analysis of software architecture as social artifact, that is, something that software developers talk about and use in their work. This analysis is historical in nature, relying on interviews with software developers with experience spanning four decades and the software engineering literature. We found that 1) only large teams have architecture; 2) architecture is more easily found in discourse than in source; and 3) architecture does not happen at a fixed time in the software lifecycle. These observations taken together suggest that software is a boundary object that developers use to explain the system to each other, thereby making it possible to work together.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"31 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":"125628259","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}
Information seeking has been recognised as a core subtask in software maintenance. This paper reviews, merges, and adapts existing information seeking models for different domains to propose a nonlinear information-seeking model for programmers involved in software maintenance. Talk-aloud data from two empirical studies of industrial programmers carrying out real software maintenance tasks is presented, to illustrate and validate (in part) this model.
{"title":"Modelling the information-seeking behaviour of programmers - an empirical approach","authors":"Michael P. O'Brien, J. Buckley","doi":"10.1109/WPC.2005.24","DOIUrl":"https://doi.org/10.1109/WPC.2005.24","url":null,"abstract":"Information seeking has been recognised as a core subtask in software maintenance. This paper reviews, merges, and adapts existing information seeking models for different domains to propose a nonlinear information-seeking model for programmers involved in software maintenance. Talk-aloud data from two empirical studies of industrial programmers carrying out real software maintenance tasks is presented, to illustrate and validate (in part) this model.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"102 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":"133252751","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}
How many times have you asked yourself the question "what is my program doing now?" JIVE is a system that tries to answer this question. It provides insights into the execution of Java programs. It does so with minimal overhead so it can be used on arbitrary systems at any time. A large portion of the complexity of Java systems comes from the behavior and interaction of multiple threads. Thus, JIVE concentrates in part on showing what the various threads are doing. This paper describes how JIVE does this. It first describes our original approach, which simply monitored the state of each thread, displaying the time spent in each state on an interval basis. We then describe how we extended this framework to provide additional detailed information on state changes and on thread interactions. The core of this paper describes the problems that arose here, their solutions, and the resultant visualizations.
{"title":"Efficient monitoring and display of thread state in Java","authors":"S. Reiss","doi":"10.1109/WPC.2005.19","DOIUrl":"https://doi.org/10.1109/WPC.2005.19","url":null,"abstract":"How many times have you asked yourself the question \"what is my program doing now?\" JIVE is a system that tries to answer this question. It provides insights into the execution of Java programs. It does so with minimal overhead so it can be used on arbitrary systems at any time. A large portion of the complexity of Java systems comes from the behavior and interaction of multiple threads. Thus, JIVE concentrates in part on showing what the various threads are doing. This paper describes how JIVE does this. It first describes our original approach, which simply monitored the state of each thread, displaying the time spent in each state on an interval basis. We then describe how we extended this framework to provide additional detailed information on state changes and on thread interactions. The core of this paper describes the problems that arose here, their solutions, and the resultant visualizations.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"58 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":"117108522","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}
Fact bases produced by software comprehension tools are large and complex, reaching several gigabytes in size for large software systems. To effectively study these databases, either a query engine or a visualization engine is necessary. In our proposed demo we showcase LSEdit, a full-featured graph visualizer and editor, which is suitable for, but not limited to, visualizing architectural diagrams of software. LSEdit is equipped with advanced searching, elision, layout and editing capabilities. It has been successfully used in the past to visualize extractions of Mozilla, Linux, Vim, Gnumeric, Apache and other large applications.
{"title":"Browsing software architectures with LSEdit","authors":"Nikita Synytskyy, R. Holt, I. Davis","doi":"10.1109/WPC.2005.11","DOIUrl":"https://doi.org/10.1109/WPC.2005.11","url":null,"abstract":"Fact bases produced by software comprehension tools are large and complex, reaching several gigabytes in size for large software systems. To effectively study these databases, either a query engine or a visualization engine is necessary. In our proposed demo we showcase LSEdit, a full-featured graph visualizer and editor, which is suitable for, but not limited to, visualizing architectural diagrams of software. LSEdit is equipped with advanced searching, elision, layout and editing capabilities. It has been successfully used in the past to visualize extractions of Mozilla, Linux, Vim, Gnumeric, Apache and other large applications.","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":"125513269","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}
Object-oriented frameworks are a powerful form of reuse but they can be difficult to understand and reuse correctly. Over the last decade a large range of candidate documentation techniques have been proposed to address this difficulty. There is little research, however, to identify the specific problems that arise during framework reuse and to evaluate documentation techniques in terms of these problems. This paper reports on a long-term investigation that firstly identifies four fundamental problems of framework reuse: mapping, understanding functionality, understanding interactions and understanding the framework architecture. It then describes two forms of documentation specifically developed to address the mapping, interaction and functionality problems namely a pattern language and a set of micro architectures. An in-depth, qualitative analysis of these two documentation types evaluates the key strengths and weaknesses of their support for framework understanding, whilst confirming the significance of the four problem categories.
{"title":"Identifying and addressing problems in framework reuse","authors":"D. Kirk, M. Roper, M. Wood","doi":"10.1109/WPC.2005.21","DOIUrl":"https://doi.org/10.1109/WPC.2005.21","url":null,"abstract":"Object-oriented frameworks are a powerful form of reuse but they can be difficult to understand and reuse correctly. Over the last decade a large range of candidate documentation techniques have been proposed to address this difficulty. There is little research, however, to identify the specific problems that arise during framework reuse and to evaluate documentation techniques in terms of these problems. This paper reports on a long-term investigation that firstly identifies four fundamental problems of framework reuse: mapping, understanding functionality, understanding interactions and understanding the framework architecture. It then describes two forms of documentation specifically developed to address the mapping, interaction and functionality problems namely a pattern language and a set of micro architectures. An in-depth, qualitative analysis of these two documentation types evaluates the key strengths and weaknesses of their support for framework understanding, whilst confirming the significance of the four problem categories.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"26 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":"130218723","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}
Interoperability is the challenge involved in getting software components to work together. This working session discusses in depth the state of the art in reengineering tool interoperability. A distinction is made between data interoperability and service interoperability. The limitations and promise of each of these aspects of interoperability is introduced. Examples of existing solutions and an examination of the ways they can be improved to further enhance the reengineering process is discussed. An evaluation of open problems shows future research perspectives in reengineering tool interoperability.
{"title":"Working session on interoperable reengineering services","authors":"Dean Jin, A. Winter","doi":"10.1109/WPC.2005.48","DOIUrl":"https://doi.org/10.1109/WPC.2005.48","url":null,"abstract":"Interoperability is the challenge involved in getting software components to work together. This working session discusses in depth the state of the art in reengineering tool interoperability. A distinction is made between data interoperability and service interoperability. The limitations and promise of each of these aspects of interoperability is introduced. Examples of existing solutions and an examination of the ways they can be improved to further enhance the reengineering process is discussed. An evaluation of open problems shows future research perspectives in reengineering tool interoperability.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"125 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":"134316188","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}
Changes of software systems are less expensive and less error-prone if they affect only one subsystem. Thus, clusters of artifacts that are frequently changed together are subsystem candidates. We introduce a two-step method for identifying such clusters. First, a model of common changes of software artifacts, called co-change graph, is extracted from the version control repository of the software system. Second, a layout of the co-change graph is computed that reveals clusters of frequently co-changed artifacts. We derive requirements for such layouts, and introduce an energy model for producing layouts that fulfill these requirements. We evaluate the method by applying it to three example systems, and comparing the resulting layouts to authoritative decompositions.
{"title":"Clustering software artifacts based on frequent common changes","authors":"Dirk Beyer, A. Noack","doi":"10.1109/WPC.2005.12","DOIUrl":"https://doi.org/10.1109/WPC.2005.12","url":null,"abstract":"Changes of software systems are less expensive and less error-prone if they affect only one subsystem. Thus, clusters of artifacts that are frequently changed together are subsystem candidates. We introduce a two-step method for identifying such clusters. First, a model of common changes of software artifacts, called co-change graph, is extracted from the version control repository of the software system. Second, a layout of the co-change graph is computed that reveals clusters of frequently co-changed artifacts. We derive requirements for such layouts, and introduce an energy model for producing layouts that fulfill these requirements. We evaluate the method by applying it to three example systems, and comparing the resulting layouts to authoritative decompositions.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"104 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":"115703464","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}
Refactoring is an essential and useful practice in developing and maintaining object-oriented software since it improves the design of existing code without changing its external behavior. Therefore, several refactoring tools tend to be integrated into contemporary IDEs. However, these tools represent source code as an abstract syntax tree (AST) and thus their implementations are hard to extend and modify. This paper presents Jrbx, a refactoring tool that uses a fine-grained XML representation of source code and supports stylized manipulations of the representation. Moreover, Jrbx aggressively exploits control flow graphs (CFGs) and program dependence graphs (PDGs) for both precondition checking and change creation. The use of the XML, CFG, and PDG representations makes the implementation of Jrbx more understandable and reusable, and thus facilitates tool developers creating new refactorings and modifying existing ones.
{"title":"Design and implementation of an extensible and modifiable refactoring tool","authors":"Katsuhisa Maruyama, Shinichirou Yamamoto","doi":"10.1109/WPC.2005.17","DOIUrl":"https://doi.org/10.1109/WPC.2005.17","url":null,"abstract":"Refactoring is an essential and useful practice in developing and maintaining object-oriented software since it improves the design of existing code without changing its external behavior. Therefore, several refactoring tools tend to be integrated into contemporary IDEs. However, these tools represent source code as an abstract syntax tree (AST) and thus their implementations are hard to extend and modify. This paper presents Jrbx, a refactoring tool that uses a fine-grained XML representation of source code and supports stylized manipulations of the representation. Moreover, Jrbx aggressively exploits control flow graphs (CFGs) and program dependence graphs (PDGs) for both precondition checking and change creation. The use of the XML, CFG, and PDG representations makes the implementation of Jrbx more understandable and reusable, and thus facilitates tool developers creating new refactorings and modifying existing ones.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"47 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":"114681319","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}
AndrewJ. L. Gear, J. Buckley, B. Cleary, J. Collins, K. O'Dea
Identifying elements of existing software that are reused within a system may provide maintainers with valuable insights during system evolution. This paper evaluates an extension of software reconnaissance that can be used to analyze reuse across features in a system, as part of a component recovery process. We illustrate and evaluate retrieval of reuse information in this fashion using a large, commercial ERP and warehousing application. Results suggest that the approach scales well in terms of reuse information across features in existing software, providing maintainers with a valuable new perspective on the software system in question.
{"title":"Achieving a reuse perspective within a component recovery process: an industrial scale case study","authors":"AndrewJ. L. Gear, J. Buckley, B. Cleary, J. Collins, K. O'Dea","doi":"10.1109/WPC.2005.4","DOIUrl":"https://doi.org/10.1109/WPC.2005.4","url":null,"abstract":"Identifying elements of existing software that are reused within a system may provide maintainers with valuable insights during system evolution. This paper evaluates an extension of software reconnaissance that can be used to analyze reuse across features in a system, as part of a component recovery process. We illustrate and evaluate retrieval of reuse information in this fashion using a large, commercial ERP and warehousing application. Results suggest that the approach scales well in terms of reuse information across features in existing software, providing maintainers with a valuable new perspective on the software system in question.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"81 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":"128228919","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 describes a demonstration of the REGoLive reverse engineering tool. REGoLive supports comprehension of Web sites with three distinct viewpoints: developer-view, server-view, and client-view. Each viewpoint provides unique information about a Web site, which is not contained in other viewpoints. REGoLive is built on top of the Go-Live Web authoring tool, which allows us to expose the developer-view of sites that have been built with GoLive. REGoLive shows a graph visualization of each viewpoint and allows the reverse engineer to navigate mappings between them. We believe that all three viewpoints are necessary to understand a Web site effectively.
{"title":"REGoLive: Web site comprehension with viewpoints","authors":"Grace Gui, H. Kienle, H. Müller","doi":"10.1109/WPC.2005.29","DOIUrl":"https://doi.org/10.1109/WPC.2005.29","url":null,"abstract":"This paper describes a demonstration of the REGoLive reverse engineering tool. REGoLive supports comprehension of Web sites with three distinct viewpoints: developer-view, server-view, and client-view. Each viewpoint provides unique information about a Web site, which is not contained in other viewpoints. REGoLive is built on top of the Go-Live Web authoring tool, which allows us to expose the developer-view of sites that have been built with GoLive. REGoLive shows a graph visualization of each viewpoint and allows the reverse engineer to navigate mappings between them. We believe that all three viewpoints are necessary to understand a Web site effectively.","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":"130949410","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}