In conclusion, while in the previous section we focused on the immediate function of programs as technical artefacts –producing some effects inside a computer– here the Jackson and Zave’s model allows us to understand how programs play their ultimate function, which is producing certain effects in the external environment (i.e., satisfying the high level requirements). Such function is realized in two steps: first, the internal computer behavior result- ing from running the program generates some physical effects in the environment at the interface with the machine (i.e., the programmable platform, including the I/O trans- ducers). For instance, a message appears on the screen. Second, under suitable assump- tions concerning the environment (for instance, there are people able to perceive and understand the message), the ultimate effects of the program are produced (e.g., the person who reads the message performs a certain action). The presence of these two steps in realizing the ultimate function of a program suggests us to introduce two further artifacts, a software system, whose essential prop- erty is being intended to determine a desired external behavior at the machine interface and a software product, whose essential property is being intended to determine some desired effects in the environment by means of the machine behavior at the interface, given certain domain assumptions.