The issue of program comprehension is addressed from the software reuse perspective. In particular the identification of abstract data types in existing program code is explored. A candidature criterion is presented and a prototype implementing it is described. The criterion is applied in an experiment that analyses five very different programs and the resulting output is discussed. The work described forms part of the RE/sup 2/ project that addresses the wider issues of software reuse through the exploration of reverse engineering and re-engineering techniques to identify and extract reusable assets from existing systems.<>
{"title":"Experiments in identifying reusable abstract data types in program code","authors":"G. Canfora, A. Cimitile, M. Munro, M. Tortorella","doi":"10.1109/WPC.1993.263908","DOIUrl":"https://doi.org/10.1109/WPC.1993.263908","url":null,"abstract":"The issue of program comprehension is addressed from the software reuse perspective. In particular the identification of abstract data types in existing program code is explored. A candidature criterion is presented and a prototype implementing it is described. The criterion is applied in an experiment that analyses five very different programs and the resulting output is discussed. The work described forms part of the RE/sup 2/ project that addresses the wider issues of software reuse through the exploration of reverse engineering and re-engineering techniques to identify and extract reusable assets from existing systems.<<ETX>>","PeriodicalId":151277,"journal":{"name":"[1993] IEEE Second Workshop on Program Comprehension","volume":"46 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1993-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114692192","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 major portion of the maintenance effort is spent understanding existing software. The authors present an integrated code comprehension model and experiences with it in an industrial setting. They use audio-taped, think-aloud reports to investigate how well this integrated code comprehension model works during industrial maintenance activities ranging from code fixes to enhancements, code leverage, and reuse. They analyze the tapes for information needs during maintenance activities and derive tool capabilities accordingly.<>
{"title":"From program comprehension to tool requirements for an industrial environment","authors":"A. Andrews, A. M. Vans","doi":"10.1109/WPC.1993.263903","DOIUrl":"https://doi.org/10.1109/WPC.1993.263903","url":null,"abstract":"A major portion of the maintenance effort is spent understanding existing software. The authors present an integrated code comprehension model and experiences with it in an industrial setting. They use audio-taped, think-aloud reports to investigate how well this integrated code comprehension model works during industrial maintenance activities ranging from code fixes to enhancements, code leverage, and reuse. They analyze the tapes for information needs during maintenance activities and derive tool capabilities accordingly.<<ETX>>","PeriodicalId":151277,"journal":{"name":"[1993] IEEE Second Workshop on Program Comprehension","volume":"36 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1993-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116776408","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}
Jonathan E. Hazan, S. Jarvis, Richard G. Morgan, R. Garigliano
Traditional arguments concerning the comprehensibility of functional programs have been illustrated with trivial examples. The authors present the real-life example of a large system for natural language processing which has been programmed entirely in a lazy functional language. This system is undergoing constant change as new features are added to different areas. They present a series of case studies which illustrate various aspects of the maintenance task, including reuse of existing parts of the system and the integration of the new features. They explain how the choice of a functional language for programming the system has aided in the comprehension of the system by new programmers and how this in turn has led to the simplification of the maintenance task. They describe the ease with which new features have been integrated into the system and relate this to the careful design of abstractions within a functional programming framework.<>
{"title":"Understanding Lolita: program comprehension in functional languages","authors":"Jonathan E. Hazan, S. Jarvis, Richard G. Morgan, R. Garigliano","doi":"10.1109/WPC.1993.263909","DOIUrl":"https://doi.org/10.1109/WPC.1993.263909","url":null,"abstract":"Traditional arguments concerning the comprehensibility of functional programs have been illustrated with trivial examples. The authors present the real-life example of a large system for natural language processing which has been programmed entirely in a lazy functional language. This system is undergoing constant change as new features are added to different areas. They present a series of case studies which illustrate various aspects of the maintenance task, including reuse of existing parts of the system and the integration of the new features. They explain how the choice of a functional language for programming the system has aided in the comprehension of the system by new programmers and how this in turn has led to the simplification of the maintenance task. They describe the ease with which new features have been integrated into the system and relate this to the careful design of abstractions within a functional programming framework.<<ETX>>","PeriodicalId":151277,"journal":{"name":"[1993] IEEE Second Workshop on Program Comprehension","volume":"4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1993-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117083381","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 Reverse Engineering group at EDS Research has developed software tools to mechanically assist in reengineering transaction processing applications. The authors apply the software tools to assist in converting a very large minicomputer application written in COBOL to run under CICS on an IBM mainframe. The two platforms provide very different user interfaces and computational environments. The user interacts with the minicomputer one field at a time, but interacts with CICS a full screen at a time. This and other major differences demand that any successful mechanical conversion strategy employ sophisticated feature extraction and restructuring techniques. They describe the problem of recovering the user interface specification and using the recovered specification to create the appropriate user interface in the target environment. Techniques such as data flow analysis and other formal analysis techniques appear to be too weak to guide the conversion, and that a priori programming knowledge must be encoded and applied to obtain a successful conversion.<>
{"title":"Recovering user interface specifications for porting transaction processing applications","authors":"Larry Van Sickle, Zheng-Yang Liu, Mike Ballantyne","doi":"10.1109/WPC.1993.263904","DOIUrl":"https://doi.org/10.1109/WPC.1993.263904","url":null,"abstract":"The Reverse Engineering group at EDS Research has developed software tools to mechanically assist in reengineering transaction processing applications. The authors apply the software tools to assist in converting a very large minicomputer application written in COBOL to run under CICS on an IBM mainframe. The two platforms provide very different user interfaces and computational environments. The user interacts with the minicomputer one field at a time, but interacts with CICS a full screen at a time. This and other major differences demand that any successful mechanical conversion strategy employ sophisticated feature extraction and restructuring techniques. They describe the problem of recovering the user interface specification and using the recovered specification to create the appropriate user interface in the target environment. Techniques such as data flow analysis and other formal analysis techniques appear to be too weak to guide the conversion, and that a priori programming knowledge must be encoded and applied to obtain a successful conversion.<<ETX>>","PeriodicalId":151277,"journal":{"name":"[1993] IEEE Second Workshop on Program Comprehension","volume":"20 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1993-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127921246","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}
An extensive programme of research has been in progress at Durham University for the past seven years to investigate how formal transformations may be used to assist the process of software maintenance, particularly addressing the issues of understanding and representing existing large software systems. The results from the research are drawn together in order to assess the success and problems of the approach.<>
{"title":"Understanding the process of software maintenance","authors":"K. Bennett","doi":"10.1109/WPC.1993.263912","DOIUrl":"https://doi.org/10.1109/WPC.1993.263912","url":null,"abstract":"An extensive programme of research has been in progress at Durham University for the past seven years to investigate how formal transformations may be used to assist the process of software maintenance, particularly addressing the issues of understanding and representing existing large software systems. The results from the research are drawn together in order to assess the success and problems of the approach.<<ETX>>","PeriodicalId":151277,"journal":{"name":"[1993] IEEE Second Workshop on Program Comprehension","volume":"82 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1993-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124672839","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}
Test cases. amd the human activities involved in testing and error analysis play a peculiar and considerable role in the comprehension of a software product and process. This subject was systematically explored in the context of the Esprit DOCKET Project designing and experimenting second-generation reverse engineering processes which combine multiple knowledge sources. This paper describes the approach, and the architecture which have been designed for the capitalisation of the knowledge products of both existing software life cycle activities and proposed knowledge-elicitation oriented testing strategies.<>
{"title":"The role of testing and dynamic analysis in program comprehension supports","authors":"P. Benedusi, V. Benvenuto, L. Tomacelli","doi":"10.1109/WPC.1993.263896","DOIUrl":"https://doi.org/10.1109/WPC.1993.263896","url":null,"abstract":"Test cases. amd the human activities involved in testing and error analysis play a peculiar and considerable role in the comprehension of a software product and process. This subject was systematically explored in the context of the Esprit DOCKET Project designing and experimenting second-generation reverse engineering processes which combine multiple knowledge sources. This paper describes the approach, and the architecture which have been designed for the capitalisation of the knowledge products of both existing software life cycle activities and proposed knowledge-elicitation oriented testing strategies.<<ETX>>","PeriodicalId":151277,"journal":{"name":"[1993] IEEE Second Workshop on Program Comprehension","volume":"12 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1993-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130746490","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}
With the growing awareness of the importance of software maintenance, has come a re-evaluation of software maintenance tools. Such tools range from source code analysers to semi-intelligent tools which seek to reconstruct systems designs and specification documents from source code. However, it is clear that relying solely upon source code as the basis for reverse engineering has many problems. This paper proposes the need for program comprehension-in-the-large and describes the work of the Esprit DOCKET project which seeks to provide such a support capability. The DOCKET project has developed a prototype environment to support the development of a system model linking user-oriented, business aspects of a system, to operational code using a variety of knowledge source inputs: code, documents and user expertise. The aim is to provide a coherent model to form the basis for system and program understanding and to support the software change and evolution process.<>
{"title":"DOCKET: program comprehension-in-the-large","authors":"P. Layzell, R. Champion, M. Freeman","doi":"10.1109/WPC.1993.263897","DOIUrl":"https://doi.org/10.1109/WPC.1993.263897","url":null,"abstract":"With the growing awareness of the importance of software maintenance, has come a re-evaluation of software maintenance tools. Such tools range from source code analysers to semi-intelligent tools which seek to reconstruct systems designs and specification documents from source code. However, it is clear that relying solely upon source code as the basis for reverse engineering has many problems. This paper proposes the need for program comprehension-in-the-large and describes the work of the Esprit DOCKET project which seeks to provide such a support capability. The DOCKET project has developed a prototype environment to support the development of a system model linking user-oriented, business aspects of a system, to operational code using a variety of knowledge source inputs: code, documents and user expertise. The aim is to provide a coherent model to form the basis for system and program understanding and to support the software change and evolution process.<<ETX>>","PeriodicalId":151277,"journal":{"name":"[1993] IEEE Second Workshop on Program Comprehension","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1993-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122816768","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 work deals with the problem of locating domain dependent functions into old application systems and drawing out them for reengineering and reuse. The approach is based on a particular form of program slicing which makes it possible to recover user functionalities although they are spread over the code. Supported by a commercial tool, the approach has been experimented with a banking application system, whose maintenance problems were increasingly serious. Lessons learned suggest that a successful application of program slicing needs the correct identification of data used as operands and results of the domain function. Moreover some preliminary form of code segmentation may be required to enable program slicing to focus on the expected functionalities.<>
{"title":"Extracting application domain functions from old code: a real experience","authors":"F. Cutillo, F. Lanubile, G. Visaggio","doi":"10.1109/WPC.1993.263892","DOIUrl":"https://doi.org/10.1109/WPC.1993.263892","url":null,"abstract":"This work deals with the problem of locating domain dependent functions into old application systems and drawing out them for reengineering and reuse. The approach is based on a particular form of program slicing which makes it possible to recover user functionalities although they are spread over the code. Supported by a commercial tool, the approach has been experimented with a banking application system, whose maintenance problems were increasingly serious. Lessons learned suggest that a successful application of program slicing needs the correct identification of data used as operands and results of the domain function. Moreover some preliminary form of code segmentation may be required to enable program slicing to focus on the expected functionalities.<<ETX>>","PeriodicalId":151277,"journal":{"name":"[1993] IEEE Second Workshop on Program Comprehension","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1993-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130543973","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}
Program understanding is associated with the hierarchy of abstractions and interpretations that are deduced from the code. Program understanding requires the identification and study of the numerous complex interrelationships that are induced by the data flow, calling, and functional dependencies that exist in the software. Therefore, an environment is needed in order aid the programmer in understanding software. The authors have previously discussed both an internal program representation and an environment that conforms to the requirements stated. The toolset is referred to as Ghinsu and it supports a number of tasks over a program written in a subset of ANSI C such as slicing, dicing, and ripple analysis. They present some background on the problems associated with program understanding and show how the Ghinsu toolset can aid the programmer in understanding software.<>
{"title":"A toolset for program understanding","authors":"P. Livadas, S. Alden","doi":"10.1109/WPC.1993.263900","DOIUrl":"https://doi.org/10.1109/WPC.1993.263900","url":null,"abstract":"Program understanding is associated with the hierarchy of abstractions and interpretations that are deduced from the code. Program understanding requires the identification and study of the numerous complex interrelationships that are induced by the data flow, calling, and functional dependencies that exist in the software. Therefore, an environment is needed in order aid the programmer in understanding software. The authors have previously discussed both an internal program representation and an environment that conforms to the requirements stated. The toolset is referred to as Ghinsu and it supports a number of tasks over a program written in a subset of ANSI C such as slicing, dicing, and ripple analysis. They present some background on the problems associated with program understanding and show how the Ghinsu toolset can aid the programmer in understanding software.<<ETX>>","PeriodicalId":151277,"journal":{"name":"[1993] IEEE Second Workshop on Program Comprehension","volume":"97 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1993-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122584542","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 maintenance of applications constitutes the most relevant issue of the overall life cycle activities. CASE tools claim to be effective in producing efficient and error free software, but usually the maintainer doesn't want to produce new system applications, but just to modify the existing ones. Re-engineering appears to be a suitable way of getting the advantages of the automated CASE tools, without facing the costs involved in a complete redevelopment of the existing systems, whose specifications are sometimes obsolete and no more corresponding to the actual version of the software. The authors present a totally automatic approach towards the reconstruction of the software documentation and possible code re-engineering. They move from the source code by using a static code analyser and capture information pertinent to higher level design phases that are subsequently imported into the ADW CASE tool.<>
{"title":"Charon: a tool for code redocumentation and re-engineering","authors":"O. Signore, M. Loffredo","doi":"10.1109/WPC.1993.263894","DOIUrl":"https://doi.org/10.1109/WPC.1993.263894","url":null,"abstract":"The maintenance of applications constitutes the most relevant issue of the overall life cycle activities. CASE tools claim to be effective in producing efficient and error free software, but usually the maintainer doesn't want to produce new system applications, but just to modify the existing ones. Re-engineering appears to be a suitable way of getting the advantages of the automated CASE tools, without facing the costs involved in a complete redevelopment of the existing systems, whose specifications are sometimes obsolete and no more corresponding to the actual version of the software. The authors present a totally automatic approach towards the reconstruction of the software documentation and possible code re-engineering. They move from the source code by using a static code analyser and capture information pertinent to higher level design phases that are subsequently imported into the ADW CASE tool.<<ETX>>","PeriodicalId":151277,"journal":{"name":"[1993] IEEE Second Workshop on Program Comprehension","volume":"117 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1993-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133519646","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}