Currency Server vs. in-House Development
Currency Server was designed to save money and
time to both large organizations with sophisticated
needs and smaller organizations who are looking
for expert assistance in this field. No matter how
large or small your business is, Currency Server
puts you in control of an expert-built, high quality,
high performance and easy to use currency-enabling
component and Web service, freeing you from the
headaches associated with developing and maintaining
such a system from scratch.
The following sections will help you assess your
requirements in relation to the functionality provided
by Currency Server, and estimate the potential return
on investment of Currency Server using established
industry metrics.
Functional Requirements
When an organization decides to support multiple
currencies, one of the initial considerations is
that exchange rates fluctuate and therefore require
updates. This basic need is almost universally common
to all currency-enabling solutions (e.g. with the
exception of some EMU-only
currency tools, which use constant conversion rates).
A second basic requirement is the ability to
perform conversions from one currency to another.
This is where things usually begin to get unexpectedly
more complex upon discovery of the fact that a simple
multiplication or division by an exchange rate is
not sufficient to convert a price from currency
A to currency B. In order to properly convert from
A to B, at least three (not one) parameters have
to be taken into account:
- Exchange rates of A and/or B
- Regime of both A and B (e.g.
EMU, for triangulation
purposes)
- Smallest unit of B (for rounding purposes)
Without triangulation and rounding, results can
be anything from unprofessional (e.g. because a
result rounded to the nearest cent was produced
for a currency which does not use cents at all,
or which uses integer values which are a multiple
of 50, etc.) to illegal (e.g. because of laws which
may require triangulation when converting to and
from euro subunits).
Currency Server solves the above primary needs
both by providing information and conversion methods
which take these requirements into account, and
by exposing properties which include not only the
rate of a currency, but also its regime and smallest
unit. This data can in turn be updated both manually
and automatically.
At a lower level, Currency Server includes a
universal XML filter which allows you
to use XPath expressions to interface with a provider
of exchange rate data of your choice (in
addition to the FX feeds
directly supported by the standard software distribution). This proven
and tested XML component alone can save you a lot
of time even in a scenario where higher level functionality
is not required.
Once the basic functional needs are covered,
the best case scenarios are usually taken care of
reasonably well. But what about the worst case possibilities?
What about those events which occur rarely, but
which do occur, like a currency changing name or
ceasing to be legal tender or joining the EMU, or
an exchange rate data feed or Web service which
suddenly becomes inaccessible? What if an exchange
rate is completely wrong because whoever entered
it into the remote system added one digit too much,
or omitted a decimal point? What if somebody forgot
to update a rate for weeks or months, would you
become aware of it? Would you write a Windows Messaging
client, or an SMTP engine to page your administrators
if necessary? Should you be able to display alerts
on multiple Terminal Services and Remote Desktop
clients? How many providers of exchange rate data
should you support, in order to be able to quickly
switch from one to the other if necessary? How much
extra work would it take to research, design, code,
document and maintain a currency-enabling system
which is ready for mission critical applications?
Once you have everything working, you may want
it to work faster. If you were using a remote Web
service, you might decide that it is not fast (or
reliable) enough any more, so it has to run locally,
meaning that you have to write your own Web service
server and interface. And when even a local HTTP-based
system is not fast enough, maybe you will need to
code a super-fast in-process server DLL. And then
maybe your needs will change again, and .NET will
be the way to go, so you will write a .NET component.
How many interfaces will you have to support, write
and re-write?
At last, as soon as everything is functional,
reliable, and fast, your needs may grow more sophisticated.
Your e-commerce system may become multilingual,
and you will need full internationalization support.
That is, different currency names, symbols and formatting
options for visitors from different regions of the
world. Are you ready for this, too? Currency Server
is.
Measurable Statistics
Commonly used methods for measuring the productivity
and reuse effectiveness of commercial off-the-shelf
software components take into account the number
of source lines of code and the number of interface
points.
The Currency Server software consists of several hundred
thousand lines of code. This does not take
into account the Currency Server sample code, or
code running only on Currency System's data feed and Web
service servers.
Currency Server has more than 70 COM
interface points, more than 40 Web service (.NET/SOAP)
interface points, and more than 30 JavaScript
interface points.
Experience
Currency Server, which is part of the Currency
System family of products and services, embodies
a synergy of experience and expertise in different
areas.
The Currency System team has several decades
of experience in currency-enabling software development
and support. The software is backed by an organization
which monitors major currency-related organizations,
data feeds and news feeds every day. Not only
are our operations immediately notified by the ISO 4217 maintenance
agency as soon as there is a change in the code,
name or status of any currency in the world, but
our team is an active player in this field,
contributing to improvements.
Besides being a leader in currency software
and services, the team shares the experience acquired as a publisher of award-winning consumer
software, and can draw on a unique pool
of usability and software quality experts. The same
experience and methodologies which allow millions
of users to enjoy easy to use and reliable software
every day have been applied to Currency Server,
allowing corporate developers to better integrate
complex functionality into their applications without
requiring a steep learning curve and easing day-to-day
operations in different areas of the organization.
The current version of Currency Server incorporates
the experience acquired deploying several generations
of the software at large organizations ranging from
Fortune 50 corporations to government agencies.
Currency Server did not only have to meet the requirements
of extremely demanding IT and purchasing departments,
but it also had to integrate, for example, with
existing euro changeover and ISO 9000 quality management
procedures.
Conclusion
Given the above data, it is tempting to try to
roughly estimate the return on an upfront investment
of $995 to deploy one instance of Currency Server
(i.e. without optional add-ons or multiple licenses).
For example:
- assuming that you need only 50% of the functionality
of Currency Server (which already is a precisely
focused component);
- considering an industry average of 3.5 man
months per 1,000 lines of C++ code (sources:
ComponentSource Ltd., Cost Xpert Group Inc.,
Software Engineering Institute, Software Productivity
Research, Inc.);
- considering a 20% cost to evaluate and reuse
the functionality of an off-the-shelf component
(source: Jeffrey S. Poulin in “Measuring Software
Reuse: Principles, Practices, and Economic Models”);
- assuming a monthly cost of $5,000-$10,000
to employ one developer, inclusive of overhead
costs;
the result would be a saving of more than $900,000
and several man-years of work. Currency Server would
quickly pay for itself even if only 1% of its functionality
was needed.
Additional keywords: ISO 9001, ISO
17799, QOS, QMS,
TCO. |