« ちまたにあるAIは、本当にAIか?そして、それらはAIであるべきか? | トップページ | PDCAに関することを書いている »

2021/07/20

アジャイルプロセスの要求定義とウォーターフォールのそれ

アジャイルに対する私の認識

アジャイルプロセスでは、週、または2週単位程度で開発期間を区切り、その期間内でできる機能を高速に開発していくというのが一般的かと考えています。
その期間には、要求定義の期間も含まれると認識していますので、かなりの短期間になる認識です。
その期間内に、ユーザーが認識できる、またメリットを少しでも感じられる機能を開発する必要があるわけですから、かなり大変だろうと考えています。

たとえば、

5日間を1つの期間と考えると、

  • 1日間:要求の把握
  • 1日間:大体の設計
  • 2日間:実装
  • 1日間:受入テスト

程度の感じではないかと想像します。実際には設計を進めながら実装してテストするのがアジャイルですから、このような基幹的な区分け自体に意味がないのかもしれません。

私が認識している限り、一般的に要求定義は全体工程の20~25%程度の期間を割り当てることが多いでしょう。
アジャイルでもこれは大きく変わらないのではないかと想像しています。つまり、上述の5日間なら、1日間程度は妥当な線ではないでしょうか。
10日間の場合は、2日間取るかというとそれはまた少し違うかもしれません。1日で要求を把握して、途中途中で顧客に要求をさらに聞きながら進めるということになるでしょう。実質積み上げてみると、2日くらいなんだなというところです。

アジャイルとウォーターフォールの要求定義の違い

この2つのプロセスでの違いはいくつかあると考えています。

  • 要求を定義、獲得する範囲の広さ
  • 要求間の衝突をどう考えるか
  • 要求の優先順位付け
  • 要求の記録、いわゆる文書化

これらの違いはあるものの、ユーザーや発注者から要求を引き出すコツや方法論には、細かな違いはあれど、同じことも多いように認識しています。
このため、「アジャイルプロセスにおける要求定義」とか、「時代遅れのウォーターフォールの要求定義」などといった触れ込みには、あまり強力な意味はないと考えたりもしています。確かに、管理面などでは違いが出るので、それをこの後書いてみましょう。

それでもなお、違いをつけたいなら、

それでもなお、要求定義上の違いをつけたいということなら、上述の4つのポイントを認識することになるでしょう。

まず、要求を定義、獲得する範囲です。
当然これは、大きな違いがあります。なぜなら、ウォーターフォールの要求定義ではほぼすべての要求を広範囲に獲得しようとする一方、アジャイルは当該期間で開発するものに特化して定義することになります。
と言っても、他のところに全く目を向けないわけではなく、ざっと全体感を持つことは間違いありません。

第二の衝突をどうするかということと、第三の優先順位付けについては、前提の違いがあります。
ウォーターフォールの要求定義では、要求の衝突は回避することを前提にしている場合がほとんどです。また優先順位付けも開発プロセス内でどこまでやるかということを要求定義工程の段階でほぼ決定します。
一方、アジャイルプロセスでは、「変更」「優先順位付けの変化」については許容されるプロセスですから、大きく異なります。
開発期間が区切られていますので、前の期間で実現した要求と次の期間で実現する要求間に衝突が起こることもあるでしょう。また、開発順そのものが優先順位のようになりますから、期間が始まるときに高い優先順位の者が選択されるという形です。

第四の文書化ですが、これはアジャイルプロセスでは文書化を重視していませんので、ウォーターフォールと根本的に違います。ただ、要求を把握するための文書化は必要最小で行われるものと認識しています。

管理は違えど、コミュニケーションの問題は同じ

上述のとおり、管理上の違いはあってもアジャイルプロセスの要求定義ととウォーターフォールのそれは類似です。
最終的には結局のところ、「コミュニケーションの問題」になってくるでしょう。
その部分をどう解決するかによって、システム開発上の要求定義の出来不出来は決まってくるように考察されます。

 

« ちまたにあるAIは、本当にAIか?そして、それらはAIであるべきか? | トップページ | PDCAに関することを書いている »

要求定義」カテゴリの記事

カテゴリー

最近のトラックバック