アジャイル開発 (Agile software development)、 または アジャイルモデル ともいい、 は古い ソフトウェア開発手法 である ウォーターフォール開発 を替え、2001年ぐらいに出場しました。アジャイル開発の特徴として はクライアントとのコミュニケーション、それに開発チームコミュニケーションとコラボレーションを絶えずに持続し、向上することで、 継続的デリバリー を届け、デリバリー時間を短縮することです。それこそは Agile開発 の役割です。本稿では、ディエスソリューション は アジャイルソフトウェア開発 について 解説し、アジャイル開発手法 の5つの特徴を挙げ、最適な アジャイル手法 の選び方について執筆いたします。
1. アジャイルとは?
アジャイル 手法 、いわば アジャイルプロセスとは、高品質のソフトウェアを迅速で提供することを可能にするためのワンセットのプラクティスです。それは、頻繁な検査と適応を促進する統制のとれたプロジェクト管理プロセス、それにチームワーク、自己組織化、及び説明責任などのエンジニアベストプラクティスを促進するリーダーシップにより組み合わせられます。
それで、アジャイル型 と ウォーターフォール型 は何が違うのか、なぜアジャイル開発は現代のテクノロジー業界で、最適な開発手法と言われているのでしょう。
2. アジャイル開発 ウォーターフォール開発 の違い
アジャイル開発とウォーターフォール開発の中核的な違いは以下の点です。
❶ウォーターフォール開発 はライナーシーケンシャルライフサイクルモデルですがアジャイル開発はソフトウェア開発プロセスにおいて開発とテストの継続的な反復です。
❷アジャイル手法はその柔軟性で知られている一方、ウォーターフォールは構造化されたソフトウェア開発手法です。アジャイル型開発においてプロジェクト開発ライフサイクルは各スプリントに割り当てられ、テストプランは各スプリントの後にレビューされます。また、アジャイル開発は、ソフトウェア製品がエンドカスタマーのニーズを満たし、カスタマーの要求に応じて変化するという製品マインドセットを導入するため、プロジェクトの要求が絶えずに変化し、しんかすることが期待されます。初期計画が完了した時点でも、プロジェクト開発要件に変更を加えることができます。
❸その一方、ウォーターフォール型 では、ソフトウェア開発プロセスが個別のフェーズに分けられ、定めたフェーズの順位に沿って開発プロセスが実行されます。プロジェクトの要求はプロジェクトが開始される前に、作成されるため、一旦プロジェクトが開始されると、スコープや要求などの変更や追加はできません。ウォーターフォール型開発 のマインドセットはプロジェクトを完成させることです。
❹アジャイルシステム開発はチームメンバー間のコラボレーションと同期が非常に重要ですが、ウォーターフォール開発の場合、コラボレーションと同期が限定されます。
アジャイル開発&ウォーターフォール開発 のメリット
アジャイル型 | ウォーターフォール型 |
・クライアントが各ステージで継続的に関与している ・アジャイルチームは非常に意欲的で自己組織化が良いため、 開発プロジェクトからより良い結果をもたらす可能性がある ・開発の品質が維持されることを保証する ・クライアントとチームは何が終了したどうかを正確に把握でき、 開発プロセスのリスク軽減につながる | ・最も管理しやすいモデル ・要求が簡単で小規模なプロジェクトに適切 ・プロジェクトのデリバリーが早い ・プロセスと結果はしっかりと文書化される ・チームをシフトする際、簡単に適応可能 ・依存関係を管理するのに役立つ |
アジャイル開発&ウォーターフォール開発 のデメリット
アジャイル型 | ウォーターフォール型 |
・小規模なプロジェクトには効果がはっきりと見えない ・大事な問題に決定をする専門家が必要 | ・大規模なプロジェクトには適応できない ・最初から要求が明確にしないと、開発プロセスが失敗しやすい ・前フェーズに戻り、変更を加えることが非常に困難 ・開発後にバグ発生リスクが高い。 その場合、バグ修正のコストも高騰 |
以上の特徴から、アジャイル開発はオフショア開発プロジェクトやアウトソーシング開発プロジェクトに最も適切な システム開発、特にプロダクト開発 手法とも言えます。スケーラビリティ性が高いし、コスト削減効果も伝統的な ウォーターフォール型開発 より良いです。
3. アジャイル開発手法一覧
3.1. アジャイルスクラム
アジャイル開発スクラム は現在最も人気を集めているアジャイル開発手法です。 アジャイルスクラムとは スプリント と呼ばれる開発のサイクルまたはステージと、ソフトウェア製品の開発時間の削減により特徴付けれれる軽量なプロセスフレームワークです。
スクラムは開発チームがカスタマーと共に3~9程度のチームになり、実行されます。 アジャイルスクラム は以下の6つのプロセスを定義します。
Scrum開発のプロセス
・デイリースクラム
毎日15分程度のミーティングを行い、チーム内で、全体の開発状況、問題点またはその日に行う予定の作業を共有します。
・リリースプランニング(プロジェクトバックログ)
この段階では開発する製品の機能の実装順位や開発期間について、チーム全体で計画を立てます。
・スプリント計画(スプリントバックログ)
一つのスプリント、つまり一つのイテレーション期間で、プロダクト全体からどの範囲の機能を実現させるかについて、チームで計画します。
・スプリント
1つのイテレーション期間で開発を実行する工程です。スプリントのステップでは機能の機能追加や変更などは認められません。
・スプリントレビュー
前のステップで完成したプロダクトのデモを行います。そのプロダクトはバグ発生なく、円滑に動作するか確認します。
・振り返り
スプリトごとにチームが完了したスプリントの良かったところや問題点または挑戦したいことを話し合います。
スクラムアジャイル のメリットとデメリット
メリット | デメリット |
・チームメンバーにモティベーションをつける効果 ・透明なプロセスと情報でチームメンバー、カスタマー、プロジェクトオナーには認識のズレを解除、プロセスをフォローしやすい | ・プロジェクトの細分化と開発のアジリティを探求するため、プロジェクトの一部だけに焦点を合わせ、プロジェクトの全体を見失うことがある ・各開発者の役割が明確に定義しないと、チームメンバー間で混乱が生じる可能性がある |
3.2. カンバン方式
カンバン方式とは?
カンバンとはソフトウェア生産の全体フローを示すために数コラムに分けられるボード(カンバンボード)を利用するフレームワークです。カンバンでは開発が進むにつれ、テーブルにある情報も変化し、新しいタスクができたら、新しいカードが作成されます。
カンバンのメリットとデメリット
メリット | デメリット |
・一つのプロジェクトのタスク全体とタスクの状況をすべて確認できる(例えば、完了、作業中、テスティング) ・実行中のタスク数を制限する可能・サイクルの期間に焦点を当てる | ・チームメンバーがカンバンボードの情報を誤解する可能性がある ・カンバンには時間枠がないため、遅延などのタイム関連の問題が発生しやすい |
3.3. ユーザーストーリーマッピング
ユーザーストーリーマッピングとは
ユーザーストーリーマッピング (User story mappning)とはエンドユーザのニーズをアジャイルチーム 全体で共有する手法です。ユーザーストーリーツールを使用することで、ユーザーアクティビティ、タスク、エピック、ユーザーストーリーなどのユーザーニーズの内訳を通じて、製品のバックログの複数レベルとディメンションを確立することができます。通常、アジャイル開発チーム は、会議でストーリーマップを利用し、エンドユーザーが達成したい望ましい結果を特定します。
User story mappingのメリットとデメリット
メリット | デメリット |
・概要とレベルによる構造で管理する・共同して行う組み合わせでユーザーニーズをブレインストーム、相談、優先する・作業とタスクを体系的に管理・ユーザーアクティビティ、ユーザータスクを順位付け、優先順位を更新したり、ドリルダウンして、関連するエピックやユーザーストーリーに絞り込んだりする | ・開発チームとビジネスユーザー間の円滑なコミュニケーションが求められる。 |
3.4. エクストリーム・プログラミング(XP)
XPとは?
エクストリームプログラミング (Extreme Programming)は XPとも呼ばれ、アジャイルスクラム ほど人気ではありませんが、現在もよく利用されているようです。エクストリームプログラミングは以下のようなプロジェクトに適応性が高いです。
・ソフトウェア要件が動的に変化する
・新しいテクノロジーを使用した固定時間プロジェクトによって引き起こされるリスクが高い
・小規模で同じ場所に配置された拡張開発チーム
・使用しているテクノロジーは、ユニットおよび機能テストの自動化が可能にさせる
XPのコアバリューの5つはコミュニケーション、シンプル、フィードバック、勇気と尊敬です。
・コミュニケーション:XPではコミュニケーションが重視され、ホワイトボードやその他の描画ツールを利用する差し向かいのミーティングが求められます。
・シングル:システムの設計をできるだけシンプルにしたり、基本的な機能だけを盛り込んだりして、保守、サポート及び改定が容易になるようにします。それ以上の機能が必要となる場合、その都度するというわけです。
・フィードバック:これまでの作業についての絶え間ないフィードバックを通じて、改善すべき領域を特定し、実践を修正することができます。
・勇気:チームの有効性を低下させる組織的な問題を発言する勇気やうまくいかないことをやめて他の方法を示す勇気を指します。
・尊敬:チームメンバー同士がお互いに尊敬し、フィードバックの提供と受入を積極的にする必要があります。
XPのメリットとデメリット
メリット | デメリット |
・コードがシンプルなので、改定しやすい ・XP開発の全体プロセスとサイクルが可視化される | ・コードに注目を払いすぎるとデザインが軽視される恐れ ・オフショア開発チームに適応できない ・発生する可能性のあるエラーのレジストリが常に維持されているわけではなく、監視が不足していると、将来同様のバグが発生する可能性がある |
3.5. リーンソフトウエア開発 (Lean Development)
リーンソフトウェア開発とは
リーンソフトウェア開発とは、創造業を中心に展開されている トヨタ のリーン生産方式の考え方(リーン産業方式)、をソフトウェア製品に適用した開発手法です。リーンソフトウェア開発は7つの原則があります。それは:ムダをなくす:カスタマーのプロジェクトに効果的なバリューを届けないものをすべてなくすこと。品質を作り込む開発:高品質な開発製品を作り出すには残余の量の規律と管理が必要なこと。知識を作り出す:チームは、価値を保持するためにインフラストラクチャ全体を文書化することにより、動機付けられていること。異なるコミットメント:チームは、ビジネスの要件を事前に完全に理解することなく、アイデアの計画と予測に集中しすぎないようにすること。チーム尊敬:対立をお互いに尊敬するという立場から伝達と管理すること。全体を最適化する:秦の価値のフローを作成するには、コード内のエラーを削除できるように、開発シーケンスを十分に完成させる必要があること。
Lean Developmentのメリットとデメリット
メリット | デメリット |
・時間とコスト削減効果・ソフトウェア機能デリバリーの時間を短縮化する・スケーラビリティ性と適応性が高い | ・よほど情熱で優秀な開発チームが必要・複数タスクが数多くのエレメントに分けられるため、集中できない場合がある・資料が必要 |
まとめ
以上で ディエスソリューション は アジャイル開発 と 開発手法について解説いたしました。5つのアジャイル方式は、頻繁なデリバリー、関係者のコラボレーションと改善を含む同様なフレームワークに基づいています。
現在最も利用されている方式は アジャイルスクラム ですが、すべてのプロジェクトに適応できるわけではありません。基本的に適切な アジャイル手法 へ特定されたルートはありません。それは開発プロジェクトの性質と目的により、異なります。
アジャイル開発スクラム は5~9人程度のチームからなる小さなチームによる幅広いソフトウェアおよびエンジニアリングプロジェクト、特にオフショア開発に最適です。Kanbanは チームやプロジェクトサイズに制限がなく、安定したアウトプットを必要とする開発プロジェクト。それに対して、ユーザーストーリーマップはアジャイルチームサイズを問わず、利用できますが、特に複雑な製品を開発するプロジェクト。エクストリームプログラミング(XP)は、計画ベースの方法論が機能しない大規模かつ複雑で、10人を超えない、高度な資格と経験を積んだ開発チームが必要である開発プロジェクトに適切です。