IoT solutions provide many challenges to software development, with connectivity impacting the many layers of the software stack. Ideally, the best approach results in software that drives IoT solutions for the future, with the users’ evolving needs in mind, while delivering on the promise and benefits of connectivity. From our many years of designing software that drives IoT solutions, we wanted to share some of our best practices in software development for IoT.
Team of software collaborators
A process that leverages a team of software collaborators puts speed and structure around software development for IoT solutions.
Testing and gathering critical feedback is what makes product development a success. Ideally, you want to get a version of the software in as many users’ hands as soon as possible and be prepared to address their feedback. Traditional linear development methodology, known as waterfall, can often fall short in this area. The formal process and change controls used with waterfall fail to meet the reality of rapidly changing user requirements. The drawback of waterfall projects lie in the lack of ongoing customer feedback. If your requirements aren’t on point, expectations will not be met.
Iterative, cross-platform software collaboration is more advantageous due to its flexibility and direct connection to the end user. An iterative approach is micro-goal driven, with an easy process in place to adjust to changing requirements. This improves your team’s ability to accurately and efficiently manage costs, and it provides the quickest route to market.
How is this accomplished?
Born out of the agile methodology, iterating through vertical slices in the software stack is not a sequential, straight-line process. Every component in the stack is addressed in a series of continuous, quick-moving sprints that deliver a market-ready product at the end of each. The project moves in manageable pieces. There are no surprises.
Communication is vital to collaboration. Developers are in ongoing contact with the customer through daily scrums, biweekly planning meetings and biweekly reviews. This accelerates decisions, including changes, throughout the process. There is no opportunity to go down deep rabbit holes or misstep on the scope implementation. This level of governance keeps the variance narrow.
The stack revisited: Vertical-slice software collaboration
Take another look at the software development stack for IoT solutions. The ideas hold true, but by slicing vertically you will enrich the software creation process. For example, we’ve already discussed the importance of scalability. What happens if your database needs to be changed during deployment? When you develop in slices, variances are negligible and the client gets exactly what they need.
Here’s how slicing works with the software stack you’re already familiar with:
- User interface: Wire framing should be used to model the basic structures of the program. With each sprint, usability requirements can be fleshed out for the specific functionality assigned to the slice.
- Client platform: A slice calls for a specific feature on a particular device, an incremental addition to the existing capabilities of the application.
- Communication: Connectivity to the back end is an essential part of the slice, enabling a full round trip to the server and data storage to empower the client front end. New IoT product complexities further intensify the importance of security testing.
- Servers: Server interfaces are built according to the requirements of the client, using scalable and flexible frameworks, conserving costs and avoiding missteps in scope. This is achieved with the user always at the center of changes.
- Databases: Data models required by the front end are developed as needed, but require an architectural vision to prevent the buildup of technical debt.
For each functionality set, the user interface team will build a click-through prototype that you can touch, feel and test early in the process. Then, as the two-week milestones are delivered and approved, the application becomes shippable as a revenue-generating product.
With a process focused on a team of software collaborators combined with a vertical slice approach, the speed and structure around software development for IoT solutions is greatly improved, resulting in successful final products.
All IoT Agenda network contributors are responsible for the content and accuracy of their posts. Opinions are of the writers and do not necessarily convey the thoughts of IoT Agenda.