Compartilhar via


【コラム|プロセス改善】ソフトウェア構成・変更管理でのポイント

プロセス改善コラムの続編です。前回、前々回にて開発プロセスの基本要素について書きましたが、今回はソフトウェア開発において欠かすことができないソフトウェア構成管理、変更管理のポイントです。ちなみに前回までの内容は、下記に目を通しておいてください:

ソフトウェア構成管理というと、まっ先に思い浮かぶのがバージョン管理やソースコード管理と呼ばれるものである方も多いと思います。ですが、バージョン管理、ソースコード管理は、ソフトウェア構成管理の一つの要素にすぎません。そういう話はまた今度にして、今回は、概念的なポイントを書きなぐっておきたいと思います。

ここで、前ふりが活きてくるわけなのですが・・・ポイントは、成果物作業です。構成管理の管理対象は、もちろんソースコードをはじめとしたプロジェクトの成果物です。なんだ結局ソースコードのバージョン管理じゃないかと思うかもしれませんが、ソフトウェアの構成とはそんなに簡単なものではありません。一つ一つのソースコードにバージョニングをすることは、実はそれだけではそんなに価値のあるものではありません。だって、だれも 「foo.cs のVer1.2 がどうのこうの・・・」なんて会話しませんよね?内部的な情報としてこれらを記録・管理しておくことはもちろん重要ですが。

こういう内部的な情報をあまり意識することなく、日々の開発を実践していくには、実はワークスペース管理というものが重要になってきます。が、詳細はまた今度に(^^)

ポイントは成果物と作業ですと宣言したのでその話に戻します。成果物についてはまぁいいとしましょう(^^; ある開発作業を行うためには、入力となる成果物と出力となる成果物があるわけですが、これはソフトウェア構成管理を実践しているとチェックアウトとチェックインという形(そうとは限りませんが、とりあえずそういうことにしておきましょう)で表現できています。

重要なのは、作業なのです。作業は、そのままその成果物に変更を加えた動機になります。要するに変更理由になるわけです。たとえば、あるバグを修正する作業があったとしたら、修正前のソースコードが入力の成果物でこれを構成管理システムからチェックアウトして取り出してきます。そしてバグの修正作業を実施し、その結果、修正されたソースコードが出力の成果物となるわけです。そしてチェックインすると。出力の成果物の視点で見ると、作業はそっくりそのまま、変更の理由になっているのがわかります。また、これはこの作業の一連のトランザクションの単位でもあるわけです。このトランザクションを変更セットといいます。

開発プロセスでは、作業と成果物(と役割)が重要になってきますが、ソフトウェア構成管理ではそれらがそのまま適用、管理対象となるわけですね。

作業といっている部分をどう管理するのかというと、一番わかりやすいのはバグトラッキングです。ですが、開発の作業というとバグ修正だけではないですから、もう少し広い領域での作業管理(アクティビティ マネージメント)が必要になります。

作業は、実は役割をまたがりコミュニケーションを取る際に力を発揮します。ソースコードのバージョンやコードの内容は、開発者ならわかりますが、コードを書かない人とのコミュニケーションには難しすぎます。また粒度も細かすぎるといえます。たとえば、顧客との会話で「あのバグの状況はどうなのか?」という会話があっても、「あのバグをこのソースコードのこのバージョンで修正している最中です」なんて会話はないですよね?このように抽象度を上げてバグとか、タスクといった粒度でソフトウェアの品質や進捗をみることができるのはプロジェクトにとって非常に価値があるといえるのではないでしょうか。もちろん、その裏付けとしてソースコードのどこどこで何を誰がどのように何をしたのかをトレースできることが前提となります。 

ここではわかりやすいので Team Foundation Server(TFS) を例に出すと、TFS では、この作業の管理を作業項目としていくつもの種類を定義して管理ができるようになっています。そして TFS はもちろん構成管理の機能ももっています。TFS では変更セットをサポートしているので、ひとつひとつのソースコードのバージョンというわかりにくいものではなく、一連の作業の結果をセットにして把握することができます。この変更セットと作業項目を関連付けすることで、一連の開発作業を記録することができます。

といったように、ソフトウェア構成管理・変更管理を考える上では、ソースコードのバージョン管理を行うという狭い視野ではなく、開発の作業を管理するという広い視野で検討すると、より現場で効果をだす実践の仕方が導き出せることでしょう。

役に立つのかわからないけど、とりあえずバックアップになるし、なんとなく安心だからバージョン管理はしている・・・というある種受身的な考えではなく、よりアクティブにより現場で活用する戦略を考えるという発想もぜひお試しください(^^)

ながさわ

Comments