Replication of "PatMain"

This page describes how to participate in the joint replication of a previous controlled experiment that is performed in the context of the RESER 2011 workshop.

What is a joint replication?

The term refers to a replication of a controlled experiment that is not performed by a single researcher or a single closely-knit research group, but rather by a group of researchers that work together loosely:

Why a joint replication?

The original PatMain experiment

PatMain was the second controlled experiment (after PatDoc) ever performed regarding software design patterns. It was performed in 1997 and published in 2001: (The first link is to a draft, the second to IEEE CS)

Its research question was this:

The experiment design involved four different rather small C++ programs: Each of these programs existed in two versions: One, called PAT, built using the design pattern(s), the other, called ALT (alternative), using a simplified design (without pattern).

The experiment was performed with professionals working on paper. There were two tasks (one understanding-only, one modification task) for each program. The experiment conduct involved So there were three experiment variables: The experiment measured primarily two output variables:

Why replicate this experiment rather than some other?

The experiment has already been replicated once: The main point of that replication was that the subjects (also professionals) really worked on a computer rather than just sketching their solution on paper.

We picked this experiment for further replication because it has a good mix of properties:

Changes compared to the original experiment

Who can participate?

How to use the replication portal

Preparation by the experimenter

  1. Register at the web application http://replication.inf.fu-berlin.de/replication/explogin
  2. Create an instance of the experiment
  3. Create subject IDs. (ID modulo 4 is the subject's group number)
  4. Print the subject IDs and cut the pages into little chits with one ID each.
  5. Distribute the IDs to your subjects. Make sure you use up each block of four as much as possible before you start handing out IDs from another block of four or else you might get groups of unbalanced size.
  6. (You can make test runs and then delete the whole experiment afterwards.)

A note on robustness

Note that we made the following design decision: "We assume that experimenters are super-intelligent, quasi super-human types and thus never make mistakes".

Therefore, the experimenter part of the portal has no error handling worth speaking of. So please tread carefully. (The subject part is more robust, though.)

Execution

Evaluation

Result TSV data file column descriptions

The the column descriptions were kept as self explanatory as possible. Find below the column descriptors and a few words to their encoding.

User ID: the ID the subject used to log in

Answers to the first prequestionnaire:
Programming languages used: comma-separated list, String
Programming languages used often: comma-separated list, STring
Lines of code written: int
Lines of code written in JAVA: int
Hours per week programming: int
self proclaimed programming skills(represented by an int value)
* top 10%: 1
* top 25%: 2
* top 40%: 3
* about average: 4
* bottom 40%: 5
* bottom 25%: 6
* bottom 10%: 7
Student status(represented by an int value):
* undergraduate student: 1
* graduate student: 2
* postgraduate student: 3
* not a student: 4
year of professional xp: number of years subject has been working as a developer, int
working hours per week: int
Major: String


Answers to the second prequestionnaire:
Number of patterns used: int
the knowledge of each design pattern is represented by an integer value:
* never heard of it: 1
* have only heard of it: 2
* understand it roughly: 3
* understand it well: 4
* understand it well and have worked with it once: 5
* understand it well and have worked with it two or three times: 6
* understand it well and have worked with it many times: 7
each pattern has its own column and the column's name is the design pattern name.


Answers to the postquestionnaire:
<program> patterns noticed: patterns noticed in this particular program, String
<program> difficulty (represented by an int value)
* quite easy: 1
* reasonably easy: 2
* neiter easy nor difficult: 3
* reasonably difficult: 4
* quite difficult: 5
<program> correctnes: the estimation of the subject on the correctness of his solution in %, int
<program> difficult aspects: the aspects which the subject found most difficult, String
<program> help pattern knowledge: "my pattern knowledge has let me solve the tasks … percent faster", int
<program> help documentation: "explicit documentation of patterns has let me solve the task .. percent faster", int


time measurements:
time is kept on the following pages. the variables are named "time <program>"
Questionnaire 1
Questionnaire 2
<program> download
<program> task
<program> upload
<program> task 2
The measurements are in seconds


other:
<program> task 2: the answers to the second task for each program, String
for the program communication, there is also a "task 3"
last comments: any last comments by the subject

Results handling at the RESER workshop

(Will be discussed on the 'replication' mailing list.)

In short, the current status is that every team of replicators will produce their own short writeup about their particular partial replication and attempt a separate statistical evaluation (which will likely be inconclusive).

We will devise a format for presenting these partial results at the workshop and the organizers will hopefully have collected all participants' data beforehands and performed an overall evaluation and/or handed out this overall data set to all participants.

Suggested structure for RESER submission

Participating groups: Who? When?

Who will (probably) be performing a piece of the joint replication? When? How many subjects are expected to take part?

(all people here are (or should be) members of the 'replication' mailing list)

Hey, we are a fairly international crowd!

Comments