If 'software' is a description then you need an agent to whom the software is useful/meaningful in a given context. Layered 'software architecture'? An 'OSI' model of interaction?https://twitter.com/Plinz/status/1212791438347358208 …
You don't start out in a physical world. You start out in an aphysical world, and everything you interact with is a model. If you want to communicate about your interactions, the system you are communicating with needs to implement isomorphic models.