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.

  1. 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

  2. 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.

  3. Unzip study-files.zip to a convienent location which will be referred to as STUDY_HOME.

  4. Change directories to STUDY_HOME/eclipse and start Eclipse.

  5. As Eclipse is loading, you will be asked to select a workspace. Select STUDY_HOME/workspace and click "OK."


  6. If once Eclipse starts, a window pops up with the title "Usage Data Upload," you may select "Turn UDC feature off" and click Finish.

  7. 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.



  8. 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.



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


  10. 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.


  11. 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.

  12. Click the "View Menu" button in the FLATTT view () and select Open Concern Domain -> Rhino.

  13. 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.

  14. 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.


  15. Click the "View Menu" button in the Features view () and select Open Concern Domain -> iBatis.

  16. 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.

  17. 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.


  18. 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.