software is usually intended as an artifact whose ulti- mate purpose is constraining the behavior of an environment external to the computer, which the computer monitors and controls by means of transducers bridging between symbolic data and physical properties. In the case of a stand-alone computer such transducers just concern the human-computer interface and the standard I/O devices; for mobile systems they may also include position and acceleration sensors, while in the case of embedded systems they take the form of ad-hoc physical sensors and actua- tors. So, in the general case, the software’s ultimate purpose is achieved by running a code that produces certain effects inside a computer, which drives a physical machine, which in turn produces certain effects on its external environment.