Feature Coupling Survey
Thank you for volunteering your time to participate in this study.
The time required to complete this task is approximately 1-2 hours. Feel
free to take breaks if you need to, but try to keep track of the actual
amount of time spent working on this study.
A computer running Windows or Linux is required; unfortunatly a piece of software used
in the study does not work on Macs.
All information that you provide will be kept strictly confidential.
If you have any questions about this study, e-mail Meghan Revelle, meghan AT
cs DOT wm DOT edu.
Participant Instructions
In this study, you will be asked to examine the source code of several pairs
of features (behaviors or functionalities of a software system) and determine
if the features are coupled to one another. In other words, you are being
asked if there is some relationship or dependency between the two features.
The Eclipse IDE (integrated development environment) will be used in this
study. If you are unfamiliar with Eclipse, you may still
participate in this study as it will primarily be used to view source code
files.
Follow the instructions below to begin.
- Download the questionnaire and answer the first three
questions about your programming experience. The questionnaire is
available in PDF for participants who are at W&M and want to
write their responses on a print-out. Otherwise, the questionnaire
is available as an Excel spreadsheet or text file, and responses
can be saved directly to the file.
PDF questionnaire
Excel questionnaire
TXT questionnaire
- Download the approriate file for your operating system
(windows-study-files.zip, linux32-study-files.zip,
or linux64-study-files.zip)
which contains a copy of Eclipse that has been pre-loaded with all
the necessary source code, plug-ins, and data you will need.
- Unzip study-files.zip to a convienent location which
will be referred to as STUDY_HOME.
- Change directories to STUDY_HOME/eclipse and start Eclipse.
- As Eclipse is loading, you will be asked to select a workspace.
Select STUDY_HOME/workspace and click "OK."

- If once Eclipse starts, a window pops up with the title "Usage Data
Upload," you may select "Turn UDC feature off" and click Finish.
- Once Eclipse loads, you will see three projects listed on the left:
dbViz, iBatis, and Rhino. You can ignore the
fact that they have compilation errors. Right click on each
individually and select "Refresh." Alternatively, you can select
each project and press F5. By refreshing the projects, you ensure
the files are in sync with the file system.

- Go to Window -> Show View -> Other
-> FLATTT. Select "Features" and click ok. FLATTT1 is a tool
that among other things, manages the links between features and the
source code that implements them.

- In the view that was just opened, click the "View Menu" button in
the FLATTT view (
) and select Open
Concern Domain -> dbViz.

- dbViz is a tool for visualizing database tables in a format similar to
UML diagrams. Listed in the FLATTT view are some of dbViz's features
and the methods associated with each. Clicking on a method's name
takes you to that method's source code.

- For the following pairs of features, examine the code associated
with each feature and answer the question "Are the two features
coupled?" Answer either Strong No, Weak No, Weak
Yes, Strong Yes, or Unknown.
For example, two features could be coupled if a change to the code of
one feature could impact the behavior or performance of the other
feature. Base your answer on what you observe in the code of the two
features, and please give some rationale for your answer. You may
answer the questions in any order, and if in the course of the study
you wish to change one of your previous answers because you gained
more knowledge of the system, you may.
Record your answers in the appropriate place on the questionnaire.
Pairs of features from dbViz
Feature 1 | Feature 2 |
Connect to Database The user enters the
location of the database and authentication information to
connect to the database. |
Exit dbViz The user exits dbViz. |
Auto Arrange ER Diagram The tables in the diagram
are automatically arranged. |
Undo/Redo Undo the last command or redo a
command that has been undone. |
Import from Schema from Database The user provides the
location of the database and authentication information to
connect to the database and dbViz loads the database's
tables. |
Import Schema from SQL The user provides the location
of an sql file and dbViz loads the database's tables. |
Add Table to ER Diagram The user adds a database
table to the diagram. |
Remove Table from ER Diagram The user removes a
database table from the diagram, and dbViz also removes any
relationships to the table. |
Save/Load ER Diagram The user saves the currently
open diagram and then loads another. |
Load Saved ER Diagram The user loads an existing
diagram. |
- Click the "View Menu" button in the FLATTT view
(
) and select Open Concern Domain
-> Rhino.
- Rhino is an open-source implementation of JavaScript written
entirely in Java. It is typically embedded into Java applications to
provide scripting to end users. Listed in the FLATTT view are some
of Rhino's features and the methods associated with each. Clicking on
a method's name takes you to that method's source code.
- For the following pairs of features, examine the code associated
with each feature and answer the question "Are the two features
coupled?" Answer either Strong No, Weak No, Weak
Yes, Strong Yes, or Unknown. Base your answer on
what you observe in the code of the two
features, and please give some rationale for your answer. You
may answer the questions in any order, and if in the course of the
study you wish to change one of your previous answers because you
gained more knowledge of the system, you may. Record
your answers on the same questionnaire as above.
Pairs of features from Rhino
Feature 1 | Feature 2 |
Unary + operator The unary operator converts its operand to the Number type. |
The Addition operator (+) The addition operator performs string concatenation or numeric addition. |
The Addition operator (+) The addition operator performs string concatenation or numeric addition. |
The Subtraction Operator (-) The subtraction operator performs numeric subtraction. |
Date.prototype.toString Return a string value representing the date in the current time zone in human-readable form. |
Date.prototype.valueOf Return a number which is the time value. |
Unicode Format-Control Characters The characters in category "Cf" in the Unicode Character Database. |
ToPrimitive Convert a value to a non-object type. |
parseInt Produce an integer value dictated by
interpretation of the contents of a string. |
parseFloat Produce a number value dictated by
interpretation of the contents of a string. |
SQRT2 The number values for the square root of 2. |
Date.prototype.getTimezoneOffset The
difference between local time and UTC time in minutes. |
- Click the "View Menu" button in the Features view
(
) and select Open Concern Domain
-> iBatis.
- The iBatis Data Mapper framework makes it easier to use a
database with Java and .NET applications. The iBatis project is
heavily focused on the persistence layer frameworks known as SQL
Maps and Data Access Objects (DAO). Listed in the FLATTT view are
some of Rhino's features and the methods associated with
each. Clicking on a method's name takes you to that method's source
code.
- For the following pairs of features, examine the code associated
with each feature and answer the question "Are the two features
coupled?" Answer either Strong No, Weak No, Weak
Yes, Strong Yes, or Unknown. Base your answer on
what you observe in the code of the two
features, and please give some rationale for your answer. You
may answer the questions in any order, and if in the course of the
study you wish to change one of your previous answers because you
gained more knowledge of the system, you may. Record
your answers on the same questionnaire as above.
Pairs of features from iBatis
Feature 1 | Feature 2 |
Data Sources Data sources manage connections to databases. |
JTA Java Transaction API (JTA) specifies standard Java interfaces between a transaction manager and the parties involved in a distributed transaction system. |
JDBC The Java Database Connectivity (JDBC) API is the industry standard for database-independent connectivity between the Java programming language and a wide range of databases. |
JTA Java Transaction API (JTA) specifies standard Java interfaces between a transaction manager and the parties involved in a distributed transaction system. |
Query Execute a query on the database. |
Max Results The maximum nunber of records to return. |
Update Execute an update on the database. |
Autogenerated keys Automatically generate primary key fields. |
SELECT Execute a select on the database. |
SQL Script Run an SQL script. |
- You have completed the study. Please return your completed questionnaire to
Meghan (meghan AT cs DOT wm DOT edu). Thank you for participating. You may remove the files you
downloaded for this study from your computer.
Acknowlegements
FLATTT was developed by Trevor Savage.
FLATTT is based on
the ConcernMapper
plug-in.