Software engineering

When working with cyber-physical systems, such as IoT devices and robots, it is crucial to employ rigid software engineering principles. Such principles involve several things, not at least: automated building of software with cross compilation, formalized deployment and version control, tagging of both source code and compiled binaries, containerized runtime environments, and revision control of source code.