{"title":"Understanding program understanding","authors":"Françoise Balmas, H. Wertz, J. Singer","doi":"10.1109/WPC.2000.852501","DOIUrl":"https://doi.org/10.1109/WPC.2000.852501","url":null,"abstract":"It is well known that many software activities involve Program Understanding tasks. In fact, anyone working in Software Engineering is confronted with the task of understanding programs, at one level or another, in one form or another, and normally s/he succeeds rather well. However, we don't have any clear understanding of what ?to understand programs? means: is it to extract the program's structure or control/data flows? Is it to understand the relations between data and its transformations with respect to meanings in the application domain? Etc. We do neither have explicit guidelines to help us to perform a given program understanding task, nor do we have good criteria to decide how to represent knowledge derived by and used for program understanding. We conclude from the latter a strong need for further (fundamental) research in the Program Understanding area itself.Below is a provisional list of questions about program understanding: How could we define ?Program Understanding?? When do we decide we understand (enough) a program? What kind of program understanding do we achieve depending on the task at hand? How do we represent, in our minds, on paper or in files, our understanding of a program? What kind of help can we get from existing Program Understanding tools? What would we like to get actually (be it feasible or not)? What can we expect to have, as automatic help to understand programs, in the near future, in the long term? How could we describe our experiments, our own knowledge, so that they can be shared, re-used? What about Program Understanding Patterns?The goal of this Working Session is to exchange views on the former questions and others, to discuss possible research strategies, and to create an international interest group on Program Understanding, enhancing the sharing of tools, ideas and repositories.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"213 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115509910","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}
{"title":"Metric-based analysis of context-free grammars","authors":"James F. Power, B. Malloy","doi":"10.1109/WPC.2000.852491","DOIUrl":"https://doi.org/10.1109/WPC.2000.852491","url":null,"abstract":"Recent advances in software engineering have produced a variety of well-established approaches, formalisms and techniques to facilitate the construction of large-scale applications. Developers who are interested in the construction of robust, extensible software that is easy to maintain should expect to deploy a range of these techniques, as appropriate to the task. In this paper, we provide a foundation for the application of established software metrics to the measurement of context-free grammars. The usual application of software metrics is to program code; we provide a mapping that allows these metrics to be applied to grammars. This allows us to interpret six software engineering metrics in a grammatical context, including T.J. McCabe's (1976) complexity metric and N.E. Fenton et al.'s (1996) impurity metric. We have designed and implemented a tool to automatically compute the six metrics; as a case study, we use these six metrics to measure some of the properties of grammars for the Oberon, ISO C, ISO C++ and Java programming languages. We believe that the techniques that we have developed can be applied to estimating the difficulty of designing, implementing, testing and maintaining parsers for large grammars.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"47 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123613278","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}
{"title":"Evaluating the accessor classification approach to detect abstract data types","authors":"J. Girard, Martin Würthner","doi":"10.1109/WPC.2000.852483","DOIUrl":"https://doi.org/10.1109/WPC.2000.852483","url":null,"abstract":"The article presents a reverse engineering approach to identify abstract data types (ADTs) in source code. For each structured type defined in a system, this approach assigns a role to functions related to this type. Then, using various heuristics, it associates these functions with types to form ADTs. A prototype tool has been implemented to support this approach. It has been applied to three C systems (each between 30-38 Kloc). The ADTs identified by the approach are compared to those identified by software engineers who did not know the proposed approach. In a case study, this approach has been shown to identify (in most cases), ADTs more accurately than four published techniques applied on the same systems. At the same time, the number of false positives produced by the approach is equal to or lower than that of any compared technique. The article also proposes refinements to the evaluation scheme used previously.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"21 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124000427","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}
{"title":"Requirements for an elucidative programming environment","authors":"K. Nørmark","doi":"10.1109/WPC.2000.852486","DOIUrl":"https://doi.org/10.1109/WPC.2000.852486","url":null,"abstract":"Motivates a variation of literate programming which I call \"elucidative programming\". Elucidative programming is oriented towards program explanation, with the purpose of throwing light on important and complex program relationships. Since it was proposed by D.E. Knuth (1984), literate programming has been one of the most viable approaches to radically improving internal program documentation. Unfortunately, most programmers find the ideas of literate programming, as supported by Web-like tools, far too impractical, academic and far-fetched in relation to current programming practices. With elucidative programming, I focus on the best ideas of literate programming. I disregard the program-publishing aspects as technical literature, and I provide mechanisms with which documentation can be added to a program without affecting or disturbing the source program. My ideas about elucidative programming are presented as a number of requirements, and in a discussion of programming environment issues in relation to these new ideas.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"41 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132212377","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}
{"title":"A pattern matching framework for software architecture recovery and restructuring","authors":"K. Sartipi, K. Kontogiannis, F. Mavaddat","doi":"10.1109/WPC.2000.852478","DOIUrl":"https://doi.org/10.1109/WPC.2000.852478","url":null,"abstract":"The paper presents a framework for software architecture recovery and restructuring. The user specifies a high level abstraction view of the system using a structured pattern language. A pattern matching engine provides an optimal match between the given pattern and a decomposition of the legacy system entities by satisfying the inter/intramodule constraints defined by the pattern. The data mining technique Apriori is used by the matching engine to reveal meaningful data and control flow properties of the target system and limit the search space. A branch and bound search algorithm using a score function, models the constraints in the pattern as a Valued Constraint Satisfaction Problem (VCSP), and assists in searching for an optimal match between the given pattern and the target system.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"6 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114448541","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}
D. Binkley, L. R. Raszewski, Christopher Smith, M. Harman
{"title":"An empirical study of amorphous slicing as a program comprehension support tool","authors":"D. Binkley, L. R. Raszewski, Christopher Smith, M. Harman","doi":"10.1109/WPC.2000.852490","DOIUrl":"https://doi.org/10.1109/WPC.2000.852490","url":null,"abstract":"Amorphous program slicing relaxes the syntactic constraint of traditional slicing and can therefore produce considerably smaller slices. This simplification power can be used to answer questions a software engineer might have about a program by first augmenting the program to make the question explicit and then slicing out an answer. One benefit of this technique is that the answer is in the form of a program and thus, in a language that the software engineer understands well. To test the usefulness of amorphous slicing in answering such questions, the question of array access safety is considered. A safety slice (an amorphous slice of an augmented program) is used to guide a software engineer to potential array bounds violations. A series of experiments was conducted to determine whether the safety slice was an effective aid to an engineer. 76 subjects participated in the controlled experiments. For experiments involving novice programmers, the null hypothesis could not be rejected, and so it was not possible to conclude that amorphous slicing assisted such programmers. However for more experienced groups, the experimental subjects (who were able to consult amorphous slices) significantly outperformed the control group. The study lends empirical support to the assertion that amorphous slicing assists program comprehension.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"22 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122196905","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}
{"title":"Case study of feature location using dependence graph","authors":"Kunrong Chen, V. Rajlich","doi":"10.1109/WPC.2000.852498","DOIUrl":"https://doi.org/10.1109/WPC.2000.852498","url":null,"abstract":"Software change requests are often formulated as requests to modify or to add a specific feature or concept. To implement these changes, the features or concepts must be located in the code. We describe the scenarios of the feature and concept location. The scenarios utilize a computer-assisted search of software dependence graph. Scenarios are demonstrated by a case study of NCSA Mosaic source code.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"14 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131680197","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}
{"title":"Program comprehension through multiple simultaneous views: a session with VinEd","authors":"J. Sajaniemi","doi":"10.1109/WPC.2000.852484","DOIUrl":"https://doi.org/10.1109/WPC.2000.852484","url":null,"abstract":"Program comprehension is a hard cognitive task that can be promoted by the use of views, i.e., automatically created concrete representations of a program revealing different aspects of its structure and behavior. VinEd is a view-based editor that allows users to add their own views to the system. The paper analyzes the VinEd approach by presenting a scenario of a session where VinEd is used in a comprehension task. The scenario is analyzed from a cognitive point of view. The VinEd approach is also evaluated using two requirement lists proposed for software exploration tools.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"406 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133238284","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}
G. Antoniol, G. Canfora, A. D. Lucia, G. Casazza, E. Merlo
{"title":"Tracing object-oriented code into functional requirements","authors":"G. Antoniol, G. Canfora, A. D. Lucia, G. Casazza, E. Merlo","doi":"10.1109/WPC.2000.852482","DOIUrl":"https://doi.org/10.1109/WPC.2000.852482","url":null,"abstract":"Software system documentation is almost always expressed informally, in natural language and free text. Examples include requirement specifications, design documents, manual pages, system development journals, error logs and related maintenance reports. We propose an approach to establish and maintain traceability links between source code and free text documents. A premise of our work is that programmers use meaningful names for program items, such as functions, variables, types, classes, and methods. We believe that the application-domain knowledge that programmers process when writing the code is often captured by the mnemonics for identifiers; therefore, the analysis of these mnemonics can help to associate high level concepts with program concepts, and vice-versa. The approach is applied to software written in an object oriented language, namely Java, to trace classes to functional requirements.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"107 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116374934","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}
{"title":"Types and concept analysis for legacy systems","authors":"T. Kuipers, L. Moonen","doi":"10.1109/WPC.2000.852496","DOIUrl":"https://doi.org/10.1109/WPC.2000.852496","url":null,"abstract":"We combine type inference and concept analysis in order to gain insight into legacy software systems. Type inference for COBOL yields the types for variables and program parameters. These types are used to perform mathematical concept analysis on legacy systems. We have developed ConceptRefinery, a tool for interactively manipulating concepts. We show how this tool facilitates experiments with concept analysis, and lets reengineers employ their knowledge of the legacy system to refine the results of concept analysis.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123667367","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}