【連携してなにができるか?】
Agile Managerは、SubversionやGitに代表されるソースコード管理システムや、Jenkinsのようなビルド管理システムと連携させることが出来ます。ちなみに、今日(2014/05/29)の時点で連携がサポートされているソフトウェアは、次のモノです。
■ビルド管理システム
- Jenkins : 推奨バージョン 1.447.2 1.532.1
- Hudson : 2.2.1 3.1.0
- マイクロソフト社 Team Foundation Servers : 2012
■ソースコード管理システム
- Subvesion : 1.6 1.7
- CVS : 1.11 1.12
- マイクロソフト社 Team Foundation Servers : 2010, 2012
- Perforce : 2012.2 2013.1
- Git : 1.7 1.8
ソースコード管理システムでは、開発者がチェックインした際に変更差分に関するメタ情報(チェックインしたユーザ、日時等)が管理されますが、AgileManager側はその情報を収集します。コードそのものは管理しません。
Agile Manager側では、ストーリーやタスク、不具合を管理していますが、これらは各々識別用のIDを持ちます。開発者が修正したコードをソースコード管理システムにチェックインする際、コメント欄にそれらの管理IDを入れると、Agile Manager側でコードの変更メタ情報と、Agile Manager側で管理していたストーリー(あるいは不具合、タスク)とを紐付けてくれます。これにより、「コードの変更理由があきらかになる」ということです。
図1は、Agile Manager上の[ソースコードサマリ]の画面例です。
この例では、ユーザストーリーに関連づけられたコード変更(画面中、"変更セット")がリストアップされています
図1
ビルド管理システムからの情報も、Agile Manager上で照会することができます。図2はビルド履歴の情報です。
左から右へ時間順にビルド結果が棒グラフとして並べられています。前述したように、ソースコードはAgile Managerの管理するストーリーや不具合に関連づけられていますから、
1回のビルドがどんなストーリーや不具合に対応したコードをビルドしたのか知ることが出来ます。
図2
図2を例に取ると、時系列の棒グラフが2段になっていますが、
・上段は、コードに関連づけられている変更理由(ストーリー、不具合、割り当てられていない)毎のコード変更行数の比較
・下段は、不具合の重要度別の内訳
となっています。
これを見ると以下のことがわかります。
・上段、時系列グラフのほぼ中央を境に、左側が不具合対応が主体、右側がストーリー開発が主体と開発内容が移り変わっている
・下段を見ると、左端か中央に向けて、致命的な不具合(濃い赤)が減っている。
・両者ともほぼ中央付近で切り替わっているので、品質がある程度安定してからストーリー開発に移行している
たとえば、「(下段を見て)致命的な不具合への対応が減っていないのに、(上段を見て)ストーリーの追加開発行数が多い」状態がある一定期間続いている場合には、「品質が安定していない恐れが高いので、致命的な不具合対応に集中しよう!」・・・みたいな判断を日々下すわけです。
関連して様々なツールやユーティリティの実行結果を取り込むことが出来ます。
■テスティングフレームワーク
- Junit
- TestNG
- NUnit
- マイクロソフト社Visual Studio Managed Unit Testing Framework 2012
■コードカバレッジ分析フレームワーク
- Cobertuna
- NCover
- マイクロソフト社Visual Studio 2012 Code Coverage
【基本的な仕組み】
それでは、設定に向けて話を進めましょう。
図3は連携のための基本的な仕組みを説明する図です。
図3
Agile ManagerとJenkinsやSubversionと連携させるためには、ALI DevBridge(以降、DevBridge)という仲介サーバーが必要です。ちなみに、ALIは、Application Lifecycle Intelligenceの略です。弊社は、HP ALMという製品(QualityCenterの最上位エディション)を提供していますが、この製品が同様にSubverionやJenkinsと連携します。ALIはその連携機構の名称です(歴史的には、HP ALMで提供した方が先)。ALI DevBridgeはそのALIシリーズの1コンポーネントで
Agile Managerとの連携のために提供されたWebアプリケーション(内部ではJettyを使ったアプリケーションサーバー)です。
多くのケースでは、社内(=ファイヤーウォールの内側)にSubversionやJenkinsが稼働していると思いますが、DevBridgeは同じくファイヤーウォールの内側にいて、SaaSであるAgile Managerとの通信を司ります。
DevBridgeは、Subversion、Jenkinsの各々と通信して変更差分情報やビルド結果を吸い上げます。SubversionとJenkinsとの連携部分は従来通りで構いません。すでに皆さんの社内で利用されているSubversion-Jenkins連携環境はそのままに、Agile Managerを使ったアジャイル開発に短期間で移行することが出来ます。
[次回は設定編]
基本的な仕組みをご理解いただいたところで、次回は実際に設定してみましょう。
SubversionとJenkinsとの連携環境が無い場合は、あらかじめ準備しておいてください。
ではでは・・・