Pub Date : 1998-03-16DOI: 10.1109/ICSM.1998.738509
E. Burd, Malcolm Munro
As software applications increase in size, grouping the application into smaller, more manageable components is often proposed as a means of assisting software maintenance activities. This paper investigates the suitability of components generated using data clustering techniques. The suitability of the approach is based on real case studies from a commercial environment. Successive versions of the software application are used to investigate how the software applications change throughout the maintenance process. Within this paper, the change process as a whole is referred to as the process of software evolution. This paper provides an indication of how applications evolve over time and how clustering techniques are affected by the evolution process.
{"title":"Investigating component-based maintenance and the effect of software evolution: a reengineering approach using data clustering","authors":"E. Burd, Malcolm Munro","doi":"10.1109/ICSM.1998.738509","DOIUrl":"https://doi.org/10.1109/ICSM.1998.738509","url":null,"abstract":"As software applications increase in size, grouping the application into smaller, more manageable components is often proposed as a means of assisting software maintenance activities. This paper investigates the suitability of components generated using data clustering techniques. The suitability of the approach is based on real case studies from a commercial environment. Successive versions of the software application are used to investigate how the software applications change throughout the maintenance process. Within this paper, the change process as a whole is referred to as the process of software evolution. This paper provides an indication of how applications evolve over time and how clustering techniques are affected by the evolution process.","PeriodicalId":271895,"journal":{"name":"Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272)","volume":"65 1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1998-03-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121560787","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}
Pub Date : 1998-03-16DOI: 10.1109/ICSM.1998.738514
C. Cifuentes, Doug Simon, A. Fraboulet
Translation of assembly code to high-level language code is of importance in the maintenance of legacy code, as well as in the areas of program understanding, porting, and recovery of code. We present techniques used in the asm2c translator, a SPARC assembly to C translator. The techniques involve data and control flow analyses. The data flow analysis eliminates machine dependencies from the assembly code and recovers high-level language expressions. The control flow analysis recovers control structure statements. Simple data type recovery is also done. The presented techniques are extensions and improvements on previously developed CISC techniques. The choice of intermediate representation allows for both RISC and CISC assembly code to be supported by the analyses. We tested asm2c against SPEC95 SPARC assembly programs generated by a C compiler. Results using both unoptimized and optimized assembly code are presented.
{"title":"Assembly to high-level language translation","authors":"C. Cifuentes, Doug Simon, A. Fraboulet","doi":"10.1109/ICSM.1998.738514","DOIUrl":"https://doi.org/10.1109/ICSM.1998.738514","url":null,"abstract":"Translation of assembly code to high-level language code is of importance in the maintenance of legacy code, as well as in the areas of program understanding, porting, and recovery of code. We present techniques used in the asm2c translator, a SPARC assembly to C translator. The techniques involve data and control flow analyses. The data flow analysis eliminates machine dependencies from the assembly code and recovers high-level language expressions. The control flow analysis recovers control structure statements. Simple data type recovery is also done. The presented techniques are extensions and improvements on previously developed CISC techniques. The choice of intermediate representation allows for both RISC and CISC assembly code to be supported by the analyses. We tested asm2c against SPEC95 SPARC assembly programs generated by a C compiler. Results using both unoptimized and optimized assembly code are presented.","PeriodicalId":271895,"journal":{"name":"Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1998-03-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128976243","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}
Pub Date : 1998-03-16DOI: 10.1109/ICSM.1998.738525
M. Harman, Y. Sivagurunathan, S. Danicic
Problems associated with understanding, verifying and re-engineering the way in which a system allocates and releases dynamic memory present significant challenges to the software maintainer. Because the questions underlying these problems are undecidable, no system can provide a completely fail safe certification. For example, in checking for memory leaks, a system can only warn of potential problems, but cannot guarantee that no leaks remain. We present an approach to modelling the dynamic memory access properties of a program using amorphous program slicing to create a Dynamic Memory Model (DMM). The slices are constructed from a transformed version of the original program in which heap access has been made explicit using a pseudo variable to denote the top of the heap. The DMM is a simplified version of the original program which is concerned solely with the dynamic memory access behaviour of the original. We illustrate the use of DMMs in problems of comprehension, verification and re-engineering. We introduce a proof-of-concept DMM construction algorithm, showing how slicing simplification power can be dramatically improved using domain-specific transformation rules.
{"title":"Analysis of dynamic memory access using amorphous slicing","authors":"M. Harman, Y. Sivagurunathan, S. Danicic","doi":"10.1109/ICSM.1998.738525","DOIUrl":"https://doi.org/10.1109/ICSM.1998.738525","url":null,"abstract":"Problems associated with understanding, verifying and re-engineering the way in which a system allocates and releases dynamic memory present significant challenges to the software maintainer. Because the questions underlying these problems are undecidable, no system can provide a completely fail safe certification. For example, in checking for memory leaks, a system can only warn of potential problems, but cannot guarantee that no leaks remain. We present an approach to modelling the dynamic memory access properties of a program using amorphous program slicing to create a Dynamic Memory Model (DMM). The slices are constructed from a transformed version of the original program in which heap access has been made explicit using a pseudo variable to denote the top of the heap. The DMM is a simplified version of the original program which is concerned solely with the dynamic memory access behaviour of the original. We illustrate the use of DMMs in problems of comprehension, verification and re-engineering. We introduce a proof-of-concept DMM construction algorithm, showing how slicing simplification power can be dramatically improved using domain-specific transformation rules.","PeriodicalId":271895,"journal":{"name":"Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272)","volume":"129 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1998-03-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116573552","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}
Pub Date : 1998-03-16DOI: 10.1109/ICSM.1998.738488
F. I. Vokolos, P. Frankl
Regression testing is a commonly used activity whose purpose is to determine whether the modifications made to a software system have introduced new faults. Textual differencing is a new, safe and fairly precise, selective regression testing technique that works by comparing source files from the old and the new version of the program. We have implemented the textual differencing technique in a tool called Pythia. Pythia has been developed primarily through the integration of standard, well known UNIX programs, and is capable of analyzing large software systems written in C. We present results from a case study involving a software system of approximately 11,000 lines of source code written for the European Space Agency. The results provide empirical evidence that textual differencing is very fast and capable of achieving substantial reductions in the size of the regression test suite.
{"title":"Empirical evaluation of the textual differencing regression testing technique","authors":"F. I. Vokolos, P. Frankl","doi":"10.1109/ICSM.1998.738488","DOIUrl":"https://doi.org/10.1109/ICSM.1998.738488","url":null,"abstract":"Regression testing is a commonly used activity whose purpose is to determine whether the modifications made to a software system have introduced new faults. Textual differencing is a new, safe and fairly precise, selective regression testing technique that works by comparing source files from the old and the new version of the program. We have implemented the textual differencing technique in a tool called Pythia. Pythia has been developed primarily through the integration of standard, well known UNIX programs, and is capable of analyzing large software systems written in C. We present results from a case study involving a software system of approximately 11,000 lines of source code written for the European Space Agency. The results provide empirical evidence that textual differencing is very fast and capable of achieving substantial reductions in the size of the regression test suite.","PeriodicalId":271895,"journal":{"name":"Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272)","volume":"15 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1998-03-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128151186","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}
Pub Date : 1998-03-16DOI: 10.1109/ICSM.1998.738505
R. Cherinka, C. M. Overstreet, J. Ricci
As integrating commercial off-the-shelf (COTS) products into new homogeneous systems replaces "traditional" software development approaches, software maintenance problems persist. This approach builds new solutions via "glue code" using visual languages, which tie together client-based office products, server-based "BackOffice" products and web-based services/applications. The resulting collection of distributed object-oriented components are glued together by attaching code snippets written in a visual language to other components and controls, such as a command button on a form. A majority of the code in such an application is pre-generated and self-contained in the individual components being reused and, as a result, is typically difficult to understand and maintain. Our experience shows that, while these approaches actually exacerbate some maintenance problems, such as the introduction of dead code, traditional static analysis techniques may still facilitate common maintenance activities. This work reports on the use of data flow techniques on several medium-sized COTS integrated solutions that have become difficult to maintain. We found that by exploiting semantic information, traditional techniques can be augmented to handle some of the unique maintenance issues of component-based software.
{"title":"Maintaining a COTS integrated solution-are traditional static analysis techniques sufficient for this new programming methodology?","authors":"R. Cherinka, C. M. Overstreet, J. Ricci","doi":"10.1109/ICSM.1998.738505","DOIUrl":"https://doi.org/10.1109/ICSM.1998.738505","url":null,"abstract":"As integrating commercial off-the-shelf (COTS) products into new homogeneous systems replaces \"traditional\" software development approaches, software maintenance problems persist. This approach builds new solutions via \"glue code\" using visual languages, which tie together client-based office products, server-based \"BackOffice\" products and web-based services/applications. The resulting collection of distributed object-oriented components are glued together by attaching code snippets written in a visual language to other components and controls, such as a command button on a form. A majority of the code in such an application is pre-generated and self-contained in the individual components being reused and, as a result, is typically difficult to understand and maintain. Our experience shows that, while these approaches actually exacerbate some maintenance problems, such as the introduction of dead code, traditional static analysis techniques may still facilitate common maintenance activities. This work reports on the use of data flow techniques on several medium-sized COTS integrated solutions that have become difficult to maintain. We found that by exploiting semantic information, traditional techniques can be augmented to handle some of the unique maintenance issues of component-based software.","PeriodicalId":271895,"journal":{"name":"Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272)","volume":"144 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1998-03-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133870828","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}
Pub Date : 1998-03-16DOI: 10.1109/ICSM.1998.738517
V. Basili, F. Lanubile, F. Shull
The empirical study described in this paper focuses on the effectiveness of maintenance processes in an environment in which a repository of potential sources of reuse exists, e.g. a context in which applications are built using an object-oriented framework. Such a repository might contain current and previous releases of the system under maintenance, as well as other applications that are built on a similar structure or contain similar functionality. This paper presents an observational study of 15 student projects in framework-based environment. We used a mix of qualitative and quantitative methods to identify and evaluate the effectiveness of the maintenance processes.
{"title":"Investigating maintenance processes in a framework-based environment","authors":"V. Basili, F. Lanubile, F. Shull","doi":"10.1109/ICSM.1998.738517","DOIUrl":"https://doi.org/10.1109/ICSM.1998.738517","url":null,"abstract":"The empirical study described in this paper focuses on the effectiveness of maintenance processes in an environment in which a repository of potential sources of reuse exists, e.g. a context in which applications are built using an object-oriented framework. Such a repository might contain current and previous releases of the system under maintenance, as well as other applications that are built on a similar structure or contain similar functionality. This paper presents an observational study of 15 student projects in framework-based environment. We used a mix of qualitative and quantitative methods to identify and evaluate the effectiveness of the maintenance processes.","PeriodicalId":271895,"journal":{"name":"Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272)","volume":"35 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1998-03-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114358748","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}
Pub Date : 1998-03-16DOI: 10.1109/ICSM.1998.738486
J. Munson, Sebastian G. Elbaum
This study presents a methodology that will produce a viable fault surrogate. The focus of the effort is on the precise measurement of software development process and product outcomes. Tools and processes for the static measurement of the source code have been installed and made operational in a large embedded software system. Source code measurements have been gathered unobtrusively for each build in the software evolution process. The measurements are synthesized to obtain the fault surrogate. The complexity of sequential builds is compared and a new measure, code churn, is calculated. This paper demonstrates the effectiveness of code complexity churn by validating it against the testing problem reports.
{"title":"Code churn: a measure for estimating the impact of code change","authors":"J. Munson, Sebastian G. Elbaum","doi":"10.1109/ICSM.1998.738486","DOIUrl":"https://doi.org/10.1109/ICSM.1998.738486","url":null,"abstract":"This study presents a methodology that will produce a viable fault surrogate. The focus of the effort is on the precise measurement of software development process and product outcomes. Tools and processes for the static measurement of the source code have been installed and made operational in a large embedded software system. Source code measurements have been gathered unobtrusively for each build in the software evolution process. The measurements are synthesized to obtain the fault surrogate. The complexity of sequential builds is compared and a new measure, code churn, is calculated. This paper demonstrates the effectiveness of code complexity churn by validating it against the testing problem reports.","PeriodicalId":271895,"journal":{"name":"Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272)","volume":"283 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1998-03-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124518814","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}
Pub Date : 1998-03-16DOI: 10.1109/ICSM.1998.738506
S. Hissam
This paper provides an in-depth technical study about a COTS-based information system made up of several commercial components. In particular, this paper provides detail on the activities needed to make the system functionally useful. While all readers may find value in this report, it is expressly aimed at a technical audience. The organization that performed the work described herein is not named, nor are the specific commercial products. All of them, however, are common products, and the work is very typical of the type of effort that integrating and tuning a COTS-based information system can entail.
{"title":"Experience report: correcting system failure in a COTS information system","authors":"S. Hissam","doi":"10.1109/ICSM.1998.738506","DOIUrl":"https://doi.org/10.1109/ICSM.1998.738506","url":null,"abstract":"This paper provides an in-depth technical study about a COTS-based information system made up of several commercial components. In particular, this paper provides detail on the activities needed to make the system functionally useful. While all readers may find value in this report, it is expressly aimed at a technical audience. The organization that performed the work described herein is not named, nor are the specific commercial products. All of them, however, are common products, and the work is very typical of the type of effort that integrating and tuning a COTS-based information system can entail.","PeriodicalId":271895,"journal":{"name":"Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272)","volume":"37 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1998-03-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122737759","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}
Pub Date : 1998-03-16DOI: 10.1109/ICSM.1998.738496
H. Sneed, Rudolf Majnar
Object-oriented technology has become the predominant software development paradigm of the 1990's. More and more data processing user departments have started projects to introduce the technology and more and more universities are now teaching it. The languages C++, Smalltalk and Java have become the languages of choice. The paper discusses alternative strategies for introducing object technology into an existing data processing organization. It considers the level of encapsulation and software wrapping.
{"title":"A case study in software wrapping","authors":"H. Sneed, Rudolf Majnar","doi":"10.1109/ICSM.1998.738496","DOIUrl":"https://doi.org/10.1109/ICSM.1998.738496","url":null,"abstract":"Object-oriented technology has become the predominant software development paradigm of the 1990's. More and more data processing user departments have started projects to introduce the technology and more and more universities are now teaching it. The languages C++, Smalltalk and Java have become the languages of choice. The paper discusses alternative strategies for introducing object technology into an existing data processing organization. It considers the level of encapsulation and software wrapping.","PeriodicalId":271895,"journal":{"name":"Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272)","volume":"13 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1998-03-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121337243","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}
Pub Date : 1998-03-16DOI: 10.1109/ICSM.1998.738495
F. Niessink, H. Vliet
In this paper we present the results of two measurement programs, that were aimed at investigating possible cost drivers for software maintenance. The two measurement programs were implemented in the software maintenance departments of two different organizations. Both programs were set up in roughly the same way. We use standard statistical techniques-principal component analysis and multiple regression analysis-to analyse the datasets. Surprisingly, with one of the datasets we are able to explain a fair amount of variance in the effort, while with the other dataset we can explain much less. From a closer inspection of the different environments we conjecture that the existence of a consistently applied process is an important prerequisite for a successful measurement program. In addition, if the process exists in multiple variants, it is important to know which variant is applied when.
{"title":"Two case studies in measuring software maintenance effort","authors":"F. Niessink, H. Vliet","doi":"10.1109/ICSM.1998.738495","DOIUrl":"https://doi.org/10.1109/ICSM.1998.738495","url":null,"abstract":"In this paper we present the results of two measurement programs, that were aimed at investigating possible cost drivers for software maintenance. The two measurement programs were implemented in the software maintenance departments of two different organizations. Both programs were set up in roughly the same way. We use standard statistical techniques-principal component analysis and multiple regression analysis-to analyse the datasets. Surprisingly, with one of the datasets we are able to explain a fair amount of variance in the effort, while with the other dataset we can explain much less. From a closer inspection of the different environments we conjecture that the existence of a consistently applied process is an important prerequisite for a successful measurement program. In addition, if the process exists in multiple variants, it is important to know which variant is applied when.","PeriodicalId":271895,"journal":{"name":"Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272)","volume":"48 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1998-03-16","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129512026","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}