Medical Device Software Today
The days of basic minimally functional devices being accepted in the market are gone. Like it or not, today’s users expect their device to act like their iPhone or Tablet. Screen buttons animate upon press, lists should scroll gracefully, and graphics must be attractive. And human factors must now be accommodated – a well-designed user interface (UI) is essential for safety, reducing the possibility for user errors.
And now with IoT, users expect their software to be remotely accessible when there are problems, easily upgradable, yet secure. In short, you need embedded engineers, controls engineers, applications engineers, UI designers, web developers, security experts, and test engineers, all working together to develop the software of your project. And expecting that you are not Google and you have limited software staff, how can you do it?
The reality is that you may need to outsource some or all of your software development, depending on your in-house expertise. Software development takes time, is complex and you can’t afford to get it wrong.
Experienced software providers should not be starting projects from scratch. The more disciplined they are, the more well-defined their code-base should be. The basic software frame-work is more mundane (inter-component communications, threading, event handling, test support…) than the user application, but it forms the foundation of your software system. Getting it right is crucial for the success of your product, and your provider should have this available. Poor design will result in unmaintainable and ultimately buggy software.
It is safe to assume than software not tested is broken. Even the best programmers introduce bugs in their code. If your provider does not emphasize test with rigor and discipline throughout the development life cycle, your device quality can suffer. This has nothing to do with final V&V – this is unit and integration testing done while the code is being developed. From Systematic Software Testing by Rick D. Craig and Stefan P. Jaskiel: “Testing is a concurrent lifecycle process of engineering, using and maintaining testware in order to measure and improve the quality of software being tested”.
Ask your software provider for their test strategy. What tools have been developed to make test easy? Can test be automated for regression testing? Can faults be injected, and behavior checked? By the end of development a robust suite of automated tests should verify that changes do not introduce errors. This should be part of your provider’s development package.
Assuming that time to market is critical, you want to start working on your application before it’s prototyped. There’s no reason your user interface, business logic, data handling and storage can’t be developed while your mechanical/electrical system is being created, as long as your provider has support to simulate the device interface. Like test, this support should be integrated into the system design – not an after-thought.
Chances are, when your device is first tested, it’s not going to work perfectly. To find the source of these problems and run tests, will require software. Your software provider should have a method to allow non-software staff to change parameters and run tests without a software engineer.
Software Regulatory Expertise
The regulatory side of Medical Device Software governed by FDA software guidance’s and IEC 62304. This provides a separate and uniquely defined software risk analysis, beyond IEC1491, tailored to software. The bottom line is that knowledgeable software experts must prepare your software submission documentation, and it is crucial that your provider is well versed in the regulatory aspects.
Even if you have no software engineers on staff, make sure your deliverables will include full and complete source code, along with build instructions, details about tools used, and any license agreements. Companies can get themselves in a pickle when it comes to maintaining a product down the line if they don’t have this. You may later build a team in-house to support your software or chose a different provider. Don’t lock yourself in.