EXPERIMENT #: In this experiment you will investigate the code of a software system and identify the fields and/or methods that are the most relevant to the implementation of a feature. SYSTEM: FEATURE: Detailed instructions: 1. Explore the source code of the system to identify the code that implements the feature described above, using the features of Eclipse that you are comfortable with. 2. When you find a field or method that you think is related to the implementation of the feature, record it in ConcernMapper. ConcernMapper is a simply Eclipse plug-in that allows you to drag and drop elements of interest in a view. Please take two minutes to familiarize yourself with ConcernMapper: http://www.cs.mcgill.ca/~martin/cm 3. When deciding whether to include an element or not, use the following criterion: "it would be useful to know that the element is associated with the concern if I had to modify the implementation of the concern in the future, or if another developer had to modify the implementation of the concern". 4. Your final description of the feature should not include much more than 20 elements (but can include fewer). If you find you have many more relevant elements, please select only the *most* relevant elements. Again, if you had to understand and modify the feature in the future, which 20 elements would it be most useful to inspect to understand the feature's implementation. CONCERN: 1 SYSTEM: The Gantt Project application allows users to plan projects using Gantt Charts. Gantt charts associate tasks with resources, and represeent tasks as horizontal bars representing the time required to complete the task. To execute Gantt, run the project as an Eclipse Application, selecting net.sourceforge.ganttproject.GanttProject as the application class. FEATURE: The feature allowing users to add a relationship between two tasks. See the Help | Gantt Chart | Relationships manual entry for more information. In Gantt there are different ways to add relationships: Selecting multiple tasks in the Gantt view, right-clicking, and choosing "Link"; Dragging an arrow from one task bar to another in the chart; Adding a predecessor in the Task Properties, etc. Identify the code linking tasks in the model (as opposed to the UI code). -------------------- CONCERN: 2 SYSTEM: The Gantt Project application allows users to plan projects using Gantt Charts. Gantt charts associate tasks with resources, and represent tasks as horizontal bars representing the time required to complete the task. To execute Gantt, run the project as an Eclipse Application, selecting net.sourceforge.ganttproject.GanttProject as the application class. FEATURE: The feature allowing users to specify the non-working days of the calendar (holidays and weekends) and taking these days into account when scheduling tasks either by entering dates or by dragging task bars in the chart. Non-working days are specified when a new project is created through the menu Project | New. Find the code allowing Gantt to take non-working days into account. -------------------- CONCERN: 3 SYSTEM: The Gantt Project application allows users to plan projects using Gantt Charts. Gantt charts associate tasks with resources, and represeent tasks as horizontal bars representing the time required to complete the task. To execute Gantt, run the project as an Eclipse Application, selecting net.sourceforge.ganttproject.GanttProject as the application class. FEATURE: The task completion feature allows users to specify how much of a task is completed. Task completion is represented visually by a black bar in within a task on the Gantt chart, and in numerical form in the Task properties. Find the code supporting attaching a completion level to tasks, including the UI code supporting this feature. -------------------- CONCERN: 4 SYSTEM: The Gantt Project application allows users to plan projects using Gantt Charts. Gantt charts associate tasks with resources, and represeent tasks as horizontal bars representing the time required to complete the task. To execute Gantt, run the project as an Eclipse Application, selecting net.sourceforge.ganttproject.GanttProject as the application class. FEATURE: The undo feature. Find the code implementing the mechanism allowing users to undo their actions. Focus on the core undo functionality and the supporting code to undo the action of "adding a task" (from the menus at the top, select "Task", "New Task"). -------------------- CONCERN: 5 SYSTEM: Jajuk: a Java music organizer for all platforms. The main goal of this project is to provide a fully-featured application to advanced users with large or scattered music collections. Jajuk supports MP3, OGG Vorbis, AU, AIFF, WAV and SPEEX audio formats. Jajuk is a Free Software published under GPL license. To execute jajuk, select "Run as Java Application" using org.jajuk.Main as the application class. Insert -ide in the "Program Arguments" of the runtime configuration. FEATURE: playing a song (After adding a device to your collection. In the "Configuration Perspective" (the fifth icon down at the left side of the screen) select the gear-shaped icon with the word "new" under it, this triggers the "Device Manager Wizard". Specify a name and location of a directory with music in it and then select OK.) In the "Logical Perspective" (the second icon down at the left side of the screen) select any file from the list (must be a file, not a directory), right click on it, and select "play" from the drop-down menu. This will attempt to play the song. Find the code related to triggering and actually playing a song in this manner. -------------------- CONCERN: 6 SYSTEM: Jajuk: a Java music organizer for all platforms. The main goal of this project is to provide a fully-featured application to advanced users with large or scattered music collections. Jajuk supports MP3, OGG Vorbis, AU, AIFF, WAV and SPEEX audio formats. Jajuk is a Free Software published under GPL license. To execute jajuk, select "Run as Java Application" using org.jajuk.Main as the application class. Insert -ide in the "Program Arguments" of the runtime configuration. FEATURE: Shuffle mode (After adding a device to your collection. In the "Configuration Perspective" (the fifth icon down at the left side of the screen) select the gear-shaped icon with the word "new" under it, this triggers the "Device Manager Wizard". Specify a name and location of a directory with music in it and then select OK.) (After adding tracks to the playlist) In the "Logical Perspective" (the second icon down at the left side of the screen) create a new playlist by clicking on the icon labeled "New" in the center column, this creates a new playlist (shown in the "playlist editor" pane, at the bottom center of the screen). Add a few files to this play list by dragging and dropping files or directories from the "Logical Tree" pane (at the left of the screen) into the "playlist editor" pane. (Finally, explore the shuffle mode feature) Then, at the top of the screen, just left of center, select the question mark icon, which toggles the shuffle mode feature. When you play files in this mode the player will select random files from the playlist to play next (in normal mode files are played sequentially). For this feature, find the code to toggle this feature on and off as well as the code related to determining whether shuffle mode is on and how the player picks the next song randomly. -------------------- CONCERN: 7 SYSTEM: Jajuk: a Java music organizer for all platforms. The main goal of this project is to provide a fully-featured application to advanced users with large or scattered music collections. Jajuk supports MP3, OGG Vorbis, AU, AIFF, WAV and SPEEX audio formats. Jajuk is a Free Software published under GPL license. To execute jajuk, select "Run as Java Application" using org.jajuk.Main as the application class. Insert -ide in the "Program Arguments" of the runtime configuration. FEATURE: Adding a song to a playlist by dragging and dropping (After adding a device to your collection. In the "Configuration Perspective" (the fifth icon down at the left side of the screen) select the gear-shaped icon with the word "new" under it, this triggers the "Device Manager Wizard". Specify a name and location of a directory with music in it and then select OK.) In the "Logical Perspective" (the second icon down at the left side of the screen) click on the icon marked "New" in the center column whose tooltip is "Create a new playlist". Then select any file from the list (must be a file, not a directory) and drag it into the "playlist editor", which is located near the bottom center of the screen. Find the code related to adding a song to the playlist in this manner, including the code to store and access the added song. -------------------- CONCERN: 8 SYSTEM: Jajuk: a Java music organizer for all platforms. The main goal of this project is to provide a fully-featured application to advanced users with large or scattered music collections. Jajuk supports MP3, OGG Vorbis, AU, AIFF, WAV and SPEEX audio formats. Jajuk is a Free Software published under GPL license. To execute jajuk, select "Run as Java Application" using org.jajuk.Main as the application class. Insert -ide in the "Program Arguments" of the runtime configuration. FEATURE: Sorting a collection (After adding a device to your collection. In the "Configuration Perspective" (the fifth icon down at the left side of the screen) select the gear-shaped icon with the word "new" under it, this triggers the "Device Manager Wizard". Specify a name and location of a directory with music in it and then select OK.) In the "Logical Perspective" (the second icon down at the left side of the screen) notice the pane titled "Logical Tree". In this pane, there is a pull-down menu with the selections {Artist, Genre, Album}. Choose each of these items and observe the change in how your collection files are presented in the "Logical Tree" pane. For this feature, find only the code necessary to sort a collection by "Genre". -------------------- CONCERN: 9 SYSTEM: jBidWatcher is a tool for bidding, sniping, and tracking bids on auction sites (for example eBay, Yahoo). Sniping refers to the action of entering a bid a very short time before the end of an action in an attempt to prevent other bidders from re-bidding. jBit includes a unique and powerful multisniping feature (a feature that can compete with other sniping tools). To execute JBidWatcher, select "Run as Java Application" using JBidWatch as the application class. The first time you run the application you will be shown a "Configuration Manager" dialog. Just click "Save". Then, click "OK" on any subsequent dialog box appearing. If the program appears to freeze, check carefully under the main application window for any dialog boxes and close them if necessary (by clicking "OK"). FEATURE: update auctions (After adding auctions to your current list) Click on the binocular icon at the top (tooltip: search) and create a new search (e.g., called "test") for using the terms "antique secretary english wood oak" and only the currency "US dollar". Then, execute this search by clicking "Search" at the bottom of the search dialog or double clicking on the search you created. Notice that the "current" tab now contains a list of several auctions. Find the code that continually updates these auctions information (such as current bid amount). -------------------- CONCERN: 10 SYSTEM: jBidWatcher is a tool for bidding, sniping, and tracking bids on auction sites (for example eBay, Yahoo). Sniping refers to the action of entering a bid a very short time before the end of an action in an attempt to prevent other bidders from re-bidding. jBit includes a unique and powerful multisniping feature (a feature that can compete with other sniping tools). To execute JBidWatcher, select "Run as Java Application" using JBidWatch as the application class. The first time you run the application you will be shown a "Configuration Manager" dialog. Just click "Save". Then, click "OK" on any subsequent dialog box appearing. If the program appears to freeze, check carefully under the main application window for any dialog boxes and close them if necessary (by clicking "OK"). FEATURE: Acquire thumbnail image (After adding auctions to your current list) Click on the binocular icon at the top (tooltip: search) and create a new search for using the terms "antique secretary english wood oak" (or use your own search terms) and only the currency "US dollar". Then, execute this search by clicking "execute" at the bottom of the search dialog or double clicking on the search you created. Notice that the "current" tab now contains a list of several auctions. When you mouse-over any auction a thumbnail image of that item should be displayed. Find the code that acquires this image, any variables where the image is stored, and code that associates the image with the correct auction. -------------------- CONCERN: 11 SYSTEM: jBidWatcher is a tool for bidding, sniping, and tracking bids on auction sites (for example eBay, Yahoo). Sniping refers to the action of entering a bid a very short time before the end of an action in an attempt to prevent other bidders from re-bidding. jBit includes a unique and powerful multisniping feature (a feature that can compete with other sniping tools). To execute JBidWatcher, select "Run as Java Application" using JBidWatch as the application class. The first time you run the application you will be shown a "Configuration Manager" dialog. Just click "Save". Then, click "OK" on any subsequent dialog box appearing. If the program appears to freeze, check carefully under the main application window for any dialog boxes and close them if necessary (by clicking "OK"). FEATURE: Execute bid Make sure you are NOT logged in (status is printed on the upper right hand corner of the application) and select the "Auctions" menu and then the "Bid" menu item. This will bring up the "Bid" dialog. If one was logged in and completed this form, the program will place a bid on ebay for the specified amount. Find the code that bids (not the GUI code, just the logic code). -------------------- CONCERN: 12 SYSTEM: jBidWatcher is a tool for bidding, sniping, and tracking bids on auction sites (for example eBay, Yahoo). Sniping refers to the action of entering a bid a very short time before the end of an action in an attempt to prevent other bidders from re-bidding. jBit includes a unique and powerful multisniping feature (a feature that can compete with other sniping tools). To execute JBidWatcher, select "Run as Java Application" using JBidWatch as the application class. The first time you run the application you will be shown a "Configuration Manager" dialog. Just click "Save". Then, click "OK" on any subsequent dialog box appearing. If the program appears to freeze, check carefully under the main application window for any dialog boxes and close them if necessary (by clicking "OK"). FEATURE: Delete an auction (After adding auctions to your current list) Click on the binocular icon at the top (tooltip: search) and create a new search (e.g., called "test") for using the terms "antique secretary english wood oak" and only the currency "US dollar". Then, execute this search by clicking "Search" at the bottom of the search dialog or double clicking on the search you created. Delete an auction from the list by right-clicking on it and then selecting "Delete". Find the code that deletes the auction (both the GUI and logic code). -------------------- CONCERN: 13 SYSTEM: Freemind is a mind mapping software written in Java. A mind map is a diagram used to represent words, ideas, tasks or other items linked to and arranged radially around a central key word or idea. It is used to generate, visualize, structure and classify ideas, and as an aid in study, organization, problem solving, and decision making. To execute Freemind, run as a Java application, using freemind.main.FreeMind as the Main class. FEATURE: Toggle node fold state In Freemind, a node can be folded. A folded node does not display its children. In Freemind, nodes can be folded in unfolded in a great number of different ways. To fold a selected node, you can: press the Space bar, click on the node, right-click on the node and select "Toggle Folded" from the context menu, or select "Toggle Folded" from the "Navigate" top-level menu. To unfold a node, you can do all of the above plus press the arrow key that is in the direction of the children. Locate the code supporting the toggling of the folding state. -------------------- CONCERN: 14 SYSTEM: Freemind is a mind mapping software written in Java. A mind map is a diagram used to represent words, ideas, tasks or other items linked to and arranged radially around a central key word or idea. It is used to generate, visualize, structure and classify ideas, and as an aid in study, organization, problem solving, and decision making. To execute Freemind, run as a Java application, using freemind.main.FreeMind as the Main class. FEATURE: Zooming A mind map can be zoomed in and out. To zoom, use the mouse wheel while holding the control key, or press Alt + the up or down arrow key. Alternatively, use the zooming field in the main toolbar. Find the code that supports zooming in mind map. -------------------- CONCERN: 15 SYSTEM: Freemind is a mind mapping software written in Java. A mind map is a diagram used to represent words, ideas, tasks or other items linked to and arranged radially around a central key word or idea. It is used to generate, visualize, structure and classify ideas, and as an aid in study, organization, problem solving, and decision making. To execute Freemind, run as a Java application, using freemind.main.FreeMind as the Main class. FEATURE: Undo child node creation In Freemind, users create a new node that is a child of the selected node by pressing the "insert" key and typing in the title of the node. If this action is undone by pressing Ctrl-Z, only the text of the node is removed, and the link remains, with a node with no text. This node is displayed as only a link. We might like to change this action so that both the node and the link are removed as a single undo action. Find the code to undo a child node creation. Focus on the code related to the concept of "undo" rather than the specific action of removing the node. -------------------- CONCERN: 16 SYSTEM: Freemind is a mind mapping software written in Java. A mind map is a diagram used to represent words, ideas, tasks or other items linked to and arranged radially around a central key word or idea. It is used to generate, visualize, structure and classify ideas, and as an aid in study, organization, problem solving, and decision making. To execute Freemind, run as a Java application, using freemind.main.FreeMind as the Main class. FEATURE: Autosave In Freemind, a mind map can be automatically saved a at fixed interval. To access the autosave properties, select Tools | Preferences... You might have to click on the "Environment" button at the top left of the panel. The bottom section contains a number of properties related to the autosave feature. Find the code implementing the support for the autosave feature.