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.
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.
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 more than 130,000 lines of C++ 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, which is part of the Currency System family of products and services, embodies a synergy of experience and expertise in different areas.
The team behind Currency Server 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. Currency System, Inc. is not only a licensee of ISO 4217 currency codes, and is 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 it is an active player in this field, contributing to its improvement.
Currency System, Inc. spun out of Cloanto in 2008. 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.
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.