EECS 6431: Fact Extraction Assignment

Deadline: Tuesday, January 31

Format: Individual

For this assignment, you will extract facts from a Java system of your choice. Your first task will be to select a system to work with. The only requirements are that the system should be larger than a few classes and it should be written in Java. You can look for open source systems of interest in the following sites:

  1. github
  2. sourceforge
  3. openhub

Once you have selected a system, make sure you are able to build it locally. Then, extract facts from it using the javex extractor. Save the raw facts in a file called raw.ta.

Next, write a Grok script that produces RSF output and accomplishes the following things:

  1. All of Javex's unique identifiers are replaced by human-readable names (as in Exercise 5).
  2. The names of all methods include the class name as well (as in Exercise 3).
  3. The names of all relations, such as E182 etc. are replaced by the mnemonics shown in the Javex manual page.
  4. A new relation called classInvoke is added. This is a relation between classes. Two classes are related by classInvoke if they contain methods that are related by at least one of the three Javex relations: E182, E183, E184.

Call your Grok script fea.grok and its output file fea.rsf. Your Grok script must be carefully commented.

For the TAB2PS system, this is what the output should look like. Your output does not have to be exactly the same or in the same order as long as it has all the properties listed above.

What to submit

You only need to submit the three files mentioned above. You can do this with the following command (assuming they are all in the current directory):

submit 6431 FE raw.ta fea.grok fea.rsf