Developing and extending

We specialise in the development of computationally demanding software for our clients. We develop the right algorithms and build the most efficient implementation. Not only for new applications but also to extend existing software.

New and existing software

New software

Our involvement often starts early in the development cycle. In many cases, the client only thought out the main functionality but does not have a fully detailed requirements document. We like to help elaborating such initial ideas. This allows us to advise on the choices to be made, based on our expertise and experience. Sometimes, this can reduce the project costs significantly. Or it can for instance lead to an approach that makes the solution easily extendable in the future.

But our intensive contact with the client doesn’t stop after the requirements phase. During development, we regularly send intermediate releases to ask the client for feedback. Thus,  the client is fully in control over what we make. If the client has own in-house developers, we welcome the collaboration with them. After all, they probably better understand the client’s business processes than we do.

When our work is done, we send all the source code, documentation and tests to the customer and help them familiarize themselves with the products. As a principle, the customer is free to do with the products whatever they want without the need to involve us. Obviously, we like it when clients come back to us with more assignments. But that should be because they are happy with our work, not because they are bound to us.

Extending existing software

Often, we work on extending software that already has a long history. It’s not too rare that the basis was laid in the eighties of the last century. Even so, the software is usually critical for a company or institute. Over the years, much has been added to the code and further extensions may be needed to:

  • answer new questions that arise in the market,
  • incorporate new insights in the field, or
  • offer a better user experience for a new generation.

As most of these software packages are so extensive, a complete redevelopment is usually out of the question. The bulk of our work is therefore adding functionality to existing software. That is not always easy, as much of this kind of software has a relatively low quality. Over the years, we’ve taught ourselves how to deal with such legacy code.

Special expertise and skills

Our software engineers have the special knowledge and skills needed for the development of computationally demanding software.

Thorough knowledge of mathematics and algorithms

Clever mathematical approaches are needed to limit computing time and control accuracy. Therefore, our software developers have to master a wide variety in mathematical techniques and be in touch with the latest developments in this field. In addition, they have to be aware of the specific problems that can arise in this kind of software, like rounding errors getting out of control. Check out our blog and page on numerical mathematics for more information.

Performance-aware development

Even a small carelessness in developing computational software can make computing time and memory use many times higher than necessary. And that is an issue as computing time and memory use are always critical for this kind of applications. Our developers quickly learn to avoid such carelessness. Their professional honor tells them to program in such a way that computing time and memory use are minimal without sacrificing the maintainability of the code. Check out our page on High Performance Computing and our blog on this subject.

A clear structure and good internal documentation are essential

Computational software usually features extremely complex algorithms and data structures. To keep the code maintainable, it is essential to:

  • keep the structure of the code clear and to work from a well-defined and well-conceived architecture,
  • to use self-explanatory names for variables and functions,
  • to effectively add comments that help the reader of the software to understand how algorithms are implemented. This will allow future developers to modify the code without damaging it.

Check out our blog on Scientific Software Development for more information.

A special way of testing

Testing computational software is different from testing administrative software: the outcomes may vary a little which makes it impossible to do exact comparisons of results. Also, the results are often huge sets of numbers which makes it difficult to find the source of a difference. Over the years, VORtech has developed special techniques that help us to determine whether the software does what it is supposed to do and to find the cause of deviations quickly.

Understanding the application

Even though our software developers cannot be an expert in every field in which their software is applied, they are capable to quickly learn the basics. Whether the application is from meteorology, geoscience, noise protection or water flow, our developers will quickly become a valid sparring partner for the real expert.

Are you interested?

Feel free to contact us for a chat. Or, if you want to know more about us, you may want to have a look at our way of working and examples of the work that we have done.

Interested?
If you think that our developers can be of assistance for you, feel free to contact us. We'll be happy to come and meet you to see what we can offer.
Contact us