Untitled Document

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

Coypright (c) 2006-2016 SimpleData Sarl