チケット駆動開発が進むべき道part4~チケット駆動開発がもたらした新しい観点 #tidd
チケット駆動開発が従来のどんな問題を解決して、どんな新しい観点をもたらしたのか、考えを整理してみる。
Twitter / @akipii: #redmine ツールの背後にあるチケット駆動開発が従来のどんな問題を解決して、SW開発にどんな新しい観点を提示したのか?を汲み取って欲しいのです。
【1】SW開発の難しさは、結合テスト以降の障害管理ではっきり現れてくると思う。
WF型開発であれAgile開発であれ、ある程度動くモジュールに対して、機能を追加して品質を向上していくプロセスは、そう簡単なものではない。
そもそもBTSを導入していないチームは、バグ情報がメールやExcelに散乱しているから、メンバー同士の情報共有すらできていない。
バグが発生した環境や操作手順を開発者に伝わらないために、バグの再現性に関する議論が延々と続いたりする。
又、せっかく見つけたバグも50個、100個と増えてくれば、バグの担当者はたらい回しにされたり、一部の担当者にバグ修正の負荷が集中したりする。
最悪な場合は、バグそのものが放置されて、どんどんバグが増えてプロジェクトそのものが破綻する。
特に、バグの再現性を確認しても、モジュールがどの時点で修正したバージョンなのか、をきちんとコントロールして検証しないと、バグを直したことにはならない。
ビルド管理、リリース管理で、Excelのソース管理台帳を見ながら、ソースのリビジョン1個ずつに対して手作業でタグ付けする場合、リリース漏れが発生しやすい。
最悪な場合は、ソースが先祖帰りして、せっかく直したバグが再現されてしまうデグレが起きる。そうすると、メンバーのモチベーションがガクンと落ちる。
【2】チケット駆動開発の意義は、それらの問題点に対して、一つの解決方法を示している。
まず、バグだけでなく、プロジェクト内部の作業は全てチケットへ集約する。
実績工数が発生するタスクは全てチケットに起票することで、メンバー全員が作業履歴を残し、それを誰もが検索して共有できる環境を作る。
チケットには作業内容だけでなく、進捗や構成管理の情報も付与するから、ソースからチケットへ変更理由も探すことができる。
それらは「Tikect First」「No Ticket, No Work」「No Tikcet, No Commit」という運用ルールで表現される。
次に、Redmineなど高機能化したITSには、柔軟なワークフロー管理機能がある。
この機能を使えば、バグだけでなく、ソフトウェア開発全般のタスク管理に拡張できる。
つまり、開発や設計書作成、リリース作業、更にはプロジェクト内部で発生した課題、顧客からの問合せ、インフラチームからベンダーへの質問などあらゆる情報は全てチケットに起票できれば、チケットの背後にあるワークフローによって、ステータスが一意に決まる。
バグやタスクだけでなく、問合せも課題もエスカレーションした問題も全て、何らかのワークフローの上に載っているのだから、チケットから最新状態を追跡できる。
TiDDでもっとも有効な隠れた機能が柔軟なワークフロー管理であり「Ticket Tracking」という運用ルールで表現される。
更に、ITS・SCM・CIというツールを組み合わせると、顧客の改善要望から開発、ビルド、リリースまでの作業を一貫して補強できる。
例えば、XPのイテレーション=Redmineのバージョン=SCMのリリースタグ=CIのビルド番号のように連携すれば、リリース済みバージョンが自然にリリース履歴となり、ロードマップはリリース計画、その短期計画が自然にイテレーション計画に対応できる。
【3】ITS・SCM・CIの3つのツールを@haru_iidaさんはSW開発の3種の神器と呼ばれた。
その言葉の背後には、従来のツールを連携して組み合わせると、「No Tikcet, No Commit」のような新しい使い方が生まれて、ソフトウェア開発の生産性を上げてくれる事実を示している。
上田さんはこの事実から、チケット駆動開発はAjaxみたいだね、と言われた。
つまり、チケット駆動開発は、従来から知られている古いツール(BTS)から新しい使い方(Agile開発)を提示したことを言っていると思う。
チケット駆動開発が新しい観点をもたらしたのは、従来のKKD(山勘、経験、度胸)によるプロジェクト管理をツールによるプロジェクト管理へ変換して、ソフトウェア工学に基づいたプロジェクト管理へ脱皮できること。
例えば、BTSにためられたチケットは、集計機能によって、ガントチャートだけでなく、バーンダウンチャート、信頼度成長曲線、PMBOKのEVMなど各種の進捗や品質のメトリクスで出力できる。
それらの情報はプロマネの意思決定をサポートしてくれる。
更には、プロジェクト管理の問題をツールの一機能による実装に置き換えることで、プログラミングの問題に変換したこと。
BTSに機能が足りないと思うなら、実装してしまえばいいだけ。
特にRedmineならRailsで作られているので、テーブル設計もURLも綺麗だから、初心者でもCoCに慣れれば簡単に機能拡張できる。
プログラミングの問題に落とし込めれば、後は実際に動く機能を作ればいいだけのことだ。
Howの問題に変換できれば、Agile開発なら一瞬で問題解決できる。
RedmineでもTracでもMantisでも、チケット駆動開発は実践できると僕は経験した。
それらのツールの背後にはチケット駆動開発があり、チケット駆動開発は、ソフトウェア開発のマネジメントの権限をプロマネからプログラマへ移行させたことに一番意味があると思っている。
| 固定リンク
「プロジェクトマネジメント」カテゴリの記事
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart2~プロセスのレイヤと達成目標のレイヤが異なる(2023.02.18)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart1~CSFはWBSみたいなものと捉える(2023.02.14)
- PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか(2023.01.22)
- 現代日本人の弱点はリーダーシップ不足と生産性が著しく低いこと、そしてリスク許容度が著しく低いことだ(2022.12.23)
- プロセス設計はどの範囲を指すのか?~プロマネの仕事はテーラリングにある(2022.06.19)
「Redmine」カテゴリの記事
- 「Redmineハンドブック」は良い本です(2022.12.17)
- 第23回東京Redmine勉強会の感想~コミュニティは仲間から生まれて続く #redmineT(2022.11.06)
- 第22回東京Redmine勉強会の感想 #redmineT(2022.05.29)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
- オープンソースERPパッケージiDempiereに対する派生開発手法の提案の資料が興味深かった(2022.04.24)
「ソフトウェア工学」カテゴリの記事
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart2~プロセスのレイヤと達成目標のレイヤが異なる(2023.02.18)
- プロジェクト管理やソフトウェアアーキテクチャの問題の背後にはトレードオフが隠れているのではないか(2023.02.18)
- デブサミ2023の感想(2023.02.11)
- ChatGPTにEclipseでEclEmmaとJaCoCoからカバレッジを出力する方法を聞いた(2023.02.01)
- DDPは品質管理に役立つのか(2022.12.13)
「チケット駆動開発」カテゴリの記事
- 小説活動にプルリクエスト駆動が必要になってきた(2022.05.08)
- 知識は経験よりも大切か、経験は知識よりも勝るのか、SECIモデルは相互作用を語る(2022.04.26)
- プロジェクト管理の基本はテーラリング、Redmineはプロセスをテーラリングするツール(2022.04.21)
- タスク分割は親子チケットにすべきか、それともチェックリストにすべきか #redmine(2022.03.04)
- Redmineにメンション機能が入るらしい(2022.01.15)
「Agile」カテゴリの記事
- PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか(2023.01.22)
- 現代日本人の弱点はリーダーシップ不足と生産性が著しく低いこと、そしてリスク許容度が著しく低いことだ(2022.12.23)
- DDPは品質管理に役立つのか(2022.12.13)
- UMTPモデリングフォーラムのパネル討論の感想(2022.11.29)
- XPエクストリームプログラミングは偉大だ~時代がその設計思想に追いついた(2022.11.16)
コメント