Это проблема, над которой я трачу немало времени.К тому, что @VonC уже написал, позвольте мне добавить несколько мыслей.
Я думаю, что тема управления конфигурацией программного обеспечения хорошо понята и часто тщательно практикуется в коммерческих средах.Тем не менее, этот общий подход часто отсутствует в научных средах обработки данных, многие из которых либо остаются, либо выросли из научных кругов.Однако, если вы находитесь в такой рабочей среде, есть легко доступные источники информации и советов, а также множество инструментов, которые могут вам помочь.Я не буду подробно останавливаться на этом.
Я не думаю, что ваше предложение о включении всего исходного кода в исполняемый файл, даже если это возможно, необходимо.Действительно, если вы правильно настроили SCM, то одним из важных тестов, которые вы сделали и продолжаете делать, является ваша способность перестраивать «старые» исполняемые файлы по требованию.Вы также должны быть в состоянии определить, какая версия источников использовалась в каждом исполняемом файле и версии.Это должно сделать ненужным включение исходного кода в исполняемый файл.
Тема привязки наборов результатов к вычислениям также, как вы говорите, очень важна.Вот некоторые компоненты решения, которое мы создаем:
Мы отходим от традиционного неструктурированного текстового файла, который характерен для вывода многих научных программ в сторону структурированных файлов, в нашем случае мыВы смотрите на HDF5 и XML, в которых хранятся как данные, представляющие интерес, так и метаданные.Метаданные включают в себя идентификацию программы (и версии), которая использовалась для получения результатов, идентификацию наборов входных данных, параметров задания и множество других вещей.
Мы рассмотрели использованиеСУБД для хранения наших результатов;мы хотели бы пойти по этому пути, но у нас нет ресурсов, чтобы сделать это в этом году, вероятно, не в следующем.Но предприятия используют СУБД по разным причинам, и одна из причин заключается в том, что они могут откатиться назад, предоставить контрольный журнал, и тому подобное.
Мы также внимательно изучаем, какие наборы результатовнужно хранить.Хороший подход - хранить только оригинальные наборы данных, полученные с наших полевых датчиков.К сожалению, для некоторых наших вычислений требуется 1000 секунд процессорного времени, поэтому невозможно воспроизвести их ab-initio по требованию.Однако в будущем мы будем хранить гораздо меньше промежуточных наборов данных, чем в прошлом.
Мы также делаем это намного сложнее (я хотел бы думать невозможным, но не уверен, что мы там еще)для пользователей, чтобы редактировать наборы результатов напрямую.Как только кто-то делает это, вся информация о происхождении в мире является неправильной и бесполезной.
Наконец, если вы хотите узнать больше об этой теме, попробуйте поискать в Google по теме «научный процесс» и «происхождение данных».1019 *
РЕДАКТИРОВАТЬ: Это не ясно из того, что я написал выше, но мы изменили наши программы, чтобы они содержали свою собственную идентификацию (мы используем для этого возможности ключевых слов Subversion с расширением или двумя нашимисобственные) и запишите это в любой вывод, который они производят.