小野 雄太郎(おの ゆうたろう)

 ここからは,Visual Studio Team System 2008の製品構成を概観し,前版との違い,注目すべき新機能など,チーム開発がどのように変わるのかを紹介していきます。

(注意:本記事はVisual Studio 2008のベータ版をベースに執筆しています)

Team System 2008の位置づけ

 Visual Studio Team System 2008には,すべてのチーム開発機能を包含したTeam Suiteを筆頭に,システム開発のエリアに応じた四つのエディション,Architecture Edition,Development Edition,Test Edition,Database Edition,加えてアプリケーション負荷テスト用のTest Load Agent,チーム開発を支援するサーバー製品であるTeam Foundation Server(以下,TFS)があります(表1)。

表1●Visual Studio Team System 2008の製品ラインアップ
製品名 対象 概要
Visual Studio Team System 2008 Architecture Edition(*) アーキテクト 運用を考慮した設計という考えのもと,各種ダイアグラムを活用してシステム全体をアーキテクトがデザインするための機能を提供している
Visual Studio Team System 2008 Development Edition(*) デベロッパ 開発工程での品質向上を実現するため,単体テスト機能の強化のほか,コード分析やプロファイリングに関する機能を搭載・拡充して,コードを記述するデベロッパを支援する
Visual Studio Team System 2008 Test Edition(*) テスター ソフトウエアのテストにフォーカスし,様々なテストを実施できる。Webテスト機能を拡充し,単純なロードテストだけでなく,Ajaxアプリケーションのテストなどにも対応している
Visual Studio Team System 2008 Database Edition(*) DBA データベース開発をサポート,データベース・スキーマの適用や変更管理,オフラインでの開発,テスト・データの自動生成,さらにはストアドプロシジャの単体テストなど,データベースにかかわる開発を強力にサポートする
Visual Studio Team System 2008 Test Load Agent - 大規模なロードテストを実行するため,Test Edition がサポートするテスト機能を補完し,Load AgentとLoad Controllerが協調して動作することにより,複数のコンピュータをグループ化して分散ロードテストの実行を実現する
Visual Studio Team System 2008 Team Foundation Server - チーム開発を支援するインフラを提供し,ソースコード管理はもちろん,バグや作業項目の記録のほか,自動的なビルドやテストの実行,レポートの自動化などにより,プロジェクト全体の開発サイクルをサポートしてチーム開発の生産性向上を支援する
注:Visual Studio Team System 2008 Team Suiteは,(*)の機能をすべて搭載

 そもそもチーム開発とは何を指すのかというと,複数の開発者が特定のプロジェクトに参加して作業を分担しながらリリースを目指すもの,ということになります。プロジェクトのライフサイクルである設計,開発,テスト,展開といったステップを実現しながら,プロジェクトのリリースを果たす――これを開発者個人の能力に依存するのではなく,適切な役割分担をしながら全体最適を目指して安定的にアウトプットできるようにする。そのためのコミュニケーション・ツールのプラットフォームになるのが,Visual Studio Team System 2008というわけです。

 Visual Studio 2005(以下,VS2005)から登場したチーム開発を包括的にサポートするTeam System製品は,Visual Studio 2008(以下,VS2008)でさらに進化を遂げました。ソフトウエア品質,チームの生産性,チーム・コラボレーションの三つをコンセプトに,最新のテクノロジを取り込んで,Microsoft Solutions Framework(MSF),patterns & practicesといった開発プロセスやモデルを容易に利用できるような環境を提供しています。

 VS2005ではユーザーの役割によって分かれていた製品群を,VS2008では開発プロセスの中で行う作業目的をベースにした製品名群に改訂し,開発プロセス内でより明確に製品を選択しやすくしています。さらにVS2008ではDatabase Editionが登場し,VS2005発売後にTeam Suiteへ追加されたDatabase Professionalsから進化して,SQL Server 2008/2005/2000といったデータベース周りの設計や開発,さらには運用データベースへの展開や管理をTeam Suiteの開発プロセスの中で統一的に扱えるようにしています。以下,それぞれの製品の概要について個別に見ていきましょう。

運用まで考慮にいれたArchitecture Edition

 Architecture Editionは,アーキテクト向けの製品です。Design for Operations(設計の段階から運用を考慮した設計)という考え方をベースに,システム設計とシステムの展開や運用を包括的に扱える機能が搭載されています(図1)。

図1●Architecture Editionの画面
図1●Architecture Editionの画面
[画像のクリックで拡大表示]

 アプリケーション構造のダイアグラムだけでなく,システムのデータセンターへの配置をダイアグラムで設計し,開発するシステムが実際に展開されるインフラと不整合が起こらないかを検証できます。設計の早い段階で開発完了後の運用についてデザインと検証をすることによって,開発完了後のシステム展開で不整合が見つかり,設計を見直さなければならないといったリスクを軽減することができるわけです。

 このほか,設計したモデルから実際のコードを書くためのVisual Studioプロジェクトを生成でき,生成後のプロジェクトとモデルを同期させることも可能です。これによって設計したモデルが実際のコードと乖離(かいり)することを防ぎ,常に最新のモデルを維持することができます。

コード品質向上にフォーカスしたDevelopment Edition

 Development Editionは,デベロッパを対象にした製品です。開発するコードの品質をいかに維持・向上させるかにフォーカスし,開発工程で十分なテストを実施するための機能のほか,不必要に複雑なコードがアプリケーションに取り込まれないかをチェックするコード分析機能が搭載・強化されています(図2)。

図2●Development Editionの画面
図2●Development Editionの画面
[画像のクリックで拡大表示]

 基本となる単体テストでは,メソッドに対する繰り返しテスト,テスト結果の確認やコードカバレッジの把握はもちろん,アセンブリからテストコードを生成する機能,Genericsのサポート,データ駆動テストにおけるデータバインドの簡易化など,品質確保のためのテスト実行をサポートします。

 コード分析機能では,.NET Frameworkデザイン・ガイドラインを基本としたうえ,200以上の新しいコーディング規則通りに,記述されたコードが準拠しているかをチェックします。また,TFS(Team Foundation Server)と組み合わせて,ソースコードのチェックインやビルド時に,コードの評価を自動的に行わせることも可能です。

 さらに,Microsoft Researchが開発したコード・メトリクス分析機能では,分岐の数といった複雑性を評価するサイクロマティック複雑度,継承の深さ,依存関係を評価するクラス結合,実行されるコード行数,保守容易性インデックスの五つの指標をベースに,コードの複雑度を数値化する機能も備えています。

テストのライフサイクルをサポートするTest Edition

 Test Editionはテスター(テスト担当者)向けの製品です。VS2008のProfessional Edition以上に搭載されている単体テスト機能に加え,Webアプリケーションの動作をテストするための機能,サーバーに高負荷をかけて性能を検証するロードテスト機能,Test Load Agentと連携した分散ロードテスト機能の実行をサポートします。テストの作成,管理,編集,実行といったテストのライフサイクル全般をサポートしているのは当然のこと,TFS と組み合わせることでテスト結果の保存や傾向レポートの生成といったことも可能です(図3)。

図3●Test Editionの画面
図3●Test Editionの画面
[画像のクリックで拡大表示]

 Webテストでは,Ajaxコントロールを利用したWebアプリケーションに対応したほか,データバインドを使ったデータドリブンテストにも対応し,負荷モデルを設定したロードテストの実行と,グラフィカルな分析レポートなど,より実運用環境に近い状態を再現するテスト機能が拡充されています。