{"title":"A framework for experimental evaluation of clustering techniques","authors":"R. Koschke, T. Eisenbarth","doi":"10.1109/WPC.2000.852494","DOIUrl":"https://doi.org/10.1109/WPC.2000.852494","url":null,"abstract":"Experimental evaluation of clustering techniques for component recovery is necessary in order to analyze their strengths and weaknesses in comparison to other techniques. For comparable evaluations of automatic clustering techniques, a common reference corpus of freely available systems is needed for which the actual components are known. The reference corpus is used to measure recall and precision of automatic techniques. For this measurement, a standard scheme for comparing the components recovered by a clustering technique to components in the reference corpus is required. This paper describes both the process of setting up reference corpora and ways of measuring recall and precision of automatic clustering techniques. For methods with human intervention, controlled experiments should be conducted. This paper additionally proposes a controlled experiment as a standard for evaluating manual and semi-automatic component recovery methods that can be conducted cost-effectively.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"59 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":"126708740","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":"Architectural level hypothesis testing through reverse engineering of object-oriented software","authors":"S. Counsell, Peter Newson, E. Mendes","doi":"10.1109/WPC.2000.852480","DOIUrl":"https://doi.org/10.1109/WPC.2000.852480","url":null,"abstract":"Comprehension of an object oriented (OO) system, its architecture and use of OO features such as aggregation, generalisation and other forms of association is a difficult task to undertake without the original design documentation for reference. A reverse engineering tool was used to reproduce the UML design documentation from code of three industrial sized systems. High level class metrics were then collected directly from the design documents. Three hypotheses were tested to establish relationships between these high level features and the low level class features of number of class methods and attributes. A further hypothesis was tested to determine features of key classes in a system. Results indicated that, whilst no clear patterns emerged for hypotheses relating to generalisation, there was a clear (positive) statistical significance for all three systems studied between aggregation, other types of association and the number of method and attributes in a class. The final hypothesis tested supported the view that key classes in each of the three systems tended to contain a large number of methods, attributes, and associations, significant amounts of aggregation but very little inheritance. An important factor in the comprehension of a systems' architecture is therefore an understanding of the systems' key classes and the coupling patterns (due to aggregation and association) of those classes.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"42 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":"114216794","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}
Derek Rayside, Steve Reuss, Erik Hedges, K. Kontogiannis
{"title":"The effect of call graph construction algorithms for object-oriented programs on automatic clustering","authors":"Derek Rayside, Steve Reuss, Erik Hedges, K. Kontogiannis","doi":"10.1109/WPC.2000.852493","DOIUrl":"https://doi.org/10.1109/WPC.2000.852493","url":null,"abstract":"Call graphs are commonly used as input for automatic clustering algorithms, the goal of which is to extract the high level structure of the program under study. Determining the call graph for a procedural program is fairly simple. However this is not the case for programs written in object oriented languages, due to polymorphism. A number of algorithms for the static construction of an object oriented program's call graph have been developed in the compiler optimization literature in recent years. We investigate the effect of three such algorithms on the automatic clustering of the Java Expert System Shell (JESS). Object oriented programs have an inherently richer structure than those written in procedural languages, and so even medium sized programs such as JESS produce large graphs. Existing tools that we are aware of are not able to process such graphs. Consequently, we have developed our own algorithm for automatic clustering that is scalable to large graphs. This algorithm also supports user specified constraints through the use of 'weighted' arcs.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"20 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":"125945789","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":"On the stability of software clustering algorithms","authors":"Vassilios Tzerpos, R. Holt","doi":"10.1109/WPC.2000.852495","DOIUrl":"https://doi.org/10.1109/WPC.2000.852495","url":null,"abstract":"A crucial step in understanding a large legacy software system is to decompose it into meaningful subsystems, which can be separately studied. This decomposition can be done either manually or automatically by a software clustering algorithm (SCA). Similar versions of a software system can be expected to have similar decompositions. We say an SCA is stable if small changes in its input (the software system) produce small changes in its output (the decomposition). The paper defines stability formally, explains why it is an essential property for an SCA, and gives experimental results from evaluating the stability of various decomposition algorithms suggested in the literature.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"68 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":"133462957","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":"Working session: tools for program comprehension: building a comprehender's workbench","authors":"K. Gallagher","doi":"10.1109/WPC.2000.852500","DOIUrl":"https://doi.org/10.1109/WPC.2000.852500","url":null,"abstract":"Comprehension, the primordial task, has not changed much in 40 years. Whether the comprehension task is global (architectural) or atomic (single statement effect), the approach is the same. We run it. We read it. We grep (search) it. An electronic search on the criteria ?comprehension and tools? yielded no results. Therefore, while there is programmer's workbench, a maintainer's workbench, and a tester's workbench, the comprehender's workbench is evidently barren. While borrowing tools from other engineers gives a toehold, the question still arises: ?What tools belong in a comprehender's workbench, per se?? This workshop session will try to answer this question.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"31 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":"124087062","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":"Automated quality analysis of component software for embedded systems","authors":"J. Weber, Jörg Niere, J. Wadsack","doi":"10.1109/WPC.2000.852476","DOIUrl":"https://doi.org/10.1109/WPC.2000.852476","url":null,"abstract":"The Java programming language has gained increasing importance for the development of embedded systems. To be cost efficient, such systems have to cope with significant hardware restrictions which result in certain software programming restrictions. Recently, companies have started to apply Java component technology also in the area of embedded systems. Components are pieces of software with a defined interface which can be reused in different applications. Typically, components are not developed under programming restrictions for specific embedded systems, because those restrictions depend highly on the underlying hardware. Executing such software on a micro controller with very limited resources often results in unforeseen problems, e.g., in a memory overflow. Failure to detect such problems in an early stage might lead to significant costs, e.g., for replacing software on thousands of produced controllers. The authors present a semi-automatic approach to inspect Java source code in order to check for predefined hardware dependent restrictions. As an application domain we have chosen Java Smart Cards, which are very popular today, introduce their specific restrictions, and present how to inspect Java code to ensure that all restrictions are considered.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"10 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":"125919820","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. Tran, Michael W. Godfrey, Eric H. S. Lee, R. Holt
{"title":"Architectural repair of open source software","authors":"J. Tran, Michael W. Godfrey, Eric H. S. Lee, R. Holt","doi":"10.1109/WPC.2000.852479","DOIUrl":"https://doi.org/10.1109/WPC.2000.852479","url":null,"abstract":"As a software system evolves, its architecture will drift. System changes are often done without considering their effects on the system structure. These changes often introduce structural anomalies between the concrete (as-built) and the conceptual (as-designed) architecture which can impede program understanding. The problem of architectural drift is especially pronounced in open source systems, where many developers work in isolation on distinct features with little co-ordination. The authors present their experiences with repairing the architectures of two large open source systems (the Linux operating system kernel and the VIM text editor) to aid program understanding. For both systems, we were successful in removing many structural anomalies from their architectures.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"41 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":"116857968","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":"An exploratory case study of the maintenance effectiveness of traceability models","authors":"A. Bianchi, G. Visaggio, A. R. Fasolino","doi":"10.1109/WPC.2000.852489","DOIUrl":"https://doi.org/10.1109/WPC.2000.852489","url":null,"abstract":"Analysing the role of traceability models in software maintenance and comprehension is an important research issue. An exploratory case study evaluating the relationship between the granularity of the traceability model adopted and the effectiveness of the maintenance process is presented in this paper. Two maintenance effectiveness aspects were taken into account: efficiency and accuracy. The analysis was carried out in an object-oriented environment, with the support of an integrated platform of software tools. The preliminary results show that some aspects of the effectiveness of the maintenance process can be improved by modifying the degree of granularity of the model. These results encourage further research into this topic, while some additional side-effects that emerged from the study are also investigated.","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"55 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":"131314668","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":"Direction and scope of comprehension-related activities by procedural and object-oriented programmers: an empirical study","authors":"Cynthia L. Corritore, S. Wiedenbeck","doi":"10.1109/WPC.2000.852488","DOIUrl":"https://doi.org/10.1109/WPC.2000.852488","url":null,"abstract":"Examines the direction and scope of comprehension-related activities of professional programmers carrying out several program comprehension and maintenance activities over time. Procedural and object-oriented (OO) programmers studied a program and subsequently performed modifications during two sessions. The results showed that the OO programmers tended to use a strongly top-down approach to program understanding during the early phase of studying the program, but increasingly used a bottom-up approach during the maintenance tasks. The procedural programmers used a more bottom-up orientation throughout all activities. The scope of the activities was greater for the procedural than for the OO programmers. However, regardless of the programming paradigm used, the programmers over time built a broad, rather than a localized, view of the program.","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":"129857794","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 comparison of graphs of concept for reverse engineering","authors":"N. Anquetil","doi":"10.1109/WPC.2000.852497","DOIUrl":"https://doi.org/10.1109/WPC.2000.852497","url":null,"abstract":"To group related things together (for example to form subsystems), researchers in reverse engineering are looking for algorithms that create meaningful groups. One such algorithm, concept analysis, received a lot of interest recently. It creates a lattice of concepts which have some advantages over the more traditional tree of clusters from clustering algorithms. We argue that the main interest of concept analysis lies in the concepts themselves and can be disconnected from the particular structure (the lattice of concepts) in which the concepts are usually arranged. We compare concept analysis to various other algorithms trying to select the most important concepts contained in a set of entities. Our main conclusion is that although it has advantages, the lattice of concepts suffers from a major drawback that other constructs do not have: it returns much more information (concepts) than it was given as input (a set of entities describing some software system).","PeriodicalId":448149,"journal":{"name":"Proceedings IWPC 2000. 8th International Workshop on Program Comprehension","volume":"03 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":"128910451","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}