Pub Date : 2000-10-11DOI: 10.1109/ICSM.2000.883005
G. D. Lucca, A. R. Fasolino, U. D. Carlini
Several reverse engineering methods for recovering objects from legacy systems have been proposed in the literature, but most of them neglect to identify the relationships among the objects, or recover only a part of them. The paper describes a method for recovering an OO (object oriented) model together with the objects and relationships among them. The proposed approach integrates the results of reverse engineering of both the procedural code and the persistent data stores of the system, and exploits a number of heuristic criteria to obtain a class diagram. A preliminary experiment carried out to validate the method on a COBOL medium-sized system yielded encouraging results.
{"title":"Recovering class diagrams from data-intensive legacy systems","authors":"G. D. Lucca, A. R. Fasolino, U. D. Carlini","doi":"10.1109/ICSM.2000.883005","DOIUrl":"https://doi.org/10.1109/ICSM.2000.883005","url":null,"abstract":"Several reverse engineering methods for recovering objects from legacy systems have been proposed in the literature, but most of them neglect to identify the relationships among the objects, or recover only a part of them. The paper describes a method for recovering an OO (object oriented) model together with the objects and relationships among them. The proposed approach integrates the results of reverse engineering of both the procedural code and the persistent data stores of the system, and exploits a number of heuristic criteria to obtain a class diagram. A preliminary experiment carried out to validate the method on a COBOL medium-sized system yielded encouraging results.","PeriodicalId":348184,"journal":{"name":"Proceedings 2000 International Conference on Software Maintenance","volume":"68 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-10-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128020136","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 : 2000-10-11DOI: 10.1109/ICSM.2000.883049
C. Fox, M. Harman, R. Hierons, S. Danicic
Conditioned slicing is a powerful generalisation of static and dynamic slicing which has applications to many problems in software maintenance and evolution, including reuse, reengineering and program comprehension. However there has been relatively little work on the implementation of conditioned slicing. Algorithms for implementing conditioned slicing necessarily involve reasoning about the values of program predicates in certain sets of states derived from the conditioned slicing criterion, making implementation particularly demanding. The paper introduces ConSIT, a conditioned slicing system which is based upon conventional static slicing, symbolic execution and theorem proving. ConSIT is the first fully automated implementation of conditioned slicing. An implementation of ConSIT is available for experimentation at http://www.mcs.gold.ac.uk//spl tilde/mas01sd/consit.html.
{"title":"ConSIT: a conditioned program slicer","authors":"C. Fox, M. Harman, R. Hierons, S. Danicic","doi":"10.1109/ICSM.2000.883049","DOIUrl":"https://doi.org/10.1109/ICSM.2000.883049","url":null,"abstract":"Conditioned slicing is a powerful generalisation of static and dynamic slicing which has applications to many problems in software maintenance and evolution, including reuse, reengineering and program comprehension. However there has been relatively little work on the implementation of conditioned slicing. Algorithms for implementing conditioned slicing necessarily involve reasoning about the values of program predicates in certain sets of states derived from the conditioned slicing criterion, making implementation particularly demanding. The paper introduces ConSIT, a conditioned slicing system which is based upon conventional static slicing, symbolic execution and theorem proving. ConSIT is the first fully automated implementation of conditioned slicing. An implementation of ConSIT is available for experimentation at http://www.mcs.gold.ac.uk//spl tilde/mas01sd/consit.html.","PeriodicalId":348184,"journal":{"name":"Proceedings 2000 International Conference on Software Maintenance","volume":"51 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-10-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114419496","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 : 2000-10-11DOI: 10.1109/ICSM.2000.882962
Tama H. Olver
This paper outlines a management (chief information officer) perspective of software quality based on a portfolio management approach. It outlines how an assessment of quality and strategic importance can be used to develop a strategy for applications maintenance.
{"title":"Preserving the value of software - a CIO perspective","authors":"Tama H. Olver","doi":"10.1109/ICSM.2000.882962","DOIUrl":"https://doi.org/10.1109/ICSM.2000.882962","url":null,"abstract":"This paper outlines a management (chief information officer) perspective of software quality based on a portfolio management approach. It outlines how an assessment of quality and strategic importance can be used to develop a strategy for applications maintenance.","PeriodicalId":348184,"journal":{"name":"Proceedings 2000 International Conference on Software Maintenance","volume":"96 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-10-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126664574","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 : 2000-10-11DOI: 10.1109/ICSM.2000.883003
G. Antoniol, G. Canfora, G. Casazza, A. D. Lucia
The research described in the paper is concerned with the application of information retrieval to software maintenance, and in particular to the problem of recovering traceability links between the source code of a system and its free text documentation. We introduce a method based on the general idea of vector space information retrieval and apply it in two case studies to trace C++ source code onto manual pages and Java code onto functional requirements. The case studies discussed in the paper replicate the studies presented by G. Antoniol et al. (1999; 2000), respectively where a probabilistic information retrieval model was applied. We compare the results of vector space and probabilistic models and formulate hypotheses to explain the differences.
{"title":"Information retrieval models for recovering traceability links between code and documentation","authors":"G. Antoniol, G. Canfora, G. Casazza, A. D. Lucia","doi":"10.1109/ICSM.2000.883003","DOIUrl":"https://doi.org/10.1109/ICSM.2000.883003","url":null,"abstract":"The research described in the paper is concerned with the application of information retrieval to software maintenance, and in particular to the problem of recovering traceability links between the source code of a system and its free text documentation. We introduce a method based on the general idea of vector space information retrieval and apply it in two case studies to trace C++ source code onto manual pages and Java code onto functional requirements. The case studies discussed in the paper replicate the studies presented by G. Antoniol et al. (1999; 2000), respectively where a probabilistic information retrieval model was applied. We compare the results of vector space and probabilistic models and formulate hypotheses to explain the differences.","PeriodicalId":348184,"journal":{"name":"Proceedings 2000 International Conference on Software Maintenance","volume":"30 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-10-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115493007","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 : 2000-10-11DOI: 10.1109/ICSM.2000.883057
C. Chiang
ASG's Existing Systems Workbench (ESW) is comprehensive, integrated tool set that supports the software reengineering process. These software reengineering tools were originally developed for centralized environments. With the widespread use of object oriented and client server technologies, customers are expecting ESW to take advantage of these new technologies and also cooperate with their heterogeneous distributed computing environments. The article proposes a distributed object computing architecture for allowing ESW to operate in a heterogeneous distributed environment. The architecture was implemented with CORBA technology. The leverage of this new architecture enhances the product value and adapts the product to customer expectations.
{"title":"Leveraging software reengineering systems for heterogeneous distributed computing environments","authors":"C. Chiang","doi":"10.1109/ICSM.2000.883057","DOIUrl":"https://doi.org/10.1109/ICSM.2000.883057","url":null,"abstract":"ASG's Existing Systems Workbench (ESW) is comprehensive, integrated tool set that supports the software reengineering process. These software reengineering tools were originally developed for centralized environments. With the widespread use of object oriented and client server technologies, customers are expecting ESW to take advantage of these new technologies and also cooperate with their heterogeneous distributed computing environments. The article proposes a distributed object computing architecture for allowing ESW to operate in a heterogeneous distributed environment. The architecture was implemented with CORBA technology. The leverage of this new architecture enhances the product value and adapts the product to customer expectations.","PeriodicalId":348184,"journal":{"name":"Proceedings 2000 International Conference on Software Maintenance","volume":"164 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-10-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124600451","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 : 2000-10-11DOI: 10.1109/ICSM.2000.883025
J. Gibson, Thomas F. Dowling, B. Malloy
The size and complexity of hardware and software systems continues to grow, making the introduction of subtle errors a more likely possibility. A major goal of software engineering is to enable developers to construct systems that operate reliably despite increased size and complexity. One approach to achieving this goal is through formal methods: mathematically based languages, techniques and tools for specifying and verifying complex software systems. The authors apply a theoretical tool (that is supported by many formal methods), the correctness preserving transformation (CPT), to a real software engineering problem: the need for optimization during the maintenance of code. We present four program transformations and a model that forms a framework for proof of correctness. We prove the transformations correct and then apply them to a cryptography application implemented in C++. Our experience shows that CPTs can facilitate generation of more efficient code while guaranteeing the preservation of original behavior.
{"title":"The application of correctness preserving transformations to software maintenance","authors":"J. Gibson, Thomas F. Dowling, B. Malloy","doi":"10.1109/ICSM.2000.883025","DOIUrl":"https://doi.org/10.1109/ICSM.2000.883025","url":null,"abstract":"The size and complexity of hardware and software systems continues to grow, making the introduction of subtle errors a more likely possibility. A major goal of software engineering is to enable developers to construct systems that operate reliably despite increased size and complexity. One approach to achieving this goal is through formal methods: mathematically based languages, techniques and tools for specifying and verifying complex software systems. The authors apply a theoretical tool (that is supported by many formal methods), the correctness preserving transformation (CPT), to a real software engineering problem: the need for optimization during the maintenance of code. We present four program transformations and a model that forms a framework for proof of correctness. We prove the transformations correct and then apply them to a cryptography application implemented in C++. Our experience shows that CPTs can facilitate generation of more efficient code while guaranteeing the preservation of original behavior.","PeriodicalId":348184,"journal":{"name":"Proceedings 2000 International Conference on Software Maintenance","volume":"104 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-10-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123970536","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 : 2000-10-11DOI: 10.1109/ICSM.2000.883036
J. Fernández-Ramil, M. Lehman
Despite its importance, cost estimation in the context of continuing software evolution has been relatively unexplored. This paper addresses this omission by describing some models that predict effort as a function of a suite of metrics of software evolution. It presents a case study relating to the evolution of the kernel of a mainframe operating system. Six models based on eight different indicators of evolution activity are proposed, and their predictive power is examined and compared to that of two baseline models. Predictions with errors of the order of 20% of the actual values have been obtained from the models, when fitted to and tested against historical data over a segment of 10 years of the kernel's continuing evolution. The appropriateness of the proposed models as predictors appears to be restricted to homogeneous evolution segments, i.e. periods with relatively small variations in the level of effort applied. It was found that models based on coarse granularity measures, such as "subsystem counts", provided a mean magnitude of relative error which was similar to those based on finer alternatives, such as "module counts".
{"title":"Metrics of software evolution as effort predictors - a case study","authors":"J. Fernández-Ramil, M. Lehman","doi":"10.1109/ICSM.2000.883036","DOIUrl":"https://doi.org/10.1109/ICSM.2000.883036","url":null,"abstract":"Despite its importance, cost estimation in the context of continuing software evolution has been relatively unexplored. This paper addresses this omission by describing some models that predict effort as a function of a suite of metrics of software evolution. It presents a case study relating to the evolution of the kernel of a mainframe operating system. Six models based on eight different indicators of evolution activity are proposed, and their predictive power is examined and compared to that of two baseline models. Predictions with errors of the order of 20% of the actual values have been obtained from the models, when fitted to and tested against historical data over a segment of 10 years of the kernel's continuing evolution. The appropriateness of the proposed models as predictors appears to be restricted to homogeneous evolution segments, i.e. periods with relatively small variations in the level of effort applied. It was found that models based on coarse granularity measures, such as \"subsystem counts\", provided a mean magnitude of relative error which was similar to those based on finer alternatives, such as \"module counts\".","PeriodicalId":348184,"journal":{"name":"Proceedings 2000 International Conference on Software Maintenance","volume":"23 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-10-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123183534","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 : 2000-10-11DOI: 10.1109/ICSM.2000.883045
Ying Hu, E. Merlo, M. Dagenais, B. Laguë
Conditional compilation is one of the most powerful parts of a C/C++ environment available for building software for different platforms with different feature sets. Although conditional compilation is powerful, it can be difficult to understand and is error-prone. In large software systems, file inclusion, conditional compilation and macro substitution are closely related and are often largely interleaved. Without adequate tools, understanding complex header files is a tedious task. This practice may even be complicated as the hierarchies of header files grow with projects. This paper presents our experiences of studying conditional compilation based on the symbolic execution of preprocessing directives. Our two concrete goals are: for any given preprocessor directive or C/C++ source code line, finding the simplest sufficient condition to reach/compile it, and finding the full condition to reach/compile that code line. Two different strategies were used to achieve these two goals. A series of experiments conducted on the Linux kernel are presented.
{"title":"C/C++ conditional compilation analysis using symbolic execution","authors":"Ying Hu, E. Merlo, M. Dagenais, B. Laguë","doi":"10.1109/ICSM.2000.883045","DOIUrl":"https://doi.org/10.1109/ICSM.2000.883045","url":null,"abstract":"Conditional compilation is one of the most powerful parts of a C/C++ environment available for building software for different platforms with different feature sets. Although conditional compilation is powerful, it can be difficult to understand and is error-prone. In large software systems, file inclusion, conditional compilation and macro substitution are closely related and are often largely interleaved. Without adequate tools, understanding complex header files is a tedious task. This practice may even be complicated as the hierarchies of header files grow with projects. This paper presents our experiences of studying conditional compilation based on the symbolic execution of preprocessing directives. Our two concrete goals are: for any given preprocessor directive or C/C++ source code line, finding the simplest sufficient condition to reach/compile it, and finding the full condition to reach/compile that code line. Two different strategies were used to achieve these two goals. A series of experiments conducted on the Linux kernel are presented.","PeriodicalId":348184,"journal":{"name":"Proceedings 2000 International Conference on Software Maintenance","volume":"6 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-10-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116830862","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 : 2000-10-11DOI: 10.1109/ICSM.2000.882970
N. Chapin
After setting the context with a brief review of some history, this paper places preventive software maintenance in that context, as brought up to date. It closes by pointing out a link between scheduled maintenance and preventive maintenance.
{"title":"Do we know what preventive maintenance is?","authors":"N. Chapin","doi":"10.1109/ICSM.2000.882970","DOIUrl":"https://doi.org/10.1109/ICSM.2000.882970","url":null,"abstract":"After setting the context with a brief review of some history, this paper places preventive software maintenance in that context, as brought up to date. It closes by pointing out a link between scheduled maintenance and preventive maintenance.","PeriodicalId":348184,"journal":{"name":"Proceedings 2000 International Conference on Software Maintenance","volume":"2 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-10-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129057721","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 : 2000-10-11DOI: 10.1109/ICSM.2000.883048
G. Antoniol, G. Casazza, A. Cimitile, M. Tortorella
Software evolution in a cooperative environment, where a pool of maintainers/developers contribute to the overall system changes, is challenging due to several factors, such as the poor communication among individuals and the high number of produced changes. Conflicting or contradictory changes, unforeseen or unexpected dependencies may result in a non working system. We propose a strategy aimed to reduce the risk of conflicting changes in a maintenance cooperative environment. To evaluate the feasibility of our approach and to attempt to estimate the size of the code to be scrutinised per single changed line, we developed a number of tools and tested our approach on release 30 of DDD software system. The preliminary results are encouraging. Potentially impacted LOCS per single changed LOC is on the average less than 4.
{"title":"An approach to limit the WYNOT problem","authors":"G. Antoniol, G. Casazza, A. Cimitile, M. Tortorella","doi":"10.1109/ICSM.2000.883048","DOIUrl":"https://doi.org/10.1109/ICSM.2000.883048","url":null,"abstract":"Software evolution in a cooperative environment, where a pool of maintainers/developers contribute to the overall system changes, is challenging due to several factors, such as the poor communication among individuals and the high number of produced changes. Conflicting or contradictory changes, unforeseen or unexpected dependencies may result in a non working system. We propose a strategy aimed to reduce the risk of conflicting changes in a maintenance cooperative environment. To evaluate the feasibility of our approach and to attempt to estimate the size of the code to be scrutinised per single changed line, we developed a number of tools and tested our approach on release 30 of DDD software system. The preliminary results are encouraging. Potentially impacted LOCS per single changed LOC is on the average less than 4.","PeriodicalId":348184,"journal":{"name":"Proceedings 2000 International Conference on Software Maintenance","volume":"128 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2000-10-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124543704","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}