Software

Practical, but unofficial definition: data and instructions compiled and linked, or capable of being compiled and linked, into machine readable form such that the resulting executable must be loaded into an OS-controlled memory space in order to run. (i.e., it executes in a different memory space than where it is stored).

True software is never in-scope to the Part Number of the hardware on which it executes; the software’s identifying drawing (e.g., an SID) calls the hardware onto which it can be installed. The hardware’s identifying drawing at most references the software (an informal annotation on the hardware drawing, not used for establishing compliance to the drawing). This issue is critical to the Product Structure. It needs to be correctly reflected in order to drive the correct Engineering and Logistical aspects of the product’s life cycle, including (but not limited to) the allocation of Development Requirements.

Contrast with the unofficial definition of firmware, but be advised that the word “software” is often used in a sense that is generic to both, so you have to be careful.