Software engineering is not a science: no clear distinction is made between the properties it is trying to model, and the models themselves. This hampers the development of a sound theoretical basis. For instance, though software metrics have been studied and used for decades, it is not at all clear what intrinsic properties of software they are actually meant to measure.
In this presentation, I start with the premise that there is such a thing as the "agility of a software system", which is (informally) the ease with which it can be adapted to changing requirements. In trying to formalise this, one of the first concepts that needs further scrutiny is that of "software change": surely, when a system is adapted from one version to the next, the "ease" of that adaptation corresponds to the distance from the old version to the next; or in other words, the amount of change involved.
In the presentation, I will approach the concept of software change by studying the properties of that concept, and capturing them as laws one may expect to be obeyed by the (as yet undefined) property. I then propose a concrete definition that satisfies all these laws. I will also briefly discuss how that property can be used as a building block in a definition of softare agility.