RedmineとSCMの機能の関連表~BTSとSW構成管理の密接な関係 #itsjp #tidd
チケット管理システム比較WikiへRedmineとSCMの機能の関連表を追記した。
BTSとSCMに関する考えをラフなメモ書き。
【元ネタ】
チケット管理システム比較Wiki
17-B-3 チケット駆動開発 タスクマネジメントからAgile開発へ - miyohideの日記
Agile開発とチケット駆動開発の大きな違いは、チケット集計機能だけでなく、構成管理ツールとの連携にあると思う。
「No Ticket, No Commit!」を運用して、BTSチケットに構成管理情報を紐づけると、単にチケットとSCMリビジョンが紐づくだけでなく、ビルドモジュールとBTSチケット、SCMコードラインとBTSプロジェクト、SCMタグとBTSのリリース予定バージョンが対応づけられる利点がある。
つまり、チケットとSCMリビジョンを経由して、タスク管理の大きな観点の分割単位であるBTSプロジェクトやBTSのリリース計画とSCMリポジトリを関連付けることができる。
RedmineはプロジェクトがSCMリポジトリに1対1に対応する思想で設計されているから、RedmineプロジェクトとSCMコードライン(trunk、リリースブランチなど)、更にはHudsonでビルドするモジュールを自然に1対1に対応付けることができる。
HudsonにはRedmine・Trac・Mantisなど各種BTSと連携するプラグインがあるので、Hudsonのビルドログに掲載されたSCMコミットログにBTSチケットNoが書かれていれば、HudsonからBTSへリンクすることが可能になる。
これによって、ビルドモジュールからチケットへ辿ることができるので、ビルドモジュール単位のトレーサビリティが可能になる。
Redmineでは、Redmineバージョンとビルドモジュールのリリース予定バージョンに対応づけることによって、XPのイテレーションやScrumのスプリントに対応付けることができ、自然にXPの小規模リリースを実現できる。
将来のリリース予定バージョンの集合は、ロードマップで一覧でき、それらはリリース計画に相当する。
更に、リリース済みのバージョンをSCMのタグと紐づけるようにすれば、ビルドモジュールのリリース済みバージョンとSCMのタグ、Redmineの終了バージョンが対応付けられるので、それらを集めると自然に変更履歴(ChangeLog)になる。
HudsonとSubversionを使っているならば、HudsonのSubversion Tagging Pluginを使って、リリースする時にSVNタグを振ってからHudsonでビルドする運用にすればよい。
そうすれば、SVNタグとリリースモジュールの対応付けをより厳格に運用することが可能になる。
HudsonのSubversion Tagging Plugin: プログラマの思索
これらの特徴によって、トレーサビリティというチケット駆動開発で最も重要な機能が実現できる。
トレーサビリティがあるからこそ、マージ作業が簡単になるし、本番リリース後の運用保守でパッチの影響調査が楽になるし、本番ソースから仕様をリバースエンジニアリングして派生開発に役立てる、などの作業もきちんと運用できるようになる。
ソフトウェア開発はとても繊細で、変化が激しい。
だから、バグ修正という名の作業で、他のバグを埋め込んでしまうデグレが発生しやすいし、同類バグの影響調査が不十分でバグを完全に除去できないというリスクがとても多い。
僕の数少ない経験では、ソフトウェア開発チームの習熟度は、障害管理プロセスがどこまでうまく機能しているか、という観点で簡単に評価できると思う。
駄目な開発チームほど、せっかく見つけたバグをどんどん溜め込んでしまって、リリース計画に基づいてバグ修正の優先順位付けを行うことなく、バグが放置されてしまう。
優秀な開発チームは、バグ修正とバグ検証の連携作業がスムーズで、たとえバグの再検証で修正漏れが発覚したとしても、そのミスを学習して、イテレーションをこなすごとに開発速度が上がっていく。
つまり、障害管理プロセスがしっかりしている開発チームは、障害管理プロセスの基本であるコーディングパイプラインがしっかりしているので、新規開発でも派生開発でもバグ修正でも同じプロセスで対応できる。
そして、製品化の速度が速いので、開発チームも動くシステムを触りながらシステムの機能を学習できるし、顧客へいち早くシステムを納品することもできる。
SW構成管理は単なるバージョン管理だけでなく、変更管理という開発プロセスも含む。
チケット駆動開発は、Agile開発にSW構成管理と変更管理の観点を組み込んで、SW開発をもっと近代化しようとする隠れた目的があるように思う。
SW構成管理とはそもそも何なのか?: プログラマの思索にも書いたけれど、SW構成管理に関する知識が日本ではまとめられていない。
BTSという枯れたツールには、SW開発プロセスを拡張させる機能がもっと隠れているから、色んな人が色んな観点で研究して、その成果を公開して、日本のIT業界の技術力向上に役立てて欲しいと思う。
| 固定リンク
「プロジェクトマネジメント」カテゴリの記事
- 「スクラムの拡張による組織づくり」のScrum@Scaleの感想(2024.03.31)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart2~プロセスのレイヤと達成目標のレイヤが異なる(2023.02.18)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart1~CSFはWBSみたいなものと捉える(2023.02.14)
- PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか(2023.01.22)
- 現代日本人の弱点はリーダーシップ不足と生産性が著しく低いこと、そしてリスク許容度が著しく低いことだ(2022.12.23)
「Redmine」カテゴリの記事
- Redmineのバージョン設定でプロジェクトの設定方法が違う(2024.06.23)
- ウクライナのRedmine開発者が作ったRedmineテーマやプラグイン(2024.06.18)
- 第26回redmine.tokyo勉強会の感想~多様性はコミュニティが成功する重要な要因の一つ #redmineT(2024.06.15)
- Redmineで持ち株管理する事例(2024.04.21)
- チケットはデータでとプロセスの二面性を持つ #redmine(2023.12.24)
「ソフトウェア工学」カテゴリの記事
- アーキテクチャ設計はベストプラクティスを参照するプロセスに過ぎないのか?~Software Processes are Software, Too(ソフトウェアプロセスもまたソフトウェアである)(2024.09.22)
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「システムアーキテクチャ構築の原理」の感想(2024.05.06)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
- マイクロサービス設計は従来のアーキテクチャ設計と何が違うのか(2024.01.02)
「廃止Mercurial」カテゴリの記事
- GitHubはオープンソースのプロセスを標準化した(2015.06.11)
- 「反復型ソフトウェア開発」はソフトウェア工学の良書(2013.02.09)
- Mercurialに取り込まれたコミュニティ由来の機能一覧(2013.01.12)
- WordやExcelから直接Mercurialへコミットできるアドオンmsofficehg(2012.12.07)
- RedmineでSubversion リポジトリ表示を高速化する方法(2012.11.23)
「構成管理・Git」カテゴリの記事
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
- パッケージ設計の原則の意義は変化しているのか(2023.09.30)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 【資料公開】チケット駆動開発の解説~タスク管理からプロセス改善へ #redmine(2022.01.14)
- プログラミングしてる時はでっかいピタゴラ装置を作ってるみたいな感じ(2022.01.09)
「チケット駆動開発」カテゴリの記事
- 第26回redmine.tokyo勉強会の感想~多様性はコミュニティが成功する重要な要因の一つ #redmineT(2024.06.15)
- チケットはデータでとプロセスの二面性を持つ #redmine(2023.12.24)
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
- プロジェクト管理の基本はテーラリング、Redmineはプロセスをテーラリングするツール(2022.04.21)
「Agile」カテゴリの記事
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「スクラムの拡張による組織づくり」のScrum@Scaleの感想(2024.03.31)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
- 「GitLabに学ぶ 世界最先端のリモート組織のつくりかた」の感想(2023.12.10)
- 概念モデリングや設計原則は進化しているのか(2023.10.21)
コメント