What is software?
This question seems useless, as its answer looks clear to everybody. Yet this is a case of why are you asking? (Winograd & Flores).
From the point of view of SCM, one is interested in "Software
Configurations", and more precisely in their "management". This
management will drive us to an analysis performed on generic bases,
and which identify "configuration items". These configuration items
must offer as such universal properties authorizing their
management. They must be identifiable as instances of larger families,
themselves allowing to describe relationships which will be
interpreted as dependencies.
Now, the paradox is that this identification will be tool
dependent: there would be no point in refusing to move the
responsibility of the control onto a tool, which will guarrantee the
validity of the information gathered, its consistency. Not doing so in
the name of a separation between specification and implementation
would be foolish and dogmatic. Worse, it would contradict the very
goal of SCM, by enforcing a weaker management, based upon prescription
where description would be affordable.
The paradox is that what is the object of the SCM tool, is only a
representation (see
Schopenhauer).
Software is then restricted to whatever may be matched to its
representation, in a formalism supported by the SCM tool. This is the
price to pay for objectivity.
At the opposite, is the viewpoint of
reuse. Reuse is still more of a wish
than of a reality. If one wants to radically distinguish it from "use"
--otherwise, one is just paying lip service to fashion--, one is to
understand in a strong acception: reuse is non anticipated use, but in
a way which doesn't prevent or invalidate previous classical "use".
This is tightly bound to the Open-Closed Principle (Meyer) and might
be thought as being characteristic of software: only software can --at
least conceptually-- be reused.
It is amusing to consider that our opposite point of view are
thightly coupled: reuse will happen on the basis of "components",
in which it will be tempting to recognize "configuration items".