Objects rely on software to communicate effectively with each other and to deliver enhanced functionality and connectivity. Software should be developed with the IoT's interoperability, connectivity, privacy, and security requirements in mind. The focus of software development is shifting to user-oriented, distributed intelligence and machine-to-machine and machine-to-human collaboration.