アジャイル開発はツールに依存している~SW構成管理を再考しよう
アジャイル開発とSW構成管理に関する記事を見つけたのでメモ。
【元ネタ1】
Kent Beck VSTSのホワイトペーパーの日本語訳
(前略)
アジャイル開発はツールに依存します。特にツールが異なる開発サイクルに合わせて最適化されている場合は依存度が高くなります。
(中略)
アジャイル ソフトウェア開発は、ツールを抜きにして語ることはできません。俊敏なプロジェクトでは毎日の作業量が非常に多く、以前は手動で行われていた非常に多くの手順が短い期間で繰り返されるようになるため、適切なツールが不可欠です。
(中略)
アジャイル開発は既に開発ツールに影響を与えています。
(中略)
今後もソフトウェア ツールに影響を与える傾向は、絶えず短くなっているリリース サイクルです。
以前はリリースに数年かかっていましたが、ますます多くのソフトウェア製品の新機能が、月単位、週単位、日単位、またはさらに頻繁に運用環境にリリースされるようになっています。
各フェーズが順番に実行されることを暗に想定したツールは、並行した (非常にすばやく切り替わる) 作業をサポートするツールに取って代わられるでしょう。
作業間のより頻繁な移行をサポートしようとする傾向は、今後も続くことが予想されます。状況は大きく変化せず、サポートされる作業の数が増加します。
(後略)
短いイテレーションによる繰り返し型開発では、高度な管理ツールを必要とする。
従来の手作業によるプロジェクト管理、チマチマとしたExcelによるタスク管理では、アジャイル開発をいくらやりたくても実現できない。
頻繁なリリースに耐えうるプロジェクト管理手法こそ、チケット駆動開発が目指す開発スタイル。
アジャイル開発をサポートするツールは最終的に、作業の透明化を目指す。
つまり、誰がどんな機能を実装してコミットしたか、誰がどんな仕様変更や障害対応でパッチを当てたのか、という作業を、他人にも自分にも説明できるように明確化すること。
デスマーチ・プロジェクトや風通しの悪い大規模プロジェクトでは、誰が何の作業をしているのか、メンバーだけでなくリーダーも、トップの管理職も把握できていない。
特に大規模プロジェクトになるほど、進捗管理という名のマネジメント工数が大きくなる理由がそこにある。
その工数は本質的に無駄だ。
その作業を自動化できるなら、マネジメント工数も、そして進捗管理だけしか脳のないリーダーも不要になる。
この考えを推し進めると、優秀なプログラマと優秀なテスターがいれば、マネージャ無しで開発できるようになるはず。
【元ネタ2】
大規模組織のためのアジャイルな構成管理 : 1~9
大規模組織のためのアジャイルな構成管理 : 10~14
次に、「構成管理」について説明します。これは「品質」と同様に定義の難しい概念で、以前から複数の異なる定義が存在します*1。
構成管理とはシステム内の項目を識別し、特定の項目とシステム全体の両方に対して変更管理を行うことであるというのは、誰もが同意するところでしょう。
構成管理を極めて狭義に定義すれば、「一般的な任意のソース管理システムを実装し、適切に使用すること」を指します。
逆に、極めて緩やかに定義すれば、「プロジェクト・チーム全体とそのすべての成果物」を指します。
成果物には、システムのあらゆる部分の正常動作を保証するためのすべてのコードやアクティビティー、すべての変更管理アクティビティー、さらにはチームの日々の手順における変更追跡などが含まれます。
この記事では、中間的なアプローチを採用し、構成管理の定義として、システムの各部品を整理し、システムの状態を常に把握し、その変化を管理し、開発プロセス全体を通してシステムの継続的かつ正常な機能を保証するためにプログラマーが行う作業を含めることにします。
変化を制御するためにツールが必要。
構成管理は、変更管理のインフラを提供する。
XPが優れているのは、ソース共同所有・テスト駆動開発・継続的インテグレーション・小規模リリースなどのように、ソフトウェア開発のインフラの自動化に着目した点にある。
チケット駆動開発もその流れにあると言っていい。
アジャイル開発の構成管理において、今の僕が思っている課題は、ビルドの並行化。
テスト駆動開発を実践すると、全てのJUnitを走らせるだけで何時間もかかり、結局デイリービルドできない。
下記のように、JUnitでテストクラスを並列に実行できるならば、見かけ上のビルド時間は半減できるはずだ。
JUnit4でテストクラスの並列実行 - cactusman日誌
おそらく、Hudsonによる並行ビルドとVMWareによるテスト環境の仮想化をうまく兼ね合わせないと、最終的にこの課題は解決できないと思っている。
GitやMercurialのような分散バージョン管理、Hudsonによる並行ビルド、VMWareによる本番環境の仮想化などのように、構成管理の技術はまだ進化の途中。
昨今のアジャイラーは、プロジェクトファシリテーションのように、人間系・マネジメント系の方面に目が行きがちだが、構成管理という基本的な技術をもっと洗練させないといけないのではないか?
| 固定リンク
「プロジェクトマネジメント」カテゴリの記事
- 「スクラムの拡張による組織づくり」のScrum@Scaleの感想(2024.03.31)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart2~プロセスのレイヤと達成目標のレイヤが異なる(2023.02.18)
- ストラテジストとプロジェクトマネージャの役割の違いは何なのかpart1~CSFはWBSみたいなものと捉える(2023.02.14)
- PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか(2023.01.22)
- 現代日本人の弱点はリーダーシップ不足と生産性が著しく低いこと、そしてリスク許容度が著しく低いことだ(2022.12.23)
「ソフトウェア工学」カテゴリの記事
- アーキテクチャ設計はベストプラクティスを参照するプロセスに過ぎないのか?~Software Processes are Software, Too(ソフトウェアプロセスもまたソフトウェアである)(2024.09.22)
- 「システムアーキテクチャ構築の原理」の感想part2~非機能要件がシステムのアーキテクチャに影響を与える観点をプロセス化する(2024.05.06)
- 「システムアーキテクチャ構築の原理」の感想(2024.05.06)
- ソフトウェア工学の根本問題から最近のソフトウェア設計を考えてみる(2024.03.03)
- マイクロサービス設計は従来のアーキテクチャ設計と何が違うのか(2024.01.02)
「プロジェクトファシリテーション」カテゴリの記事
- PM理論では課業志向の方が関係志向よりも生産性が高いことを主張しているのではないか(2023.01.22)
- 「世界を動かすプロジェクトマネジメントの教科書」の概念図(2022.01.16)
- 【資料公開】チケット駆動開発の解説~タスク管理からプロセス改善へ #redmine(2022.01.14)
- 昭和の管理者の承認処理は判子押印、令和の管理者の承認処理はいいねボタンを押すこと(2021.12.31)
- チケット駆動開発のプロセスとチケット管理システムの全体像 #Redmine(2021.12.28)
「廃止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)
コメント