<oai_dc:dc xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:oai_dc="http://www.openarchives.org/OAI/2.0/oai_dc/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/oai_dc/ http://www.openarchives.org/OAI/2.0/oai_dc.xsd">
  <dc:contributor>Lanza, Michele</dc:contributor>
  <dc:creator>Robbes, Romain</dc:creator>
  <dc:date>2008-12-01</dc:date>
  <dc:description xmlns:ns0="xml" ns0:lang="en">Software changes. Any long-lived software system has maintenance costs dominating its initial development costs as it is adapted to new or changing requirements. Systems on which such continuous changes are performed inevitably decay, making each maintenance task harder. This problem is not new: The software evolution research community has been tackling it for more than two decades. However, most approaches have been targeting individual tasks using an ad-hoc model of software evolution. Instead of only addressing individual maintenance tasks, we propose to take a step back and address the software evolution problem at its root by treating change as a ﬁrst-class entity. We apply the strategy of reiﬁcation, used with success in other branches of software engineering, to the changes software systems experience. Our thesis is that a reiﬁed change-based representation of software enables better evolution support for both reverse and forward engineering activities. To this aim, we present our approach, Change-based Software Evolution, in which ﬁrst-class changes to programs are recorded as they happen. We implemented our approach to record the evolution of several systems. We validated our thesis by providing support for several maintenance task. We found that: - Change-based Software Evolution eases the reverse engineering and program comprehension of systems by providing access to historical information that is lost by other approaches. The ﬁne-grained change information we record, when summarized in evolutionary measurements, also gives more accurate insights about a system’s evolution. - Change-based Software Evolution facilitates the evolution of systems by integrating program transformations, their deﬁnition, comprehension and possible evolution in the overall evolution of the system. Further, our approach is a source of ﬁne-grained data useful to both evaluate and improve the performance of recommender systems that guide developers as they change a software system. These results support our view that software evolution is a continuous process, alternating forward and reverse engineering activities that requires the support of a model of software evolution integrating these activities in a harmonious whole.</dc:description>
  <dc:format>application/pdf</dc:format>
  <dc:identifier>https://susi.usi.ch/global/documents/318011</dc:identifier>
  <dc:identifier>https://n2t.net/ark:/12658/srd1318011</dc:identifier>
  <dc:identifier>https://susi.usi.ch/documents/318011/files/2008INFO004.pdf</dc:identifier>
  <dc:language>eng</dc:language>
  <dc:relation>info:eu-repo/semantics/altIdentifier/urn/urn:nbn:ch:rero-006-108158</dc:relation>
  <dc:relation>info:eu-repo/semantics/altIdentifier/ark/12658/srd1318011</dc:relation>
  <dc:rights>info:eu-repo/semantics/openAccess</dc:rights>
  <dc:rights>License undefined</dc:rights>
  <dc:subject xmlns:ns1="xml" ns1:lang="en">Software engineering</dc:subject>
  <dc:subject xmlns:ns2="xml" ns2:lang="en">Software evolution</dc:subject>
  <dc:subject xmlns:ns3="xml" ns3:lang="en">Change-based software evolution</dc:subject>
  <dc:subject xmlns:ns4="xml" ns4:lang="en">First-class changes</dc:subject>
  <dc:subject xmlns:ns5="xml" ns5:lang="en">Refactoring</dc:subject>
  <dc:subject xmlns:ns6="xml" ns6:lang="en">Program comprehension</dc:subject>
  <dc:subject xmlns:ns7="xml" ns7:lang="en">Reverse engineering</dc:subject>
  <dc:subject xmlns:ns8="xml" ns8:lang="en">Visualization</dc:subject>
  <dc:subject xmlns:ns9="xml" ns9:lang="en">Program transformation</dc:subject>
  <dc:subject xmlns:ns10="xml" ns10:lang="en">Logical coupling</dc:subject>
  <dc:subject xmlns:ns11="xml" ns11:lang="en">Recommender systems</dc:subject>
  <dc:subject xmlns:ns12="xml" ns12:lang="en">Code completion</dc:subject>
  <dc:subject xmlns:ns13="xml" ns13:lang="en">Change prediction</dc:subject>
  <dc:subject xmlns:ns14="xml" ns14:lang="en">Development sessions</dc:subject>
  <dc:subject xmlns:ns15="xml" ns15:lang="en">Forward engineering</dc:subject>
  <dc:subject xmlns:ns16="xml" ns16:lang="en">Versioning systems</dc:subject>
  <dc:subject xmlns:ns17="xml" ns17:lang="en">Integrated development environments</dc:subject>
  <dc:subject xmlns:ns18="xml" ns18:lang="en">Abstract syntax trees</dc:subject>
  <dc:subject xmlns:ns19="xml" ns19:lang="en">Smalltalk</dc:subject>
  <dc:subject xmlns:ns20="xml" ns20:lang="en">Java</dc:subject>
  <dc:subject xmlns:ns21="xml" ns21:lang="en">Squeak</dc:subject>
  <dc:subject xmlns:ns22="xml" ns22:lang="en">Visualworks</dc:subject>
  <dc:subject xmlns:ns23="xml" ns23:lang="en">Eclipse</dc:subject>
  <dc:subject xmlns:ns24="xml" ns24:lang="en">Benchmarks</dc:subject>
  <dc:subject xmlns:ns25="xml" ns25:lang="en">Evaluation</dc:subject>
  <dc:subject>info:eu-repo/classification/udc/004</dc:subject>
  <dc:title xmlns:ns26="xml" ns26:lang="en">Of change and software</dc:title>
  <dc:type>http://purl.org/coar/resource_type/c_db06</dc:type>
</oai_dc:dc>
