<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>Wettel, Richard</dc:creator>
  <dc:date>2010-09-21</dc:date>
  <dc:description xmlns:ns0="xml" ns0:lang="en">Software understanding takes up a large share of the total cost of a  software system. The high costs attributed to software understanding  activities are caused by the size and complexity of software systems,  by the continuous evolution that these systems are subject to, and by  the lack of physical presence which makes software intangible.  Reverse engineering helps practitioners deal with the intrinsic  complexity of software, by providing a broad range of patterns and  techniques. One of these techniques is software visualization, which  makes software more tangible, by providing visible representations of  software systems. Interpreting a visualization is by no means trivial and  requires knowledge about the visual language of the visualization. One  means to ease the learning of a new visualization's language are  metaphors, which allow the interpretation of new data representations  by analogy. Possibly one of the most popular metaphors for software  visualization is the city metaphor, which has been explored in the past  by a number of researchers. However, in spite of the efforts, the value  of this metaphor for reverse engineering has never been taken beyond  anecdotical evidence. In this dissertation, we demonstrate the value of  the city metaphor for reverse engineering along two directions. On the  one hand, we show that the metaphor is versatile enough to allow the  representation of different facets of software. On the other hand, we  show that the city metaphor enables the creation of software  visualizations which efficiently and effectively support reverse  engineering activities. Our interpretation of the city metaphor at its core  depicts the system as a city, the packages as districts, and the classes  as buildings. The resulting "code city" visualization provides a structural  overview of the software system, enriched with contextual data. To be  able to perform analyses of real systems using our approach, we  implemented a tool called CodeCity. We demonstrate the versatility of the  metaphor, by using it in three different analysis contexts, \ie program  comprehension, software evolution analysis, and software design  quality assessment. For each of the contexts, we describe the  visualization techniques we employ to encode the contextual data in the  visualization and we illustrate the application by means of case studies.  The insights gained in the three analysis contexts are complementary to  each other, leading to an increasingly more complete "big picture" of the  systems. We then demonstrate how the visualizations built on top of  our city metaphor effectively and efficiently support reverse engineering  activities, by means of an extensive controlled experiment. The design  of our experiment is based on a list of desiderata that we extracted from  our survey of the current body of research. We conducted the  experiment over a period of six months, in four sites located in three  countries, with a heterogeneous sample of subjects composed of fair  shares of both academics and industry practitioners. The main result of  our experiment was that, overall, our approach outperforms the state- of-practice in supporting users solve reverse engineering tasks, in  terms of both correctness and completion time.</dc:description>
  <dc:format>application/pdf</dc:format>
  <dc:identifier>https://susi.usi.ch/global/documents/318214</dc:identifier>
  <dc:identifier>https://n2t.net/ark:/12658/srd1318214</dc:identifier>
  <dc:identifier>https://susi.usi.ch/documents/318214/files/2010INFO005.pdf</dc:identifier>
  <dc:language>eng</dc:language>
  <dc:relation>info:eu-repo/semantics/altIdentifier/urn/urn:nbn:ch:rero-006-109480</dc:relation>
  <dc:relation>info:eu-repo/semantics/altIdentifier/ark/12658/srd1318214</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 visualization</dc:subject>
  <dc:subject xmlns:ns2="xml" ns2:lang="en">City metaphor</dc:subject>
  <dc:subject xmlns:ns3="xml" ns3:lang="en">Software engineering</dc:subject>
  <dc:subject xmlns:ns4="xml" ns4:lang="en">Reverse 
engineering</dc:subject>
  <dc:subject xmlns:ns5="xml" ns5:lang="en">Software evolution</dc:subject>
  <dc:subject xmlns:ns6="xml" ns6:lang="en">Program comprehension</dc:subject>
  <dc:subject xmlns:ns7="xml" ns7:lang="en">Software 
design</dc:subject>
  <dc:subject>info:eu-repo/classification/udc/004</dc:subject>
  <dc:title xmlns:ns8="xml" ns8:lang="en">Software systems as cities</dc:title>
  <dc:type>http://purl.org/coar/resource_type/c_db06</dc:type>
</oai_dc:dc>
