RedmineとHudsonの関係付け
Redmineのチケットとバージョン管理を連携できる機能は、変更管理のインフラを提供してくれる。
変更管理について考えたメモ書き。
【元ネタ】
PERFORCE ソフトウェア構成管理の高度な実践方法(ベストプラクティス)
【1】変更管理が必要な場面
SEと呼ばれる人の仕事を眺めてみると、要件や仕様に関する変更管理プロセスに従事している時が多いことに気付く。
SEの一番の仕事は、顧客から要件を聞き取り、仕様書としてまとめて、開発者へ仕様を提示する。
つまり、業務のインターフェイスを設計すること。
設計工程で完璧な仕様書が作られる可能性は低い。
むしろ、要件漏れ、設計漏れが開発や結合テスト、あるいは受入テストで大きなリスクとして発覚することが多い。
昨今のシステム開発では、SeasarやRailsのような優れたフレームワークがあり、JUnitのようなテストユニットがあるので、単体テストをクリアした品質は確保できる。
しかし、肝心の仕様書が高い品質で開発者へ提示されるという仮定がそもそも間違っている時が多い。
だから、間違った設計書、低品質な仕様書を元にプログラムを作るから、当然、顧客の要望とずれたシステムが出来上がってしまう。
プログラマよりも設計者が作る成果物の品質の方がはるかに低い場合が、最近は多いように見られる。
仕様漏れが発生する理由の一つは、実際にプログラムを組んで動かしてみないと分からない部分がSW開発では多いから。
だから、アジャイル開発のようにインクリメンタル型開発では、小さく作って小刻みにリリースして、問題を早めに嗅ぎ取ろうとする。
他の原因として、たった一つの要望や仕様変更で影響を受ける機能はどれか、提示された仕様はシステムに確実に反映されているのか、という調査やその設計が不十分な時が多いように思う。
昨今の業務系Webシステムは、数万行に膨れ上がっているから、わずか1行のソース変更でシステムに影響を及ぼす可能性があるから、細心の注意を払う必要がある。
また、保守されていない仕様書がExcelで散在しているならば、稼働中のシステムにある機能の詳細な一覧を探すことすら難しいだろう。
稼働中のシステムにバグがあったとしても、顧客はバグありの運用をしている時が多い。
たとえバグがあっても、動いているシステムの方が、リアルタイムに保守されない仕様書よりも正しいのだ。
設計者は、ソースから仕様をリバースして設計するようになるが、この時に、過去のパッチの変更理由、モジュールのビルド履歴、ChangeLogがあると非常に役立つ。
パッチの変更理由を元に、仕様変更で影響を受けるかどうか、判断を下す材料になる。
【2】チケットトラッキング機能
Redmineでは、チケットとSVNリビジョンを紐付ける機能があり管理画面で簡単に設定できる。
SVNコミット時に「refs チケットNo」「fixes チケットNo」「#チケットNo」をログへ追記すると、リポジトリブラウザからチケットへ遷移できる。
更には、チケットから、チケットに関する修正を受けたSVNリビジョン全てがリンクされている。
この機能のおかげで「ソースAの過去の修正で影響されたソースはどれか?」を探すことができる。
下記のような流れになるだろう。
【Subversion→Redmine→Subversion】
ソースAのコミット履歴を全て洗い出す
↓
コミット履歴から全てのチケットを洗い出す
↓
チケットから全てのSVNリビジョンを洗い出す
↓
SVNリビジョンからコミットされた全ソースを洗い出す
Redmineでは上記の作業を画面上で見て操作するか、全文検索で洗い出すだろう。
少なくとも、ソースのコミット履歴から、過去にどんな仕様でソースが影響を受けたのか、チケットから調べることができる。
RedmineのDBは上手に運用すれば、要件や仕様も蓄積されるから、いつでも全文検索の対象となる。
Excelに書かれた仕様よりも、DBにある方がはるかに探しやすいメリットがある。
【3】ビルド履歴との連携機能
Redmineのプラグインsimple_ciを使うと、ビルドツールと連携することができる。
ビルドツールとBTSを連携するメリットは「バグXの修正はビルドYにあるか?」という質問にすぐに回答できるインフラを提供してくれるから。
このインフラがあると、結合テスト以降のバグ修正で大きな威力を発揮する。
特に、デグレが起きていないかチェックするのに効果的だ。
Redmine - PluginSimpleCI - Redmine
但し、Hudsonのビルド履歴をRSSリンクする場合に、Rubyのsimple-rssモジュールをrequireしないと動作しない。
下記のパッチを反映すると、Redmineのsimple_ciタブにHudsonのビルド履歴が表示されるようになる。
Redmine - Feature #2163: Hudson Plugin - Redmine
また、HudsonでもRedmineプラグインが下記でリリースされている。
Hudsonのビルド履歴には、ビルドに取り込まれたSVNリビジョンのコミットログが表示されている。
このプラグインで、ビルド履歴に書かれたRedmineチケットがリンクされるので、Redmineへ相互リンク可能になる。
日本人作者の方に感謝!
Hudson Redmine plugin 0.6 - @Inject
Redmine Plugin - hudson - Hudson Wiki
上記の使い方は下記になるだろう。
【Redmine→Hudson】
Redmineのsimple_ciタブでHudsonの直近のビルド履歴を表示
↓
Hudsonのビルド番号のリンク押下
↓
Hudsonの該当ビルド番号の画面に、ビルドに取り込まれたコミットログ全てを表示
【Hudson→Redmine】
Hudsonのビルド番号の画面を表示
↓
表示されたコミットログにあるチケットNoのリンク押下
↓
Redmineチケットを表示
↓
Redmineチケットに表示されているSVNリビジョンから該当リビジョンを探す
ITILの講義を聞いた時、昔は問題管理に力点を置いていたが、昨今は構成管理や変更管理が重視される傾向がある、という話があった。
バグ管理システムRedmineと常時統合ビルドツールHudsonを組み合わせれば、変更管理の強力なインフラになりうる。
| 固定リンク
「プロジェクトマネジメント」カテゴリの記事
- チームトポロジーの感想~大規模アジャイル開発でも組織構造は大きく変化する(2025.01.01)
- 「スクラムの拡張による組織づくり」のScrum@Scaleの感想(2024.03.31)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart2~プロセスのレイヤと達成目標のレイヤが異なる(2023.02.18)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart1~CSFはWBSみたいなものと捉える(2023.02.14)
- PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか(2023.01.22)
「Redmine」カテゴリの記事
- Redmineは組織のナレッジ基盤として実現可能なのか~島津製作所の事例を読み解く #redmineT(2024.12.29)
- 「RedmineのUbuntu+Docker構築への移行」の感想 #redmineT(2024.11.24)
- 第27回redmine.tokyo勉強会の感想 #redmineT(2024.11.10)
- Redmineのバージョン設定でプロジェクトの設定方法が違う(2024.06.23)
- ウクライナのRedmine開発者が作ったRedmineテーマやプラグイン(2024.06.18)
「ソフトウェア工学」カテゴリの記事
- チームトポロジーの感想~大規模アジャイル開発でも組織構造は大きく変化する(2025.01.01)
- Redmineは組織のナレッジ基盤として実現可能なのか~島津製作所の事例を読み解く #redmineT(2024.12.29)
- アーキテクチャ設計はベストプラクティスを参照するプロセスに過ぎないのか?~Software Processes are Software, Too(ソフトウェアプロセスもまたソフトウェアである)(2024.09.22)
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「システムアーキテクチャ構築の原理」の感想(2024.05.06)
「構成管理・Git」カテゴリの記事
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
- パッケージ設計の原則の意義は変化しているのか(2023.09.30)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 【資料公開】チケット駆動開発の解説~タスク管理からプロセス改善へ #redmine(2022.01.14)
- プログラミングしてる時はでっかいピタゴラ装置を作ってるみたいな感じ(2022.01.09)
「チケット駆動開発」カテゴリの記事
- Redmineは組織のナレッジ基盤として実現可能なのか~島津製作所の事例を読み解く #redmineT(2024.12.29)
- 第26回redmine.tokyo勉強会の感想~多様性はコミュニティが成功する重要な要因の一つ #redmineT(2024.06.15)
- チケットはデータでとプロセスの二面性を持つ #redmine(2023.12.24)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
コメント