Urix is the leading provider of business intelligence and predictive modeling
software for the health care industry. Its products include RiskSmart, a
calculation engine that can be integrated into comprehensive software solutions
to assess health care outcomes, set insurance premiums, and control costs for
individuals and groups.
RiskSmart was originally written in the C language and moved to C# in January
2005. The calculation engine consists of 150,000 lines of C# code and executes
as a set of .NET assemblies, with no user interface, as part of a comprehensive
solution for analyzing health care risks and associated costs.
According to Atul Mistry, Vice President of Technology at Urix, the product's
reliance on Windows and .NET effectively limited its market potential. "Our
business partners have standardized on UNIX, and virtually all of our largest
healthcare insurance customers have UNIX-only requirements in their
datacenters, running on AIX, HP-UX, or Solaris. We figured we could convince
some of the insurance companies to use Windows and .NET, but this wouldn't
solve the significant sales barrier we faced. We also considered delivering
RiskSmart in a Software-as-a-Service (SaaS) offering, but the health care
industry is not yet ready for this type of approach. Bottom line is we would
lose significant business opportunities if we didn't deliver a UNIX
Mistry considered rewriting RiskSmart in Java and maintaining two source bases.
He estimated the rewrite would take two person-years for the initial port to
Java, plus two Java developers on an on-going basis to support ongoing
maintenance and enhancement costs.
Instead, Mistry chose Mainsoft's cross-compilation software, Mainsoft, Enterprise Edition. The software plugs into the Visual Studio development
environment and compiles Microsoft's Common Intermediate Language (CIL) into
Java bytecode. It also supports a long-term, single source code development
strategy across .NET and Java.
According to Mistry, the initial port of RiskSmart to Java using Mainsoft took
about two person-weeks. "The port was exceptionally easy, in part because the
ported Java code ran directly on a Java VM. Because there was no user interface
component to RiskSmart, there were no complexities associated with an
application server. There were only a couple of things we had to do manually,"
he explained. "We use log4net, an Apache project, as our logging utility, and
we simply had to switch that to log4j during the port. The second thing was
that we use a lot of XML, and there are some inconsistencies between Microsoft
XML and other implementations. Mainsoft's support team helped us resolve both
these issues very quickly."
Explains Mistry, "There's no apparent performance difference between the .NET
and Java versions of the application, which is currently in its third Java
release." The development team builds the application nightly, and then
executes Mainsoft to build the Java port. "Most product testing occurs on the
.NET version, with some testing done on the Java side to assure its integrity.
When RiskSmart for .NET is ready to ship, so is RiskSmart for Java."
Urix is now in production at virtually all of its largest health insurance
customers' datacenters, supporting 70% of all lives that are analyzed by the
RiskSmart calculation engine. Without a Java solution, the vast majority of
that business would not have been possible.
This project could have been accomplished using traditional porting and
software support techniques, but at a significantly higher initial and ongoing
maintenance cost, and a delay in product release, which would have resulted in
lost business. Mistry estimates that the company's savings on development and
maintenance costs are on the order of $200,000 annually.