  Evolving user requirements presents a considerable software engineering
challenge, all the more so in an environment where data will be stored for a
very long time, and must remain usable as the system specification evolves
around it. Capturing the description of the system addresses this issue since a
description-driven approach enables new versions of data structures and
processes to be created alongside the old, thereby providing a history of
changes to the underlying data models and enabling the capture of provenance
data. This description-driven approach is advocated in this paper in which a
system called CRISTAL is presented. CRISTAL is based on description-driven
principles; it can use previous versions of stored descriptions to define
various versions of data which can be stored in various forms. To demonstrate
the efficacy of this approach the history of the project at CERN is presented
where CRISTAL was used to track data and process definitions and their
associated provenance data in the construction of the CMS ECAL detector, how it
was applied to handle analysis tracking and data index provenance in the
neuGRID and N4U projects, and how it will be matured further in the CRISTAL-ISE
project. We believe that the CRISTAL approach could be invaluable in handling
the evolution, indexing and tracking of large datasets, and are keen to apply
it further in this direction.
