One of the biggest concerns in designing IoT solutions is the impact of connectivity on the many layers of the software stack. This challenge is often compounded by the need to rapidly adapt to changing user requirements. However, the traditional linear development methodology, known as waterfall, follows a formal process with change controls that don’t allow for incorporating ongoing customer feedback. In the waterfall process, if your requirements aren’t on point, expectations will not be met as there are few opportunities to pivot.
Ideally, you need an approach that results in software that drives IoT solutions for the future, while keeping the users’ evolving needs in mind and delivering on the promise and benefits of connectivity.
How is this accomplished?
Test Often, Gather Feedback, Iterate
Testing and gathering critical feedback is what makes product development a success. You want to get a version of the software into as many users’ hands as soon as possible and be prepared to address their feedback.
An iterative, cross-platform software collaboration, born out of the agile methodology, 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.
Unlike waterfall, where there is a sequential, straight-line process, agile addresses every component in the stack in a series of continuous, quick-moving sprints that deliver an improved, market-ready product faster. The project moves in manageable pieces. There are no surprises lurking at the end of the process.
Communication is vital to the collaborative and iterative agile approach. Developers should be 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.
Less Margin for Error: Vertically Slice the Software Stack
Now, take another look at the software development stack for IoT solutions. By slicing vertically, you will enrich the software creation process. For example, what happens if your database needs to be changed during deployment? When you develop in slices, variances are minor, 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 while working to conserve costs and avoid missteps in scope. The user is 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 builds 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.
Danny Aponte is Senior Director of Software Engineering and IT at Intelligent Product Solutions.