You are on page 1of 13

Roy Liang Senior Software Engineer Medtronic Neuromodulation Product Development

Implantable Medical Device Overview


Device Application Software

Programmer Software

Telemetry Head

Programmer

Implantable medical device

Software Product Development


Device Application Software
Many devices Each has its own application software Must talk to the Programmer Platform software

Programmer Platform Software


Takes commands from the application Encodes/encrypts data and transmits downstream to the device

Device Firmware/Hardware
Decodes/decrypts data Executes commands Sends back ACK/NACK upstream

Investigate
Determine Feasibility Determine what issues exist in the field Determine what improvements clinicians want
The customer is the clinician (doctor, nurse, etc.) Patients do not see the application

Determine requirements

Design
GUI Design (From customer inputs) Software System Architecture Software Design

Plan
Schedule Feature Assignment Prototype Refine/Redesign

Lifecycle/Maintenance

Create
Program (Write Code) Unit Test (Does the code work?) Integration Test (Does the code play well with others?)

Evaluate (Software V&V)


Requirements Analysis Functional Test (Verification)
Investigate software design Design test strategy Plan tests, execution, and retest Create and execute test Evaluate results

System Test (Validation)


Usability Test (Field test with clinicians)

Quick Exercise (Investigate & Evaluate)


I need a program that will calculate the length of the third side of a triangle after a user inputs the lengths of the first two sides.

Investigate (What questions would you ask the customer?)


Is there a limit to how long/short the sides can be? What is the angle between the sides? What kind of triangle?

What are the units?


How are the numbers input?
Typed? Selection box? Voice command?

Evaluate (How would you test this program?)


Is the calculation correct/possible? What if the user enters really big numbers? What if the user enters really small numbers? What if the user enters a really big and a really small number? What if the user enters a negative number What if the user enters zero? What if the user enters only one number? What if the user enters an invalid angle? (>180, negative, or zero)

Questions?

You might also like