you have a breakthrough concept and even an early version that works or sort of works. now you have to turn it into a reliable medical device that will meet fda’s scrutiny and do well in the market.
|for more tips on commercializing medical devices, attend the md&m minneapolis conference, october 28–30, 2013.|
even early-stage life science projects initially intended only for use in research often migrate toward commercial products that must adhere to regulatory requirements. typically, the scientists on the project don’t have the software skills or experience required for productization. software specialists will start with good planning. getting the software completed for a commercial product can be a bumpy journey, but this basic map can help smooth the ride.
while you begin with a proof of concept, you shouldn’t aim to reuse much of that software or expect the final product to look very similar. that original system shows your idea can work but probably has unexpected errors or crashes, produces some invalid results, and requires a lot of hand-holding to use. the proof of concept is good for demonstrating what the device can do but is not a sturdy foundation to build on.
solid planning is a critical success factor
- the key step in getting the software to a stable position is planning. that probably sounds dull, but it’s actually where creativity can really flow. planning is critical to developing successful software. here are some fruitful ways to start the planning process:
- assess how competitive products work to see how good your software has to be, what differentiates it, and where you can make other improvements.
- consider the range of potential users—not just the specialist who will use the core feature—and think about what they will need and want.
- look at the limitations and problems plaguing your proof of concept and consider how they can be addressed by expert software developers who can easily implement corrections or refactor fragile code.
- note the new features you think of in the course of the planning. for example, remote monitoring via a tablet app.
- it’s not too early to begin planning for quality control and regulatory approval of your product. consider what you need for 21 cfr 11 for electronic records and signatures, reporting, and calibration, for example.
- think about diagnostics that may need to be included in your system. when problems arise, you will be glad you have tools to resolve them. ?
identify inefficiencies by mapping workflows
after your initial planning, move on to planning the various workflows. you will need to map each workflow out and then revise a few times for improved efficiency and ease of use.
physical workflow. in life science products intended to process samples, focus on reducing the time required to process those samples and increasing the success rate. determine how you will track samples. perhaps you will want to use barcodes to automate data entry. find instances of idle time for one sample that you can take advantage of by doing other work on the next or previous sample. figure out if you can use batches and racks, and determine their appropriate sizes. investigate newer technologies, such as smart consumables from sony dadc biosciences.
for medical devices intended for patient treatment, document the patient workflow for the device use from beginning to end. determine what information the system needs at each step and how that data will be delivered.
data workflow. record when a sample or patient record goes in and a report comes out, and detail what happens to the data in between. document how the information is input at each step, where it is stored, and who needs to see it and when and where. look for easier ways for input as well as output, such as exchanging data with an lims or his, or a report on a web interface instead of a printout.
user workflow(s). consider the various tasks the software must perform and the types of operators for each. design user interfaces (uis) to accomplish the tasks at a high, rough level with slides in powerpoint or another lightweight application. for a complex or critical workflow, consider developing a functional ui prototype using sketch or a similar software tool, so you get it right. just don’t expect to reuse the code in the product.
the goal is to prototype quickly without concern for robustness of code. you will make lots of changes, so investment in elegant code is wasted at this stage. ?throughout the planning stage, formally record and update the requirements. this is critical not only because you’ll need them for your 510k or pma submission, but also because they direct your development effort.
requirements set the scope, let you know when you’re done, and help you prevent feature creep. a good requirement statement is clear and unambiguous, atomic, and verifiable. a requirement should not be stylistic, express an opinion, or be open to interpretation. for example, “the system shall process a sample plate in under 10 seconds” is a good requirement because it sets clear boundaries and is measurably testable. ?
time savers ?
limit the requirements to what you want to verify, and do not include how you want the feature to work; that will be addressed in specifications. if your requirements include “the how,” the verification process will be burdensome. ?
prioritize the requirements. it’s rare that a first release product addresses all the imaginable features, so identify the importance of these features up front. when facing schedule or budget issues, the priorities will help you decide what to defer or cut. ?some developers might shortchange the planning process to show quick progress, and there is even a misperception that development without planning is the agile approach to software development. with agile, there is still planning; it’s just not all done at the beginning of the project. instead, the detailed planning is done “just in time”, meaning not until you begin to work on those features.
there are some aspects of agile that must be done differently to develop a regulated product. for example, agile directs a project with user stories like, “as a clinician, i want to be able to observe results from a particular date.” that’s not enough for a regulated product, so break the stories into multiple requirements that a software developer and quality assurance (qa) engineer can implement and test: store the results in a database, encrypt the data, show results for a specified date range, and archive and dearchive the results. (for related information, see using agile to achieve rapid failure.)
keep everyone headed to the same destination
at this point, everyone is anxious to start coding, but there’s still more planning to be done, and it’s the kind not everyone enjoys: functional and design specifications.
documenting specifications upfront and maintaining them throughout the process provides guidelines for software developers and quality assurance engineers; they ensure everyone is headed to the same destination.
functional specifications are written primarily from a user’s perspective. they describe the actions on and between the screens, plus any hardware that is affected by or that affects the screens. developers then write the software to match the functional specification, and the qa engineer tests against it (although not for formal verification and validation, which is distinguished later). screenshots can be included in the specification.
when following an agile approach, the specification would not be completed upfront but continuously updated to reflect features about to be coded.
design specifications ensure the coding structure is well thought out. these specifications are consumed by the software engineers as guidance for implementation but can also be helpful for product maintenance. included in the document are the system architecture, state machines, protocols, database schemas, algorithms, and the aspects of standard toolkits that will be used.
you will also need to determine what tools to use. three critical tools needed are source control, bug tracking, and project management. these tools can come in many different forms, from single-purpose to fully integrated application life cycle management suites. open-source tools can be perfectly suitable, too. be sure to plan the time to set them up and configure the tools for your needs.
for a regulated product, be sure to validate the tools. working with integrated multirole tools requires a bigger time and monetary investment. one way to manage the burden is to break up the adoption into components. for example, set up and validate microsoft’s team foundation server for only the bug tracking and source control; you can do the same for continuous build integration and automated testing later.
finally, during the planning phase, identify what you will need for testing, verification, and validation, and when you will need it.
a good process includes testing throughout and may include unit tests and load and performance tests. in some cases, the tests can be automated to run when code changes and new modules are checked in. sqa engineers will augment automated tests with solid manual testing at milestone points to uncover remaining bugs.
formal, written verification protocols are needed to demonstrate that each requirement is met. during the planning stage, you determine the protocols needed and create a traceability matrix to document where each requirement is verified. writing the actual steps and expected results happens later, during the coding phase, but is based on the requirements and functional specification.
validation testing will confirm the product performs as expected for the intended application. this form of testing often involves domain experts and the full system at its intended environment. again, the tests required are identified during planning but not created until coding is underway.?with the planning done and by using professional, experienced software developers, qa engineers, and a project manager, the implementation will proceed much more smoothly. you’ll still face some problems along the way, like unexpected technical hurdles and staff changes. but you can review your prioritized requirements, triage the least important, avoid feature creep, and defer bug fixing where appropriate. ?
planning again ?
when you are ready to ship, it’s time to begin planning for the next version. start by doing the following:
- label and archive source code with build instructions.
- consider branching the code. doing so will allow you to fix any important bugs found after the original release while you work on a new release.
- plan for user surveillance and getting the feedback for the new release.
finally, you’re ready to begin the development process all over again. for the next version of your software, you’ll also consider your triaged bugs and features from the earlier release, new developments and technologies in the market, and user feedback and requests based on the first version.
by applying thoughtful and organized upfront planning for the software, you are much more likely to end up with a commercial success.
andrew dallas is president and cto at full spectrum software. for nearly 20 years, full spectrum software has developed software and provided quality assurance services for the medical device and life science industries. the firm is iso 13485 certified and follows the iec 62304 standard for software development.