TariffEye Technical sheet
Last revision December 1st 2006
Introduction
Developed
by engineers from the Ecole Polytechnique Fédérale de Lausanne, TariffEye is
written in JAVA 1.4. Some parts of the software use BSH,
which is a java-like syntax scripting language. The software has been tested
with SUN jvm on Windows, MacOSX and Linux x86. Variables and relevant comments
are in English language.
Some third party
software and libraries are used, they will be named on parts they are involved
and a full list is provided at the end of this document.
Development tools
SimpleData used Eclipse with no special plugins, Eclipse
is not required to compile, or edit TariffEye's code. All the compiling and software packaging is handled by Ant, which is not mandatory to compile the software but the
build.xml must then be used as a reference to understand the building process.
We use Install4j to make installable packages for the different
platforms.
Debugging and Logging
All the logging system
is based on Log4J.
Testing
JUnit
has been used to elaborate tests.
Main application design and Features
TariffEye, is a
standalone application, but with an asynchronous communications system between
the user-interface and the data-engine. This is a very important fact, having
an autonomous data engine, makes possible to use of Tariff files in other
applications, such as real-time fees calculations, or with a web interface.

The data-engine
The data-engine is an
API that can handle tariffs construction and manipulation as well as portfolio
management and fees calculations.
DataModel
The data model defines
the way tariffs are designed
High level of abstraction in tariff
composition
The example shows the
graphical representation of the WorkSheets.


Those elements define
the logical and operational toolbox of TariffEye.
Writing a logical
structure such as a Case, Bounds or Sequencer requires less than 300 lines of code. An
operational structure such as the most complex Rate by Slice on Asset is written in 250 lines. That code defines, the
way elements operated but also the way data is stocked, the calculus and the
serialization of these items.
The design of the datamodel makes it very easy to create and to add new
elements.
Multi-dimensional structure
To classify tariffs, a
normal tree structures cannot suffice as it is impossible to define one single
classification for all banks and all tariffs.
This is why TariffEye
can be spatialized in multiple trees structures. For bank tariffs SimpleData
has defined 6 dimensions + 1 user defined tree.

Those dimensions are
tuneable to be sure any kind of classification can be represented with
TariffEye.
Tariff matching and element pairing
The multidimensional
classification of tariffs makes it possible to find comparable elements between
portfolios, with a high level of accuracy. Elements between assets and
transactions may be paired, to make ventilation of a portfolio automatic for
tariff analysis.
The multidimensional
trees system of Tariff-Eye is designed for data importation from a portfolio or
another software.

Threaded fee calculation system
The fee calculation
system is a process apart, seeking for changes on the tariff. Tariff
calculation involves a lot of recursivity and conditional steps, the calculator
highly optimise the fee calculation to prevent redundancy and unnecessary
calculus. At this time on an average PC, fee calculation after a complete
portfolio modification takes less than one second.
Elements serialization
The serialization is
the way tariffs are saved on files and distributed.
Robust and evolutive
Tariffs and portfolio
have exactly the same structure; a Tariff in an empty portfolio. This means
that a file containing a portfolio also contains all the tariff information
associated. So sharing portfolios is very easy as all the needed data is in a
single file.
Technically files
containing tariff are "XML armored objects", the files contains serialized Java
objects and their XML representation. Java objects loads very quickly, but they
are very dependents to version of the datamodel, this is why an XML equivalent
is used if TariffEye failed loading a tariff file made with an older version of
TariffEye.

XML representation is
achieved with the java beans XML serializer, which makes it very easy to
control versioning of datamodel"s elements. This has been verified during all
the development process where the datamodel evolved a lot.
Security and sharing
TariffEye was designed
from start to be very safe, as handled data was very confidential. So all the
files are encrypted using asymmetric cryptographic keys. The level of
encryption can be adjusted to any company requirements and the files structures
is designed to accept a non limited number of layers of encryption, signature
and compression.
Today TariffEye comes
with RSA and DES encoders, and a keyring management system.
User Interface
The GUI of TariffEye
is developed with SUNs swing API. Its identical if used on a Windows or a
UNIX computer
on Mac the aqua look and feel is used.
Naturally the UI is
made to manipulate tariffs and portfolio, but it also handles data loading and
reports generation.
They are 3 main
applications, with their specific UI:
1- The simulation
tool, to manipulate portfolios on specific tariffs.
2- The creation
tool, to create tariffs.
3- Creation-live is
a mix of both previous tools.
Attractive design
With the Alloy look and Feel TariffEye has a very clear visual.
!! Not it the GPLized version !! as alloy is not Free :(

Very intuitive and user friendly
A lot of attention and
energy has been spent in TariffEye ergonomics to be sure anyone will feel
comfortable manipulating complex tariffs.
Most of the elements
in TariffEye will show a text information when the mouse pass over them.
TariffEye was designed
for several ways of thinking and different user types. Newcomers and occasional
users will easily find the command for the action they want to perform, as
there are no hidden functions, or deep menus. But a daily user will also notice
that most of the elements on TariffEye are clickable to speed up the
navigation, and that many actions are directly accessible with a right-click.
Popups and validation steps have been avoided to their maximum, to be the less
intrusive possible.
Assistants for
portfolio filling and transaction generation are embedded, so there is no need
to launch a side window to complete those tasks.
Navigation between
complex elements is made simple and intuitive, as most elements will respond to
mouse clicks.
The feeling should be
very close to navigation on a web site, without the need to validate every
action.
Easy fees and discounts visualisation
Fees are always
visible to the user; they can be explored with a single tree. The user will
visualize the total fee as well as single transaction effects on the same
window.

Discount and
un-discounted fees will be shown aside the fees column.
Real time
information visualisation
As specified in the Datamodel – calculation system
part, fee calculation is achieved in real time, so the user can see the effect
of the slightest portfolio or tariff manipulation. Even discounts have an
immediate effect on fees. Moving sliders, will change in real time the
relatives" numeric values and graphical chart.
Recursive error and warning indications
Errors and warnings
are not intrusive; they appear recursively on the navigation tree. On the
following example, an error is made the TVA tariff; this is shown with the
little "invalid" icons on the trees. This way a use will find easily where his
attention is required.

Reports generation
Reports are made with JasperReports; they will provide a complete paper
version of a Tariff or a Portfolio simulation. Report templates can be
customized easily by the customer with the set of tools provides with Jasper
Reports.
Help system
The help system use JavaHelp 2.0.
Embedded Web-server
One powerful feature
of TariffEye is its embedded web server and web browser. SimpleData developed a
very light web server with a JSP interpreter. So, it is lighting fast to
develop an extra tutorial, or links to external web services.
Webcontrol
The embedded web
server has a special API for JSPs, this API provides a full control of
TariffEye, from web pages. This is very interesting to meet quickly specific
customers" requirements.
The former use of this
tool was to provide update alerts and news about TariffEye.
Updates and Tariff manager
A simple tool for
online or offline tariff updates.
Language and translations
TariffEye uses
SimpleDatas unique translation system. When in development stage, a
"learning-mode" is turned on. While the software is tested it automatically
fills text files on a per Java class basis, those files can be directly
translated and corrected, plus it highlights the new entries that need
reviewing. Most of the work for developers is automated.
Licensing and copyright enforcement
system
The software needs to
be activated online; a computer signature is used to generate the serial code.
The licensing system is made to allow or deny access to specific features, and
if needed it provides a limit in time.
Cracking the software is made very difficult by crypting and hiding
sensitive code in an interpreted script.
As specified, user
data is protected by asymmetric key systems and cannot be compromised even if
SimpleData licensing system was.
Third-part tools and library
Here is a list of the
third part tools and library used for the development that may require
attention because of their licenses. Some open source library and software used
require to be distributed with a copy of their license and their source code.
This does not affect the way TariffEye source code is distributed.
Eclipse
http://www.eclipse.org/ This is a free and
open source IDE.
Ant
http://ant.apache.org/ Is a free build tool,
part of the Apache project.
Install4j
http://www.ej-technologies.com/products/install4j/overview.html
Commercial
installer from $400 to $1000
JavaHelp
2.0
http://java.sun.com/products/javahelp/
Is an HELP management system, provides by SUN.
Log4J
http://logging.apache.org/log4j/docs/
Free and open-source Logging system
JUnit
http://www.junit.org/index.htm Free
and open-source testing framework
Alloy
http://www.incors.com/lookandfeel/
Commercial theme for
java application from $200 to $900
JasperReports
http://jasperreports.sourceforge.net/
Free and Open-source reporting generator
JFreeCharts
http://www.jfree.org/jfreechart/index.php
Free and Open-source chart generator
List of the third party ".jar" files
itext-xml-1.02.jar
jasperreports-0.6.2.jar
jcommon-0.9.5.jar
jfreechart-0.9.20.jar
alloy.jar
jhall.jar
bcprov-jdk14-124.jar
junit-3.8.1.jar
bsh-2.0b1.jar
commons-beanutils-1.5.jar
log4j-1.2.8.jar
commons-collections-2.1.jar
commons-digester-1.3.jar
commons-logging-1.0.2.jar
xercesImpl.jar
commons-logging-api-1.0.2.jar
xmlParserAPIs.jar
foxtrot.jar
xpp3-1.1.3.4d_b4_min.jar
itext-1.02b.jar
xstream-1.0.2.jar