Much of the complexity of software arises from the interactions between disparate concerns. Even in well-designed software, some concerns can not always be encapsulated in a module. Research on separation of concerns seeks to address this problem, but we lack an understanding of how programmers conceptualize the notion of a concern and then identify that concern in code. In this work, we have conducted two exploratory case studies to better understand these issues. The case studies involved programmers identifying concerns and associated code in existing, unfamiliar software: GNU's sort.c and the game Minesweeper. Based on our experiences with these two case studies, we have identified several types of concerns and have detailed a number of factors that impact programmer identification of concerns. Based on these insights, we have created two sets of guidelines: one to help programmers identify relevant concerns and another to help programmers identify code relating to concerns.
{"title":"Understanding concerns in software: insights gained from two case studies","authors":"Meghan Revelle, T. Broadbent, D. Coppit","doi":"10.1109/WPC.2005.43","DOIUrl":"https://doi.org/10.1109/WPC.2005.43","url":null,"abstract":"Much of the complexity of software arises from the interactions between disparate concerns. Even in well-designed software, some concerns can not always be encapsulated in a module. Research on separation of concerns seeks to address this problem, but we lack an understanding of how programmers conceptualize the notion of a concern and then identify that concern in code. In this work, we have conducted two exploratory case studies to better understand these issues. The case studies involved programmers identifying concerns and associated code in existing, unfamiliar software: GNU's sort.c and the game Minesweeper. Based on our experiences with these two case studies, we have identified several types of concerns and have detailed a number of factors that impact programmer identification of concerns. Based on these insights, we have created two sets of guidelines: one to help programmers identify relevant concerns and another to help programmers identify code relating to concerns.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"7 3","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-05-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114113039","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. English, J. Buckley, Tony Cahill, Kristian Lynch
A commonly held belief is that the friend construct in C++ is a violation of encapsulation. However, little empirical analysis of its use has taken place to provide evidence to support this claim. This paper presents a study, which assesses the design implications of including friendship in a system. A number of hypotheses are investigated based on previous work in this area by Counsell and Newson (2000). Our initial findings suggest that classes declared as friends are coupling hotspots, that the more friends a class has the more protected and private members it will contain and that friendship is not used to access inherited protected members.
{"title":"An empirical study of the use of friends in C++ software","authors":"M. English, J. Buckley, Tony Cahill, Kristian Lynch","doi":"10.1109/WPC.2005.7","DOIUrl":"https://doi.org/10.1109/WPC.2005.7","url":null,"abstract":"A commonly held belief is that the friend construct in C++ is a violation of encapsulation. However, little empirical analysis of its use has taken place to provide evidence to support this claim. This paper presents a study, which assesses the design implications of including friendship in a system. A number of hypotheses are investigated based on previous work in this area by Counsell and Newson (2000). Our initial findings suggest that classes declared as friends are coupling hotspots, that the more friends a class has the more protected and private members it will contain and that friendship is not used to access inherited protected members.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"39 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":"127718537","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}
J. Buckner, Joseph Buchta, M. Petrenko, V. Rajlich
Incremental software change adds new functionality to software. It is the foundation of software evolution, maintenance, iterative development, agile development, and other software processes. Highly interactive tool JRipples provides the programmer with the organizational support that makes the incremental change process easier and more systematic. JRipples supports impact analysis and change propagation, the two most difficult activities of the incremental change.
{"title":"JRipples: a tool for program comprehension during incremental change","authors":"J. Buckner, Joseph Buchta, M. Petrenko, V. Rajlich","doi":"10.1109/WPC.2005.22","DOIUrl":"https://doi.org/10.1109/WPC.2005.22","url":null,"abstract":"Incremental software change adds new functionality to software. It is the foundation of software evolution, maintenance, iterative development, agile development, and other software processes. Highly interactive tool JRipples provides the programmer with the organizational support that makes the incremental change process easier and more systematic. JRipples supports impact analysis and change propagation, the two most difficult activities of the incremental change.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"63 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":"124975687","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}
We present the notion of cognitive patterns, and provide several examples. A cognitive pattern is the written record of a solution to a recurring cognitive problem typically employed by experienced practitioners. We focus on those relevant to program comprehension, which we have developed through studying the literature and conducting field studies. Collectively the set of patterns constitute a rich theory of program comprehension, which is why we call each one a micro-theory. We expand on one pattern, temporal details, which is also a 'pattern language since it breaks down into sub-patterns'. A key use of cognitive patterns is to suggest useful features for tool designers to implement.
{"title":"Presenting micro-theories of program comprehension in pattern form","authors":"Adam Murray, Timothy Lethbridge","doi":"10.1109/WPC.2005.28","DOIUrl":"https://doi.org/10.1109/WPC.2005.28","url":null,"abstract":"We present the notion of cognitive patterns, and provide several examples. A cognitive pattern is the written record of a solution to a recurring cognitive problem typically employed by experienced practitioners. We focus on those relevant to program comprehension, which we have developed through studying the literature and conducting field studies. Collectively the set of patterns constitute a rich theory of program comprehension, which is why we call each one a micro-theory. We expand on one pattern, temporal details, which is also a 'pattern language since it breaks down into sub-patterns'. A key use of cognitive patterns is to suggest useful features for tool designers to implement.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"238 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":"116587099","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}
Methods for security risk analysis are often based on structured brainstorming (e.g. what [F. Redmill et al., (1999)] calls HazOp). A structured brainstorming gathers a group of different system experts and the idea is that they will find more risks as a team than one-by-one. The CORAS modelling language [M. S. Lund et al., (2003)] has been designed to support the brainstorming process and to document security risk scenarios identified during these sessions. The language is graphical, based upon the Unified Modelling Language (UML) [R. E. Walpole et al., (1998)], and is recommended by OMG. This paper reports the results from two empirical experiments concerning the CORAS language. Our results show (1) many security risk analysis terms are used in the daily language and therefore well understood, but the more abstract or less frequently used terms can be a possible source for misunderstandings in a security analysis, and (2) the language's graphical icons make diagram "navigation" faster, but the diagrams are not necessarily understood more correctly than those without graphical icons.
安全风险分析的方法通常基于结构化的头脑风暴(例如[F]。Redmill等人(1999)]称之为HazOp。结构化的头脑风暴聚集了一组不同的系统专家,其想法是他们作为一个团队将比一个人发现更多的风险。CORAS建模语言[M]。S. Lund等人,(2003)]的设计是为了支持头脑风暴过程,并记录在这些会议中确定的安全风险场景。语言是图形化的,基于统一建模语言(UML) [R。E. Walpole et al., (1998)], OMG推荐使用。本文报道了关于CORAS语言的两个实证实验的结果。我们的结果表明:(1)许多安全风险分析术语在日常语言中使用,因此很容易理解,但更抽象或较少使用的术语可能是安全分析中误解的可能来源,(2)语言的图形图标使图表“导航”更快,但图表不一定比没有图形图标的图表更正确地理解。
{"title":"On the comprehension of security risk scenarios","authors":"I. Hogganvik, K. Stølen","doi":"10.1109/WPC.2005.27","DOIUrl":"https://doi.org/10.1109/WPC.2005.27","url":null,"abstract":"Methods for security risk analysis are often based on structured brainstorming (e.g. what [F. Redmill et al., (1999)] calls HazOp). A structured brainstorming gathers a group of different system experts and the idea is that they will find more risks as a team than one-by-one. The CORAS modelling language [M. S. Lund et al., (2003)] has been designed to support the brainstorming process and to document security risk scenarios identified during these sessions. The language is graphical, based upon the Unified Modelling Language (UML) [R. E. Walpole et al., (1998)], and is recommended by OMG. This paper reports the results from two empirical experiments concerning the CORAS language. Our results show (1) many security risk analysis terms are used in the daily language and therefore well understood, but the more abstract or less frequently used terms can be a possible source for misunderstandings in a security analysis, and (2) the language's graphical icons make diagram \"navigation\" faster, but the diagrams are not necessarily understood more correctly than those without graphical icons.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"19 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":"129363899","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}
Source code can be viewed in many ways, with each view facilitating access to different information contained within the code. We explore the role that marked-up textual views can provide in support of software comprehension and maintenance. Text has the advantages of being easily communicated, effectively manipulated with existing tools, and highly scalable. Furthermore, marked-up text models may improve comprehension by expressing information directly within the context of maintainers' focus - the source code they are manipulating. The session intends to explore the expressibility of marked-up text and its applicability in support of program comprehension tasks. Topics will include: the roles these models fulfill, their limitations, their combination, and the exploration of future research directions.
{"title":"Textual views of source code to support comprehension","authors":"Anthony Cox, M. Collard","doi":"10.1109/WPC.2005.49","DOIUrl":"https://doi.org/10.1109/WPC.2005.49","url":null,"abstract":"Source code can be viewed in many ways, with each view facilitating access to different information contained within the code. We explore the role that marked-up textual views can provide in support of software comprehension and maintenance. Text has the advantages of being easily communicated, effectively manipulated with existing tools, and highly scalable. Furthermore, marked-up text models may improve comprehension by expressing information directly within the context of maintainers' focus - the source code they are manipulating. The session intends to explore the expressibility of marked-up text and its applicability in support of program comprehension tasks. Topics will include: the roles these models fulfill, their limitations, their combination, and the exploration of future research directions.","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":"131036324","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}
A. D. Lucia, R. Francese, G. Scanniello, G. Tortora
We propose a tool to identify and analyze cloned patterns in Web applications using clone analysis and clustering of static and dynamic Web pages. The tool first detects cloned pages, which are then grouped into clusters as well as the groups of links between clusters. In this way the navigational schema is simplified and the duplicated functionalities corresponding to cloned navigational patterns can be more easily analyzed. The tool also allows filtering out uninteresting parts of the restructured navigational schema, thus to further improve the understanding.
{"title":"Understanding cloned patterns in Web applications","authors":"A. D. Lucia, R. Francese, G. Scanniello, G. Tortora","doi":"10.1109/WPC.2005.42","DOIUrl":"https://doi.org/10.1109/WPC.2005.42","url":null,"abstract":"We propose a tool to identify and analyze cloned patterns in Web applications using clone analysis and clustering of static and dynamic Web pages. The tool first detects cloned pages, which are then grouped into clusters as well as the groups of links between clusters. In this way the navigational schema is simplified and the duplicated functionalities corresponding to cloned navigational patterns can be more easily analyzed. The tool also allows filtering out uninteresting parts of the restructured navigational schema, thus to further improve the understanding.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"416 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":"115228551","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}
HyperSoft is an approach for satisfying the information needs of software maintainers. HyperSoft combines the notions of automated program analysis and hypertext techniques. HyperSoft system is the implementation of the approach. It is targeted at supporting the comprehension of large programs and has been developed in cooperation with software industry. HyperSoft produces automatically transient access structures, which deliver to the users the needed information. Access structures are presented to the users via various textual, hypertextual, structural and graphical views. This paper and tool demonstration describe the tool use and applied interaction techniques.
{"title":"HyperSoft system: tool demonstration and use example","authors":"Jussi Koskinen","doi":"10.1109/WPC.2005.20","DOIUrl":"https://doi.org/10.1109/WPC.2005.20","url":null,"abstract":"HyperSoft is an approach for satisfying the information needs of software maintainers. HyperSoft combines the notions of automated program analysis and hypertext techniques. HyperSoft system is the implementation of the approach. It is targeted at supporting the comprehension of large programs and has been developed in cooperation with software industry. HyperSoft produces automatically transient access structures, which deliver to the users the needed information. Access structures are presented to the users via various textual, hypertextual, structural and graphical views. This paper and tool demonstration describe the tool use and applied interaction techniques.","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":"124754640","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}
The paper presents a usability study conducted with graduate and undergraduate computer science students, designed to evaluate the effectiveness of a software visualization tool named sv3D, and to provide necessary user data for the evolution of the system. Sv3D is a software visualization tool for comprehension of large software, capable of displaying source code and associated metrics in three dimensions. The participants in the study answered two types of questions: one set provided objective measurements to support the formulated hypotheses with respect to the accuracy and speed of the users answering questions using sv3D; the second set of questions provided subjective measurements that were used to support the evolution of sv3D. We formulated two null hypotheses with respect to accuracy and time respectively. The collected data supported one hypothesis and rejected the other.
{"title":"Supporting the evolution of a software visualization tool through usability studies","authors":"Andrian Marcus, Denise Comorski, A. Sergeyev","doi":"10.1109/WPC.2005.34","DOIUrl":"https://doi.org/10.1109/WPC.2005.34","url":null,"abstract":"The paper presents a usability study conducted with graduate and undergraduate computer science students, designed to evaluate the effectiveness of a software visualization tool named sv3D, and to provide necessary user data for the evolution of the system. Sv3D is a software visualization tool for comprehension of large software, capable of displaying source code and associated metrics in three dimensions. The participants in the study answered two types of questions: one set provided objective measurements to support the formulated hypotheses with respect to the accuracy and speed of the users answering questions using sv3D; the second set of questions provided subjective measurements that were used to support the evolution of sv3D. We formulated two null hypotheses with respect to accuracy and time respectively. The collected data supported one hypothesis and rejected the other.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"17 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":"121212669","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}
Any modification to a software system involves investigating the source code with the goal of understanding it. In turn, this investigation usually requires significant navigation effort. However, relatively little research has been conducted on software developer navigation patterns and tool support for improving navigation. Our research addresses this issue. We present NavTracks, a tool that supports browsing through software. NavTracks keeps track of the navigation history of software developers, forming associations between related files. These associations are then used as the basis for recommending potentially related files as a developer browses the software system.
{"title":"NavTracks: supporting navigation in software","authors":"J. Singer, R. Elves, M. Storey","doi":"10.1109/WPC.2005.25","DOIUrl":"https://doi.org/10.1109/WPC.2005.25","url":null,"abstract":"Any modification to a software system involves investigating the source code with the goal of understanding it. In turn, this investigation usually requires significant navigation effort. However, relatively little research has been conducted on software developer navigation patterns and tool support for improving navigation. Our research addresses this issue. We present NavTracks, a tool that supports browsing through software. NavTracks keeps track of the navigation history of software developers, forming associations between related files. These associations are then used as the basis for recommending potentially related files as a developer browses the software system.","PeriodicalId":421860,"journal":{"name":"13th International Workshop on Program Comprehension (IWPC'05)","volume":"127 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":"121335776","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}