Sun WorkShop TeamWare ユーザーズガイド

ソフトウェア開発作業の調整

大規模なソフトウェア開発プロジェクトでは、複数の開発者が共通のファイルに対して行う作業を調整することが複雑で困難になってきます。

開発者が個人でソースコードのコピーを持っている場合、ソースコードに加えられたそれぞれの変更内容をどのタイミングで (最終的あるいは定期的に) 1 つのコードにまとめるかという判断は非常に難しい問題です。相互に矛盾する変更内容 (以下、これを「衝突」と言う) がきわめて微妙な相違であるが、それがプロジェクト全体の作業に大きな影響を及ぼすことがあります。そのため、最終的なソフトウェアの構築およびリリースのためのコードを準備する作業は、困難な仕事になりかねません。

こうした問題は、共通ファイルへのアクセスを一度に 1 人の作業者に限定することで一応解決できます。この方法により、変更を同時に加えたために衝突が発生するという可能性はなくなります。しかし、この方法では、1 つのコードに一度にアクセスできる開発者の数が 1 人に限られているため、生産性の点で問題があります。

開発者は、中間製品および最終製品の作成に使用するソースファイルのグループ化および使用方法を変更することがよくあります。通常、プログラムを作成するために必要なソースファイル、ヘッダーファイル、ライブラリを、開発者はすべて知っている必要があります。開発者が、一連のファイルを別の場所にコピーした後、それらが不完全であることに気付くことがあります。通常は何回も失敗を繰り返した後、プログラムを正しく作成するためにはどのファイルが必要であるかを判別できるようになります。また、ファイルだけではなくファイルシステム構造にも変更が加えられることもあります。プロジェクトの進行中は、いつもどこかで新しいファイルやディレクトリが作成されたり、名前が変更されたり、削除されたりしています。

製品のリリースを円滑に進めるために整合性を保って正しいソースコードを保持しておくのも、大規模なソフトウェア開発プロジェクトでは実現が難しい問題です。開発者が自分の作成したコードを直接主なソース階層にマージする方法をとると、ある時はプログラムを正しく作成できても、次回はできない、あるいはできても前回とは矛盾が発生するといった問題が生じる可能性があります。

大規模なプロジェクトにはもう 1 つ、開発のある特定段階 (たとえば、過去のリリース) の製品を再生成できなくなることがあるという問題があります。ソースコードの「デルタ」の保持は、いくつものファイルのいくつものコピーに同時に変更が加えられる場合には困難になってきます。開発者は通常、複数のデルタを使用するために時間を費やすようなことはしません。並行開発作業を正確に表現するには、SCCS の分岐デルタを使用する必要があります。デルタが壊れたり、本来は並列デルタであるのに順次デルタの形で表現されてしまうと、該当ファイルの正しい履歴は失われてしまいます。

ある機能の開発がある特定のリリースで初めて開始され、後で (そのリリース日付とごく近い日付で) 別のリリースにその機能を組み込むような決定がなされることもあります。このような場合は、変更内容をさかのぼって、それらを別のリリースに組み込まなければなりませんが、この作業もやはりたいへん困難です。