Honesty first. We work only on realistic projects that fit our expertise and capabilities.

We enjoy to collaborate with highly qualified scientists and engineers to combine our expertise and to realize their ideas in new simulation tools. We like to share our experience with young and motivated researchers  willing to get help and boost their computational tasks.

The work on any project is divided in the following main stages:

  1. Send us an accurate and concise (1 - 3 pages) description of the project goals,  assumed methods (mathematical models or algorithms) to reach the goals, desired software technologies and languages, expected input and output and any additional information that may be useful to understand and evaluate the project.

  2. We discuss the project details until a clear and complete specification is agreed by both parties. In particular, we define the project milestones and the test cases needed to validate the code against known results if any.

  3. Based on the project specification we estimate budget and time needed to complete the job.

  4. Upon agreement we make an official contract or work via an outsourcing site (like freelancer.com) that provide safe deals service. A safe deal protects both parties and means that you release a milestone payment only when agreed milestone goals are reached. Otherwise you can get your money back via a dispute resolution service.

  5. You create a first milestone payment and we start to develop the code. Usually, at the first milestone the code should demonstrate the principal ability to solve the problem and to pass several tests agreed in the specification.

  6. You get and test intermediate version of the code. If milestone goals are successfully met by the code you release the current milestone payment and create the next one. We continue to work towards the requirements of the next milestone. The whole procedure is repeated until we reach the last milestone.

  7. Usually, for the last milestone we prepare the detailed derivation notes and thoroughly comment the source codes. A user guide is also supplied with the final version of the code.

  8. After the project completion we provide prompt technical support to help you to get familiar with the code usage and capabilities.

The main challenge in computational software development is to achieve the highest degree of code extensibility and reliability while keeping the minimum run time.

A simulation code should be developed like a LEGO constructor to allow easy and safe modifications or even replacements of underlying algorithms. Many our customers, especially researchers from academia, continue to improve their codes independently by implementing additional features or adjusting a mathematical model to find the best match to reality.

Reliability and correctness of the implementation is another cornerstone of a numerical code. The clever use of advanced capabilities of modern languages and special tricks that we have accumulated for years help to minimize possible errors or misprints (see our implementation of a formula that takes about 100 pages). Finally, extensive and hard testing is a must to ensure the correctness of a code.

The code execution time is a crucially important parameter in real life applications. For a given mathematical model it is mostly determined by computational complexity of the chosen algorithms. However, improper choice of software technologies or bad design may increase it drastically.

Why IvI Software

  • High quality solutions. We like what we do. Quality is a result of motivation and experience. We possess both.

  • Fast delivery time. A highly skilled developer works much faster than an average one. Moreover, a clever design or a right solution may save days or weeks of coding and debugging.

  • Cost-effective solutions. We charge standard hourly rate and you do not pay extra expenses for the large infrastructure. Additionally, a well designed code is easy to use and modify that further reduces the software life cycle cost.

  • Flexibility & Transparency. Being a small team we can easily adapt to particular requirements of a project. Customers have direct access to the project leader and stay in touch with the development issues and progress.

  • Peace in mind. We never take money if see that a project might fail. Our expertise and tight cooperation with a customer provide a high quality solution that makes both sides happy and satisfied.