Things get more complicated when custom hardware is involved. The prototyping, development, and testing effort can be much more extensive and complex than those of a garden-variety mobile, web, or PC application. This type of project requires additional expertise and skillsets most in-house development teams don’t possess.
For many product owners, this is uncharted territory. Unfortunately (or fortunately, depending on your perspective), the expected growth in applications dependent on internet-of-things (IoT) devices is driving a large increase in the number of these projects. Knowing what to expect when navigating these unfamiliar waters will go a long way towards preventing unpleasant surprises.
In this article, we describe some of the IoT application development tasks you might not think of if you’ve never been through the process.
As with any development project, an IoT application project starts by defining the business problem you need to solve. Just as important is defining what problems you aren’t going to solve in this project.
It’s tempting to include multiple related or similar problems in a development project but given the higher complexity level of a typical IoT application project, this kind of scope creep can have disastrous effects on the timeline and budget. Draw clear boundaries around the problem and keep the scope within those boundaries.
With a well-defined scope, you can start documenting the system’s functional requirements: What is the system supposed to do? In particular, what is the IoT device going to do? For example:
…and so on. Important additional questions to ask about the IoT devices include:
Once you have the hardware requirements specified, it’s time to determine if there are existing devices on the market meeting those specifications, or if you need to have your devices custom-built.
You may find commercial devices that meet your exact needs, but it’s more probable you will find devices that almost meet your requirements or that what you need doesn’t exist. The manufacturer might work with you to modify their design for devices that don’t quite match your specifications. Or you could revisit your requirements, trading off among your requirements, available devices, and cost.
When evaluating off-the-shelf devices, some important considerations include:
That last point is critical.
Ubiquitous IoT devices mean abundant pathways for potential hackers to access your network and data. Devices without security baked into the design are going to cause trouble.
If there’s nothing on the market that will suit your needs, be prepared for a longer development and testing cycle. The manufacturer you work with will need specific, detailed functional, physical, security, and performance specifications. The device will need firmware developed and may need a custom API as well to make life easier for the application developers.
The hardware will need to be tested, preferably under conditions that match the real-world environment in which they will be deployed. The tests should show whether the devices meet your specifications and if their performance is consistent over time and from one device to another.
On the application software side, development can be done in parallel with the hardware, to a certain extent. Full, real-world integration testing with the hardware can’t be done until the hardware is available for testing, so any data input from the devices might need to be simulated during much of the software development cycle.
Some potential pitfalls to avoid include:
In addition, security is just as important on the application side as it is on the hardware side. For high-risk deployments, consider enlisting the services of a security consultant who can try to “break” the system and make specific security-related recommendations.
When you’re satisfied the system has passed a rigorous, real-life testing regimen and solves the original business problem, it’s time to launch. How this is done depends on whether it’s intended for internal deployment or for sale to outside customers.
For internal deployment:
For external customers:
As you can see, the IoT app development process is quite a bit more involved than a run-of-the-mill software project. But careful planning, coordination, communication, and getting the right people involved in the project from the start can chart a smooth path to success.