Software Systems as Cities

Post on 16-Nov-2014

7.762 views 8 download

Tags:

description

My Ph.D. thesis defense from September 21, 2010

Transcript of Software Systems as Cities

Software Systems as CitiesRichard WettelREVEAL@Faculty of informaticsUniversità della Svizzera italiana

Dissertation committeeProf. Matthias HauswirthProf. Cesare PautassoProf. Rainer KoschkeProf. André van der Hoek

Research advisor Prof. Michele Lanza

cost of a software system

cost of a software system

maintenance

90%

60%[Zelkowitz et al., 1979]

[Lientz & Swanson., 1981]

[McKee, 1984]

[Erlikh, 2000]

cost of a software system

maintenance

90%

60%

program comprehension

[Zelkowitz et al., 1979]

[Lientz & Swanson., 1981]

[McKee, 1984]

[Erlikh, 2000]

[Corbi, 1989]

Understanding software is

expensive

What makes software hard to understand?

What makes software hard to understand?

1 size

What makes software hard to understand?

21 size

complexity

What makes software hard to understand?

21

3

size

complexity

evolution

Software is

intangible

seeingis understanding

Visualization to the rescue

[Lanza & Ducasse, TSE 2003]

number oflines of code

number of attributes

number of m

ethods

class

inheritance

Visuallanguage

Visualization to the rescue

[Lanza & Ducasse, TSE 2003]

met•a•phor |ˈmetəˌfôr; -fər|nouna figure of speech in which a word or

phrase is applied to an object or action to which it is not literally applicable

City metaphor in software visualization

City metaphor in software visualization

Figure 1. Architectural Program Visualization of a C++ Program.

ferent views [27, 28, 32]. In our current research, we are

particularly interested in whether these difficulties can be

overcome by judicious rendering within a single view.

To help answer this question, we have implemented a

single-view visualization tool (Section 4). We use a

metaphor based on cities that provides users with an in-

tuitive physical interpretation of the system. In addition,

we use a layout algorithm that permits the system to be

rendered consistently each time the visualization is per-

formed. That is, the layout is designed to be insensitive to

small structural changes, thereby helping users remember

and navigate in the visualization. Our specific implemen-

tation supports C and C++ programs, extending our earlier

work for Java programs [20, 34].

Our overall approach allows multiple stakeholders to see

and communicate about the same view, which facilitates the

collective understanding and discussion of the system’s ar-

chitecture (Section 5).

2. Visualizing Architectures

There are roughly three levels of program visualization,

based on the level of abstraction [15, 26]: source code level,middle level, and architecture level. This section explains

what we mean by architecture level, and describes our spe-

cific model of the program and analyses in detail.

On the source code level, typical visualization tools in-

clude program and aspect editors. Advanced tools may in-

tegrate program editors with online debuggers and profilers.

Source-level visualizations are very “low-level,” as they re-

late directly to the underlying software artifact, and are pri-

marily of interest to developers and maintainers.

On the middle level, visualizations are problem-specific.

Developers and code maintainers have specific problems to

solve, and they usually apply tailored algorithms and vi-

sualizations to the program to better understand both the

problem and the program. Typical middle level visualiza-

tions include sequence diagrams, abstract syntax tree (AST)

representations, dominance tree visualizations, concept lat-

tices, control and data flow graphs.

The aim of architecture-level visualization is to rapidly

summarize and communicate the architecture and design

decisions of the overall software system. Architectural visu-

alization is naturally more abstract than source- or middle-

level visualizations, and therefore better suited to visualiza-

tions in the large. Abstract visualizations of software ar-

chitectures combined with metrics can help different stake-

holders to answer many questions about a software system.

Authorized licensed use limited to: Universia della Svizzera Italiana. Downloaded on January 30, 2009 at 12:57 from IEEE Xplore. Restrictions apply.

Software world

The second, FileVis, showed a view of the software system with the code files represented individually as floating platforms around a central point which represented the connectivity of the source code files. A view of these visualisations can be seen in Figure 2. This visualisation combines both in order to show two aspects of the C code at the same time.

Fig. 3. View over a software district showing

many, possibly complex, methods

Further advancing the three-dimensional space aspect of the visualisations, work by Knight and Munro [1, 20, 21] moved to considering the use of virtual reality environments for software visualisation. Software World was created to show that three-dimensions (in this case also showing the viability of real world metaphors) could be used to create automatable and scalable software visualisations. Buildings, cities, and also at the highest level atlas views, were used to represent Java source code. An example view of this visualisation can be seen in Figure 3.

In order to show some of the method level views that

can be created with this visualisation over 17,000 lines of Java code (which together composed a package) written by others was parsed, and district visualisations automatically generated. The code was split across 70 classes, which provided different district views.

The use of environments allowed extensions of this

work to consider the benefits and challenges of creating virtually inhabitable spaces where the visualisation provides a view of the data under consideration and facilitates communication and collaboration within that data by those working on the same tasks or having similar knowledge. Some of these further issues can be found in [25].

2.4 Summary In his paper No Silver Bullet [13], Brooks wrote

``Software is invisible and unvisualizable. … …software is very difficult to visualize. Whether one diagrams control flow, variable-scope nesting, variable cross-references, dataflow, hierarchical data structures, or whatever, one feels only one dimension of the intricately interlocked software elephant. If one superimposes all the diagrams generated by the many relevant views, it is difficult to extract any global overview.” At the time Brooks wrote this, visualising software

meant displaying some information about (or some aspect of) the software in a graph structure. From what can be seen in Figure 1, he has a point. This need not now be the case with the advances in computer hardware and graphics technology.

For an overview of the software visualisation field

Software Visualisation; Programming as a multimedia experience [26] shows how much of the prior focus has been on the use of algorithm animation techniques. The need to visualise the complexities of dynamic execution are covered, as well as some of the cognitive aspects of visualisation of software. There is very little reference made to the future work in the field, and the benefits that visualisation can bring if it is applied to software through the consideration of software as a complex artefact that can be decomposed into other complex artefacts. Visualising program code, and the various static and dyanamic analysis that program comprehension often employs have not yet found any universal solution and therefore these still require research, but there is also a need to consider software as information and therefore the sorts of visualisations of subsets of that information that would be appropriate for which users for which situations.

Two-dimensional techniques have shortcomings, but this is not to trivialise the issues that still remain with the nodes and arcs techniques. Layout, for example, is a hard problem and one that is not appreciated by many. The information visualisation field has shown that there is no longer the need for a reliance on nodes and arcs and solely investigating layout algorithms and clustering is not necessarily the only way forward, even with two-dimensions. This work is a stepping stone to moving onto more mature software visualisations.

Balzer et al. / Software Landscapes

Figure 4: Closeup view of the software system ’SystemX’containing 52 packages, 546 classes, 4856 methods and2588 attributes

work, it was first attempted to solve the problem in thetwo-dimensional space. Based on diverse criteria the rela-tions were summarized, occlusions were avoided and over-lappings were reduced. The results for a few objects and re-lations were satisfactory, but a large number of participantentities and relations resulted in unsatisfactory representa-tions. The conclusion was that for a clear representation ofthe relations, the third dimension has to be used.

We propose a solution called Hierarchical Net. Therebythe relations are represented not as direct connections be-tween the involved objects, but routed according to the hi-erarchy levels of the software entities. For example, if a re-lation exists between a class X in package A and a class Yin package B, and furthermore, the packages A and B arecontained in package C, then the connection is routed fromclass X to package A, to package C, then to package B, andlastly to class Y . For this purpose a point is defined aboveevery object, where the connections of the objects of thelower hierarchy levels are combined and forwarded to thenext level. This point always rests within a fixed relative dis-tance above the center of the considered object. Since theobjects at higher hierarchy levels are larger, this results in athree-dimensional tree of connections, as shown in Figure 5.

The type and direction of the relations is shown by thecolor and brightness gradient of the corresponding lines.Connections of the same type and direction, and with thesame start and end points, are combined to one connection.Thereby their quantity is mapped to the width of the newline, so that thicker lines stand for a larger quantity of rep-resented connections. Because only lines of the same typeand direction are combined, occlusion still appears, makingthinner lines sometimes hard to recognize. In order to avoidthis, lines are sorted by width and rendered in descendingsequence. Thus it is possible to differentiate between the dif-ferent line types and line directions despite mutual covering.

Figure 5: Visualization of 2574 relations between 1269 en-tities within the software system ’CrocoCosmos’ using a Hi-erarchical Net

In order to analyze the relations the user can control thevisualization. The first possibility is to select only specifiedtypes of relations, e.g. the user can solely view all inheri-tances. The second is to choose an entity, whereby a list withall connected relations is presented, and additionally onlyrelations connected to this entity are drawn in the visualiza-tion. These two alternatives enable the better traceability ofthe relations.

6. Conclusions and Future Work

This work only represents a first step for the visualizationof the structure of large software systems with the land-scape metaphor. It introduced a layout technique for con-tainment hierarchies, dynamic transparencies to reduce thevisual complexity, and Hierarchical Nets to clearly representthe relations in large software systems.

In future works, more possibilities of the landscapemetaphor in the context of software visualization are to beexamined. One direction will be the examination of layoutmethods which are not only based on the hierarchy of thesoftware system, but also involve the relations in the layoutgeneration process. The information density in the visualiza-tions can be further improved by mapping the values of soft-ware metrics on landscape objects. For example, the heightof the objects that represent methods could be proportionalto the size of the methods, as measured by the number oflines of code.

References

[Cha93] CHALMERS M.: Using a landscape metaphorto represent a corpus of documents. In Pro-ceedings of the International Conference onSpatial Information Theory (COSIT) (1993),LNCS 716, Springer-Verlag, pp. 377–390.

c� The Eurographics Association 2004.

Figure 5: (Top) Modified Treemap technique and (bottom) modified Sunburst technique as displayed in ourframework. They both represent PCGEN, a tool for character generation in RPG (1129 classes).

Poly cylinders

[Marcus et al., IWCP 2003]

Software landscapes

[Balzer et al., VisSym 2004]

3D boxes

[Langelier et al., ASE 2005]

City metaphor

[Panas et al., ICECCS 2007]

UML city

[Lange & Chaudron, ICPC 2007]

Figure 3. MetricView: Combining UML andMetrics Visualization

Figure 4. UML-City: Combining the MetaViewand MetricView

quality and of the maturity or completeness of a model.

UML-City View

Figure 4 shows an example UML-City. This view combinesthe concepts of the MetaView and MetricView. As metricvisualization the ‘3D-heightbar’ is used, this visualizationshows a box on top of the model element where the heightand the color of the box indicate the value of the metric.Low metric values are depicted by flat green boxes whilehigh values are depicted by tall red boxes. Applying this tothe MetaView results in a view for which city is a metaphor.Note that in the example in Figure 4 both color and hight areused do represent the same metric. The dimensions can beused to visualize two metrics simultaneously.

Search and Highlight Functionality

The aforementioned views are complemented with searchand highlight functionality. The results of search actionsare visualized by highlighting the relevant diagrams and di-agram elements with a distinct color (e.g. yellow). Addi-tionally relations between elements in the set of result andother elements in the model are drawn.

3. Experimental Design

3.1. Purpose and Hypotheses

We have proposed new views for analyzing UML modelsas described in Section 2. The purpose of this experiment isto validate the views. We summarize the purpose of the ex-periment according to the Goal-Question-Metric paradigm(GQM) [1] as follows:Analyze Comprehension of UML viewsfor the purpose of evaluationwith respect to correctness and effortfrom the point of view of the researcherin the context of Master’s students at the TU Eindhoven.

More specifically, we want to compare the usefulness ofthe views with the traditional views, which are used as abaseline in this experiment. Comprehension plays an im-portant role in the development and maintenance of soft-ware systems. In particular two concepts are of interest forthe evaluation of understanding techniques: correctness andeffort. Correctness is essential for understanding. Incorrectunderstanding of a system can lead to wrong actions intro-ducing faults and communication overhead. Effort is rele-vant from an economical point of view.

To evaluate the view we are interested whether they dif-fer from the traditional UML views. This leads us to thefollowing hypotheses:

• H10: There is no significant difference between pro-posed and traditional views in terms of correctness ofunderstanding the model.

• H20: There is no significant difference between pro-posed and traditional views in terms of effort neededfor understanding the model.

The alternative hypotheses are the negations of the null-hypotheses.

In addition to testing the described hypotheses, we areinterested in information describing how the subjects expe-rience the use of the different views. We expect this addi-tional information to be useful to explain the results, to findopportunities for improvements and as an indicator for thelikelihood of engineers adopting the technique in practice.

3.2. Task, Objects and Treatment

The task in the reported experiment was to answer acomprehension questionnaire about a UML model. In orderto answer the questionnaire, the subjects had to analyze agiven UML model using either traditional tools or the Met-ricView Evolution tool. The experiment was carried out intwo runs. In each of the two experimental runs, a differentUML model had to be analyzed.

[Knight & Munro, IV 2000]

Drawbacks of existing approaches

Drawbacks of existing approaches

1 limited coverage of the manyfacets of software

Drawbacks of existing approaches

2

1 limited coverage of the manyfacets of software

poor tool support

Drawbacks of existing approaches

2

1

3

limited coverage of the manyfacets of software

lack of empirical evaluation

poor tool support

Thesis

Depicting software systems as cities is a versatile metaphor which enables the creation of efficient software visualizations to support reverse engineering.

Thesis

Depicting software systems as cities is a versatile metaphor which enables the creation of efficient software visualizations to support reverse engineering.

Thesis

Depicting software systems as cities is a versatile metaphor which enables the creation of efficient software visualizations to support reverse engineering.

Prologue

Approac

h

Evalua

tion

Epilogue

Software Systems as Cities[VISSOFT 2007]

Our city metaphor

Our city metaphor

class building

package district

Our city metaphor

class building

package district

number of methods (NOM) heightheight

number of attributes (NOA) base sizebase size

number of lines of code (LOC) color

Our city metaphor

class building

package district

number of methods (NOM) heightheight

number of attributes (NOA) base sizebase size

number of lines of code (LOC) color

Our city metaphor

class building

package district

number of methods (NOM) heightheight

number of attributes (NOA) base sizebase size

number of lines of code (LOC) color

nesting level color

Code city visualization

ArgoUMLArgoUMLlines 136,325

Code city visualizationskyscraper

ArgoUMLArgoUMLlines 136,325

Code city visualizationskyscraper

office building

ArgoUMLArgoUMLlines 136,325

Code city visualizationskyscraper

parking lot

office building

ArgoUMLArgoUMLlines 136,325

Code city visualizationskyscraper

parking lot

office building

house

ArgoUMLArgoUMLlines 136,325

Layout

Layout

Layout

org

org.argouml

org.argouml.uml

org.argouml.uml.reveng

org.argouml.uml.reveng.java

Fine-grained representation

Fine-grained representation

class

methods

Fine-grained representation

class

methods

Fine-grained representation

class

methods

packages

Vertical layouts

Vertical layouts

JmolJmollines 84,984

Vertical layouts

JmolJmollines 84,984

class ViewerNOM 750

Reflections

structural overview

Reflections

reveals outliers

structural overview

Reflections

reveals outliers

two granularities

structural overview

Reflections

Application contexts

programcomprehension

Application contexts

programcomprehension

softwareevolution analysis

Application contexts

programcomprehension

softwareevolution analysis

software design quality assessment

Application contexts

Program Comprehension[ICPC 2007]

Finding hotspotsin ArgoUML

Antenna-like skyscrapers

Antenna-like skyscrapersFacadeFacadeFacade

modelmodelmodelLOC: 0NOM: 337NOA: 1

FacadeMDRImplFacadeMDRImplFacadeMDRImplmodelmodelmodelLOC: 3,413NOM: 349NOA: 3

An interface with asingle implementation?

FacadeFacadeFacademodelmodelmodel

LOC 0NOM 337NOA 1

FacadeMDRImplFacadeMDRImplFacadeMDRImplmodelmodelmodelLOC 3,413NOM 349NOA 3

Relying on Facade...FacadeFacadeFacade

modelmodelmodelLOC 0NOM 337NOA 1

Relying on Facade...FacadeFacadeFacade

modelmodelmodelLOC 0NOM 337NOA 1

1classes

3classes

Office buildings& parking lots

Office buildings& parking lots

JavaRecognizerJavaRecognizerJavaRecognizerreveng.javareveng.javareveng.javaLOC: 5,654NOM: 176NOA: 79

CPPParserCPPParserCPPParserreveng.classfilereveng.classfilereveng.classfileLOC: 9,111NOM: 204NOA: 85

Office buildings& parking lots

JavaRecognizerJavaRecognizerJavaRecognizerreveng.javareveng.javareveng.javaLOC: 5,654NOM: 176NOA: 79

CPPParserCPPParserCPPParserreveng.classfilereveng.classfilereveng.classfileLOC: 9,111NOM: 204NOA: 85

STDCTokenTypesSTDCTokenTypesSTDCTokenTypesreveng.classfilereveng.classfilereveng.classfileLOC: 0NOM: 0NOA: 152

JavaTokenTypesJavaTokenTypesJavaTokenTypesreveng.javareveng.javareveng.java

LOC: 0NOM: 0NOA: 173

Office buildings& parking lots

JavaRecognizerJavaRecognizerJavaRecognizerreveng.javareveng.javareveng.javaLOC: 5,654NOM: 176NOA: 79

CPPParserCPPParserCPPParserreveng.classfilereveng.classfilereveng.classfileLOC: 9,111NOM: 204NOA: 85

JavaTokenTypesJavaTokenTypesJavaTokenTypeslanguage.java.generatorlanguage.java.generatorlanguage.java.generator

LOC: 0NOM: 0NOA: 146

STDCTokenTypesSTDCTokenTypesSTDCTokenTypesreveng.classfilereveng.classfilereveng.classfileLOC: 0NOM: 0NOA: 152

JavaTokenTypesJavaTokenTypesJavaTokenTypesreveng.javareveng.javareveng.java

LOC: 0NOM: 0NOA: 173

JavaRecognizerJavaRecognizerJavaRecognizerlanguage.java.generatorlanguage.java.generatorlanguage.java.generator

LOC: 3,406NOM: 91NOA: 24

System overviews

System Language NOP NOC kLOC

ScummVM C++ 141 3,117 305

System Language NOP NOC kLOC

ScummVM C++ 141 3,117 305

CodeCity Smalltalk 34 173 29

System Language NOP NOC kLOC

ScummVM C++ 141 3,117 305

CodeCity Smalltalk 34 173 29

iTextSharp C# 22 485 58

System Language NOP NOC kLOC

ScummVM C++ 141 3,117 305

CodeCity Smalltalk 34 173 29

iTextSharp C# 22 485 58

iText Java 36 566 59

System Language NOP NOC kLOC

ScummVM C++ 141 3,117 305

CodeCity Smalltalk 34 173 29

iTextSharp C# 22 485 58

iText Java 36 566 59

Jmol Java 50 558 85

System Language NOP NOC kLOC

ScummVM C++ 141 3,117 305

CodeCity Smalltalk 34 173 29

iTextSharp C# 22 485 58

iText Java 36 566 59

Jmol Java 50 558 85

jEdit Java 59 966 98

System Language NOP NOC kLOC

ScummVM C++ 141 3,117 305

CodeCity Smalltalk 34 173 29

iTextSharp C# 22 485 58

iText Java 36 566 59

Jmol Java 50 558 85

jEdit Java 59 966 98

ArgoUML Java 88 1,817 144

System Language NOP NOC kLOC

ScummVM C++ 141 3,117 305

CodeCity Smalltalk 34 173 29

iTextSharp C# 22 485 58

iText Java 36 566 59

Jmol Java 50 558 85

jEdit Java 59 966 98

ArgoUML Java 88 1,817 144

GWT Java 302 4,372 212

System Language NOP NOC kLOC

ScummVM C++ 141 3,117 305

CodeCity Smalltalk 34 173 29

iTextSharp C# 22 485 58

iText Java 36 566 59

Jmol Java 50 558 85

jEdit Java 59 966 98

ArgoUML Java 88 1,817 144

GWT Java 302 4,372 212

JBoss Java 1,507 7,881 435

System Language NOP NOC kLOC

ScummVM C++ 141 3,117 305

CodeCity Smalltalk 34 173 29

iTextSharp C# 22 485 58

iText Java 36 566 59

Jmol Java 50 558 85

jEdit Java 59 966 98

ArgoUML Java 88 1,817 144

GWT Java 302 4,372 212

JBoss Java 1,507 7,881 435

JDK 1.5 Java 664 12,888 1,085

System Language NOP NOC kLOC

ScummVM C++ 141 3,117 305

CodeCity Smalltalk 34 173 29

iTextSharp C# 22 485 58

iText Java 36 566 59

Jmol Java 50 558 85

jEdit Java 59 966 98

ArgoUML Java 88 1,817 144

GWT Java 302 4,372 212

JBoss Java 1,507 7,881 435

JDK 1.5 Java 664 12,888 1,085

Eclipse Java 1,800 27,900 2,871

CodeCityCodeCity

SmalltalkSmalltalk

29 kLOC29 kLOC

ArgoUMLArgoUML

JavaJava

144 kLOC144 kLOC

JBossJBoss

JavaJava

435 kLOC435 kLOC

JDKJDK

JavaJava

1,085 kLOC1,085 kLOC

EclipseEclipse

JavaJava

2,871 kLOC2,871 kLOC

GWTGWT

JavaJava

212 kLOC212 kLOC

JmolJmol

JavaJava

85 kLOC85 kLOC

jEditjEdit

JavaJava

98 kLOC98 kLOC

iTextiText

C#C#

58 kLOC58 kLOC

iTextiText

JavaJava

59 kLOC59 kLOC

ScummVMScummVM

C++C++

305 kLOC305 kLOC

Reflections

first impression

Reflections

interesting insights

first impression

Reflections

interesting insights

limited to one version

first impression

Reflections

Software Evolution Analysis[WCRE 2008]

Age mapTime travel

Timeline

Time travelTimeline

Age map

Coarse-grained age map

1 2 3 4 5 6 7 8

Coarse-grained age map

1 2 3 4 5 6 7 8

JavaTokenTypesJavaTokenTypesJavaTokenTypeslanguage.java.generatorlanguage.java.generatorlanguage.java.generator

AGE: 8NOM: 0NOA: 146

JavaRecognizerJavaRecognizerJavaRecognizerlanguage.java.generatorlanguage.java.generatorlanguage.java.generator

AGE: 8NOM: 91NOA: 24

Coarse-grained age map

1 2 3 4 5 6 7 8

JavaTokenTypesJavaTokenTypesJavaTokenTypeslanguage.java.generatorlanguage.java.generatorlanguage.java.generator

AGE: 8NOM: 0NOA: 146

JavaTokenTypesJavaTokenTypesJavaTokenTypesreveng.javareveng.javareveng.java

AGE: 8NOM: 0NOA: 175

JavaRecognizerJavaRecognizerJavaRecognizerlanguage.java.generatorlanguage.java.generatorlanguage.java.generator

AGE: 8NOM: 91NOA: 24

JavaRecognizerJavaRecognizerJavaRecognizerlanguage.java.generatorlanguage.java.generatorlanguage.java.generator

AGE: 8NOM: 176NOA: 79

Coarse-grained age map

1 2 3 4 5 6 7 8

CPPParserCPPParserCPPParserreveng.classfilereveng.classfilereveng.classfileAGE: 3NOM: 200NOA: 85

JavaTokenTypesJavaTokenTypesJavaTokenTypeslanguage.java.generatorlanguage.java.generatorlanguage.java.generator

AGE: 8NOM: 0NOA: 146

JavaTokenTypesJavaTokenTypesJavaTokenTypesreveng.javareveng.javareveng.java

AGE: 8NOM: 0NOA: 175

JavaRecognizerJavaRecognizerJavaRecognizerlanguage.java.generatorlanguage.java.generatorlanguage.java.generator

AGE: 8NOM: 91NOA: 24

JavaRecognizerJavaRecognizerJavaRecognizerlanguage.java.generatorlanguage.java.generatorlanguage.java.generator

AGE: 8NOM: 176NOA: 79

STDCTokenTypesSTDCTokenTypesSTDCTokenTypesreveng.classfilereveng.classfilereveng.classfileAGE: 3NOM: 0NOA: 152

Fine-grained age map

1 2 3 4 5 6 7 8

Fine-grained age map

1 2 3 4 5 6 7 8

Age mapTime travel

Timeline

Coarse-grained time travel

2002 2003 2004 2005 2006 2007

0.10.1 0.12 0.14 0.16 0.18.1 0.20 0.22 0.24

ArgoUMLArgoUMLyears 6major releases 8

2002 2003 2004 2005 2006 2007

0.10.1 0.12 0.14 0.16 0.18.1 0.20 0.22 0.24

2002 2003 2004 2005 2006 2007

0.10.1 0.12 0.14 0.16 0.18.1 0.20 0.22 0.24

2002 2003 2004 2005 2006 2007

0.10.1 0.12 0.14 0.16 0.18.1 0.20 0.22 0.24

ModelFacadeModelFacadeModelFacademodelmodelmodel

LOC: 1,280NOM: 183NOA: 60

2002 2003 2004 2005 2006 2007

0.10.1 0.12 0.14 0.16 0.18.1 0.20 0.22 0.24

ModelFacadeModelFacadeModelFacademodelmodelmodel

LOC: 3,275NOM: 426NOA: 108

2002 2003 2004 2005 2006 2007

0.10.1 0.12 0.14 0.16 0.18.1 0.20 0.22 0.24

NSUMLModelFacadeNSUMLModelFacadeNSUMLModelFacademodelmodelmodel

LOC: 2,102NOM: 316NOA: 2

FacadeFacadeFacademodelmodelmodelLOC: 0NOM: 306NOA: 1

2002 2003 2004 2005 2006 2007

0.10.1 0.12 0.14 0.16 0.18.1 0.20 0.22 0.24

NSUMLModelFacadeNSUMLModelFacadeNSUMLModelFacade

FacadeFacadeFacadeFacadeMDRImplFacadeMDRImplFacadeMDRImplmodelmodelmodel

LOC: 2,709NOM: 329NOA: 2

2002 2003 2004 2005 2006 2007

0.10.1 0.12 0.14 0.16 0.18.1 0.20 0.22 0.24

FacadeFacadeFacadeFacadeMDRImplFacadeMDRImplFacadeMDRImpl

2002 2003 2004 2005 2006 2007

0.10.1 0.12 0.14 0.16 0.18.1 0.20 0.22 0.24

FacadeFacadeFacadeFacadeMDRImplFacadeMDRImplFacadeMDRImpl

Fine-grained time travel with age map

JHotDrawJHotDrawyears 5revisions 8

2000 2001 2002 2003 2004

2000 2001 2002 2003 2004

1

2000 2001 2002 2003 2004

2

1

2000 2001 2002 2003 2004

3

2

1

2000 2001 2002 2003 2004

4

3

2

1

2000 2001 2002 2003 2004

5

4

3

2

1

2000 2001 2002 2003 2004

6

5

4

3

2

1

2000 2001 2002 2003 2004

7

6

5

4

3

2

1

2000 2001 2002 2003 2004

8

7

6

5

4

3

2

1

Age mapTime travel

Timeline

Evolution overview

1887 Sep. 1887 Dec. 1888 Mar. 1888 Jun. 1888 Sep. 1888 Dec. 1889 Mar.

Timeline of a class

time

Timeline of a class

v1

timem1 m2m3

m5m6

m7

Timeline of a class

v1

timev2

m9 m10

m11 m12

m1 m2m3

m5m6

m7

Timeline of a class

v1

timev2

m9 m10

m11 m12

m1 m2m3

m5m6

m7

Timeline of a class

m1 m2m3

m5m6

m7

m9 m10

m11 m12m13 m14

m15

m17 m18

v1

timev2

v3

Timeline of a class

m1 m2m3

m5m6

m7

m9 m10

m11 m12m13 m14

m15

m17 m18

v1

timev2

v3

Class timelineclass StandardDrawingViewsystem JHotDrawNOMH 105

Package timelinepackage StandardDrawingViewsystem JHotDraw

Patterns

Patterns

Class NOMHJmolViewer 177TransformerManager 220Eval 432Viewer 1,029

Patterns

Class NOMHJmolViewer 177TransformerManager 220Eval 432Viewer 1,029

Patterns

Class NOMHJmolViewer 177TransformerManager 220Eval 432Viewer 1,029

Patterns

Class NOMHJmolViewer 177TransformerManager 220Eval 432Viewer 1,029

Reality check

“Your hypothesis is probably correct. We found some major problems, and diagnostic was too difficult, so we reverted to a stable version and tried to apply patches in small batch.”

Jmol Developer

Reflections

age map, time travel, and timeline

Reflections

exclusive insights, complementary to the previous context

age map, time travel, and timeline

Reflections

exclusive insights, complementary to the previous context

evolutionary patterns

age map, time travel, and timeline

Reflections

Design Quality Assessment[SoftVis 2008]

Detecting design flaws

[Marinescu, ICSM 2004]

[Lanza & Marinescu, Object-Oriented Metrics in Practice, 2006]

Textual data presentation

Moose [Nierstrasz et al., ESEC/FSE 2005]

Disharmony maps show design problems in context

JDK*JDK* 1,9661,966

God ClassGod Class 81

Design flaws visualization

God Class

Brain Class

Data Class

Feature Envy

Shotgun Surgery

Class-level design flaws

God Class

Brain Class

Data Class

Feature Envy

Shotgun Surgery

JDK*JDK* 1,9661,966

Brain ClassBrain Class 12

God ClassGod Class 65

God + Brain ClassGod + Brain Class 16

Data ClassData Class 109

JDK*JDK* 1,9661,966

Brain ClassBrain Class 12

God ClassGod Class 65

God + Brain ClassGod + Brain Class 16

Data ClassData Class 109

ComponentComponentComponentjava.awtjava.awtjava.awt

NOM 280NOA 88

CalendarCalendarCalendarjava.utilsjava.utilsjava.utilsNOM 71NOA 81

JDK*JDK* 1,9661,966

Brain ClassBrain Class 12

God ClassGod Class 65

God + Brain ClassGod + Brain Class 16

Data ClassData Class 109

ComponentComponentComponentjava.awtjava.awtjava.awt

NOM 280NOA 88

CalendarCalendarCalendarjava.utilsjava.utilsjava.utilsNOM 71NOA 81

SecuritySecuritySecurityjava.securityjava.securityjava.securityNOM 30NOA 3

JDK*JDK* 1,9661,966

Brain ClassBrain Class 12

God ClassGod Class 65

God + Brain ClassGod + Brain Class 16

Data ClassData Class 109

ComponentComponentComponentjava.awtjava.awtjava.awt

NOM 280NOA 88

CalendarCalendarCalendarjava.utilsjava.utilsjava.utilsNOM 71NOA 81

InputEventInputEventInputEventjava.awt.eventjava.awt.eventjava.awt.event

NOM 14NOA 21

KeyEventKeyEventKeyEventjava.awt.eventjava.awt.eventjava.awt.eventNOM 18NOA 205

SecuritySecuritySecurityjava.securityjava.securityjava.securityNOM 30NOA 3

iTextiText 711711

Brain ClassBrain Class 8

God ClassGod Class 32

God + Brain ClassGod + Brain Class 20

Data ClassData Class 35

iTextiText 711711

Brain ClassBrain Class 8

God ClassGod Class 32

God + Brain ClassGod + Brain Class 20

Data ClassData Class 35

PDFWriterPDFWriterPDFWritertext.pdftext.pdftext.pdf

NOM 11NOA 39

iTextiText 711711

Brain ClassBrain Class 8

God ClassGod Class 32

God + Brain ClassGod + Brain Class 20

Data ClassData Class 35

PDFWriterPDFWriterPDFWritertext.pdftext.pdftext.pdf

NOM 11NOA 39

SpecialSymbolSpecialSymbolSpecialSymboltexttexttextNOM 3NOA 0

JmolJmol 558558

Brain ClassBrain Class 5

God ClassGod Class 21

God + Brain ClassGod + Brain Class 9

Data ClassData Class 83

JmolJmol 558558

Brain ClassBrain Class 5

God ClassGod Class 21

God + Brain ClassGod + Brain Class 9

Data ClassData Class 83

ViewerViewerViewerorg.jmol.viewerorg.jmol.viewerorg.jmol.viewer

NOM 750NOA 57

Graphics3DGraphics3DGraphics3Dorg.jmol.g3dorg.jmol.g3dorg.jmol.g3dNOM 158NOA 95

ArgoUMLArgoUML 1,7761,776

Brain ClassBrain Class 8

God ClassGod Class 30

God + Brain ClassGod + Brain Class 6

Data ClassData Class 17

ArgoUMLArgoUML 1,7761,776

Brain ClassBrain Class 8

God ClassGod Class 30

God + Brain ClassGod + Brain Class 6

Data ClassData Class 17

FacadeMDRImplFacadeMDRImplFacadeMDRImpluml.model.mdruml.model.mdruml.model.mdrNOM 349NOA 3

ArgoUMLArgoUML 1,7761,776

Brain ClassBrain Class 8

God ClassGod Class 30

God + Brain ClassGod + Brain Class 6

Data ClassData Class 17

FacadeMDRImplFacadeMDRImplFacadeMDRImpluml.model.mdruml.model.mdruml.model.mdrNOM 349NOA 3

CPPParserCPPParserCPPParserreveng.classfilereveng.classfilereveng.classfile

NOM 204NOA 85

ArgoUMLArgoUML 1,7761,776

Brain ClassBrain Class 8

God ClassGod Class 30

God + Brain ClassGod + Brain Class 6

Data ClassData Class 17

FacadeMDRImplFacadeMDRImplFacadeMDRImpluml.model.mdruml.model.mdruml.model.mdrNOM 349NOA 3

CPPParserCPPParserCPPParserreveng.classfilereveng.classfilereveng.classfile

NOM 204NOA 85

JavaRecognizerJavaRecognizerJavaRecognizerreveng.javareveng.javareveng.javaNOM 176NOA 79

ArgoUMLArgoUML 1,7761,776

Brain ClassBrain Class 8

God ClassGod Class 30

God + Brain ClassGod + Brain Class 6

Data ClassData Class 17

FacadeMDRImplFacadeMDRImplFacadeMDRImpluml.model.mdruml.model.mdruml.model.mdrNOM 349NOA 3

CPPParserCPPParserCPPParserreveng.classfilereveng.classfilereveng.classfile

NOM 204NOA 85

JavaRecognizerJavaRecognizerJavaRecognizerreveng.javareveng.javareveng.javaNOM 176NOA 79

FigNodeModelElementFigNodeModelElementFigNodeModelElementuml.diagram.uiuml.diagram.uiuml.diagram.uiNOM 98NOA 39

ArgoUMLArgoUML 1,7761,776

Brain ClassBrain Class 8

God ClassGod Class 30

God + Brain ClassGod + Brain Class 6

Data ClassData Class 17

FacadeMDRImplFacadeMDRImplFacadeMDRImpluml.model.mdruml.model.mdruml.model.mdrNOM 349NOA 3

FigEdgeModelElementFigEdgeModelElementFigEdgeModelElementuml.diagram.uiuml.diagram.uiuml.diagram.ui

NOM 73NOA 13

CPPParserCPPParserCPPParserreveng.classfilereveng.classfilereveng.classfile

NOM 204NOA 85

JavaRecognizerJavaRecognizerJavaRecognizerreveng.javareveng.javareveng.javaNOM 176NOA 79

FigNodeModelElementFigNodeModelElementFigNodeModelElementuml.diagram.uiuml.diagram.uiuml.diagram.uiNOM 98NOA 39

Method-level design flaws

God Class

Brain Class

Data Class

Feature Envy

Shotgun Surgery

ArgoUML*ArgoUML*ArgoUML*

Shotgun surgery 210

JmolJmol 5,9685,968

Feature envyFeature envy 1,555

Reflections

provides a design overview

Reflections

places design problems in context

provides a design overview

Reflections

places design problems in context

complements the metric-based analysis

provides a design overview

Reflections

Tool Support[ICSE 2008 tool demo, FAMOOSR 2008, WASDeTT 2008]

CodeCity

On the shoulders of others

On the shoulders of others

FAMIX[Demeyer et al., Technical Report, University of Bern, 2001]

Moose[Nierstrasz et al., ESEC/FSE 2005]

Hismo[Gîrba, Ph.D. Thesis, University of Bern, 2005]

On the shoulders of others

FAMIX[Demeyer et al., Technical Report, University of Bern, 2001]

Moose[Nierstrasz et al., ESEC/FSE 2005]

iPlasma[Marinescu et al., ICSM 2005]

PMCS[Daka, Master Thesis, University of Lugano, 2009]

Hismo[Gîrba, Ph.D. Thesis, University of Bern, 2005]

On the shoulders of others

FAMIX[Demeyer et al., Technical Report, University of Bern, 2001]

Moose[Nierstrasz et al., ESEC/FSE 2005]

iPlasma[Marinescu et al., ICSM 2005]

PMCS[Daka, Master Thesis, University of Lugano, 2009]

Hismo[Gîrba, Ph.D. Thesis, University of Bern, 2005]

CodeCity supports Java, C++, C#, Smalltalk

http://codecity.inf.usi.ch

downloads30 months

http://codecity.inf.usi.ch

5,000+

Social impact

Social impact

testimonials“[...] I loaded my music composition application into CodeCity. See the attached picture. Interestingly, the resulting image looks like expected. To a large extent, it matches the image I always had in my head.”

Social impact

testimonials

community recognition

“[...] I loaded my music composition application into CodeCity. See the attached picture. Interestingly, the resulting image looks like expected. To a large extent, it matches the image I always had in my head.”

ated-ICT Ticino recognition prize for 2008

Reflections

advantage through the use of existing technology

Reflections

access to valuable user feedback

advantage through the use of existing technology

Reflections

access to valuable user feedback

necessary for empirical evaluation

advantage through the use of existing technology

Reflections

Prologue

Approac

h

Evalua

tion

Epilogue

Empirical Evaluation[Technical Report USI, 2010]

State-of-the-art s

urvey

State-of-the-art s

urvey

State-of-the-art s

urvey

50+publications

State-of-the-art s

urvey

1 Avoid comparing using a technique against not using it.

2 Involve participants from the industry.

3 Provide a not-so-short tutorial of the experimental tool to the participants.

4 Avoid, whenever possible, giving the tutorial right before the experiment.

5 Use the tutorial to cover both the research behind the approach and the tool.

6 Find a set of relevant tasks.

7 Choose real object systems that are relevant for the tasks.

8 Include more than one object system in the design.

9 Provide the same data to all participants.

10 Limit the amount of time allowed for solving each task.

11 Provide all the details needed to make the experiment replicable.

12 Report results on individual tasks.

13 Include tasks on which the expected result is not always to the advantage of the tool being evaluated.

14 Take into account the possible wide range of experience level of the participants.

Design desiderata

1 Avoid comparing using a technique against not using it.

2 Involve participants from the industry.

3 Provide a not-so-short tutorial of the experimental tool to the participants.

4 Avoid, whenever possible, giving the tutorial right before the experiment.

5 Use the tutorial to cover both the research behind the approach and the tool.

6 Find a set of relevant tasks.

7 Choose real object systems that are relevant for the tasks.

8 Include more than one object system in the design.

9 Provide the same data to all participants.

10 Limit the amount of time allowed for solving each task.

11 Provide all the details needed to make the experiment replicable.

12 Report results on individual tasks.

13 Include tasks on which the expected result is not always to the advantage of the tool being evaluated.

14 Take into account the possible wide range of experience level of the participants.

Design desiderata

1 Avoid comparing using a technique against not using it.

2 Involve participants from the industry.

3 Provide a not-so-short tutorial of the experimental tool to the participants.

4 Avoid, whenever possible, giving the tutorial right before the experiment.

5 Use the tutorial to cover both the research behind the approach and the tool.

6 Find a set of relevant tasks.

7 Choose real object systems that are relevant for the tasks.

8 Include more than one object system in the design.

9 Provide the same data to all participants.

10 Limit the amount of time allowed for solving each task.

11 Provide all the details needed to make the experiment replicable.

12 Report results on individual tasks.

13 Include tasks on which the expected result is not always to the advantage of the tool being evaluated.

14 Take into account the possible wide range of experience level of the participants.

Design desiderata

Main research questions

Main research questions

Does the use of CodeCity increase the correctness of the solutions to program comprehension tasks, compared to non-visual exploration tools, regardless of the object system size?1

Main research questions

Does the use of CodeCity increase the correctness of the solutions to program comprehension tasks, compared to non-visual exploration tools, regardless of the object system size?

Does the use of CodeCity reduce the time needed to solve program comprehension tasks, compared to non-visual exploration tools, regardless of the object system size?2

1

Variables of the experiment

Variables of the experiment

dependentcorrectnesscorrectnesscorrectnesscorrectnesscorrectness

dependentcompletion timecompletion timecompletion timecompletion timecompletion time

independenttool CodeCityCodeCityCodeCityCodeCity

independenttool Eclipse + ExcelEclipse + ExcelEclipse + ExcelEclipse + Excelindependentobject system sizeobject system sizeobject system sizeobject system size mediumindependentobject system sizeobject system sizeobject system sizeobject system size large

controlledexperience levelexperience levelexperience level beginnerbeginner

controlledexperience levelexperience levelexperience level advancedadvancedcontrolledbackgroundbackground academiaacademiaacademiacontrolledbackgroundbackground industryindustryindustry

Variables of the experiment

dependentcorrectnesscorrectnesscorrectnesscorrectnesscorrectness

dependentcompletion timecompletion timecompletion timecompletion timecompletion time

independenttool CodeCityCodeCityCodeCityCodeCity

independenttool Eclipse + ExcelEclipse + ExcelEclipse + ExcelEclipse + Excelindependentobject system sizeobject system sizeobject system sizeobject system size mediumindependentobject system sizeobject system sizeobject system sizeobject system size large

controlledexperience levelexperience levelexperience level beginnerbeginner

controlledexperience levelexperience levelexperience level advancedadvancedcontrolledbackgroundbackground academiaacademiaacademiacontrolledbackgroundbackground industryindustryindustry

Variables of the experiment

dependentcorrectnesscorrectnesscorrectnesscorrectnesscorrectness

dependentcompletion timecompletion timecompletion timecompletion timecompletion time

independenttool CodeCityCodeCityCodeCityCodeCity

independenttool Eclipse + ExcelEclipse + ExcelEclipse + ExcelEclipse + Excelindependentobject system sizeobject system sizeobject system sizeobject system size mediumindependentobject system sizeobject system sizeobject system sizeobject system size large

controlledexperience levelexperience levelexperience level beginnerbeginner

controlledexperience levelexperience levelexperience level advancedadvancedcontrolledbackgroundbackground academiaacademiaacademiacontrolledbackgroundbackground industryindustryindustry

Variables of the experiment

dependentcorrectnesscorrectnesscorrectnesscorrectnesscorrectness

dependentcompletion timecompletion timecompletion timecompletion timecompletion time

independenttool CodeCityCodeCityCodeCityCodeCity

independenttool Eclipse + ExcelEclipse + ExcelEclipse + ExcelEclipse + Excelindependentobject system sizeobject system sizeobject system sizeobject system size mediumindependentobject system sizeobject system sizeobject system sizeobject system size large

controlledexperience levelexperience levelexperience level beginnerbeginner

controlledexperience levelexperience levelexperience level advancedadvancedcontrolledbackgroundbackground academiaacademiaacademiacontrolledbackgroundbackground industryindustryindustry

FindBugs

1,320 classes

93,310 LOC

Azureus

4,656 classes

454,387 LOC

Variables of the experiment

dependentcorrectnesscorrectnesscorrectnesscorrectnesscorrectness

dependentcompletion timecompletion timecompletion timecompletion timecompletion time

independenttool CodeCityCodeCityCodeCityCodeCity

independenttool Eclipse + ExcelEclipse + ExcelEclipse + ExcelEclipse + Excelindependentobject system sizeobject system sizeobject system sizeobject system size mediumindependentobject system sizeobject system sizeobject system sizeobject system size large

controlledexperience levelexperience levelexperience level beginnerbeginner

controlledexperience levelexperience levelexperience level advancedadvancedcontrolledbackgroundbackground academiaacademiaacademiacontrolledbackgroundbackground industryindustryindustry

Variables of the experiment

dependentcorrectnesscorrectnesscorrectnesscorrectnesscorrectness

dependentcompletion timecompletion timecompletion timecompletion timecompletion time

independenttool CodeCityCodeCityCodeCityCodeCity

independenttool Eclipse + ExcelEclipse + ExcelEclipse + ExcelEclipse + Excelindependentobject system sizeobject system sizeobject system sizeobject system size mediumindependentobject system sizeobject system sizeobject system sizeobject system size large

controlledexperience levelexperience levelexperience level beginnerbeginner

controlledexperience levelexperience levelexperience level advancedadvancedcontrolledbackgroundbackground academiaacademiaacademiacontrolledbackgroundbackground industryindustryindustry

TasksA1 Identity the convention used in the system to organize unit tests.

A2.1&A2.2

What is the spread of term T in the name of the classes, their attributes and methods?

A3 Evaluate the change impact of class C, in terms of intensity and dispersion.

A4.1 Find the three classes with the highest number of methods.

A4.2Find the three classes with the highest average number of lines of code per method.

B1.1 Identify the package with the highest percentage of god classes.

B1.2 Identify the god class with the largest number of methods.

B2.1Identify the dominant (affecting the highest number of classes) class-level design problem.

B2.2 Write an overview of the class-level design problems in the system.

TasksA1 Identity the convention used in the system to organize unit tests.

A2.1&A2.2

What is the spread of term T in the name of the classes, their attributes and methods?

A3 Evaluate the change impact of class C, in terms of intensity and dispersion.

A4.1 Find the three classes with the highest number of methods.

A4.2Find the three classes with the highest average number of lines of code per method.

B1.1 Identify the package with the highest percentage of god classes.

B1.2 Identify the god class with the largest number of methods.

B2.1Identify the dominant (affecting the highest number of classes) class-level design problem.

B2.2 Write an overview of the class-level design problems in the system.

program comprehension

design quality assessment 4

6

Tasksquantitative

qualitative 1

A1 Identity the convention used in the system to organize unit tests.

A2.1&A2.2

What is the spread of term T in the name of the classes, their attributes and methods?

A3 Evaluate the change impact of class C, in terms of intensity and dispersion.

A4.1 Find the three classes with the highest number of methods.

A4.2Find the three classes with the highest average number of lines of code per method.

B1.1 Identify the package with the highest percentage of god classes.

B1.2 Identify the god class with the largest number of methods.

B2.1Identify the dominant (affecting the highest number of classes) class-level design problem.

B2.2 Write an overview of the class-level design problems in the system.

9

Operation timeline

1 1 1 1 13

2 1 6

5

4 1

1 1 1 1 3

1 1 1 1

6

6

20092009 2010201020102010

November December January February ... April

18 24 25 2 9 21 28 5 8 14 28 18 22 24 25 14

R

R R

RBern

Bologna

Antwerpen

Lugano

nm

R

Training session

followed by an experimental session with

n subjects using CodeCity (experimental)

m subjects using Eclipse+Excel (control)

remote, self-performed session

Pilot Experiment

Operation timeline

1 1 1 1 13

2 1 6

5

4 1

1 1 1 1 3

1 1 1 1

6

6

20092009 2010201020102010

November December January February ... April

18 24 25 2 9 21 28 5 8 14 28 18 22 24 25 14

R

R R

RBern

Bologna

Antwerpen

Lugano

nm

R

Training session

followed by an experimental session with

n subjects using CodeCity (experimental)

m subjects using Eclipse+Excel (control)

remote, self-performed session

Pilot Experiment

Operation timeline

1 1 1 1 13

2 1 6

5

4 1

1 1 1 1 3

1 1 1 1

6

6

20092009 2010201020102010

November December January February ... April

18 24 25 2 9 21 28 5 8 14 28 18 22 24 25 14

R

R R

RBern

Bologna

Antwerpen

Lugano

nm

R

Training session

followed by an experimental session with

n subjects using CodeCity (experimental)

m subjects using Eclipse+Excel (control)

remote, self-performed session

Pilot Experiment

Subjects

Subjects

21 20 industryacademia

Background

Subjects

21 20 industryacademia

developersoftware engineersystem analystsoftware architectproject managerIT leadCTOconsultantprofessorPh.D. studentMaster student

Background

Subjects

21 20 industryacademia

developersoftware engineersystem analystsoftware architectproject managerIT leadCTOconsultantprofessorPh.D. studentMaster student

Background

Block

industry-advanced

academy-advanced

academy-beginner

Age

5 5

50

45

40

35

30

25

20

EXAMINE VARIABLES=Age BY Syssize BY Tool /PLOT=BOXPLOT /STATISTICS=NONE /NOTOTAL.

Explore

Page 22

Subjects

7

1218

ItalyBelgiumSwitzerandArgentinaCanadaGermanyRomania

21 20 industryacademia

developersoftware engineersystem analystsoftware architectproject managerIT leadCTOconsultantprofessorPh.D. studentMaster student

Country of origin

Background

Block

industry-advanced

academy-advanced

academy-beginner

Age

5 5

50

45

40

35

30

25

20

EXAMINE VARIABLES=Age BY Syssize BY Tool /PLOT=BOXPLOT /STATISTICS=NONE /NOTOTAL.

Explore

Page 22

Replicability

Replicability

Pre-experimentquestionnaire

Replicability

Introduction

The aim of this experiment is to compare tool efficiency in supporting software

practitioners analyzing medium to large-scale software systems.You will use CodeCity to analyze Azureus, a BitTorrent client written in Java.You are given maximum 100 minutes for solving 10 tasks (10 minutes per task). You are asked:• not to consult any other participant during the experiment;• to perform the tasks in the specified order;• to write down the current time each time before starting to read a task and once

after completing all the tasks;• to announce the experimenter that you are moving on to another task, in order

to reset your 10-minutes-per-task allocated timer;• not to return to earlier tasks because it affects the timing;• for each task, to fill in the required information. In the case of multiple choices

check the most appropriate answer and provide additional information, if

requested.

The experiment is concluded with a short debriefing questionnaire.

Thank you for participating in this experiment!! ! ! ! Richard Wettel, Michele Lanza, Romain Robbes

CodeCity Experiment

Participant:

T1

Introduction

The aim of this experiment is to compare tool efficiency in supporting software practitioners analyzing medium to large-scale software systems.You will use CodeCity to analyze Azureus, a BitTorrent client written in Java.You are given maximum 100 minutes for solving 10 tasks (10 minutes per task). You are asked:

• not to consult any other participant during the experiment;• to perform the tasks in the specified order;• to write down the current time each time before starting to read a task and once after completing all the tasks;• to announce the experimenter that you are moving on to another task, in order to reset your 10-minutes-per-task allocated timer;• not to return to earlier tasks because it affects the timing;• for each task, to fill in the required information. In the case of multiple choices check the most appropriate answer and provide additional information, if requested.

The experiment is concluded with a short debriefing questionnaire.

Thank you for participating in this experiment!! ! ! ! Richard Wettel, Michele Lanza, Romain Robbes

CodeCity Experiment

Participant:

T1

Introduction

The aim of this experiment is to compare tool efficiency in supporting software practitioners analyzing medium to large-scale software systems.

You will use CodeCity to analyze Azureus, a BitTorrent client written in Java.

You are given maximum 100 minutes for solving 10 tasks (10 minutes per task).

You are asked:• not to consult any other participant during the experiment;• to perform the tasks in the specified order;• to write down the current time each time before starting to read a task and once

after completing all the tasks;• to announce the experimenter that you are moving on to another task, in order

to reset your 10-minutes-per-task allocated timer;• not to return to earlier tasks because it affects the timing;• for each task, to fill in the required information. In the case of multiple choices

check the most appropriate answer and provide additional information, if requested.

The experiment is concluded with a short debriefing questionnaire.

Thank you for participating in this experiment!

! ! ! ! Richard Wettel, Michele Lanza, Romain Robbes

CodeCity Experiment

Participant:

T1

Introduction

The aim of this experiment is to compare tool efficiency in supporting software practitioners analyzing medium to large-scale software systems.

You will use CodeCity to analyze Azureus, a BitTorrent client written in Java.

You are given maximum 100 minutes for solving 10 tasks (10 minutes per task).

You are asked:• not to consult any other participant during the experiment;• to perform the tasks in the specified order;• to write down the current time each time before starting to read a task and once

after completing all the tasks;• to announce the experimenter that you are moving on to another task, in order

to reset your 10-minutes-per-task allocated timer;• not to return to earlier tasks because it affects the timing;• for each task, to fill in the required information. In the case of multiple choices

check the most appropriate answer and provide additional information, if requested.

The experiment is concluded with a short debriefing questionnaire.

Thank you for participating in this experiment!

! ! ! ! Richard Wettel, Michele Lanza, Romain Robbes

CodeCity Experiment

Participant:

T1

Pre-experimentquestionnaire

Experimenthandouts

Replicability

174

A.4 Task Solution OraclesA.4.1 T1: Azureus, analyzed with CodeCityA1

EitherThere are no unit tests in the system [1pt],orCentralized in a single package hierarchy whose root is in org.gudy.azureus2.ui.console.multiuser

[1pt]. Since there is only one test class (i.e., TestUserManager), if they don’t give the full correct

answer, the answer is completely wrong.A2.1

Dispersed [0pts otherwise]in the following (max. 5) packages [0.2pts for each]:• com.aelitis.azureus.core• com.aelitis.azureus.core.content• com.aelitis.azureus.core.download• com.aelitis.azureus.core.impl• com.aelitis.azureus.core.lws• com.aelitis.azureus.core.peermanager.peerdb• com.aelitis.azureus.core.stats

• com.aelitis.azureus.core.torrent• com.aelitis.azureus.plugins.net.buddy• com.aelitis.azureus.plugins.net.buddy.swt• com.aelitis.azureus.plugins.net.buddy.tracker• com.aelitis.azureus.plugins.removerules• com.aelitis.azureus.plugins.sharing.hoster• com.aelitis.azureus.plugins.startstoprules.defaultplugin• com.aelitis.azureus.plugins.tracker.dht

• com.aelitis.azureus.plugins.tracker.local• com.aelitis.azureus.plugins.tracker.peerauth• com.aelitis.azureus.ui.swt.content.columns• com.aelitis.azureus.ui.swt.shells.main• com.aelitis.azureus.util

174

A.4 Task Solution OraclesA.4.1 T1: Azureus, analyzed with CodeCityA1

EitherThere are no unit tests in the system [1pt],orCentralized in a single package hierarchy whose root is in org.gudy.azureus2.ui.console.multiuser

[1pt]. Since there is only one test class (i.e., TestUserManager), if they don’t give the full correctanswer, the answer is completely wrong.

A2.1

Dispersed [0pts otherwise]in the following (max. 5) packages [0.2pts for each]:• com.aelitis.azureus.core• com.aelitis.azureus.core.content• com.aelitis.azureus.core.download• com.aelitis.azureus.core.impl• com.aelitis.azureus.core.lws• com.aelitis.azureus.core.peermanager.peerdb• com.aelitis.azureus.core.stats• com.aelitis.azureus.core.torrent• com.aelitis.azureus.plugins.net.buddy• com.aelitis.azureus.plugins.net.buddy.swt• com.aelitis.azureus.plugins.net.buddy.tracker• com.aelitis.azureus.plugins.removerules• com.aelitis.azureus.plugins.sharing.hoster• com.aelitis.azureus.plugins.startstoprules.defaultplugin• com.aelitis.azureus.plugins.tracker.dht

• com.aelitis.azureus.plugins.tracker.local• com.aelitis.azureus.plugins.tracker.peerauth• com.aelitis.azureus.ui.swt.content.columns• com.aelitis.azureus.ui.swt.shells.main• com.aelitis.azureus.util

174 A.4 Task Solution Oracles

A.4.1 T1: Azureus, analyzed with CodeCityA1

EitherThere are no unit tests in the system [1pt],orCentralized in a single package hierarchy whose root is in org.gudy.azureus2.ui.console.multiuser[1pt]. Since there is only one test class (i.e., TestUserManager), if they don’t give the full correctanswer, the answer is completely wrong.

A2.1

Dispersed [0pts otherwise]in the following (max. 5) packages [0.2pts for each]:

• com.aelitis.azureus.core

• com.aelitis.azureus.core.content

• com.aelitis.azureus.core.download

• com.aelitis.azureus.core.impl

• com.aelitis.azureus.core.lws

• com.aelitis.azureus.core.peermanager.peerdb

• com.aelitis.azureus.core.stats

• com.aelitis.azureus.core.torrent

• com.aelitis.azureus.plugins.net.buddy

• com.aelitis.azureus.plugins.net.buddy.swt

• com.aelitis.azureus.plugins.net.buddy.tracker

• com.aelitis.azureus.plugins.removerules

• com.aelitis.azureus.plugins.sharing.hoster

• com.aelitis.azureus.plugins.startstoprules.defaultplugin

• com.aelitis.azureus.plugins.tracker.dht

• com.aelitis.azureus.plugins.tracker.local

• com.aelitis.azureus.plugins.tracker.peerauth

• com.aelitis.azureus.ui.swt.content.columns

• com.aelitis.azureus.ui.swt.shells.main

• com.aelitis.azureus.util

Introduction

The aim of this experiment is to compare tool efficiency in supporting software

practitioners analyzing medium to large-scale software systems.You will use CodeCity to analyze Azureus, a BitTorrent client written in Java.You are given maximum 100 minutes for solving 10 tasks (10 minutes per task). You are asked:• not to consult any other participant during the experiment;• to perform the tasks in the specified order;• to write down the current time each time before starting to read a task and once

after completing all the tasks;• to announce the experimenter that you are moving on to another task, in order

to reset your 10-minutes-per-task allocated timer;• not to return to earlier tasks because it affects the timing;• for each task, to fill in the required information. In the case of multiple choices

check the most appropriate answer and provide additional information, if

requested.

The experiment is concluded with a short debriefing questionnaire.

Thank you for participating in this experiment!! ! ! ! Richard Wettel, Michele Lanza, Romain Robbes

CodeCity Experiment

Participant:

T1

Introduction

The aim of this experiment is to compare tool efficiency in supporting software practitioners analyzing medium to large-scale software systems.You will use CodeCity to analyze Azureus, a BitTorrent client written in Java.You are given maximum 100 minutes for solving 10 tasks (10 minutes per task). You are asked:

• not to consult any other participant during the experiment;• to perform the tasks in the specified order;• to write down the current time each time before starting to read a task and once after completing all the tasks;• to announce the experimenter that you are moving on to another task, in order to reset your 10-minutes-per-task allocated timer;• not to return to earlier tasks because it affects the timing;• for each task, to fill in the required information. In the case of multiple choices check the most appropriate answer and provide additional information, if requested.

The experiment is concluded with a short debriefing questionnaire.

Thank you for participating in this experiment!! ! ! ! Richard Wettel, Michele Lanza, Romain Robbes

CodeCity Experiment

Participant:

T1

Introduction

The aim of this experiment is to compare tool efficiency in supporting software practitioners analyzing medium to large-scale software systems.

You will use CodeCity to analyze Azureus, a BitTorrent client written in Java.

You are given maximum 100 minutes for solving 10 tasks (10 minutes per task).

You are asked:• not to consult any other participant during the experiment;• to perform the tasks in the specified order;• to write down the current time each time before starting to read a task and once

after completing all the tasks;• to announce the experimenter that you are moving on to another task, in order

to reset your 10-minutes-per-task allocated timer;• not to return to earlier tasks because it affects the timing;• for each task, to fill in the required information. In the case of multiple choices

check the most appropriate answer and provide additional information, if requested.

The experiment is concluded with a short debriefing questionnaire.

Thank you for participating in this experiment!

! ! ! ! Richard Wettel, Michele Lanza, Romain Robbes

CodeCity Experiment

Participant:

T1

Introduction

The aim of this experiment is to compare tool efficiency in supporting software practitioners analyzing medium to large-scale software systems.

You will use CodeCity to analyze Azureus, a BitTorrent client written in Java.

You are given maximum 100 minutes for solving 10 tasks (10 minutes per task).

You are asked:• not to consult any other participant during the experiment;• to perform the tasks in the specified order;• to write down the current time each time before starting to read a task and once

after completing all the tasks;• to announce the experimenter that you are moving on to another task, in order

to reset your 10-minutes-per-task allocated timer;• not to return to earlier tasks because it affects the timing;• for each task, to fill in the required information. In the case of multiple choices

check the most appropriate answer and provide additional information, if requested.

The experiment is concluded with a short debriefing questionnaire.

Thank you for participating in this experiment!

! ! ! ! Richard Wettel, Michele Lanza, Romain Robbes

CodeCity Experiment

Participant:

T1

Pre-experimentquestionnaire

Experimenthandouts

174 A.4 Task Solution Oracles

A.4.1 T1: Azureus, analyzed with CodeCity

A1

EitherThere are no unit tests in the system [1pt],orCentralized in a single package hierarchy whose root is in org.gudy.azureus2.ui.console.multiuser[1pt]. Since there is only one test class (i.e., TestUserManager), if they don’t give the full correctanswer, the answer is completely wrong.

A2.1

Dispersed [0pts otherwise]in the following (max. 5) packages [0.2pts for each]:

• com.aelitis.azureus.core

• com.aelitis.azureus.core.content

• com.aelitis.azureus.core.download

• com.aelitis.azureus.core.impl

• com.aelitis.azureus.core.lws

• com.aelitis.azureus.core.peermanager.peerdb

• com.aelitis.azureus.core.stats

• com.aelitis.azureus.core.torrent

• com.aelitis.azureus.plugins.net.buddy

• com.aelitis.azureus.plugins.net.buddy.swt

• com.aelitis.azureus.plugins.net.buddy.tracker

• com.aelitis.azureus.plugins.removerules

• com.aelitis.azureus.plugins.sharing.hoster

• com.aelitis.azureus.plugins.startstoprules.defaultplugin

• com.aelitis.azureus.plugins.tracker.dht

• com.aelitis.azureus.plugins.tracker.local

• com.aelitis.azureus.plugins.tracker.peerauth

• com.aelitis.azureus.ui.swt.content.columns

• com.aelitis.azureus.ui.swt.shells.main

• com.aelitis.azureus.util

Task solutions &grading schemes

Replicability193

A.5 Data

Code

Treatment

Blocking Criteria

Number ToolSystem size Background Experience

IA011 CodeCity

largeindustry

advanced

IA021 CodeCity

largeindustry

advanced

IA031 CodeCity

largeindustry

advanced

IA041 CodeCity

largeindustry

advanced

AB011 CodeCity

largeacademy

beginner

AB021 CodeCity

largeacademy

beginner

IA051 CodeCity

largeindustry

advanced

AA011 CodeCity

largeacademy

advanced

AA021 CodeCity

largeacademy

advanced

IA061 CodeCity

largeindustry

advanced

IA072 CodeCity

mediumindustry

advanced

IA082 CodeCity

mediumindustry

advanced

IA092 CodeCity

mediumindustry

advanced

AB032 CodeCity

mediumacademy

beginner

IA102 CodeCity

mediumindustry

advanced

IA112 CodeCity

mediumindustry

advanced

IA122 CodeCity

mediumindustry

advanced

AB042 CodeCity

mediumacademy

beginner

AA032 CodeCity

mediumacademy

advanced

AB052 CodeCity

mediumacademy

beginner

AA042 CodeCity

mediumacademy

advanced

IA132 CodeCity

mediumindustry

advanced

IA143 Ecl+Excl large

industryadvanced

AB063 Ecl+Excl large

academybeginner

AB073 Ecl+Excl large

academybeginner

AA053 Ecl+Excl large

academyadvanced

AA063 Ecl+Excl large

academyadvanced

AA073 Ecl+Excl large

academyadvanced

IA153 Ecl+Excl large

industryadvanced

IA163 Ecl+Excl large

industryadvanced

IA014 Ecl+Excl medium

industryadvanced

IA184 Ecl+Excl medium

industryadvanced

IA194 Ecl+Excl medium

industryadvanced

AB084 Ecl+Excl medium

academybeginner

AB094 Ecl+Excl medium

academybeginner

AA104 Ecl+Excl medium

academyadvanced

AA114 Ecl+Excl medium

academyadvanced

AA124 Ecl+Excl medium

academyadvanced

AA134 Ecl+Excl medium

academyadvanced

AA144 Ecl+Excl medium

academyadvanced

IA204 Ecl+Excl medium

industryadvanced

Table A.2. The assignment of the subjects to treatments and blocks

174

A.4 Task Solution OraclesA.4.1 T1: Azureus, analyzed with CodeCityA1

EitherThere are no unit tests in the system [1pt],orCentralized in a single package hierarchy whose root is in org.gudy.azureus2.ui.console.multiuser

[1pt]. Since there is only one test class (i.e., TestUserManager), if they don’t give the full correct

answer, the answer is completely wrong.A2.1

Dispersed [0pts otherwise]in the following (max. 5) packages [0.2pts for each]:• com.aelitis.azureus.core• com.aelitis.azureus.core.content• com.aelitis.azureus.core.download• com.aelitis.azureus.core.impl• com.aelitis.azureus.core.lws• com.aelitis.azureus.core.peermanager.peerdb• com.aelitis.azureus.core.stats

• com.aelitis.azureus.core.torrent• com.aelitis.azureus.plugins.net.buddy• com.aelitis.azureus.plugins.net.buddy.swt• com.aelitis.azureus.plugins.net.buddy.tracker• com.aelitis.azureus.plugins.removerules• com.aelitis.azureus.plugins.sharing.hoster• com.aelitis.azureus.plugins.startstoprules.defaultplugin• com.aelitis.azureus.plugins.tracker.dht

• com.aelitis.azureus.plugins.tracker.local• com.aelitis.azureus.plugins.tracker.peerauth• com.aelitis.azureus.ui.swt.content.columns• com.aelitis.azureus.ui.swt.shells.main• com.aelitis.azureus.util

174

A.4 Task Solution OraclesA.4.1 T1: Azureus, analyzed with CodeCityA1

EitherThere are no unit tests in the system [1pt],orCentralized in a single package hierarchy whose root is in org.gudy.azureus2.ui.console.multiuser

[1pt]. Since there is only one test class (i.e., TestUserManager), if they don’t give the full correctanswer, the answer is completely wrong.

A2.1

Dispersed [0pts otherwise]in the following (max. 5) packages [0.2pts for each]:• com.aelitis.azureus.core• com.aelitis.azureus.core.content• com.aelitis.azureus.core.download• com.aelitis.azureus.core.impl• com.aelitis.azureus.core.lws• com.aelitis.azureus.core.peermanager.peerdb• com.aelitis.azureus.core.stats• com.aelitis.azureus.core.torrent• com.aelitis.azureus.plugins.net.buddy• com.aelitis.azureus.plugins.net.buddy.swt• com.aelitis.azureus.plugins.net.buddy.tracker• com.aelitis.azureus.plugins.removerules• com.aelitis.azureus.plugins.sharing.hoster• com.aelitis.azureus.plugins.startstoprules.defaultplugin• com.aelitis.azureus.plugins.tracker.dht

• com.aelitis.azureus.plugins.tracker.local• com.aelitis.azureus.plugins.tracker.peerauth• com.aelitis.azureus.ui.swt.content.columns• com.aelitis.azureus.ui.swt.shells.main• com.aelitis.azureus.util

174 A.4 Task Solution Oracles

A.4.1 T1: Azureus, analyzed with CodeCityA1

EitherThere are no unit tests in the system [1pt],orCentralized in a single package hierarchy whose root is in org.gudy.azureus2.ui.console.multiuser[1pt]. Since there is only one test class (i.e., TestUserManager), if they don’t give the full correctanswer, the answer is completely wrong.

A2.1

Dispersed [0pts otherwise]in the following (max. 5) packages [0.2pts for each]:

• com.aelitis.azureus.core

• com.aelitis.azureus.core.content

• com.aelitis.azureus.core.download

• com.aelitis.azureus.core.impl

• com.aelitis.azureus.core.lws

• com.aelitis.azureus.core.peermanager.peerdb

• com.aelitis.azureus.core.stats

• com.aelitis.azureus.core.torrent

• com.aelitis.azureus.plugins.net.buddy

• com.aelitis.azureus.plugins.net.buddy.swt

• com.aelitis.azureus.plugins.net.buddy.tracker

• com.aelitis.azureus.plugins.removerules

• com.aelitis.azureus.plugins.sharing.hoster

• com.aelitis.azureus.plugins.startstoprules.defaultplugin

• com.aelitis.azureus.plugins.tracker.dht

• com.aelitis.azureus.plugins.tracker.local

• com.aelitis.azureus.plugins.tracker.peerauth

• com.aelitis.azureus.ui.swt.content.columns

• com.aelitis.azureus.ui.swt.shells.main

• com.aelitis.azureus.util

Introduction

The aim of this experiment is to compare tool efficiency in supporting software

practitioners analyzing medium to large-scale software systems.You will use CodeCity to analyze Azureus, a BitTorrent client written in Java.You are given maximum 100 minutes for solving 10 tasks (10 minutes per task). You are asked:• not to consult any other participant during the experiment;• to perform the tasks in the specified order;• to write down the current time each time before starting to read a task and once

after completing all the tasks;• to announce the experimenter that you are moving on to another task, in order

to reset your 10-minutes-per-task allocated timer;• not to return to earlier tasks because it affects the timing;• for each task, to fill in the required information. In the case of multiple choices

check the most appropriate answer and provide additional information, if

requested.

The experiment is concluded with a short debriefing questionnaire.

Thank you for participating in this experiment!! ! ! ! Richard Wettel, Michele Lanza, Romain Robbes

CodeCity Experiment

Participant:

T1

Introduction

The aim of this experiment is to compare tool efficiency in supporting software practitioners analyzing medium to large-scale software systems.You will use CodeCity to analyze Azureus, a BitTorrent client written in Java.You are given maximum 100 minutes for solving 10 tasks (10 minutes per task). You are asked:

• not to consult any other participant during the experiment;• to perform the tasks in the specified order;• to write down the current time each time before starting to read a task and once after completing all the tasks;• to announce the experimenter that you are moving on to another task, in order to reset your 10-minutes-per-task allocated timer;• not to return to earlier tasks because it affects the timing;• for each task, to fill in the required information. In the case of multiple choices check the most appropriate answer and provide additional information, if requested.

The experiment is concluded with a short debriefing questionnaire.

Thank you for participating in this experiment!! ! ! ! Richard Wettel, Michele Lanza, Romain Robbes

CodeCity Experiment

Participant:

T1

Introduction

The aim of this experiment is to compare tool efficiency in supporting software practitioners analyzing medium to large-scale software systems.

You will use CodeCity to analyze Azureus, a BitTorrent client written in Java.

You are given maximum 100 minutes for solving 10 tasks (10 minutes per task).

You are asked:• not to consult any other participant during the experiment;• to perform the tasks in the specified order;• to write down the current time each time before starting to read a task and once

after completing all the tasks;• to announce the experimenter that you are moving on to another task, in order

to reset your 10-minutes-per-task allocated timer;• not to return to earlier tasks because it affects the timing;• for each task, to fill in the required information. In the case of multiple choices

check the most appropriate answer and provide additional information, if requested.

The experiment is concluded with a short debriefing questionnaire.

Thank you for participating in this experiment!

! ! ! ! Richard Wettel, Michele Lanza, Romain Robbes

CodeCity Experiment

Participant:

T1

Introduction

The aim of this experiment is to compare tool efficiency in supporting software practitioners analyzing medium to large-scale software systems.

You will use CodeCity to analyze Azureus, a BitTorrent client written in Java.

You are given maximum 100 minutes for solving 10 tasks (10 minutes per task).

You are asked:• not to consult any other participant during the experiment;• to perform the tasks in the specified order;• to write down the current time each time before starting to read a task and once

after completing all the tasks;• to announce the experimenter that you are moving on to another task, in order

to reset your 10-minutes-per-task allocated timer;• not to return to earlier tasks because it affects the timing;• for each task, to fill in the required information. In the case of multiple choices

check the most appropriate answer and provide additional information, if requested.

The experiment is concluded with a short debriefing questionnaire.

Thank you for participating in this experiment!

! ! ! ! Richard Wettel, Michele Lanza, Romain Robbes

CodeCity Experiment

Participant:

T1

Pre-experimentquestionnaire

Experimenthandouts

174 A.4 Task Solution Oracles

A.4.1 T1: Azureus, analyzed with CodeCity

A1

EitherThere are no unit tests in the system [1pt],orCentralized in a single package hierarchy whose root is in org.gudy.azureus2.ui.console.multiuser[1pt]. Since there is only one test class (i.e., TestUserManager), if they don’t give the full correctanswer, the answer is completely wrong.

A2.1

Dispersed [0pts otherwise]in the following (max. 5) packages [0.2pts for each]:

• com.aelitis.azureus.core

• com.aelitis.azureus.core.content

• com.aelitis.azureus.core.download

• com.aelitis.azureus.core.impl

• com.aelitis.azureus.core.lws

• com.aelitis.azureus.core.peermanager.peerdb

• com.aelitis.azureus.core.stats

• com.aelitis.azureus.core.torrent

• com.aelitis.azureus.plugins.net.buddy

• com.aelitis.azureus.plugins.net.buddy.swt

• com.aelitis.azureus.plugins.net.buddy.tracker

• com.aelitis.azureus.plugins.removerules

• com.aelitis.azureus.plugins.sharing.hoster

• com.aelitis.azureus.plugins.startstoprules.defaultplugin

• com.aelitis.azureus.plugins.tracker.dht

• com.aelitis.azureus.plugins.tracker.local

• com.aelitis.azureus.plugins.tracker.peerauth

• com.aelitis.azureus.ui.swt.content.columns

• com.aelitis.azureus.ui.swt.shells.main

• com.aelitis.azureus.util

Task solutions &grading schemes

Data set

196

A.5Data

Code

Diffi

culty

Leve

l Per

Task

Tim

ePr

essu

re

A1

A2.1

A2.2

A3

A4.1

A4.2

B1.1

B1.2

B2.1

B2.2

IA01

diffi

cult

inte

rmed

iate

inte

rmed

iate

simpl

e

simpl

e

impo

ssib

le

diffi

cult

trivi

al

trivi

al

inte

rmed

iate

fair

amou

nt

IA02

fair

amou

nt

IA03

diffi

cult

inte

rmed

iate

inte

rmed

iate

diffi

cult

inte

rmed

iate

diffi

cult

simpl

e

simpl

e

simpl

e

impo

ssib

le

fair

amou

nt

IA04

simpl

e

simpl

e

simpl

e

simpl

e

inte

rmed

iate

impo

ssib

le

diffi

cult

simpl

e

trivi

al

diffi

cult

too

muc

h

AB01

trivi

al

trivi

al

trivi

al

simpl

e

simpl

e

inte

rmed

iate

diffi

cult

simpl

e

simpl

e

inte

rmed

iate

very

little

AB02

trivi

al

trivi

al

trivi

al

trivi

al

simpl

e

diffi

cult

impo

ssib

le

simpl

e

trivi

al

simpl

e

fair

amou

nt

IA05

simpl

e

simpl

e

simpl

e

simpl

e

inte

rmed

iate

impo

ssib

le

diffi

cult

diffi

cult

trivi

al

simpl

e

not s

om

uch

AA01

inte

rmed

iate

trivi

al

simpl

e

inte

rmed

iate

trivi

al

impo

ssib

le

impo

ssib

le

trivi

al

simpl

e

trivi

al

very

little

AA02

trivi

al

trivi

al

trivi

al

simpl

e

simpl

e

impo

ssib

le

diffi

cult

simpl

e

trivi

al

inte

rmed

iate

not s

om

uch

IA06

inte

rmed

iate

simpl

e

simpl

e

simpl

e

simpl

e

inte

rmed

iate

inte

rmed

iate

simpl

e

simpl

e

diffi

cult

fair

amou

nt

IA07

diffi

cult

inte

rmed

iate

inte

rmed

iate

simpl

e

simpl

e

diffi

cult

simpl

e

simpl

e

inte

rmed

iate

inte

rmed

iate

not s

om

uch

IA08

trivi

al

trivi

al

simpl

e

inte

rmed

iate

inte

rmed

iate

impo

ssib

le

diffi

cult

inte

rmed

iate

simpl

e

inte

rmed

iate

very

little

IA09

diffi

cult

simpl

e

simpl

e

inte

rmed

iate

inte

rmed

iate

diffi

cult

inte

rmed

iate

simpl

e

trivi

al

diffi

cult

not s

om

uch

AB03

simpl

e

simpl

e

simpl

e

simpl

e

simpl

e

inte

rmed

iate

inte

rmed

iate

simpl

e

simpl

e

inte

rmed

iate

very

little

IA10

simpl

e

simpl

e

simpl

e

simpl

e

diffi

cult

impo

ssib

le

inte

rmed

iate

inte

rmed

iate

inte

rmed

iate

diffi

cult

not s

om

uch

IA11

simpl

e

simpl

e

simpl

e

diffi

cult

inte

rmed

iate

diffi

cult

diffi

cult

simpl

e

simpl

e

diffi

cult

fair

amou

nt

IA12

simpl

e

simpl

e

simpl

e

inte

rmed

iate

inte

rmed

iate

diffi

cult

trivi

al

simpl

e

simpl

e

diffi

cult

none

AB04

trivi

al

trivi

al

trivi

al

simpl

e

inte

rmed

iate

diffi

cult

trivi

al

trivi

al

simpl

e

diffi

cult

very

little

AA03

trivi

al

trivi

al

trivi

al

diffi

cult

trivi

al

impo

ssib

le

diffi

cult

trivi

al

trivi

al

simpl

e

not s

om

uch

AB05

simpl

e

simpl

e

simpl

e

inte

rmed

iate

inte

rmed

iate

impo

ssib

le

diffi

cult

inte

rmed

iate

trivi

al

simpl

e

not s

om

uch

AA04

inte

rmed

iate

inte

rmed

iate

diffi

cult

diffi

cult

inte

rmed

iate

impo

ssib

le

inte

rmed

iate

inte

rmed

iate

diffi

cult

impo

ssib

le

fair

amou

nt

IA13

trivi

al

simpl

e

simpl

e

simpl

e

inte

rmed

iate

diffi

cult

inte

rmed

iate

inte

rmed

iate

inte

rmed

iate

diffi

cult

none

IA14

inte

rmed

iate

inte

rmed

iate

inte

rmed

iate

inte

rmed

iate

inte

rmed

iate

inte

rmed

iate

inte

rmed

iate

inte

rmed

iate

inte

rmed

iate

inte

rmed

iate

fair

amou

nt

AB06

simpl

e

simpl

e

simpl

e

inte

rmed

iate

inte

rmed

iate

diffi

cult

impo

ssib

le

inte

rmed

iate

inte

rmed

iate

inte

rmed

iate

fair

amou

nt

AB07

inte

rmed

iate

simpl

e

simpl

e

impo

ssib

le

trivi

al

diffi

cult

simpl

e

inte

rmed

iate

inte

rmed

iate

diffi

cult

too

muc

h

AA05

simpl

e

simpl

e

simpl

e

inte

rmed

iate

inte

rmed

iate

inte

rmed

iate

diffi

cult

inte

rmed

iate

inte

rmed

iate

inte

rmed

iate

fair

amou

nt

AA06

inte

rmed

iate

simpl

e

simpl

e

diffi

cult

trivi

al

inte

rmed

iate

simpl

e

simpl

e

inte

rmed

iate

diffi

cult

very

little

AA07

trivi

al

inte

rmed

iate

inte

rmed

iate

trivi

al

trivi

al

simpl

e

inte

rmed

iate

trivi

al

simpl

e

inte

rmed

iate

none

IA15

diffi

cult

inte

rmed

iate

inte

rmed

iate

diffi

cult

simpl

e

simpl

e

inte

rmed

iate

inte

rmed

iate

impo

ssib

le

impo

ssib

le

fair

amou

nt

IA16

inte

rmed

iate

inte

rmed

iate

inte

rmed

iate

impo

ssib

le

simpl

e

simpl

e

inte

rmed

iate

simpl

e

inte

rmed

iate

diffi

cult

fair

amou

nt

IA01

inte

rmed

iate

inte

rmed

iate

inte

rmed

iate

diffi

cult

trivi

al

simpl

e

impo

ssib

le

trivi

al

simpl

e

diffi

cult

not s

om

uch

IA18

inte

rmed

iate

simpl

e

inte

rmed

iate

diffi

cult

simpl

e

simpl

e

diffi

cult

inte

rmed

iate

simpl

e

diffi

cult

fair

amou

nt

IA19

simpl

e

simpl

e

inte

rmed

iate

simpl

e

trivi

al

simpl

e

simpl

e

simpl

e

inte

rmed

iate

impo

ssib

le

fair

amou

nt

AB08

inte

rmed

iate

inte

rmed

iate

simpl

e

inte

rmed

iate

trivi

al

trivi

al

diffi

cult

trivi

al

simpl

e

inte

rmed

iate

not s

om

uch

AB09

trivi

al

simpl

e

simpl

e

impo

ssib

le

simpl

e

simpl

e

inte

rmed

iate

inte

rmed

iate

simpl

e

diffi

cult

fair

amou

nt

AA10

simpl

e

inte

rmed

iate

inte

rmed

iate

inte

rmed

iate

trivi

al

trivi

al

simpl

e

simpl

e

inte

rmed

iate

impo

ssib

le

very

little

AA11

diffi

cult

simpl

e

inte

rmed

iate

inte

rmed

iate

simpl

e

simpl

e

simpl

e

inte

rmed

iate

inte

rmed

iate

impo

ssib

le

not s

om

uch

AA12

simpl

e

simpl

e

simpl

e

simpl

e

simpl

e

inte

rmed

iate

simpl

e

simpl

e

inte

rmed

iate

diffi

cult

not s

om

uch

AA13

simpl

e

inte

rmed

iate

inte

rmed

iate

diffi

cult

simpl

e

simpl

e

simpl

e

simpl

e

simpl

e

inte

rmed

iate

not s

om

uch

AA14

trivi

al

trivi

al

trivi

al

impo

ssib

le

trivi

al

trivi

al

diffi

cult

trivi

al

diffi

cult

impo

ssib

le

not s

om

uch

IA20

inte

rmed

iate

simpl

e

simpl

e

inte

rmed

iate

trivi

al

trivi

al

trivi

al

trivi

al

trivi

al

diffi

cult

not s

om

uch

Tabl

eA.

5.Th

esu

bjec

ts’pe

rcei

ved

time

pres

sure

and

task

diffi

culty

192

A.5Data

Code

Age

Job

Posit

ion

Expe

rienc

e Leve

l

Numbe

r ofYe

ars

OOP

Java

Eclip

se

Rev.E

ng.

OOP

Java

Eclip

seRe

v.Eng

.

IA01

30

Develo

per

know

ledge

able

adva

nced

know

ledge

able

begin

ner

7–10

7–10

4–6

1–3

IA02

34

Develo

per

adva

nced

adva

nced

know

ledge

able

know

ledge

able

7–10

4–6

1–3

4–6

IA03

42

CTO, D

evelo

per

expe

rt

know

ledge

able

begin

ner

know

ledge

able

>10

1–3

1–3

>10

IA04

37

Develo

per

adva

nced

adva

nced

know

ledge

able

begin

ner

7–10

7–10

4–6

1–3

AB01

21

Mas

terSt

uden

t

adva

nced

adva

nced

adva

nced

begin

ner

4–6

4–6

4–6

<1

AB02

21

Mas

terSt

uden

t

adva

nced

adva

nced

adva

nced

begin

ner

1–3

1–3

1–3

<1

IA05

29

Consu

ltant

, Ph.D

. Stu

dent

expe

rt

begin

ner

begin

ner

know

ledge

able

7–10

7–10

4–6

4–6

AA01

26

Ph.D

. Stu

dent

expe

rt

expe

rt

know

ledge

able

begin

ner

>10

>10

1–3

<1

AA02

26

Ph.D

. Stu

dent

expe

rt

adva

nced

know

ledge

able

know

ledge

able

4–6

1–3

1–3

1–3

IA06

35

Head of

IT

expe

rt

expe

rt

adva

nced

adva

nced

>10

>10

4–6

7–10

IA07

27

Softw

are En

ginee

r

know

ledge

able

know

ledge

able

begin

ner

know

ledge

able

7–10

7–10

1–3

4–6

IA08

25

Softw

are En

ginee

r

know

ledge

able

adva

nced

know

ledge

able

begin

ner

4–6

4–6

1–3

<1

IA09

32

Develo

pmen

t Lead

er,Re

sear

cher

adva

nced

begin

ner

none

adva

nced

7–10

7–10

<1

4–6

AB03

28

Stud

ent

know

ledge

able

know

ledge

able

begin

ner

begin

ner

4–6

1–3

1–3

1–3

IA10

39

Proje

ctM

anag

er

expe

rt

adva

nced

know

ledge

able

know

ledge

able

>10

7–10

7–10

4–6

IA11

38

Consu

ltant

, Sys

temM

anag

er/A

nalys

t

know

ledge

able

begin

ner

begin

ner

adva

nced

7–10

7–10

1–3

7–10

IA12

34

Senio

r Java

Archite

ct

expe

rt

expe

rt

adva

nced

adva

nced

>10

>10

>10

>10

AB04

22

Mas

terSt

uden

t

adva

nced

adva

nced

adva

nced

know

ledge

able

4–6

1–3

1–3

<1

AA03

22

Mas

terSt

uden

t

adva

nced

adva

nced

adva

nced

begin

ner

7–10

4–6

4–6

<1

AB05

22

Mas

terSt

uden

t

adva

nced

adva

nced

know

ledge

able

begin

ner

4–6

1–3

1–3

1–3

AA04

29

Ph.D

. Stu

dent

adva

nced

adva

nced

know

ledge

able

begin

ner

4–6

4–6

1–3

<1

IA13

32

Consu

ltant

expe

rt

know

ledge

able

know

ledge

able

expe

rt

7–10

4–6

1–3

7–10

IA14

31

Softw

are Arch

itect

adva

nced

know

ledge

able

know

ledge

able

begin

ner

7–10

7–10

1–3

1–3

AB06

23

Mas

terSt

uden

t

adva

nced

adva

nced

adva

nced

begin

ner

4–6

1–3

1–3

<1

AB07

23

Mas

terSt

uden

t

adva

nced

adva

nced

adva

nced

begin

ner

4–6

1–3

1–3

<1

AA05

30

Ph.D

. Stu

dent

adva

nced

adva

nced

adva

nced

know

ledge

able

7–10

7–10

7–10

4–6

AA06

26

Ph.D

. Stu

dent

expe

rt

know

ledge

able

adva

nced

expe

rt

7–10

7–10

4–6

4–6

AA07

30

Ph.D

. Stu

dent

adva

nced

adva

nced

know

ledge

able

know

ledge

able

7–10

7–10

1–3

1–3

IA15

40

Proje

ctM

anag

er

expe

rt

expe

rt

adva

nced

adva

nced

>10

>10

7–10

4–6

IA16

39

Softw

are Arch

itect

adva

nced

adva

nced

know

ledge

able

know

ledge

able

4–6

4–6

4–6

1–3

IA01

30

Develo

per

know

ledge

able

adva

nced

know

ledge

able

begin

ner

7–10

7–10

4–6

1–3

IA17

27

Softw

are En

ginee

r

know

ledge

able

adva

nced

know

ledge

able

begin

ner

4–6

4–6

4–6

<1

IA19

39

Consu

ltant

, Pro

ject M

anag

er,Arch

itect

expe

rt

expe

rt

know

ledge

able

adva

nced

>10

7–10

7–10

4–6

AB08

21

Mas

terSt

uden

t

adva

nced

adva

nced

adva

nced

begin

ner

1–3

1–3

1–3

<1

AB09

23

Ph.D

. Stu

dent

adva

nced

adva

nced

adva

nced

know

ledge

able

4–6

1–3

1–3

1–3

AA10

24

Ph.D

. Stu

dent

adva

nced

adva

nced

adva

nced

adva

nced

4–6

4–6

4–6

1–3

AA11

23

Ph.D

. Stu

dent

adva

nced

adva

nced

adva

nced

know

ledge

able

4–6

4–6

4–6

1–3

AA12

52

Profe

ssor

expe

rt

adva

nced

know

ledge

able

adva

nced

>10

>10

4–6

>10

AA13

28

Ph.D

. Stu

dent

adva

nced

adva

nced

know

ledge

able

know

ledge

able

4–6

4–6

4–6

1–3

AA14

24

Mas

terSt

uden

t

expe

rt

expe

rt

expe

rt

know

ledge

able

4–6

4–6

4–6

1–3

IA20

36

Develo

per

adva

nced

expe

rt

adva

nced

begin

ner

>10

7–10

7–10

1–3

Table

A.1.Th

e subje

cts’ p

erson

alinf

ormati

on, c

luster

edby

treatm

ent c

ombin

ation

s

195

A.5 Data

Code

Completion Time Per Task TotalCompl. Time

A1 A2.1 A2.2 A3 A4.1 A4.2 B1.1 B1.2 B2.1 (excl. A4.2)

IA01 8.80 4.32 5.38 10.00 7.28 4.42 9.85 1.90 1.02 52.97 48.55

IA02 2.42 6.08 1.75 8.58 5.33 10.00 5.25 2.92 2.33 44.67 34.67

IA03 6.25 6.92 2.42 9.43 5.62 9.37 2.55 2.95 1.83 47.33 37.97

IA04 9.08 6.00 4.00 6.08 7.92 10.00 10.00 1.33 1.08 55.50 45.50

AB01 1.33 4.83 3.92 4.75 6.25 10.00 6.92 2.25 2.58 42.83 32.83

AB02 10.00 5.58 1.67 4.25 8.08 10.00 9.42 2.58 1.67 53.25 43.25

IA05 6.33 3.67 1.33 4.75 3.50 10.00 3.75 1.58 2.17 37.08 27.08

AA01 9.67 4.42 2.08 8.75 3.17 10.00 5.17 1.33 1.42 46.00 36.00

AA02 8.33 7.17 2.50 10.00 5.00 9.75 8.33 3.25 1.33 55.67 45.92

IA06 10.00 5.92 4.42 10.00 4.17 10.00 7.33 1.33 1.50 54.67 44.67

IA07 7.25 5.67 6.25 6.33 4.58 10.00 2.42 1.42 2.33 46.25 36.25

IA08 2.67 2.25 2.95 4.55 3.75 10.00 3.33 4.00 1.17 34.67 24.67

IA09 10.00 3.67 3.00 10.00 5.25 7.83 3.67 2.50 1.42 47.33 39.50

AB03 6.33 2.00 9.33 5.00 5.00 8.50 7.17 1.50 1.25 46.08 37.58

IA10 3.25 3.67 7.33 6.83 3.83 7.75 3.08 1.75 8.08 45.58 37.83

IA11 3.83 2.40 5.92 7.17 4.00 6.92 7.42 2.83 1.75 42.23 35.32

IA12 3.75 2.67 4.17 5.58 5.17 10.00 5.75 2.00 1.25 40.33 30.33

AB04 2.67 3.92 2.58 3.67 5.58 9.75 2.00 0.50 3.83 34.50 24.75

AA03 2.50 3.17 3.75 10.00 3.17 6.33 4.08 1.25 2.58 36.83 30.50

AB05 5.50 4.67 4.33 5.58 5.83 10.00 9.58 1.83 1.67 49.00 39.00

AA04 7.08 3.67 5.17 6.33 3.50 7.83 6.00 1.25 2.83 43.67 35.83

IA13 3.00 4.67 2.33 4.75 3.25 10.00 4.83 1.67 2.08 36.58 26.58

IA14 6.67 9.00 2.42 10.00 4.50 5.83 5.33 1.83 4.17 49.75 43.92

AB06 5.67 5.75 2.05 6.95 10.00 10.00 10.00 3.85 2.00 56.27 46.27

AB07 8.75 9.33 4.67 10.00 6.83 10.00 10.00 3.67 2.67 65.92 55.92

AA05 7.00 6.08 3.75 8.42 5.25 4.42 10.00 3.17 6.67 54.75 50.33

AA06 6.83 2.00 3.67 6.58 3.25 6.75 5.33 1.58 1.58 37.58 30.83

AA07 3.67 3.67 2.50 2.17 2.92 5.17 2.75 3.33 1.83 28.00 22.83

IA15 9.75 8.83 5.08 10.00 4.33 10.00 5.08 1.75 7.83 62.67 52.67

IA16 10.00 7.42 4.33 9.50 4.00 6.50 8.50 2.00 4.50 56.75 50.25

IA01 2.55 3.90 4.38 9.20 4.03 4.30 9.92 2.10 2.93 43.32 39.02

IA18 5.28 5.13 4.58 9.82 4.72 3.98 9.77 4.13 3.12 50.53 46.55

IA19 3.33 3.83 4.50 3.50 3.83 5.08 6.58 1.92 5.58 38.17 33.08

AB08 6.08 1.08 10.00 8.83 3.50 5.92 9.42 3.58 1.92 50.33 44.42

AB09 5.83 4.83 4.33 10.00 3.42 6.00 2.00 1.92 1.50 39.83 33.83

AA10 3.17 6.08 5.08 7.33 8.00 3.33 4.83 1.17 2.33 41.33 38.00

AA11 6.17 4.08 6.08 3.83 3.50 5.17 3.67 1.67 2.92 37.08 31.92

AA12 6.75 4.75 3.92 4.75 5.25 3.33 4.42 1.42 3.00 37.58 34.25

AA13 7.00 7.00 10.00 10.00 5.92 5.67 6.33 1.42 5.42 58.75 53.08

AA14 6.33 1.50 3.33 10.00 2.83 3.25 9.17 2.42 4.50 43.33 40.08

IA20 6.83 5.58 4.75 8.00 2.33 3.42 2.42 1.42 1.33 36.08 32.67

Table A.4. The subjects’ task completion time, in minutes

194 A.5 Data

CodeCorrectness Per Task

TotalCorrectness

A1 A2.1 A2.2 A3 A4.1 A4.2 B1.1 B1.2 B2.1 (excl. A4.2)IA01 0.00 1.00 1.00 1.00 1.00 0.00 0.00 1.00 1.00 6.00 6.00IA02 1.00 0.80 0.50 1.00 1.00 0.00 0.00 1.00 1.00 6.30 6.30IA03 0.00 0.00 1.00 0.00 1.00 0.00 0.00 1.00 0.00 3.00 3.00IA04 0.00 1.00 0.00 1.00 1.00 0.00 0.00 1.00 1.00 5.00 5.00AB01 0.00 1.00 1.00 0.80 1.00 0.00 0.00 1.00 1.00 5.80 5.80AB02 0.00 1.00 1.00 0.70 1.00 0.00 0.00 0.00 1.00 4.70 4.70IA05 0.00 1.00 1.00 0.20 1.00 0.00 0.00 1.00 1.00 5.20 5.20AA01 0.00 0.80 1.00 0.40 1.00 0.00 0.00 1.00 0.00 4.20 4.20AA02 0.00 1.00 1.00 0.00 1.00 0.00 1.00 1.00 1.00 6.00 6.00IA06 0.00 1.00 0.00 0.30 1.00 0.00 0.00 1.00 1.00 4.30 4.30IA07 1.00 1.00 1.00 0.17 1.00 0.00 0.00 1.00 1.00 6.17 6.17IA08 1.00 0.50 1.00 0.83 1.00 0.00 1.00 1.00 1.00 7.33 7.33IA09 1.00 1.00 1.00 1.00 1.00 0.00 1.00 1.00 1.00 8.00 8.00AB03 1.00 1.00 1.00 1.00 1.00 0.00 1.00 1.00 1.00 8.00 8.00IA10 1.00 1.00 1.00 0.17 1.00 0.00 0.00 1.00 1.00 6.17 6.17IA11 1.00 1.00 1.00 0.00 1.00 0.16 0.00 0.00 1.00 5.16 5.00IA12 1.00 1.00 1.00 1.00 1.00 0.00 1.00 1.00 1.00 8.00 8.00AB04 1.00 1.00 1.00 0.67 1.00 0.00 0.00 1.00 1.00 6.67 6.67AA03 1.00 1.00 0.80 0.33 1.00 0.16 0.00 1.00 1.00 6.29 6.13AB05 1.00 1.00 1.00 1.00 1.00 0.00 0.00 1.00 1.00 7.00 7.00AA04 1.00 1.00 1.00 0.50 1.00 0.00 0.00 1.00 1.00 6.50 6.50IA13 1.00 1.00 1.00 0.83 1.00 1.00 0.00 0.00 1.00 6.83 5.83IA14 0.00 0.80 0.33 0.30 1.00 0.67 0.00 1.00 1.00 5.10 4.43AB06 1.00 1.00 1.00 0.00 0.00 0.00 0.00 1.00 0.00 4.00 4.00AB07 0.00 0.60 0.67 0.00 0.00 0.00 0.00 0.00 1.00 2.27 2.27AA05 1.00 1.00 1.00 0.00 1.00 1.00 0.00 1.00 1.00 7.00 6.00AA06 0.00 1.00 0.00 0.00 1.00 1.00 0.00 0.00 1.00 4.00 3.00AA07 1.00 1.00 0.00 0.00 1.00 1.00 0.00 1.00 0.00 5.00 4.00IA15 1.00 0.80 0.00 0.00 1.00 1.00 0.00 1.00 0.00 4.80 3.80IA16 0.00 0.00 0.67 0.00 1.00 0.67 0.00 1.00 1.00 4.34 3.67IA01 1.00 1.00 1.00 0.50 1.00 1.00 0.00 1.00 1.00 7.50 6.50IA18 1.00 1.00 1.00 0.50 1.00 1.00 0.00 1.00 1.00 7.50 6.50IA19 0.00 1.00 0.60 0.00 1.00 1.00 0.00 1.00 0.00 4.60 3.60AB08 0.00 1.00 0.40 0.38 1.00 1.00 1.00 1.00 1.00 6.78 5.78AB09 1.00 1.00 0.60 0.50 1.00 1.00 0.00 1.00 1.00 7.10 6.10AA10 1.00 1.00 0.80 0.38 1.00 1.00 0.00 1.00 1.00 7.18 6.18AA11 1.00 1.00 0.80 0.00 1.00 1.00 0.00 1.00 1.00 6.80 5.80AA12 0.00 0.50 0.00 0.00 1.00 1.00 0.00 1.00 1.00 4.50 3.50AA13 0.00 1.00 0.00 0.25 1.00 1.00 0.00 1.00 1.00 5.25 4.25AA14 1.00 1.00 0.60 0.00 1.00 1.00 0.90 1.00 1.00 7.50 6.50IA20 0.00 1.00 1.00 0.38 1.00 1.00 0.00 1.00 1.00 6.38 5.38

Table A.3. The correctness of the subjects’ solutions to the tasks

Results

Correctness

2

3

4

5

6

7

8

medium large

Eclipse + Excel

CodeCity

24.26%more correct with CodeCity

statistically significant

95% confidence interval

large effect size (d=0.89)

Completion time

12.01%faster with CodeCity

statistically significant

95% confidence interval20

30

40

50

60

medium large

Eclipse + Excel

CodeCity

moderate effect size (d=0.63)

Reflections

design desiderata

Reflections

extensive, replicable controlled experiment

design desiderata

Reflections

extensive, replicable controlled experiment

+24% correctness, -12% completion time

design desiderata

Reflections

Prologue

Approac

h

Evalua

tion

Epilogue

Thesis

Depicting software systems as cities is a versatile metaphor which enables the creation of efficient software visualizations to support reverse engineering.

Contributions

Contributions

1The definition of a city metaphor and its application in three context (program comprehension, software evolution analysis, and design quality assessment), which demonstrated the versatility of the metaphor.

Contributions

21

The definition of a city metaphor and its application in three context (program comprehension, software evolution analysis, and design quality assessment), which demonstrated the versatility of the metaphor.

The implementation of CodeCity, a scalable tool which supports our approach based on the city metaphor.

Contributions

21

3

The definition of a city metaphor and its application in three context (program comprehension, software evolution analysis, and design quality assessment), which demonstrated the versatility of the metaphor.

The implementation of CodeCity, a scalable tool which supports our approach based on the city metaphor.

An empirical validation, by means of an extensive controlled experiment, whose results provided evidence that the visualizations built on top of the city metaphor are efficient.

+24.26% correctness

-12.01% time

Future work

Future work

1 Researching representations for dependencies more appropriate for the city metaphor.

Future work

1 Researching representations for dependencies more appropriate for the city metaphor.

Future work

21 Researching representations for

dependencies more appropriate for the city metaphor.

Evaluation of the support for software evolution assessment.

Future work

21

3

Researching representations for dependencies more appropriate for the city metaphor.

Evaluation of the support for software evolution assessment.

Integration with IDEs and operational workflows.

Publications1. Visual Exploration of Large-Scale System Evolution

Richard Wettel and Michele Lanza Proc. of WCRE 2008 (15th Working Conference on Reverse Engineering), pp. 219 - 228, IEEE CS Press, 2008.

2. Visually Localizing Design Problems with Disharmony MapsRichard Wettel and Michele Lanza Proc. of SoftVis 2008 (4th International ACM Symposium on Software Visualization), pp. 155 - 164, ACM Press, 2008.

3. Program Comprehension through Software HabitabilityRichard Wettel and Michele Lanza Proc. of ICPC 2007 (15th IEEE International Conference on Program Comprehension), pp. 231 - 240, IEEE CS Press, 2007.

4. Evospaces - multi-dimensional navigation spaces for software evolutionSazzadul Alam, Sandro Boccuzzo, Richard Wettel, Philippe Dugerdil, Harald Gall, Michele Lanza In “Human Machine Interaction”, pp. 167 - 192, LNCS Series. Springer, 2009.

7. Visualizing Software Systems as CitiesRichard Wettel and Michele Lanza Proc. of VISSOFT 2007 (4th IEEE International Workshop on Visualizing Software For Understanding and Analysis), pp. 92 - 99, IEEE CS Press, 2007.

6. CodeCityRichard Wettel and Michele Lanza Proc. of WASDeTT 2008 (1st International Workshop on Advanced Software Development Tools and Techniques), 2008.

5. Scripting 3D Visualizations with CodeCityRichard Wettel Proc. of FAMOOSr 2008 (2nd Workshop on FAMIX and Moose in Reengineering), 2008.

8. Visual Exploration of Large-Scale Evolving SoftwareRichard Wettel Companion Proc. of ICSE 2009 (31st International Conference on Software Engineering), Doctoral Symposium, pp. 391 - 394, ACM Press, 2009.

9. CodeCity: 3D Visualization of Large-Scale SoftwareRichard Wettel and Michele Lanza Companion Proc. of ICSE 2008 (30th International Conference on Software Engineering), Research Demonstration Track, pp. 921 - 922, ACM Press, 2008.

10. Empirical Validation of CodeCity: A Controlled ExperimentRichard Wettel, Michele Lanza, Romain Robbes Technical Report 2010/05, University of Lugano, 2010.

conferences

book chapter

peer-reviewedworkshops

doctoral symposium

tool demonstration

technical report

Richard Wettelhttp://www.inf.usi.ch/phd/wettel

http://creativecommons.org/licenses/by/3.0/