アジャイルソフトウェア開発とは何か?アジャイル宣言とその手法の説明

アジャイルとは、最終段階ですべてを一度に提供しようとするのではなく、段階的な納品、チーム間の協力、継続的な計画、継続的な学習を重視するソフトウェア開発アプローチを表す用語である。

アジャイルはプロセスを簡素化し、最小限の実用的製品(MVP)を作成することに注力し、最終的な成果物が現れるまでに複数の反復を経ます。フィードバックは継続的に収集され、実装されます。要するに、すべてが共通の目標に向かって動的に取り組むプロセスです。
Agile Software Development
アジャイルソフトウェア開発

スクラムとその他の主要なアジャイル手法

アジャイルはマインドセット——価値観と原則の集合体である。思考と行動のあり方である。アジャイルとは短いサイクル、反復的かつ段階的な納品、迅速な失敗、フィードバックの収集、早期のビジネス価値の提供、そして人、協力、相互作用に注力することを意味する。アジャイルは透明性、検査、適応のマインドセットである。しかし、アジャイルには次のものは含まれない。役割、イベント、または成果物。それはマインドセットである。たとえば、スクラムはアジャイルの傘下で広く使われているフレームワークの一つであり、よりアジャイルになるのを支援する。しかし、アジャイル運動には、カンバン、XP、クリスタル、その他のフレームワークが含まれており、以下に示す通りである。
Scrum Agile Umbrella
スクラム アジャイルの傘

スクラム

スクラムは、複雑な適応的課題を解決しつつ、高価値の製品を効率的かつ創造的に提供するために人々が使うフレームワークである。ソフトウェアプロジェクトや製品またはアプリケーション開発の管理に使用される。その焦点は、2〜4週間の期間(スプリント)内に、クロスファンクショナルなチームが共通の目標に向かって協働する適応型製品開発戦略にある。スクラムは価値観、成果物、役割、儀式、ルール、ベストプラクティスのシリーズから構成される。

リーン

リーンは、1950年代から60年代以降に物理的製品の生産を革命的に変革したトヨタ生産方式(TPS)に由来する。リーンは製造業における地位を維持しつつ、知識作業にも新たな応用が見つかっており、あらゆる業界の企業が**無駄を排除し、プロセスを改善し、イノベーションを促進する**。ソフトウェア開発は、製造業と同様に、しばしば確立されたプロセスに従い、明確な受入基準を持ち、有形の価値を提供するため、リーン手法と自然にマッチする。すべてのリーン実践を導く主要な概念は「リーンの柱」として知られている。それらは次の通りである:
  • 継続的改善
  • 人への敬意
  • 軽量リーダーシップ

カンバン

カンバンは、リーンチームで広く採用されている、非常に視覚的なワークフロー管理手法である。実際、リーン生産チームの83%が、開発チームに負担をかけず継続的な納品を重視しながら、製品開発を可視化し積極的に管理するためにカンバンを使用している。スクラムと同様に、カンバンはチームがより効果的に協働できるように設計されたプロセスである。
カンバンは3つのコア原則に基づいている:
  • 今日の作業を可視化する(ワークフロー): 互いの文脈の中ですべての項目を確認することで、豊かで洞察に富んだ情報を得られる。
  • 作業中の作業量を制限する(WIP): これにより、フローに基づくアプローチのバランスが取れ、チームがすぐに多すぎる作業を開始したりコミットしたりするのを防ぐ。
  • プロセスの改善: タスクが完了すると、バックログ内の次の優先度の高い項目が有効化される。
カンバンは最適なチームのワークフローを定義することで、継続的な協力を促進し、積極的で継続的な学びと改善を奨励する。

ダイナミックシステム開発手法(DSDM)

DSDMは、ライフサイクルと製品、役割と責任、いくつかのベストプラクティス技法を含む8つの原則から構成されるフレームワークである。これらの原則は、戦略的に重要なビジネス上の利益を早期に提供することを支援・可能にし、組織にとって最高の投資収益率(ROI)を実現する。
DSDMは、機能よりも計画と品質を優先する手法である。コスト、品質、期間を初期段階から固定し、MoSCoW優先順位付け手法を用いてプロジェクト要件を4つのタイプに分類する。
  • M必須
  • S望ましい
  • C望ましいが、なくてもよい
  • W不要
DSDM Aternの8つの支援原則は、チームが一貫して価値を提供するために採用すべき態度とマインドセットを指南する。
  1. ビジネスニーズに注力する
  2. 期日通りに提供する
  3. 協働する
  4. 品質を妥協しない
  5. しっかりとした基盤から段階的に構築する
  6. 反復的開発
  7. 継続的で明確なコミュニケーション
  8. コントロールを示す

エクストリームプログラミング(XP)

ケント・ベックによって初めて記述された、エクストリームプログラミング (XP) は、最も人気がありながらも議論の多いアジャイル手法の一つとなった。XPは、高品質なソフトウェアを迅速かつ継続的に提供するための規律あるアプローチである。ソフトウェアの品質と変化する顧客のニーズへの対応力を高めることを目的としており、高い顧客参加、迅速なフィードバックサイクル、継続的なテスト、継続的な計画、密接なチーム協働を促進し、非常に頻繁な間隔(通常は1〜3週間ごと)で動作するソフトウェアを提供する。
この手法の名前は、従来のソフトウェア工学の実践から有益な要素を取り出し、それを「極端な」レベルまで押し進めるという考えから来ています。たとえば、コードレビューは有益な実践とされています。極端な形では、ペアプログラミングという実践を通じて、コードが継続的に検査されます。
オリジナルのXPフレームワークは、4つのコア価値——単純さ、コミュニケーション、フィードバック、勇気——に基づいています。
また、12の支援的実践を含んでいます:
  • プランニングゲーム
  • 小規模なリリース
  • 顧客受入テスト
  • シンプルな設計
  • ペアプログラミング
  • テスト駆動開発
  • リファクタリング
  • 継続的インテグレーション
  • 集団的コード所有
  • コーディング規範
  • メタファー
  • 持続可能な開発
Extreme Programming
エクストリーム・プログラミング

機能駆動開発(FDD)

機能駆動開発(FDD)は、1997年にジェフ・デ・ルカがシンガポールの大手銀行でのソフトウェア開発プロジェクトで導入しました。これは反復的かつ段階的なソフトウェア開発プロセスであり、ソフトウェア開発におけるアジャイルアプローチです。FDDは、広く認識された業界のベストプラクティスを統合した一貫した全体としてのプロセスです。これらの実践は、顧客の価値観——機能——から導かれます。主な目的は、実用的で動作するソフトウェアを繰り返し、予定通りに提供することです。FDDの主な利点の一つは、「ちょうどよい設計(JEDI)」という概念により、大規模なチームにもスケーラブルであることです。機能中心のプロセスであるため、アジャイルで段階的かつ本質的に複雑なプロジェクトの管理に非常に適しています。FDDは5つのコア活動から構成されています:
  1. 全体モデルの開発
  2. 機能リストの作成
  3. 機能ごとの計画
  4. 機能ごとの設計
  5. 機能ごとの構築
Feature-Driven Development (FDD)
機能駆動開発(FDD)
各プロジェクトには独自のモデルがあり、それによって機能リストが生成されます。最後の3つの活動は短期間の反復であり、それぞれ2週間以内です。タスクが2週間以上かかる場合は、より小さな機能に分割されます。

クリスタル

クリスタル手法は、1990年代半ばにアリスタイア・コックバーンによって開発された一連のアプローチ(クリスタル・ファミリー)です。これらの手法は、コックバーンの長年の学びとチームインタビューから生まれました。コックバーンの調査では、インタビューしたチームは形式的なメソッドを採用していなかったものの、成功したプロジェクトを実現していたことがわかりました。クリスタル・ファミリーは、こうした成功したチームが行っていたことを整理・記録するためのコックバーンの方法です。クリスタル手法の主な焦点は:
  • 相互作用
  • コミュニティ
  • スキル
  • 才能
  • コミュニケーション

アジャイル・マニフェスト

「アジャイル」という用語は2001年のアジャイル・マニフェストで提唱された。マニフェストは、より良いソフトウェア開発の実践を導くための原則を確立することを目的としている。アジャイル・マニフェストは4つの核心的な価値観から構成されている。アジャイル・マニフェストを読むことは、右側の項目が価値がないということを意味するものではない。むしろ、アジャイルは左側の項目をより重視している。
Agile Manifesto
アジャイル・マニフェスト
それでは、アジャイル・マニフェストの最初の文を検討しましょう。この文は、さまざまな広範なプロセスやツールよりも、人、その相互作用、コミュニケーション、協働をより重視すると述べています。もちろん、プロセスやツールは価値がありますが、実際に人々が協働して高品質な製品を提供するのを支援する場合、その価値はさらに高まります。多くの組織でよく見られるのは、プロセスやツールが目的そのものになってしまうことです。アジャイルの視点からは、これとは異なります。プロセスやツールは、顧客に価値を創造するために人々が協働するのを支援すべきです。

アジャイルの原則

アジャイル・マニフェストの補完として、アジャイル・アライアンスは、マニフェストを超えたガイダンスとより詳細な説明を提供する12の原則を定義した。
Agile Manifesto Principles
アジャイル・マニフェストの原則
  1. 私たちの最優先事項は、価値あるソフトウェアを早期かつ継続的に提供することで顧客満足を達成することである。
  2. 開発の後期に至るまで、変更要件を受け入れる。アジャイルプロセスは変化を活用して顧客の競争優位を実現する。
  3. 数週間から数か月の頻度で、できるだけ短い期間を優先して、動作するソフトウェアを頻繁に提供する。
  4. ビジネス担当者と開発者は、プロジェクト全体を通じて毎日協力しなければならない。
  5. 動機付けられた個人を中心にプロジェクトを構築する。彼らが必要とする環境と支援を提供し、仕事を遂行できると信頼する。
  6. 開発チーム内およびチーム間で情報を伝える最も効果的な方法は、対面での会話である。
  7. 動作するソフトウェアは進捗の主な指標である。
  8. アジャイルプロセスは持続可能な開発を促進する。スポンサー、開発者、ユーザーは、無限にに一定のペースを維持できるべきである。
  9. 技術的優秀性と良い設計への継続的な注目は、アジャイル性を高める。
  10. 単純さ——行わない作業の量を最大化する芸術——は不可欠である。
  11. 最良のアーキテクチャ、要件、設計は自己組織化されたチームから生まれる。チームは、どのようにしてより効果的になるかを定期的に振り返り、それに応じて行動を調整する。

要約

アジャイル開発はソフトウェア開発業界で一般的な用語であり、ソフトウェア開発プロジェクトを管理する代替的な方法である。特定のソフトウェア開発手法ではないが、アジャイル・マニフェストに表された価値観と原則に基づいた、さまざまな手法や実践の集まりである。解決策は、自己組織化された多機能チーム間の協働を通じて進化し、状況に適した実践を活用する。

コメントを残す