Yearly project in software engineering

D3 Team Members

  • Shai Kaplan
  • Shai Mizrachi
  • Alex Belous
  • Liran Moysi

    Project Purpose

    The project purpose is to profide a set of tools for an eclipse developer to better understand the code that is running when eclipse makes some opertaion.
    The tools include dynamic tools that explore the code during eclipse runtime, and static tools that include static interpertaion of the code and displaying results.

    Project Plug-ins

    Toolbox

    The toolbox purpose is to provide a tool box which can contain as many tools as you wish in order to help the developer to develop high qualified products by giving him an option to create tools for Program Understanding and run them though this toolbox.
    The toolbox provides interface for other tools to comminicate with it, and notify about the tools progress, its results, saving loading etc..

    Personal Comments

    This tool is useful for a developer who studied a code, made some conclusions about it, and wish to save them somewhere that will indicate that its linked to the source he/she studied.
    The tool enables the developer to write his personal comments about the code outside of the code file without changing it.
    These notes will be available for you, or your colleagues, whenever you work again on the files.

    Object Tracking

    The general purpose of this tool is to track a specific field in a class, letting the user know which classes interacted with it, how many times, and by which of their functions they did so.

    Dependency Walker

    Dependency Walker helps a developer understand the relationships between a given class and other classes that are used (referenced) in its code, in other words, it will enumerate all the various classes that are referenced in the code. By doing so recursively we create a tree of classes and a wider vision of how the class in question fits other classes.

    Method sequencing

    The Method Sequencing tool was created to help a developer get some idea about a what runs between 2 method. The tool helps by listing the direct method calls from method 1 to method 2, selected by the user, effectively its the simplest part of the call tree.

    Participated Class Information

    PCI is a dynamic tool that will help you in finding out how does class's methods participate in a scenario.
    It will show you the order and the number of occurrences for each of the methods selected in the scenario you run.

    Constructor Helper

    Constructor Helper helps a developer understand how an object of some class is build, in other word it allows the user to understand the a constructor chain.
    A constructor chain is a list of constructors that are being called when an object is built, the constructors in java are called bottom up, that is first the Derived class constructors are called, then its super class constructor (or another constructor of the Dervied class) then their super-super etc... up to the base class which is always the Object class.
    The tool creates a visualisation of the chain and allows the user to understand the sequence of events that will occur during runtime.

    Design Patterns Recognition

    The main idea behind this tool is to allow developer to estimate whether the specific class is an implementation of the chosen Design Pattern. The developer can also define his own Design Pattern and test whether his code satisfies it. In case the wanted pattern includes more the one class, the developer should provide classes he thinks are involved in the pattern, according to teir roles.



    Download & Install

    All of D3 Toolsd3tools.zipversion 2.0
    The Super Toolbox org.hhltd.superToolbox_1.0.0.jar version 1.0
    JUnit test casesjunit_tests.zipversion 2.0
    Projects neccessary for Acceptance Testsaccept_tests.zipversion 2.0
    D3 Documentationdocs.zipversion 2.0
    XViD Codecget the codec here XviD version 1.1.1
    Constructor Helper MoviectorHelper.aviRequires xvid codec
    Dependency Walker MoviedepWalker.aviRequires xvid codec
    Pattern Recognition Moviedpr.aviRequires xvid codec
    Method Sequencing Moviems.aviRequires xvid codec
    Participating Class Information Moviepci.aviRequires xvid codec
    Personal Comments Moviepc.aviRequires xvid codec
    Object Tracking Movieot.aviRequires xvid codec

    Installation notes
    Download the above "All of D3 Tools" and unzip the jars inside it into <EclipseDirectory>\plugins (for example c:\eclipse\plugins)
    Download the "super toolbox" and place it in the same directory.
    Doing that step installed and prepared the plugins to run.

    Running the tools
    Run eclipse 3.2, select Window -> Open Perspective -> Other and select D3ToolBox
    Now you can see the D3Toolbox on the right, and you can select a tool to run.
    You can now run eclipse help to read the Getting Started guide of each plugin.

    JUnit Tests

    We've created unit testing using JUnit, each plugin "P" has a corresponding plugin named "P.tests".
    To run these tests you'll need JUnit 4 plugin installed. In addition you will need to import the plug-ins from the above "JUnit test cases".

    Acceptance Tests

    The acceptance tests appear in the "D3 Documentation" file, some acceptance tests need projects imported from the above file "rojects neccessary for Acceptance Tests", you should download these project and import them.