<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>Pezzè, Mauro</dc:contributor>
  <dc:contributor>Carzaniga, Antonio</dc:contributor>
  <dc:creator>Mattavelli, Andrea</dc:creator>
  <dc:date>2016-10-25</dc:date>
  <dc:description xmlns:ns0="xml" ns0:lang="en">Software systems have become pervasive in everyday life and are the core  component of many crucial activities. An inadequate level of reliability may determine  the commercial failure of a software product. Still, despite the commitment and the  rigorous verification processes employed by developers, software is deployed with  faults. To increase the reliability of software systems, researchers have investigated  the use of various form of redundancy. Informally, a software system is redundant  when it performs the same functionality through the execution of different elements.  Redundancy has been extensively exploited in many software engineering techniques,  for example for fault-tolerance and reliability engineering, and in self-adaptive and self- healing programs. Despite the many uses, though, there is no formalization or study of  software redundancy to support a proper and effective design of software. Our intuition  is that a systematic and formal investigation of software redundancy will lead to more,  and more effective uses of redundancy. This thesis develops this intuition and  proposes a set of ways to characterize qualitatively as well as quantitatively  redundancy. We first formalize the intuitive notion of redundancy whereby two code  fragments are considered redundant when they perform the same functionality through  different executions. On the basis of this abstract and general notion, we then develop  a practical method to obtain a measure of software redundancy. We prove the  effectiveness of our measure by showing that it distinguishes between shallow  differences, where apparently different code fragments reduce to the same underlying  code, and deep code differences, where the algorithmic nature of the computations  differs. We also demonstrate that our measure is useful for developers, since it is a  good predictor of the effectiveness of techniques that exploit redundancy. Besides  formalizing the notion of redundancy, we investigate the pervasiveness of redundancy  intrinsically found in modern software systems. Intrinsic redundancy is a form of  redundancy that occurs as a by-product of modern design and development practices.  We have observed that intrinsic redundancy is indeed present in software systems,  and that it can be successfully exploited for good purposes. This thesis proposes a  technique to automatically identify equivalent method sequences in software systems  to help developers assess the presence of intrinsic redundancy. We demonstrate the  effectiveness of the technique by showing that it identifies the majority of equivalent  method sequences in a system with good precision and performance.</dc:description>
  <dc:format>application/pdf</dc:format>
  <dc:identifier>https://susi.usi.ch/global/documents/318581</dc:identifier>
  <dc:identifier>https://localhost:5000/ark:/12658/srd1318581</dc:identifier>
  <dc:identifier>https://susi.usi.ch/documents/318581/files/2016INFO007.pdf</dc:identifier>
  <dc:language>eng</dc:language>
  <dc:relation>info:eu-repo/semantics/altIdentifier/urn/urn:nbn:ch:rero-006-115792</dc:relation>
  <dc:relation>info:eu-repo/semantics/altIdentifier/ark/12658/srd1318581</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 design</dc:subject>
  <dc:subject xmlns:ns3="xml" ns3:lang="en">Reliability</dc:subject>
  <dc:subject xmlns:ns4="xml" ns4:lang="en">Fault tolerance</dc:subject>
  <dc:subject xmlns:ns5="xml" ns5:lang="en">Self-healing</dc:subject>
  <dc:subject>info:eu-repo/classification/udc/004</dc:subject>
  <dc:title xmlns:ns6="xml" ns6:lang="en">Software redundancy : what, where, how</dc:title>
  <dc:type>http://purl.org/coar/resource_type/c_db06</dc:type>
</oai_dc:dc>
