何が違う?ウォーターフォールとアジャイル

セキュリティの社員教育

 世の中、DX(デジタルトランスフォーメーション)が大流行りです。「DXでは、PoC(Proof of Concept:概念実証)をアジャイル開発でサクッとやって、直ぐに結果をだします!」とかいってませんか?、私の側でもそんな会話をチラホラ聞きます。
 いまさら聞けない感じですが、アジャイルってなんでしたでしょうか?
 この記事では、改めてアジャイル開発について、ちょう簡単におさらいしてみたいと思います。
 そういう私もアジャイルって、結局ウォーターフォールの開発手法を短期間には回しているだけじゃない?、なんておもっていました。

 では早速いってみましょう。

✔ アジャイルってなんジャイル?

 アジャイル(agile)という単語の意味は、「素早い」「機敏な」「頭の回転が速い」となります。
 計画、設計、実装、テストを小さいサイクル(イテレーションと呼ぶ)、通常1~2週間単位で繰り返し、その都度、機能のリリースを行っていきます。
 そのため、アジャイル開発は、開発の途中で仕様変更や追加が予想される開発に適しています。
 近年、脚光を浴びているDXでは、最新のテクノロジーやユーザーニーズにあった商品・サービスを素早くリリースすることが求められるため、アジャイル開発は、DXの実現に適した手法と言えます。

✔ アジャイルの歴史(簡単に)

 アジャイルという手法は、いつからあるのでしょうか?
 2001年に、17名の技術者が米国ユタ州に集まり、「アジャイルソフトウェア開発宣言」を発表しています。そこには、アジャイルソフトウェア開発における12の原則が定義されています。
 アジャイルソフトウェア開発宣言

✔ アジャイルの開発手法

<スクラム>
 ラグビーのスクラムが語源となっています。
 チームで効率的に開発をすすめるフレームワークであり、メンバー自身がイテレーション(繰り返し開発の単位)毎の計画を立案し、設計・実装を進め、イテレーション毎に開発の進捗状況や制作物を検査します。チーム内のコミュニケーションがとても重要であることからスクラムと呼ばれます。
 
<エクストリーム・プログラミング(XP: Extreme Programming)>
 技術面に重きを置いている開発手法です。
 コミュニケーション、シンプル、フィードバック、勇気という4つの価値ををチーム内で共有し、事前の計画よりも仕様・要件の途中変更への柔軟な対応を重視した手法
 
<ユーザ機能駆動開発(Feature Driven Development)> 
 実際に動作するソフトウェア開発を適切な間隔で繰り返す手法であり、顧客にとっての機能価値(Feature)の観点を重視して開発を進めます。
 ユーザーのビジネスを見える化して必要な機能を洗い出すために事前にビジネスモデリングを実施する必要があります。

✔ アジェイルのメリデメ(メリット、デメリット)

<メリット>
 ウォーターフォールと比較して、不具合が発生した場合の手戻り工数が少ないことがメリットとなります。
 アジャイルは、小さい単位で設計からテストまでを繰り返すため、手戻りが発ししてもその繰り返し分のみの手戻りで済むのです。
 また、ユーザーとコミュニケーションを取りながら開発を進めるため、使用変更や追加対応が可能であり、ユーザーの満足度を高めることができます。

<デメリット>
 アジェイル開発では、計画を詳細に立案しないため、スケジュールや進捗を把握しにくくなります。
 そのため、開発全体に遅延が発生した場合に気づくのが遅くなる可能性があります。
 また、計画段階で厳密な仕様を決めないため、当初の計画からズレたアウトプットとなってしまう可能性があります。

✔ ウォーターフォールとの違い

 ウォーターフォールでは、企画、計画、設計、実装、テストそしてリリースと水が上から下に流れるように計画をすすめていきます。
 最初に指標となる機能設計と併せて、開発スケジュールを決めるため、あらかじめスケジュールを設定しておくことで現状の進捗度を把握することが可能になります。
 アジャイルでは、ウォーターフォールでは一度しか行わない、上から下への流れを計画、設計、実装、テストを一つの単位として、繰り返し行います。
 最初にいった、「アジャイルは、ウォーターフォールを小さい単位で行っているだけ!」というのもあながち間違えでは、ないですが、その単位を小さくすることに意味があり、開発スピードを上げることに繋がるということが言えます。

 

コメント

タイトルとURLをコピーしました