App development for IoT devices is often very similar to classic software development. It has the same stages, the same partnership models, the same pitfalls. The process can also follow either agile or waterfall methodology, require thorough quality assurance and more.
Yet in addition to that, there are a few things specific to the IoT industry.How smart devices reshape the work of app developers? Which additional requirements does it impose?
What should you consider before and during the process of developing both your device and an app for that?We analyzed a few of our current projects and here are the 12 things we believe you should be aware of when building an app for your IoT device.1.
Firmware is the kingAny mobile app interacts with a devices firmware. This interaction should be perfectly developed and tested, so fast communication between a mobile app developer and a firmware developer is crucial.Its best when they are within the same team.
Usually, the firmware developers create specifications, and mobile app developers follow them. Sometimes, firmware developers sit in the clients office, which often ends up in delays, unfixed bugs, and decisions the app developers may not be aware of.Another common case is when the firmware is not documented properly, and we cant perfectly define the expected behavior of the device.
Each firmware update should also come with a change log, but sometimes it does not contain all the improvements and bug fixes made. That complicates quality assurance a lot.To keep up with the deadlines, we plan and spend half a day on each sprint on checking if the important bugs were properly fixed and how the new firmware behaves due to new functionality and changes.
2. Quality Assurance is More Time-ConsumingWith every firmware update, the application should be thoroughly tested again, as you never know how exactly the new version reacts to apps behavior and what new bugs it contains. While with other kinds of apps a developer can cover any piece of code with tests (see unit testing for more), with IoT devices it is impossible to perfectly emulate the device.
A QA specialist should always test the app manually (and on a real device whenever possible) in such cases.Quality assurance of a mobile app can be troublesome if the firmware has undocumented bugs. This is because in such cases the developers cant immediately figure out the source of the unexpected behavior (something is wrong with the app or with the firmware?
).3. Over-the-air updatesMany IoT businesses often prefer to prohibit users from using firmware versions that are too old.
When this happens, a mobile app should offer users to update the firmware; otherwise, they will be unable to use the device. While this approach is pretty common, it can cause unexpected situations. For instance, if you offer smart locks or smart bulbs, the inability to open the door or turn up the light in a critical situation may cause your customers to bring your device back to the store and write a negative review, which is a reputational risk.
How firmware updates should be performed is another thing to think about. They can be forced or recommended. They can be launched automatically or manually.
If youre going to make a hub for your device, it can be programmed to automatically update firmware at night. Implementing apps communication with a hub is also a part of the scope of work. 4.
One Tip to Deliver A Product FastThe development speed depends on the readiness of your devices firmware. If its ready, the mobile app is developed as any other mobile app; minor delays can be caused due to debugging the communication between the app and the device. If the firmware has not been even designed yet, the process goes significantly slower, as firmware and the app are two related projects and you need more resources to design, develop and test them at the same time and with the same pace.
5. IoT Technologies Require ExperienceAt the moment most of the devices weve been developing applications for use the Bluetooth Low Energy technology for connecting with smartphones. This protocol has its own specific limitations.
The developers should know them well to do everything right from the first time and speed up the development process. 6. Your Decisions Should Be Expertise-BasedDue to the lack of the technical expertise, our clients may at first make the wrong decisions on further development of the app.
While everything can be fixed or changed for usual mobile apps, it gets much more complicated with IoT, where wrong decisions may lead to devices that will fail on the market. So this is where the involvement of a CTO is highly recommended, especially if theyre on the development team side. 7.
Users Need a Recovery ModeOften, we add a recovery mode into a mobile app so that the user could recover their device in case it was accidentally bricked due to the incorrect firmware update process. But such feature requires allowing corresponding functionality in a device bootloader, which is, again, a requirement that should be posed to the device manufacturer, not developers.8.
Developers Need a Debug MenuIn addition to a recovery mode, we often implement a debug menu. The debug menu helps a lot when it comes to testing and allows to save time on quality assurance and also perform operations that are disallowed for end users (such as uploading an outdated version of the firmware to a device). Due to that, the debug menu is hidden both from the users and app store reviewers.
9. First Versions Will Be Far From PerfectWhen we start working on the new IoT project, the device is usually not yet finalized and may be buggy, not only due to its firmware but the hardware as well. For the same reason, expect that the first (alpha) versions of the app may behave unusually as well.
Also, sometimes, when the project is started, the device may not even be ready for using, learning and testing. In this case, we create the UX and the UI, and only once the device has been delivered, we write the code to implement the necessary functionality. The initial and final versions of the device may vary a lot, and so can the app.
This should be considered in estimates as well.10. Initial Requirements Might Require ResearchAs we often mention in our posts covering best software development practices, sometimes the project may require additional research on how to make an app standing out among others, how to design its best, which features should be first to implement and so on.
Such research, when necessary, may redefine the scope of work initially expected for your project.11. The App Design Wont Save a Faulty DeviceDesign is also extremely important here.
It is the defining point of how the user will interact with your solution. The simpler the app, the better. Thats because such apps are used pretty rarely and for short-term purposes (switch the lights, turn on the smart switch, open the lock, enable the thermostat, etc.
). If the user experience seems to be too complicated, the user will criticize the whole product (the app and the device).12.
Add a Feedback FormAnother problem is when the device is faulty, or the new firmware causes unexpected behavior. In such case a user may write a negative review in the app store, thus blaming the app, not the hardware. To avoid that, we put a feedback form in the app so that a user could write directly to us and avoid the app stores.
With these 12 tips we at Brainbean Apps hope youll get a better, smarter understanding of the app development process for your IoT device and will be ready to address any unexpected troubles during the project. RELATED QUESTION What is a locksmith? Historically, locksmiths constructed or repaired an entire lock, including its constituent parts.
The rise of cheap mass production has made this less common; the vast majority of locks are repaired through like-for-like replacements, high-security safes and strongboxes being the most common exception. Many locksmiths also work on any existing door hardware, including door closers, hinges, electric strikes, and frame repairs, or service electronic locks by making keys for transponder-equipped vehicles and implementing access control systems.