Software DevelopmentWhether you are embarking on a new development project, trying to rescue a failing project or simply looking for advice on feasability, we can help. We have extensive experience in all aspects of software engineering, from the lowest level assembly language device drivers to high level application code and 4th generation systems.
A few examples of recent projects we have completed are described below.
Optimising display performanceA US-based Fortune 500 client was selling a diagnostic device which included an LCD-based waveform display. Recent improvements to the software and hardware meant the display driver was no longer able to render the waveform rapidly enough to provide a realtime view. A 3x improvement in speed was required to make the product feasible.
We investigated the problem, identified the main performance bottle neck, and then implemented specific code changes to address this. The changes required adding some custom capability to the underlying video device driver which took into account specific characteristics of the waveform being rendered. Changes were made in 80x86 assembly language.
The resulting driver was ten times faster, leaving plenty of headroom for future improvements to the software. Elapsed project time was three weeks.
Developing a remotely managed VPN gatewayA UK client required a standalone Virtual Private Networking gateway device suitable for installation into their customer's offices, and capable of remote management. Both price and performance were significant constraints.
In order to meet these goals, we identified suitable off-the-shelf hardware and separate VPN-capable software to use as a base platform for the product.
We integrated the software to the hardware platform, then developed a remote management software layer to allow easy access, control and configuration of the gateway from a central network management system. Additional features to provide robustness in the field (e.g. dual boot images) were also added.
Initial specification of the product took one month, with an additional six months of development time required to deliver the final product to the client. Development languages included Perl & C, along with a proprietary scripting language.
Trouble-shooting a QoS moduleA European client had an existing IP-based router product which included a Quality-of-Service feature intended to prioritise certain types of network traffic. After several years of development, with multiple developers, this feature was still not working correctly. We were called in to identify and correct the flaws in the system.
Initial analysis took one week, and included development of a test tool designed to highlight known and suspected problems. Analysis was complicated by the fact that the QoS module ran primarily inside an interrupt driver.
Nine distinct flaws were located in the existing system design, along with some additional coding bugs. Implementing fixes for these problems took an additional three weeks. Upon completion, the QoS module passed all system tests flawlessly.
"The ultimate metric that I would like to propose for user friendliness is quite simple: if this system was a person, how long would it take before you punched it in the nose?"