アジャイルソフトウェア開発
ソフトウェア工学におけるアジャイルソフトウェア開発 (アジャイルソフトウェアかいはつ、英: agile software development) は、人間・迅速さ・顧客・適応性に価値を置くソフトウェア開発である。典型的なアジャイルソフトウェア開発では、チーム主導で設計・実装・デプロイを短期間に繰り返してユーザーが得た価値を学習し適応する、すなわちトライアルアンドエラーで開発が行われる。アジャイルソフトウェア開発を可能にする開発手法にはエクストリーム・プログラミングやスクラムなどがある。
Martin Fowler's Bliki (ja).
↑ "アジャイルの考え方には、適応型の計画づくりが必要不可欠な要素である。フィーチャはイテレーション間で移動し、新しいフィーチャが登場することもあれば、価値がなくなったフィーチャが破棄されることもある。" Martin Fowler. (2019). ウォーターフォールプロセス. Martin Fowler's Bliki (ja).
↑ "ウォーターフォール方式は、予測型の計画づくりを強制してくる。このことは、あるフェーズ(たとえば要求分析フェーズ)が終わると、その成果物は後続のフェーズが乗っかる安定したプラットフォームになることが前提となっている" Martin Fowler. (2019). ウォーターフォールプロセス. Martin Fowler's Bliki (ja).
↑ 逐次型の実行では学習した内容を適応すべき "計画" がすでに使用済みのため、理論上は存在しない。実務上、適応型計画をしているのにイテレーション#1が無限に終了しない場合はここに分類されうる。
1 2 Boehm, B. and Turner, R. (2004)
↑ “Dr. Dobb's | Good stuff for serious developers: Programming Tools, Code, C++, Java, HTML5, Cloud, Mobile, Testing”. Dr. Dobb's. 20xx-xx-xx閲覧。
↑ McBreen, P. (2003)
↑ Beck, Kent (1999)
アジャイルソフトウェア開発は適応型計画・反復型実行の観点で反復型開発と共通している。違いとして反復型開発は厳密なプロセス・様々なベストプラクティスを強調するが、アジャイル開発では開発体制すなわち人/開発チームに大きな価値をおきチームの非定型なコミュニケーションを推奨する。すなわちアジャイルは反復型開発と比較して人材に対するリスクの取り方が異なる。
例えば動画アプリを再生機能とお気に入り機能に分け、まず再生機能の設計からテストまでを完成させ、次にお気に入り機能の設計からテストまでを完成させる。
アジャイルは価値の実証と適応を繰り返すため、適応型計画・反復型実行タイプの開発である。反復型開発も同じタイプに分類される。事前に完璧な計画をおこなって次に実装・テストと段階を進める、すなわち予測型計画・逐次型実行の開発スタイルの代表例はウォーターフォールモデルである。アジャイルとウォーターフォールでは開発プロセスが全く異なる。
開発タイプにより完成時期や抱えるリスクが異なる。アジャイルは他のタイプと比較し、完成時期の目処が初期に立たないというリスクがある。これは計画自体が徐々に改善されて初めて意味ある計画となる特性に由来するため、本質的に避けられないリスクである。
アジャイルソフトウェア開発宣言(英: Manifesto for Agile Software Development)は「アジャイルソフトウェア開発」という概念を提唱した文書である。
2001年に、軽量ソフトウェア開発手法(と当時呼ばれてた)分野で名声のある17人がアメリカ合衆国のユタ州のスノーバードというスキーリゾートに会し、彼らがそれぞれ別個に提唱していた開発手法が共有する価値観を議論した。彼らはその結果を「アジャイルソフトウェア開発宣言」(Manifesto for Agile Software Development) という文書にまとめた。アジャイルソフトウェア開発宣言はアジャイルソフトウェア開発とその諸原則を公式に定義した文書であると、広く認められている (参考: アジャイル宣言の背後にある原則) 。
この宣言は以下の4つの価値観を示し、これらの価値観を有するソフトウェア開発を「アジャイルソフトウェア開発」と名付けた。
Individuals and interactions over processes and tools(プロセスやツールよりも個人と対話を)
Working software over comprehensive documentation(包括的なドキュメントよりも動くソフトウェアを)
Customer collaboration over contract negotiation(契約交渉よりも顧客との協調を)
Responding to change over following a plan(計画に従うことよりも変化への対応を)