{"title":"A specification-based approach to maintenance","authors":"K. Lano, H. Haughton","doi":"10.1002/smr.4360030403","DOIUrl":"https://doi.org/10.1002/smr.4360030403","url":null,"abstract":"In this paper we define a language, Z++, and a method based upon this language, to support the use of formal methods in software maintenance. Formal methods have been proposed several times as the solution to the growing problem of software maintenance, and we base our approach on the more successful of the attempts made to apply these methods. \u0000 \u0000 \u0000 \u0000Our approach is to use a conceptually simple framework, based on an object-oriented extension to the specification language Z (Spivey, 1989), for dealing with requests for changes to software for which some formal documentation and record of development already exists. \u0000 \u0000 \u0000 \u0000The method is centered on the maintenance of the specifications and the development record, not upon source code or Structured Methodology documentation. It is proposed as a practical approach for software in the medium-term future, allowing the mass of programming detail that makes the code maintenance problem so expensive to be ignored. Therefore changes and extensions to application systems can be made more rapidly. We describe the language and give details of the specification and refinement system, together with a description of the current state of the implementation of this system.","PeriodicalId":383619,"journal":{"name":"J. Softw. Maintenance Res. Pract.","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1991-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132468576","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":"The role of symbolic execution in software maintenance","authors":"P. D. Coward, D. Ince","doi":"10.1002/smr.4360030402","DOIUrl":"https://doi.org/10.1002/smr.4360030402","url":null,"abstract":"Two major problems facing the software maintenance programmer are avoiding the introduction of unexecutable code and coping with the large volume of regression tests that are often required during maintenance. In preparing program changes, staff who carry out maintenance often have to spend time on ascertaining the constraints which govern the variables at the proposed points of insertion of the new code. This effort is required to avoid the introduction of unexecutable code which can so easily happen when maintenance staff are unaware of the prevailing constraints. This often means that many of the paths executed during regression testing are executed more than once in an attempt to overcome the risk of coincidental correctness camouflaging an error. This paper describes how symbolic execution, and in particular the SYM-BOL system, can be used to reduce the likelihood of introducing unexecutable code, to speed up the process of determining the constraints on variables at a given point in a program and to reduce the volume of regression testing.","PeriodicalId":383619,"journal":{"name":"J. Softw. Maintenance Res. Pract.","volume":"24 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1991-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126595014","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":"Insights into testing and regression testing global variables","authors":"H. Leung, L. White","doi":"10.1002/SMR.4360020403","DOIUrl":"https://doi.org/10.1002/SMR.4360020403","url":null,"abstract":"Despite the existence of global variables in many software systems, testing global variables has traditionally been overlooked by the testing community. This state of the practice leads to the release of some software systems with untested properties. In this paper, we present some insights into the problem of testing and regression testing global variables. A basis set of testing problems for parameters will be identified and the testing problem of global variables will be mapped onto a combination of these basis cases. It will be shown that global variables can be treated as parameters and can be tested accordingly. Testing strategies and regression testing strategies for unit, integration, and system testing global variables are described.","PeriodicalId":383619,"journal":{"name":"J. Softw. Maintenance Res. Pract.","volume":"29 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-12-31","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"118930151","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":"Software metrics and software maintenance","authors":"R. Leach","doi":"10.1002/SMR.4360020204","DOIUrl":"https://doi.org/10.1002/SMR.4360020204","url":null,"abstract":"The term “software crisis” refers to the huge amount of resources needed for the development and maintenance of software. A major problem with research in these areas is the lack of solid data. In particular, there is little data that can be used to predict the types of problems that are likely to occur during the software's maintenance. \u0000 \u0000This paper describes the results of an analysis of a software system that underwent several revisions. Maintenance of the system was performed by distinct programming teams. At each revision of the software system, the analysis was performed by doing measurements of module complexity based on three quantities: Halstead's Software Science Effort, McCabe's cyclomatic complexity, and coupling analyses. The relationships of Software Science Effort to unchangeability of modules, of cyclomatic complexity to path coverage, and coupling analysis to measurement of modularity and coherence during the maintenance are given.","PeriodicalId":383619,"journal":{"name":"J. Softw. Maintenance Res. Pract.","volume":"18 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-06-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"118245045","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":"Lurking within COBOL PERFORMs","authors":"M. Crawford","doi":"10.1002/SMR.4360020104","DOIUrl":"https://doi.org/10.1002/SMR.4360020104","url":null,"abstract":"COBOL-implemented systems commonly rely on the PERFORM verb to provide structure and iteration in the software. Because of that key role, shortfalls in the use of PERFORM can lead to challenging difficulties in both enhancive and corrective maintenance. This paper explains the source of many of the symptoms by examining the way the compiler-generated object code executes. Then it classifies the symptoms by their pattern and relates the classes to the normally hidden generated code. In closing, the paper offers six positive actions to improve COBOL software using the PERFORM verb, and points to their contribution in enhancive and corrective maintenance, software quality assurance, systems improvement, and the management of software maintenance.","PeriodicalId":383619,"journal":{"name":"J. Softw. Maintenance Res. Pract.","volume":"223 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-03-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"118653288","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":"Modelling and maintenance software systems at the teleological level","authors":"V. Karakostas","doi":"10.1002/SMR.4360020105","DOIUrl":"https://doi.org/10.1002/SMR.4360020105","url":null,"abstract":"Software maintenance is necessitated to a large extent by changing user requirements. However, the relationship between the user requirements and the implemented software system is not made explicit in current development approaches, making the mapping of changing requirements to corresponding maintenance activities difficult. The teleological approach advocates the construction of a model which links the components of a software system to the concepts of the application domain which they implement, i.e to user requirements. Subsequently, the teleological model is used for simulating the actual maintenance activities, as they are triggered by the changing requirements, and for identifying their nature and estimating their cost.","PeriodicalId":383619,"journal":{"name":"J. Softw. Maintenance Res. Pract.","volume":"35 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1990-03-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"119250426","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":"Two module factoring techniques","authors":"F. Calliss, B. Cornelius","doi":"10.1002/SMR.4360010202","DOIUrl":"https://doi.org/10.1002/SMR.4360010202","url":null,"abstract":"‘Module factoring’ is the process by which a module can be split into smaller modules each of which performs a distinct task. Two techniques are presented for determining which entities are to be grouped together. The first technique involves analysing a module with respect to its type-families, while the second technique involves analysing a module's entities with respect to the modules importing the entities. Such techniques have proved useful in the maintenance of large programs.","PeriodicalId":383619,"journal":{"name":"J. Softw. Maintenance Res. Pract.","volume":"3 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1989-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117867281","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":"Application of cluster algorithms for batching of proposed software changes","authors":"U. Krohn, C. Boldyreff","doi":"10.1002/(SICI)1096-908X(199905/06)11:3%3C151::AID-SMR189%3E3.0.CO;2-G","DOIUrl":"https://doi.org/10.1002/(SICI)1096-908X(199905/06)11:3%3C151::AID-SMR189%3E3.0.CO;2-G","url":null,"abstract":"This paper proposes the application of cluster algorithms for the identification of changes which may be batched together. The results of impact-analysis sessions are represented as binary data where each variable has two values indicating the presence or absence of an impact on a particular software component. These data are then used to produce a matrix containing the similarity or the dissimilarity of each pair of proposed changes which are to be clustered. There are many clustering techniques for binary data. Most of the empirical investigations indicate that average-linkage and centroid-method clustering may be most useful in practice. Both clustering methods produced similar results in an example application. Proposed software changes that impacted a large number of the same components were merged early into common clusters, showing the maintainer which changes may be batched together. Copyright 1999 John Wiley & Sons, Ltd.","PeriodicalId":383619,"journal":{"name":"J. Softw. Maintenance Res. Pract.","volume":"16 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127503969","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":"Experimental Evaluation of Agreement among Programmers in Applying the Rules of Cohesion","authors":"J. Nandigam, Arun Lakhotia, C. Cech","doi":"10.1002/(SICI)1096-908X(199901/02)11:1%3C35::AID-SMR183%3E3.0.CO;2-T","DOIUrl":"https://doi.org/10.1002/(SICI)1096-908X(199901/02)11:1%3C35::AID-SMR183%3E3.0.CO;2-T","url":null,"abstract":"","PeriodicalId":383619,"journal":{"name":"J. Softw. Maintenance Res. Pract.","volume":"54 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126025183","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}