これは私がかなりの時間をかけて取り組んでいる問題です。@VonCがすでに書いたものに、いくつかの考えを追加しましょう。
ソフトウェア構成管理のトピックはよく理解されており、多くの場合、商用環境で注意深く実践されていると思います。ただし、この一般的なアプローチは、多くの科学データ処理環境に欠けていることが多く、その多くは学界にとどまっている、または学界から成長しています。ただし、このような作業環境にいる場合は、すぐに利用できる情報やアドバイスのソース、および役立つツールがたくさんあります。これについてはこれ以上詳しく説明しません。
ソースコード全体を実行可能ファイルに含めるという提案は、実現可能であっても必要ではないと思います。実際、SCMを正しく取得した場合、それを実行し続けている重要なテストの1つは、「古い」実行可能ファイルをオンデマンドで再構築する機能です。また、各実行可能ファイルとバージョンで使用されたソースのリビジョンを判別できる必要があります。これらにより、実行可能ファイルにソースコードを含める必要がなくなります。
結果セットを計算に結び付けるというトピックも、あなたが言うように、不可欠です。構築しているソリューションのコンポーネントの一部を次に示します。
多くの科学プログラムの出力の特徴である従来の非構造化テキストファイルから構造化ファイルに移行しています。この場合、対象のデータとメタデータの両方を含むHDF5とXMLを調べています。保存されています。メタデータには、結果を生成するために使用されたプログラム(およびバージョン)の識別、入力データセットの識別、ジョブパラメーター、およびその他の多くのものが含まれます。
結果を保存するためにDBMSを使用することを検討しました。私たちはこのように行きたいのですが、今年はそれを行うためのリソースがありません。おそらく次の年もそうではありません。しかし、企業はさまざまな理由でDBMSを使用しています。その理由のひとつは、ロールバックして監査証跡を提供する機能などです。
また、どの結果セットを保存する必要があるかについても詳しく調べています。優れたアプローチは、フィールドセンサーからキャプチャされた元のデータセットを保存することだけです。残念ながら、一部の計算では生成に数千時間のCPU時間がかかるため、オンデマンドでそれらをab-initioで再現することは不可能です。ただし、将来的には、これまでよりもはるかに少ない中間データセットを保存する予定です。
また、ユーザーが結果セットを直接編集することを非常に難しくしています(不可能だと思いますが、まだそこにあるかどうかはわかりません)。誰かがそうすると、世界のすべての来歴情報は間違っていて役に立たなくなります。
最後に、このトピックについて詳しく知りたい場合は、「科学的なワークフロー」と「データの出所」に類似したトピックについてグーグルで試してみてください。
編集:私が上で書いたことからは明らかではありませんが、プログラムを変更して、プログラムに独自のIDが含まれるようにし(Subversionのキーワード機能を使用して、独自の拡張機能を1つまたは2つ使用しています)、生成される出力にこれを書き込みます。