Dies ist ein Problem, für das ich eine Menge Zeit arbeite. Zu was @VonC bereits geschrieben hat, lassen Sie mich ein paar Gedanken hinzufügen.
Ich denke, dass das Thema Software Configuration Management gut verstanden und oft in kommerziellen Umgebungen sorgfältig geübt wird. Dieser allgemeine Ansatz fehlt jedoch oft in wissenschaftlichen Datenverarbeitungsumgebungen, von denen viele entweder in der Wissenschaft verbleiben oder aus ihr hervorgegangen sind. Wenn Sie sich jedoch in einer solchen Arbeitsumgebung befinden, stehen Ihnen leicht verfügbare Quellen für Informationen und Ratschläge sowie zahlreiche Hilfsmittel zur Verfügung. Ich werde darauf nicht weiter eingehen.
Ich glaube nicht, dass Ihr Vorschlag, den gesamten Quellcode in eine ausführbare Datei einzuschließen, auch wenn machbar, notwendig ist.In der Tat, wenn Sie SCM richtig bekommen, dann ist einer der wesentlichen Tests, die Sie so gemacht haben und weiterhin tun, Ihre Fähigkeit, "alte" ausführbare Dateien bei Bedarf neu zu erstellen. Sie sollten auch in der Lage sein zu bestimmen, welche Version der Quellen in den einzelnen ausführbaren Dateien und Versionen verwendet wurde. Diese sollten den Quellcode in einer ausführbaren Datei unnötig machen.
Das Thema Verknüpfen von Ergebnissätzen in Berechnungen ist auch, wie Sie sagen, essentiell. Hier sind einige der Komponenten der Lösung, die wir erstellen:
Wir entfernen uns von der traditionellen unstrukturierten Textdatei, die für die Ausgabe vieler wissenschaftlicher Programme charakteristisch ist, in Richtung strukturierter Dateien, in unserem Fall sind wir es Betrachten von HDF5 und XML, in denen sowohl die interessierenden Daten als auch die Metadaten gespeichert sind. Die Metadaten enthalten die Identifikation des Programms (und der Version), mit dem die Ergebnisse erzeugt wurden, die Identifizierung der Eingabedatensätze, die Job-Parameter und eine Menge anderer Dinge.
Wir schauten uns ein DBMS an, um unsere Ergebnisse zu speichern; Wir würden gerne diesen Weg gehen, aber wir haben nicht die Mittel, dies in diesem Jahr zu tun, wahrscheinlich auch nicht als nächstes. Aber Unternehmen verwenden DBMS aus einer Vielzahl von Gründen, und einer der Gründe ist ihre Fähigkeit, einen Rollback durchzuführen, um einen Audit-Trail, so etwas zu bieten.
Wir schauen uns auch genau an, welche Ergebnissätze gespeichert werden müssen. Ein guter Ansatz wäre es, nur Originaldaten zu speichern, die von unseren Feldsensoren erfasst wurden. Leider benötigen einige unserer Berechnungen 1000 Stunden CPU-Stunden, um zu produzieren, so dass es unmöglich ist, sie zu reproduzieren ab-initio auf Anfrage. Wir werden jedoch in Zukunft weitaus weniger Zwischendaten speichern als in der Vergangenheit.
Wir machen es auch viel schwieriger (ich würde es für unmöglich halten, aber ich bin mir nicht sicher, ob wir schon da sind), damit Benutzer Ergebnissätze direkt bearbeiten können. Sobald jemand das tut, sind alle Herkunftsinformationen in der Welt falsch und nutzlos.
Schließlich, wenn Sie mehr über das Thema lesen möchten, googlen für ähnliche Themen wie "wissenschaftlicher Workflow" und "Datenherkunft".
EDIT: Es ist nicht klar, was ich oben geschrieben habe, aber wir haben unsere Programme modifiziert, so dass sie ihre eigene Identifizierung enthalten (wir Subversion Keyword-Fähigkeiten für diesen Einsatz mit einer Verlängerung oder zwei unserer eigenen) und schreiben diese in jede Ausgabe, die sie produzieren.