Introductie
Klantenkring
Werkwijze
Software ontwikkeling
Embedded firmware
Embedded Linux
Technische automatisering
Gebruikersinterfaces
Electronica ontwikkeling
Contact
NCT instruments Products
Software ontwikkeling
NCT Developments heeft brede ervaring met het ontwikkelen van software. Eigenlijk spreken wij liever van technische automatisering.

Wij hebben onder andere ervaring met het ontwikkelen van de volgende soorten software:
- Firmware voor microcontrollers
- Digitale signaalverwerking
- Linux drivers, applicaties en achtergrond processen
- Windows applicaties en services (achtergrond processen)
- Koppelingen tussen systemen (protocolconversie)

Wij gebruiken hiervoor doorgaans de programmeertalen C en C++. Uiteraard kunnen wij ook bestaande programma's aanpassen c.q. uitbreiden indien de broncode en de ontwikkelomgeving beschikbaar is.

Er is bij ons ook uitgebreide ervaring met het zogenaamde cross-platform programmeren. Dit betekent dat een applicatie vanuit 1 broncode voor diverse OSsen en platforms kan worden gecompileerd. Dit maakt het onderhoud van een applikatie vele malen goedkoper zonder concessies te hoeven doen aan de 'look & feel' van een applicatie.
Ontwikkelproces
Om tot een goed einde te komen is het noodzakelijk om gestructureerd te werk te gaan. Onze aanpak is altijd hetzelfde ongeacht de omvang van de opdracht:

1) formuleren van eisen
2) analyseren welke data wordt gebruikt
4) uitwerking in diagrammen (flow-charts)
5) het programma maken
6) testen
Beveiliging
Beveiliging is tegenwoordig een hot-item. Vanwege de opkomst van internet en netwerken zijn computers en embedded apparaten steeds makkelijker bereikbaar voor kwaadwillende personen. Aan de andere kant wordt software steeds complexer en daardoor vatbaarder voor aanvallen van buitenaf.

Helaas zien wij in de praktijk nog steeds dat beveiliging vaak achteraf als een saus over een softwareoplossing wordt gegoten in de hoop beveiligingsgaten te dichten. Wij hechten veel waarde aan het opleveren van software die 'by design' bestand is tegen onheil van buiten. De software die wij ontwikkelen controleert invoerdata zoveel mogelijk op geldige waardes en intern bouwen wij ook een aantal controles in die ervoor zorgen dat de software doet wat het moet doen en indien er toch iets fout gaat, de fout op een gedefinieerde wijze wordt hersteld.

Daar houdt het echter niet op. Bij communicatie via een netwerk is het mogelijk dat kwaadwillende personen kunnen meeluisteren of zelfs kunnen inbreken op de verbinding. Wij kunnen indien nodig mechanismes inbouwen die meeluisteren en inbreken op de verbinding zo goed als onmogelijk maken. Dit gebeurd altijd op basis van een risico en kosten/baten analyse. Bijvoorbeeld: op een netwerk dat fysiek niet bereikbaar is voor kwaadwillende personen zal ongewenst meeluisteren al zo goed als onmogelijk zijn. In dat geval zal het beveiligen van het berichtenverkeer weinig toegevoegde waarde bieden.

Vanuit onze kennis omtrend beveiligingsvraagstukken kunnen wij ook bestaande systemen en software doorlichten op mogelijke beveiligingsproblemen.
Databases
In veel toepassingen worden heden ten dage databases gebruikt. In geval van embedded firmware en kleine hoeveelheden data gebruiken wij meestal een kleine dedicated 'engine' die de data beheerd. Indien het om grotere hoeveelheden data gaat wordt er gebruik gemaakt van databases zoals Sqlite, Postgresql of Mysql. Er is ruime ervaring met het optimaliseren van datamodellen om tot een optimale performance van de database te komen zodat ook databases met vele miljoenen records snel benaderbaar zijn en blijven.