Ontwikkelen en uitbreiden

We ontwikkelen rekensoftware voor en met onze klanten. We hebben de kennis om de beste algoritmen te ontwikkelen en de meest efficiënte implementatie te maken. Daarbij gaat het niet alleen om nieuwe software maar vaak ook om uitbreidingen op bestaande programmatuur.

Nieuwe en bestaande programmatuur

Bij ons werk gaat het zowel om het ontwikkelen van nieuwe software als om het uitbreiden van bestaande programmatuur.

Nieuwe programmatuur

Bij het ontwikkelen van nieuwe programmatuur begint onze rol vaak als vroeg in het traject. Meestal hebben klanten nog niet heel scherp wat de beoogde programmatuur moet gaan doen en welke eisen daaraan gesteld mogen worden. We helpen daar graag bij. Het voordeel van een vroege betrokkenheid is dat we mee kunnen denken in de keuzes die er gemaakt worden. Dat kan flink schelen in de kosten maar ook belangrijke voordelen hebben in de opzet van de programmatuur.

Ook verderop in het traject werken we graag nauw samen met de klant. Met frequente tussenopleveringen vragen we voortdurend om feedback, zodat de klant het werk naar believen kan bijsturen. Als de klant zelf ook ontwikkelaars heeft, werken we graag met ze samen vanuit de gedachte dat zij kennis en ervaring van het eigen bedrijfsproces hebben die wij niet hebben.

Aan het eind van ons werk wordt alle broncode en bijbehorende documentatie en testen opgeleverd aan de klant. Het uitgangspunt is dat de klant zelf onafhankelijk van ons verder kan met de programmatuur. We vinden natuurlijk fijn als de klant bij ons terugkomt  met aanvullende opdrachten. Maar dat moet dan wel voortkomen uit tevredenheid en niet uit gebondenheid.

Uitbreiden van bestaande programmatuur

Veel van de programmatuur waaraan we werken heeft al een lange geschiedenis. Heel vaak is de basis van de code al gelegd in de jaren ’80 van de vorige eeuw. Daarbij gaat het meestal om programmatuur die belangrijk is voor de bedrijfsvoering. In de loop van de jaren is er daarom al veel bij geprogrammeerd en ook nu zijn uitbreidingen of aanpassingen soms essentieel om:

  • nieuwe vragen uit de markt te kunnen beantwoorden,
  • nieuwe inzichten in het vakgebied te verdisconteren of
  • een betere gebruikerservaring te bieden voor een nieuwe generatie.

Dit soort programmatuur is bijna altijd zo omvangrijk dat een volledige herontwikkeling niet haalbaar is. Veel van ons werk bestaat dan ook uit het ontwikkelen van aanpassingen en uitbreidingen aan bestaande, complexe software. Dat is niet altijd eenvoudig, want veel van dit soort software heeft een relatief lage kwaliteit. Door de jaren heen hebben we onszelf geleerd hoe we daarmee om moeten gaan.

Specialistische kennis en ervaring

Onze software ontwikkelaars beschikken over de speciale kennis en vaardigheden die nodig zijn voor het ontwikkelen aan nieuwe en bestaande rekensoftware.

Intensieve kennis van wiskunde en algoritmiek

Om de rekentijd en nauwkeurigheid in de hand te houden gebruiken we slimme wiskundige benaderingen en algoritmen. Onze programmeurs zijn bekend met een breed scala aan wiskundige technieken. Ze houden zich goed op de hoogte van de laatste ontwikkelingen op dit gebied. Door hun ervaring zijn ze scherp op specifieke problemen die in dit soort programmatuur kunnen optreden, zoals het groeien van afrondfouten. Zie ook onze pagina over numerieke wiskunde en onze blog daarover.

Performance-aware programmeren

Een kleine slordigheid bij het ontwikkelen van rekensoftware kan de rekentijd of het geheugengebruik gemakkelijk factoren groter maken dan nodig. En dat terwijl rekentijd en geheugengebruik altijd enorm kritisch zijn bij dit soort programmatuur. Onze programmeurs leren tijdens hun werk al snel om dit soort slordigheden te vermijden.  Ze stellen er een eer in om zo te programmeren dat rekentijd en geheugengebruik minimaal worden. Uiteraard zonder de onderhoudbaarheid van de code aan te tasten. Zie ook onze speciale pagina over High Performance Computing en onze blog over dit onderwerp.

Keuze voor een heldere structuur en goede interne documentatie

Bij het ontwikkelen van rekensoftware spelen vaak zeer complexe algoritmen en datastructuren een belangrijke rol. Om de code onderhoudbaar te houden is het van belang om:

  • de structuur van de programmatuur helder en overzichtelijk te houden en te werken vanuit een goed gedefinieerde en doordachte architectuur,
  • gebruik te maken van zelfverklarende variabelenamen en functienamen,
  • op een effectieve manier commentaar toe te voegen zodat de lezer van de programmatuur goed kan begrijpen hoe de algoritmen geïmplementeerd zijn. Daarmee kunnen toekomstige programmeurs dan aanpassingen maken zonder de bestaande functionaliteit aan te tasten.

Zie ook onze blog over Scientific Software Engineering.

Een speciale manier van testen

Testen is bij rekensoftware anders dan dat van gewone programmatuur. De resultaten kunnen soms binnen bepaalde grenzen variëren waardoor het exact vergelijken van uitkomsten weinig zinvol is. Bovendien gaat het vaak om enorme hoeveelheden gegevens. Daardoor wordt het vinden van de oorzaak van een fout al snel heel lastig. VORtech heeft in de loop van de jaren speciale technieken ontwikkeld om toch snel te kunnen constateren of een programma doet wat het zou moeten doen. En om de oorzaak van afwijkingen snel te vinden.

Begrip van de toepassing

Onze programmeurs zijn natuurlijk niet een expert op elk toepassingsgebied waarin ze werken. Maar ze zijn wel in staat om zich snel de basistheorie van een toepassing eigen te maken. Of het meteorologie, bodemkunde, geluidshinder of waterstromingen betreft, doordat ze in veel gebieden actief zijn, zullen al snel een goede gesprekspartner worden voor de toepassingsexperts.

Heeft u interesse?

Neem gerust contact met ons op voor een kennismakingsgesprek. Als u meer over ons wilt weten, dan zijn onze manier van werken en voorbeelden van ons werk misschien interessant voor u.

Geïnterreseerd?
Als u denkt dat onze ontwikkelaars iets voor u kunnen betekenen, neem dan gerust contact met ons op voor een vrijblijvend kennismakingsgesprek.
Neem contact op