Menu

Tree [r251] /
 History

HTTPS access


File Date Author Commit
 docs 2007-12-18 meaddy [r2]
 emma-2.0.5312 2008-05-08 meaddy [r176]
 pda 2008-05-30 meaddy [r244] o Minor modifications and cleanup
 project 2008-05-09 meaddy [r180]
 studies 2008-08-17 meaddy [r251]
 workspace 2008-06-13 meaddy [r248]
 LICENSE.html 2007-12-16 meaddy [r1] Initial import
 README.txt 2008-02-04 meaddy [r91]
 edu.columbia.concerns_2.0.0.jar 2007-12-16 meaddy [r1] Initial import

Read Me

ConcernTagger v2.0
==================

Overview
--------
ConcernTagger is an Eclipse plug-in for mapping requirements, features, etc. 
("concerns") to source code (types, methods, and fields) and for computing
metrics (degree of scattering, linked SLOCs, etc.) based on this mapping.

Package Contents
----------------

project/                        - Source code and Eclipse project for COncernTagger
workspace/                      - Eclipse workspace for ConcernTagger
docs/                           - Toad Data Model for ConcernTagger database
                                  schema (www.quest.com)
studies/                        - Sample project studies and their datasets
emma-2.0.5312/                  - Source code for customized version of the Emma
                                  Code Coverage Profiler

edu.columbia.concerntagger_<version>.jar - ConcernTagger Eclipse plugin
LICENSE.html                    - License file
README.txt                      - This file

Requirements
------------
- Eclipse 3.3M4
- Java6

ConcernTagger has only been tested with Eclipse 3.3M4 and Java6 and on Windows XP
and Linux.

Installation
------------
1. Install Eclipse into a directory (ECLIPSE_HOME):

http://download.eclipse.org/eclipse/downloads/drops/S-3.3M4-200612141445/index.php 

2. Unzip the ConcernTagger zip file into a different directory (INSTALLDIR) from
   Eclipse.

3. Copy <INSTALLDIR>/edu.columbia.concerntagger_<version>.jar to
   <ECLIPSE_HOME>/plugins. When you run Eclipse, you should see a new
   "Concerns" category in Window -> Show View -> Other...

Mapping Elements to Concerns
----------------------------
1. Open a "Concern View" window Window->Show View->Other...->Concerns->Concern View.
2. Create your concerns by right clicking in the window and selecting "New Concern..."
   or using the "New Concern" button.
3. Open any view that allows you to see Java program elements, for example, the
   Package Explorer, Editor, Search, Types, Packages, and Members views.
4. Link a type, method, or field (aka "component" or "element") to a concern
   in any of the following ways:

	-> Drag one or more elements and drop them onto a concern
	-> Right click one or more elements, select "Link", and select a concern
	-> Select one or more elements, select one or more concerns, right click the
	   concern selection, and select "Link"

5. Unlink an element in any of the following ways:

	-> Select one or more elements in the Concern View and press the DELETE key
	-> Select one or more elements in the Concern View, right click the
	   selection, and select "Remove"
	-> Select one or more elements, select one or more concerns, right click the
	   concern selection, and select "Unlink"
	-> Right click one or more elements, select "Unlink", and select a concern

Obtaining Metrics
-----------------
1. After you've finished mapping, open the "Concern Metrics" view
   from Window->Show View->Other...->Concerns->Concern Metrics

   You should see metrics like:

   Concern Name   DOSC   DOSM  CDC  CDO  SLOC
   ConcernA      0.543  0.632    1    3   179
   ConcernB      0.322  0.292    2    3   139
   ConcernC      0.543  0.464    1    3    67
   ConcernD      1.000  1.000    0    0     0

  The DOSC and DOSM are described in

  Marc Eaddy, Alfred Aho, and Gail C. Murphy, "Identifying, Assigning,
  and Quantifying Crosscutting Concerns," to appear in the ICSE Workshop
  on Assessment of Contemporary Modularization Techniques (ACoM 2007),
  Minneapolis, MN, May 22, 2007.
  http://www.cs.columbia.edu/~eaddy/publications/Identifying,%20Assigning,%20and%20Quantifying%20Crosscutting%20Concerns.pdf

  and

  Marc Eaddy, "Modeling, Measuring, and Modularizing Crosscutting Concerns,"
  Ph.D. Thesis Proposal, Dec 2006. http://www.cs.columbia.edu/~eaddy/thesis/proposal.

  CDC and CDO are described in:

  F. C. Filho, N. Cacho, E. Figueiredo, R. Maranhao, A. Garcia, and 
  C. M. F. Rubira, "Exceptions and Aspects: The Devil is in the Details,"
  Intl. Conf. on Foundations of Software Engineering, 2006.

Importing Data
--------------
You can import concerns and links using ARFF files.

[Details Needed]

Release Notes
=============

2.1
---
+ Now calculates tangling metrics (DOF)
+ Can now sort scattering and tangling metrics by column

2.0.1
-----
+ Changed (un)assign to (un)link
+ Now linking an anonymous class/method always links the enclosing method
+ FIX: Sometimes highlighting is incorrect
+ FIX: Moving a concern doesn't always refresh the concern tree

2.0 (JUly 25, 2007)
-------------------
+ Can now unlink elements by right-clicking them and selecting 'Unlink'
+ Can now link/unlink an element to multiple concerns
+ Can now remove all links for all the concerns in the concern domain
+ Added mnemonics for the "Link" and "Unlink" right-mouse menu items
+ Renamed "Add to Concern" to "Link"
+ Linked elements in Concern Tree are now highlighted when selected in
  Package Explorer, Editor, or other Java element viewer/editor
+ Displays different icons for the concern depending on if it has children
  and/or direct links
+ Can now save metrics from Metrics and Intersection Views
+ Can now intersect two concern domains (e.g., requirements and bugs)
+ Can now export concerns and links to ARFF file
+ FIX: Concern should only be highlighted if all selected elements are
  linked to it
+ FIX: Linking a concern using drag-n-drop or the "Link" right-mouse menu
  item no longer freezes the UI
+ FIX: Selecting multiple elements in Package Explorer or the Editor no longer
  freezes the UI
+ FIX: DnD is ignored if one of the selected elements is already linked
+ FIX: DnD doesn't work correctly when you drag a class from one concern to
  another
+ FIX: Right-click "Link" menu is empty for elements in Search Results
+ FIX: Fixed bugs when importing concerns and links

1.5.3
-----
+ Supports multiple concern domains
+ Supports hierarchical concerns
+ Supports multiple views of the same concern domain
+ Supports importing concerns and links stored in
  Attribute-Relation File Format (.arff) files
+ Can now remove concerns and links using the DELETE key
+ Highlighting in Project Explorer is now fast and flicker-free
+ Concerns in Concern Tree are now highlighted when components
  they are linked to are selected in Package Explorer
+ Improved error messages and user feedback
+ FIX: Fixed bug where we can get a ton of error messages
+ FIX: Fixed bug where dragging in the Concern Tree caused items to
  open too quickly, making it difficult to "stay on target"

1.5.2
-----
+ Added total and % mapped metrics
+ Metrics tool now outputs the total number of members, the total
  number of linked members, and the percentage of linked members
+ FIX: Fixed bugs where sometimes a newly added concern didn't appear in
  the Concern Tree or right-mouse menus

1.5.1
-----
+ Brand new code model. Now includes files.
+ Calculates SLOCC instead of LOCC
+ Can now tag inner classes and enums.  Inner classes are treated as
  individual classes and do not count towards the SLOC of the outer class.
+ Can now tag entire classes (i.e., at the class level in addition to
  method level)
+ Fixed metrics logic
+ Does not reset view to top when an element is dropped onto a concern
+ Projects are now imported (after prompting the user) when one of their
  elements is mapped

1.1
---
+ 'Link' right-mouse menu item only visible for types, fields and methods
+ Can now map static constructors
+ Can now view concern metrics as a view in Eclipse
+ Disabled all prompts related to saving/loading a concern file.
  Everything is automatically stored in the database now.
+ Removed "PersistToDB" and "Generate Code Model" buttons.  This
  is now done automatically.
+ No longer need to create the initial database tables.  They are
  created automatically as needed.
+ No longer requires sqltools.rc file
+ Unlinked concerns are ignored when calculating metrics
+ Fix bug related to sequence generation that caused a database error
+ Now prompts when user selects "Remove Concerns"

1.0
---
+ Stores concern list, code model, and mapping data in SQL database
+ Calculates scattering metrics and the concern diffusion metrics

FAQ
===
Q. When I right-click on an item in Package Explorer, why don't I see 
   the Link and Unlink menu items?
A. Make sure you right-click on a project that contains source code.

Known Issues
============
1. You can only map elements that conform to JDK 1.4 and below.
   ConcernTagger does not support generics.
2. We do not support making changes to the Java project after it has been
   imported.  If the name or signature of an element changes, the link will
   still be present but the icon will show a question mark indicating that
   the link is invalid.

   Workaround: Remove the old link and re-link the element.

3. SLOCs are calculated from start of method name, not start of identifier.
4. SLOCs incorrectly includes comment-only lines that appear within
   statements and expressions, e.g.,

	int i = 5 +
		// comment
		2;

5. Multi-item drag & drop doesn't work on Linux.

6. Importing static initializers no longer works (reported as Member Not Found)

WISH LIST
=========
o Support non-Java languages (C#, Ruby, C)
o Support view that combines links (e.g., alter AND remove predicates)
o Statement-level assignment

TODO
====

Editor/Explorer Right-Mouse Menus
---------------------------------
o Indicate concernComponentRelation being used for the link. It is too easy to
  create the wrong edge.
o Needs accelerator key
o Add to right-click Link/Unlink: "Unlink 4 Selected concerns"

Concern View
------------
o Disable default Concern Tree manipulations caused by DnD
o Add "-Active" suffix to currently active concern view
o Add "Make Read Only" to Concern View drop down menu
o Support filtering so that only linked concerns are shown
o Right-click a single concern: "Show in Package Manager"
o Right-click multiple concerns: "Move to concern..."
o Support Copy, Cut, and Paste
o Color "Foreign" concern dark grey
o Support dropping a member onto a class (not just a concern)
o Sort elements the same way Package Explorer does
o BUG: Parent icon is not updated after making it childless via DELing its
  children or by adding its first child via DnD
o BUG: Can't DnD class from one concern to another if the destination concern
  already has some links from the same class
o Menu item to show only assigned concerns

Concern Linking
------------------
o Color links to "Foreign" concern dark grey
o Character- and statement- level linking

Inconsistency Checks
--------------------
o For every unlinked element, if it has no subelements or if any subelement is not
  linked, report a warning: "Cannot infer concerns for parent because not all
  children are linked" OR "Element is not linked"
o Handle inconsistency when the same element is linked to a parent and child concern
o Linking a type should automatically link its subtypes (CAG4)
o Linking a method should automtaically link its overrides (CAG5)
o Linking a method should automatically link methods that call it (CAG3)
o Linking a field should automatically link methods that use it (CAG3)
o Warn if link for member user does not include member's link
o Warn if reference to a linked class doesn't include link
o Warn if a concern has no links
o warn if member link is not included in parent's link
o Disagreements with automated link
	o For each concern, show set of elements linked by both techniques
		- Element in manual but not automated -> False Negative (yellow)
		- Element in automated but not manual -> False Positive (grey value
                  based on number of tangled concerns)
		- Element in both (green)
o For every linked element, compare the concerns linked to the element with its
  subelements and report discrepancies: "Parent introduces concerns" OR "Parent
  ignores/suppresses some child concerns"
o Show concerns linked to dead code / unused elements

Concern Metrics
---------------
o Calculate DOF
	o Ignore "Foreign" concern when computing metrics
o Menu item to show only assigned leaf concerns

Misc
----
o HasLink shouldn't import model; ImportLinks should
o Only import projects on the build path
o Smarter project importing. Allow user to view imported projects and delete them.
o Custom source editor with character- and line-level highlighting
o SourceForge: CVS, bug tracking
o Concern call graph view

Credits
=======
Marc Eaddy	(eaddy@cs.columbia.edu)
Vibhav Garg	(vibhavgarg@gmail.com)

Acknowledgements
================
We thank Martin Robillard and Frédéric Weigand-Warr from McGill University
for developing the original Concern Mapper program, on which much of ConcernTagger's
source code is based (http://www.cs.mcgill.ca/~martin/cm/).