The Internet of Things Has Changed the Definition of Good Software
As the Internet of Things takes hold and more and more common appliances are run by software, people will be increasingly reliant on programmers’ ability to write good code. But how do we define “good code” or “good software”—and how do we get there?
In this new, connected world, I believe software for the IoT should be defined by eight requirements: It needs to be available, certified, compliant, flexible, reusable, reliable, secure and safe.
Available: This just means there must be software in the right place, at the right time, and at the right price. Software availability will be one of the most prevalent reasons for project failure. If we think the software crisis we had in the late ’60s is over, we probably underestimate the impact of the changes happening today.
Certified: Once available, software needs to be verified. As software will be everywhere, an internal testing team or outsourced quality services won’t be enough anymore. The number of certifications and certification authorities will grow.
Compliant: We will witness the explosion of software-to-software interactions. New standards will be needed every day, and new ways of assuring compliance to these new standards will be crucial.
Flexible: We won’t be able to update all the software in all our connected devices at the same time. New products will come out daily and will need to interact with existing products, and existing products will need to be equipped with software flexible enough to deal with the innovation constantly happening around it.
Reusable: We need to get better at making code reusable. Write small, individual components that are viable on their own in various use cases. That way, we won’t need to rewrite all the code every time, for every product, for every version and variant; when one of the components no longer works, just replace or update it.
Reliable: Software will not just need to do what it is supposed to—it will need to do it anytime, anywhere, in any context. More and more of our core assets will rely on software, including safety-critical systems. That means a software malfunction will be more than inconvenient; it could be dangerous.
Secure: Security used to mean protecting your online accounts and identities. But now that so many things are connected to the Internet, your car, your home, and more could be accessible from all over the world. Theoretically, anybody would be able to get into these systems from anywhere. Ensuring software security and preventing hacking attempts are more important than ever.
Safe: A defect in your mobile phone that drops a call is far less harmful than your car driving itself through the window of a café. The software that goes into the Internet of Things must protect not only the connected devices, but also the world around them.
Technologies and practices must evolve to meet the demands of today and tomorrow. Heeding these requirements will help us comply to new standards and expectations, mitigate risks, and create the next wave of “good” software.
Stefano Rizzo is presenting the session The 4th Industrial Revolution and IoT Predictions: A Software Perspective at the 2016 IoT Dev + Test conference. Learn more at https://iotdevtest.techwell.com.