{"title":"Software Evolution","authors":"A. Zaidman, M. Pinzger, A. Deursen","doi":"10.1081/E-ESE-120044353","DOIUrl":null,"url":null,"abstract":"Software evolution is the term used in software engineering to refer to the process of developing an initial version of the software and then repeatedly updating it to satisfy the user’s needs. Software evolution is an inevitable activity, as useful and successful software stimulates users to request new and improved features. However, evolving a software system is typically difficult and costly. In this chapter, we provide an historical overview of the field and survey four important research ares: program comprehension, reverse engineering, reengineering, and software repository mining. We report on key approaches, results, and indicate a number of challenges open to on-going and future research in software evolution.","PeriodicalId":386020,"journal":{"name":"Encyclopedia of Software Engineering","volume":"7 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"3","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Encyclopedia of Software Engineering","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1081/E-ESE-120044353","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 3
Abstract
Software evolution is the term used in software engineering to refer to the process of developing an initial version of the software and then repeatedly updating it to satisfy the user’s needs. Software evolution is an inevitable activity, as useful and successful software stimulates users to request new and improved features. However, evolving a software system is typically difficult and costly. In this chapter, we provide an historical overview of the field and survey four important research ares: program comprehension, reverse engineering, reengineering, and software repository mining. We report on key approaches, results, and indicate a number of challenges open to on-going and future research in software evolution.