Main development

We are currently working in the following tasks:

  1. Rewriting makefiles because dependences are incorrectly handled.
  1. Writing XML readers and writers for class Problem. We are investigating the usefulness of the Java Architecture for XML Binding technology.
  1. Wrong dependencies between packages. See the depencencies diagram in dependencies.ps computed by the command make dependencies.ps.
  1. Improving usability of the graphical user interface.
  1. Using track to write documentation.
  1. Investigating tools to test graphical user interfaces.
  1. Adapting the code to meet java 6.

Rewriting makefiles

javac does not correctly handle dependencies. See the modification times in the log below: Constraint.java should be recompiled.

tonis@boix:~/src/gcs/soft/solBCN/trunk$ make clean
rm -f -r classes
rm -f -r javadoc
rm -f lib/solBCN_dataEntities.jar
rm -f lib/solBCN_mathlib.jar
rm -f lib/solBCN_analyzer.jar
rm -f lib/solBCN_solver.jar
rm -f lib/solBCN_constructor.jar
rm -f lib/solBCN_selector.jar
rm -f lib/solBCN_gUI.jar
rm -f lib/solBCN_xUI.jar
rm -f lib/solBCN_test.jar
tonis@boix:~/src/gcs/soft/solBCN/trunk$ find . -name '*.class' -exec rm {} \;
tonis@boix:~/src/gcs/soft/solBCN/trunk$ ls -l src/solBCN/analyzer/Analyzer.*
-rw-r--r-- 1 tonis tonis 3178 2007-12-14 11:11 src/solBCN/analyzer/Analyzer.java
tonis@boix:~/src/gcs/soft/solBCN/trunk$ ls -l src/solBCN/dataEntities/problem/Constraint.*
-rw-r--r-- 1 tonis tonis 1990 2008-04-10 10:50 src/solBCN/dataEntities/problem/Constraint.java
tonis@boix:~/src/gcs/soft/solBCN/trunk$ javac -source 1.4 -encoding iso-8859-1 -classpath /home/tonis/src/gcs/soft/solBCN/trunk/src/ src/solBCN/analyzer/Analyzer.java
tonis@boix:~/src/gcs/soft/solBCN/trunk$ ls -l src/solBCN/analyzer/Analyzer.*
-rw-r--r-- 1 tonis tonis 1388 2008-04-10 11:16 src/solBCN/analyzer/Analyzer.class
-rw-r--r-- 1 tonis tonis 3178 2007-12-14 11:11 src/solBCN/analyzer/Analyzer.java
tonis@boix:~/src/gcs/soft/solBCN/trunk$ ls -l src/solBCN/dataEntities/problem/Constraint.*
-rw-r--r-- 1 tonis tonis  513 2008-04-10 11:16 src/solBCN/dataEntities/problem/Constraint.class
-rw-r--r-- 1 tonis tonis 1990 2008-04-10 10:50 src/solBCN/dataEntities/problem/Constraint.java
tonis@boix:~/src/gcs/soft/solBCN/trunk$ touch src/solBCN/dataEntities/problem/Constraint.java
tonis@boix:~/src/gcs/soft/solBCN/trunk$ ls -l src/solBCN/dataEntities/problem/Constraint.*
-rw-r--r-- 1 tonis tonis  513 2008-04-10 11:16 src/solBCN/dataEntities/problem/Constraint.class
-rw-r--r-- 1 tonis tonis 1990 2008-04-10 11:16 src/solBCN/dataEntities/problem/Constraint.java
tonis@boix:~/src/gcs/soft/solBCN/trunk$ javac -source 1.4 -encoding iso-8859-1 -classpath /home/tonis/src/gcs/soft/solBCN/trunk/src/ src/solBCN/analyzer/Analyzer.java
tonis@boix:~/src/gcs/soft/solBCN/trunk$ ls -l src/solBCN/analyzer/Analyzer.*
-rw-r--r-- 1 tonis tonis 1388 2008-04-10 11:17 src/solBCN/analyzer/Analyzer.class
-rw-r--r-- 1 tonis tonis 3178 2007-12-14 11:11 src/solBCN/analyzer/Analyzer.java
tonis@boix:~/src/gcs/soft/solBCN/trunk$ ls -l src/solBCN/dataEntities/problem/Constraint.*
-rw-r--r-- 1 tonis tonis  513 2008-04-10 11:16 src/solBCN/dataEntities/problem/Constraint.class
-rw-r--r-- 1 tonis tonis 1990 2008-04-10 11:16 src/solBCN/dataEntities/problem/Constraint.java

Current Makefile does not correctly handle dependencies. See the log below: Analizer.java should be recompiled.

tonis@boix:~/src/gcs/soft/solBCN/trunk$ make compile
...
javac -source 1.4 -encoding iso-8859-1 -d classes -classpath :/usr/share/java/jdom.jar:/home/tonis/backup/salze/home-tonis/arxiu/src/java/JSAP-2.0.jar:/usr/share/java/junit.jar:lib/cli.jar:classes:src src/solBCN/analyzer/Analyzer.java
...

Compilation OK.
tonis@boix:~/src/gcs/soft/solBCN/trunk$ ls -l src/solBCN/analyzer/Analyzer.*
-rw-r--r-- 1 tonis tonis 3178 2007-12-14 11:11 src/solBCN/analyzer/Analyzer.java
tonis@boix:~/src/gcs/soft/solBCN/trunk$ ls -l classes/solBCN/analyzer/Analyzer.*
-rw-r--r-- 1 tonis tonis 1388 2008-04-10 11:25 classes/solBCN/analyzer/Analyzer.class
tonis@boix:~/src/gcs/soft/solBCN/trunk$ ls -l src/solBCN/dataEntities/problem/Constraint.*
-rw-r--r-- 1 tonis tonis 1990 2008-04-10 11:16 src/solBCN/dataEntities/problem/Constraint.java
tonis@boix:~/src/gcs/soft/solBCN/trunk$ ls -l classes/solBCN/dataEntities/problem/Constraint.*
-rw-r--r-- 1 tonis tonis 513 2008-04-10 11:24 classes/solBCN/dataEntities/problem/Constraint.class
tonis@boix:~/src/gcs/soft/solBCN/trunk$ touch src/solBCN/dataEntities/problem/Constraint.java
tonis@boix:~/src/gcs/soft/solBCN/trunk$ ls -l src/solBCN/dataEntities/problem/Constraint.*
-rw-r--r-- 1 tonis tonis 1990 2008-04-10 11:29 src/solBCN/dataEntities/problem/Constraint.java
tonis@boix:~/src/gcs/soft/solBCN/trunk$ make compile
javac -source 1.4 -encoding iso-8859-1 -d classes -classpath :/usr/share/java/jdom.jar:/home/tonis/backup/salze/home-tonis/arxiu/src/java/JSAP-2.0.jar:/usr/share/java/junit.jar:lib/cli.jar:classes:src src/solBCN/dataEntities/problem/Constraint.java

Compilation OK.
tonis@boix:~/src/gcs/soft/solBCN/trunk$ ls -l classes/solBCN/analyzer/Analyzer.*
-rw-r--r-- 1 tonis tonis 1388 2008-04-10 11:25 classes/solBCN/analyzer/Analyzer.class
tonis@boix:~/src/gcs/soft/solBCN/trunk$ ls -l classes/solBCN/dataEntities/problem/Constraint.*
-rw-r--r-- 1 tonis tonis 513 2008-04-10 11:29 classes/solBCN/dataEntities/problem/Constraint.class
tonis@boix:~/src/gcs/soft/solBCN/trunk$ 

References to different approaches to handle de dependencies in java projects:

Minimizing dependencies between packages

The following dependencies in the dependencies graph of dependencies.ps should be avoided:

solBCN_dataEntities -> solBCN_analyzer;
solBCN_dataEntities -> solBCN_constructor;
solBCN_dataEntities -> solBCN_selector;
solBCN_selector -> solBCN_constructor;
solBCN_analyzer -> solBCN_constructor;

Let us analyze in depth each dependency.

solBCN_dataEntities -> solBCN_analyzer

The command make u_files | grep 'src/solBCN/dataEntities.* : src/solBCN/analyzer/.*\.java' outputs the only class that depends on the analyzer:

src/solBCN/dataEntities/graph/utils/TreeDecomposableGraphFactory.class

Only the method main uses analyzer. The tests in method main should be in the test package.

solBCN_dataEntities -> solBCN_constructor

The command make u_files | grep 'src/solBCN/dataEntities.* : src/solBCN/constructor/.*\.java' | cut -f 1 -d ' ' | sort -u outputs the classes that depend on the package constructor:

src/solBCN/dataEntities/constructionPlan/ConstructionPlan.class
src/solBCN/dataEntities/constructionPlan/ConstructionPlanNode.class
src/solBCN/dataEntities/doc/ConstructionPlanDoc.class
src/solBCN/dataEntities/factories/ConstructionPlanFactory.class

solBCN_dataEntities -> solBCN_selector

The command make u_files | grep 'src/solBCN/dataEntities.* : src/solBCN/selector/.*\.java' | cut -f 1 -d ' ' | sort -u outputs the classes that depend on the package selector:

src/solBCN/dataEntities/factories/ConstructionPlanFactory.class

solBCN_selector -> solBCN_constructor

The command make u_files | grep 'src/solBCN/selector.* : src/solBCN/constructor/.*\.java' | cut -f 1 -d ' ' | sort -u outputs the classes that depend on the package constructor:

src/solBCN/selector/creators/SelectorFromSketchCreator.class
src/solBCN/selector/creators/SimpleSelectorCreator.class
src/solBCN/selector/Selector.class
src/solBCN/selector/SelectorCreator.class
src/solBCN/selector/SelectorFactory.class
src/solBCN/selector/selectors/InteractiveSelector.class
src/solBCN/selector/selectors/SelectorFromCloseSolution.class
src/solBCN/selector/selectors/selectorFromCloseSolution/SCConflict.class
src/solBCN/selector/selectors/selectorFromCloseSolution/SCTreeEdgeEval.class
src/solBCN/selector/selectors/selectorFromCloseSolution/SCTreeElementEval.class
src/solBCN/selector/selectors/selectorFromCloseSolution/SCTreeNodeEval.class
src/solBCN/selector/selectors/selectorFromCloseSolution/SCUtils.class
src/solBCN/selector/selectors/SelectorFromSketch.class
src/solBCN/selector/selectors/Sequence.class
src/solBCN/selector/selectors/SequenceEval.class
src/solBCN/selector/selectors/SequenceFactory.class
src/solBCN/selector/selectors/SequenceNode.class
src/solBCN/selector/selectors/SimpleSelector.class

solBCN_analyzer -> solBCN_constructor

The command make u_files | grep 'src/solBCN/analyzer.* : src/solBCN/constructor/.*\.java' | cut -f 1 -d ' ' | sort -u outputs the classes that depend on the package constructor:

src/solBCN/analyzer/Analyzer.class
src/solBCN/analyzer/ConstructionPlanFactory.class

Improving usability of the graphical user interface

- There are user interface options that simply does not work, mostly related to circles.

- The work-flow of the user interface is confusing. It should be clear that the user first defines an sketch, then analyzes it and finally changes some parameters.

- There are neither help nor user documentation.

Using track to write documentation

- Translate the current documentation to english and write it into track.

Investigating tools to test graphical user interfaces

- Look for tools and documentation on how to test graphical user interfaces.

- Experiment with those tools, choose one of them and apply it to test the user interface of solBCN.

Adapting the code to meet java 6

- Reengeneer the code which now meets java 1.4 specification to meet java 6 specification.

- In addition, the preferred java platform should be OpenJDK instead of Java SE 6.

Attachments