Tool for Aiding program underSTanding: Java Edition

What is TasteJ?

TasteJ is an automated comprehension assistance tool implemented according to the framework and techniques proposed in this paper. It aims at aiding software developers and maintainers in understanding Java source code implemented in accordance with design pattern intents. TasteJ accepts concerned Java classes and their related DPIs, groups the classes according to design pattern inter-role relationships which can be recovered by design pattern detectors (e.g., PINOT)., and displays generated results in a graphical manner. The user can interactively and conveniently browse the result.


You can download the TasteJ here (tastej.rar). TasteJ is implemented based on JHotDraw, which is a well-designed Java GUI framework.


1. unzip downloaded file tastej.rar;
2. change TasteJ1.0 to the current working directory;
3. run TasteJ: java -jar TasteJ.jar, then, GUI of TasteJ would pop up;
     NOTE: or, you can directly import the unziped directory as an Eclipse project and run the main class application.TasteJ .
4. configure understanding objective and an XML file which contains related design pattern instances:
  • "File" -> "Open Project..." -> Project folder: -> address of "sample/jhotdraw6.0" ; // we provide open source project jhotdraw6.0 beta 1 as an understanding sample here
  • XML file: -> address of "sample/DPInstances.xml" ; // configure jhotdraw6.0's related design pattern instances
  • "submit"
5. view clustering results by interacting with TasteJ' GUI. Figure 1 is a snapshot of it:

Figure 1. A snapshot of TasteJ's GUI

Region A displays the file structure of a currently considered system, region B displays the generated clusters with respect to the package selected in region A. Region C displays the internal structure of a selected cluster using a simple class diagram that paints inheritance relations only; at the same moment, region D lists the cluster's related relied DPIs (a DPI is considered as a relied DPI if and only if it is exactly useful for directing classes grouped into a common cluster). While one of the listed relied DPIs is selected, the currently considered package's members who act roles in it would be labeled with corresponding pattern names and role names, as indicated in Figure 1.


1. Zhixiong Han, Linzhang Wang, Liqian Yu, Xin Chen, Jianhua Zhao and Xuandong Li
   Design Pattern Directed Clustering for Understanding Open Source Code
   To appear in Proceedings of the 17th International Conference on Program Comprehension
   (ICPC 2009), Vancouver, Canada, May 2009.

2. Zhixiong Han, Linzhang Wang, Liqian Yu, Xin Chen, Jianhua Zhao and Xuandong Li
   Technical Report: Design Pattern Directed Clustering for Understanding Open Source Code
   SEG, Nanjing University, China, Jan 2009.

Comments, questions, bug reports?

Last modified: March 10 2009.