静的解析,構成管理,MISRA-C,コードレビュー,バグトラッキング,リバースエンジニアリング
ソフトウエア開発支援ツール
SOFTWARE SOLUTIONS
ソフトウェア開発における品質の向上、および生産性の向上を目指して、最適な開発支援ツールを提供します。
PERFORCEの製品概要 > 技術情報 > ソフトウェア構成管理の 高度な実践方法
![]() |
||||||||||||
![]() 要旨
新しいソフトウェア構成管理(SCM: Software Configuration Management)ツールを自社内に展開するとき、実装担当者は、しばしば詳細な活動まで完璧に行おうとする一方、これまでのまずい大規模なやり方 を、知らず知らずに推し進めてしまいます。その結果として、大きな失敗を招いてしまいます。 1. はじめに
「道具は、それを使う人によって効果が変わる」とよく言われます。我々は、ソフトウェア構成管理(SCM)ツールの提供者、あるいはソフトウェア会社に対 するコンサルタントとして、SCMのベストプラクティスについての適切なアドバイスをしばしば求められます。すなわち、「どのようにSCMソフトウェアを 展開すれば最大の利益を得られるか」という内容のアドバイスです。このような要請に対し、我々は、直接的あるいは間接的な経験を豊富に持っています。直接 的な経験とは、我々自身が開発者あるいはコードラインの管理者であることによるものであり、間接的な経験とは、我々の製品(Perforce)や他の SCMツールを使った顧客の成功/失敗事例によるものです。 以下の表には、SCM展開における6つの一般的なポイントがリストアップされています。そして、各ポイントの中で、ベストプラクティスに関する概略を示し ています。 詳細については次章以降で説明します。
2.作業領域
作業領域とは、開発者が自分達のソースファイルの編集、ソフトウェア・コンポーネントのビルド、そしてビルドしたもののテスト、デバッグを行う場所です。 ほとんどのSCMシステムは、作業領域の概念を持っています。例えば、Source Integrityでは"sandboxes"、ClearCaseやPerforceでは"view"と呼ばれています。SCMのリポジトリで管理され たファイルを変更するという操作は、作業領域上のファイルを変更することから始まります。 作業領域に関するベストプラクティスは、次のようになります。 3.コードライン
本書におけるコードラインとは、ソフトウェア開発に必要な、基準となるソースファイルの集まりです。一般的に、コードラインは分岐してさまざまなバージョ ンのコードラインへと進化し、そのブランチは異なるリリースに盛り込まれます。これに基づいて、コードラインに関するベストプラクティスをまとめると、次 のようになります。 ![]() 図1 メインラインモデル 図1は、メインライン("main"と呼ばれます)と、そのメインラインから分岐しているいくつかのリリースライン("ver1"、"ver2"およ び"ver3")や機能的な開発ライン("projA"、"projB"、および"projC")を示しています。開発者は、メインラインや開発ライン内 で作業します。リリースラインには、テストや重大なバグ修正が待ち受けており、開発作業からは隔離されます。リリースラインや開発ラインに対して行われた あらゆる変更は、最終的にメインラインへマージされます。 別のアプローチとして、コードラインを「昇格させる」というアプローチがあります。例えば、開発ラインをリリースラインに昇格させ、新しい開発ラインをそ こから分岐させるというものです。図2 は、ある開発ラインがリリースライン("ver1")に昇格し、そこから別の開発ライン("projA")が分岐している例です。各々のリリースライン は、開発ラインとして出発し、開発作業はコードラインから新規のコードラインへ次々と移動していきます。 ![]() 図2 昇格モデル この昇格のスキームには、2つの欠点があります。1つは、コードラインの方針を変更しなければならず、これをすべての開発者に伝えることは、決して容易で はないということです。もう1つは、開発者に対して、進行中の作業を別のコードライン内で行うように強いるということです。このことは、エラーを引き起こ し易くし、時間の浪費にもつながります。実は、メインラインがないことを補完するためにコードラインの昇格を強いるケースが、SCM「プロセス」の 90%を占めています。 メインラインモデルを使用した場合、プロセスは合理的に簡素化されたものとなります。メインラインを用いることにより、開発者の作業領域と環境は、当面の 開発作業の間、安定したものとなります。そして、ソフトウェア製品がそのライフサイクルの成熟期を迎えるまで、管理上のオーバヘッドがさらに発生すること もありません。 4. ブランチ
ブランチ機能は、あるコードラインからバリエーションを作成するため、SCMでは最も問題となり易い部分になります。さまざまなSCMツールが、まったく 異なる方法でブランチ機能をサポートしています。また、さまざまな方針により、さらに異なる方法でブランチ機能を使用する必要が生じます。以下は、ブラン チ機能を使用するとき(または、使用を避けるとき)の有用なガイドラインです。 5. 変更の伝達
いったんブランチすると、ファイルの変更をブランチからブランチへ伝達させなければならない、やっかいな場面に直面します。これは簡単な作業とは言えませんが、これを管理するために実施できることがいくつかあります。 6. ビルド
ビルドとは、複数のオリジナルのソースファイルから、使用可能なソフトウェアを構築する作業のことです。以下に示すいくつかのキープラクティスにしたがえば、ビルドはより管理し易くなり、問題に陥ることも少なくなります。 7. プロセス
SCMプロセスの設計や実装についてそのすべてを探求するには、1つの完全なドキュメントか、場合によっては数冊のドキュメントが必要になるでしょう。そ して、既にそのような多くのドキュメントが書かれています。また皆さんの職場には、実装するプロセスの中に盛り込まれることになっている独自の目的や要件 があり、それらが何であるかを我々は知りません。しかしながら、プロセスの概念によっては、いかなるSCMの実装に対しても重要なカギになるということ を、我々は経験しています。 8. 結論
ソフトウェア構成管理(SCM)におけるベストプラクティスは、あらゆる分野におけるベストプラクティスと同様に、一度使用してみれば、必ずその効用が明 らかになるようなものです。ここで検討したような実践方法は、実際、我々にとって有効でした。しかし、1つの短いドキュメントだけでは、すべてのベストプ ラクティスを言い尽せないということも、我々は認識しています。それゆえ、場合によっては実践が困難なものも含め、最大の効果を発揮する実践方法を説明し ました。 このドキュメントが改善されることを歓迎します。と同時に、前述の実践方法および新たな実践方法にチャレンジされることを、切に望みます。 9. 参考文献
[1] Berczuk, Steve. "Configuration Management Patterns", 1997. Available at http://www.bell-labs.com/cgi-user/OrgPatterns/OrgPatterns? ConfigurationManagementPatterns.Compton, Stephen B, Configuration Management for Software, VNR Computer Library, Van Nostrand Reinhold, 1993. [2] Continuus Software Corp., "Work Area Management", Continuus/CM: Change Management for Software Development. Available at http://www.continuus.com/developers/developersACE.html. [3] Dart, Susan, "Spectrum of Functionality in Configuration Management Systems", Software Engineering Institute, 1990. Available at http://www.sei.cmu.edu/technology/case/scm/tech_rep/TR11_90/TOC_TR11_90.html [4] Jameson, Kevin, Multi Platform Code Management, O'Reilly & Associates, 1994 [5] Linenbach, Terris, "Programmers' Canvas: A pattern for source code management" 1996. Available at http://www.rahul.net/terris/ProgrammersCanvas.htm. [6] Lyon, David D, Practical CM, Raven Publishing, 1997 [7] McConnell, Steve, "Best Practices: Daily Build and Smoke Test", IEEE Software, Vol. 13, No. 4, July 1996 [8] van der Hoek, Andre, Hall, Richard S., Heimbigner, Dennis, and Wolf, Alexander L., "Software Release Management", Proceedings of the 6th European Software Engineering Conference, Zurich, Switzerland, 1997. 開発中のコードライン :
|










