大規模アジャイル開発の可能性(前編)ウォーターフォールは大規模向きだったのか?

2020年3月26日公開

アジャイル開発の普及にともなって、SoE領域からSoR領域へとアジャイル開発は進展しています。
さらには、大規模開発の領域にもアジャイル開発は進展しつつあります。
まずここではウォーターフォール開発のスケーラビリティーについて、アジャイル開発のスケーラビリティーと比較しながら考察します。

規模とリスクの因果関係

ウォーターフォール開発には規模に向き合い、多くのミッションクリティカルなシステムを構築してきた実績があります。
しかし、大規模になれば開発対象となるシステム/ソフトウェアの複雑度が高まります。

  • いかにつくるか? ~ 構造、機能の複雑性
  • なにをつくるか? ~ 要求、要件の複雑性

大きくはこれら2つの複雑性が、大規模化のリスクでしょう。
さて、規模とリスクはどんな関係なのでしょうか?

規模とリスクの関係

規模とリスクの関係について、以下の2つが挙げられるでしょう。

  • 規模増加にともなってリスクは増大する。
  • リスクを増大させる要因はいくつかある。

「機能、構造の複雑性」、「要求、要件の複雑性」から発生するリスクが増大する要因としては、以下事柄が考えられます。

  • ソフトウェアの構造、機能の依存関係の増加
    • ソフトウェアコンポーネント数
    • 機能数
    など
  • コミュニケーションパスの増加
    • 人の数の増加
    • teamの数の増加
    など

このようなリスクの要因(因子数)が増えると、実際のリスクはどのように増加するのでしょうか?

要因をノード、リスク発生個所をリンクと見立てたモデルが下図です。

因子組合せ数 = n×(n-1)/2 … (n:因子数)

リスク発生個所数(つまり因子組合せ数)は、因子数の2乗にほぼ比例して増加していくことがわかります。

このモデルをもとに規模とリスクの関係を示したグラフです。

ウォーターフォール開発の規模とリスク

まず、ウォーターフォール開発における、規模とリスクの関係をみてみましょう。

時間経過によるリスクの累積~ウォーターフォール開発

時間経過にともなうリスクの累積をグラフ化してみました。規模ごとに小規模(青線)、中規模(黄線)、大規模(赤線)で示しています。

ウォーターフォール開発プロセスでは、リスクの顕在化時期が下流工程に偏在しているため(*1)プロジェクト期間を通じてリスク検知されることなく時間経過に従って累積します。(モデル単純化のため累積が最小であろう線形増加としています)
また、規模が大きくなるとともにリスク因子数も増加するため、グラフの傾きは激しくなります。

大規模化によるリスクの拡大~ウォーターフォール開発

視点を変えてみましょう。
規模の増加にともなうリスクの拡大をグラフ化してみました。開発期間ごとに短期間(青線)、中期間(黄線)、長期間(赤線)で示しています。

規模が大きくなるにつれてリスクは拡大します。冒頭述べたとおりです。規模の2乗に比例して大きくなります。
また長期間になればなるほど、累積されるリスクは大きくなります。
ウォーターフォール開発プロセスでは、リスクの顕在化時期が下流工程に偏在しているため(*1)です。

アジャイル開発のリスク

アジャイル開発は反復型開発です。細かく期間を区切って開発します。
アジャイル開発における、規模とリスクの関係をみてみましょう。

時間経過によるリスクの累積~アジャイル開発

ウォーターフォール開発と同じく、アジャイル開発のリスクの累積をグラフ化してみました。規模ごとに小規模(青線)、中規模(黄線)、大規模(赤線)で示しています。

反復終了時には役に立つソフトウェア(working software)(*2)がアウトプットされるアジャイル開発ですから、少なくとも反復ごとにリスクは顕在化し、改修によってリスクはリセットされます。このため大規模であってもリスクの累積は極めて抑制されます。

大規模化によるリスクの拡大~アジャイル開発

アジャイル開発についても、規模の増加にともなうリスクの拡大をグラフ化してみました。開発期間ごとに短期間(青線)、中期間(黄線)、長期間(赤線)で示しています。

規模が拡大された場合であっても、リスクは極めて抑制されます。
規模に関わらず、リスクは少なくとも反復期間ごとには顕在化されるため、極めて低減されたリスクだといえます。

比較してみましょう

時間経過によるリスクの累積を比較

ウォーターフォール開発アジャイル開発

ウォーターフォール開発はプロジェクト期間内に累積され続けるのに対して、
アジャイル開発では、極めて低いレベルで推移しています。

大規模化によるリスクの拡大を比較

ウォーターフォール開発アジャイル開発

ウォーターフォール開発では大規模になるほど、リスクは規模の2乗に比例して大きくなります。対して、アジャイル開発では極めて低いレベルに抑制されます。

どちらがスケール容易か?

ウォーターフォール開発とアジャイル開発を比較すると、

  • アジャイル開発は(ウォーターフォール開発よりも)スケール容易
  • ウォーターフォール開発は(アジャイル開発よりも)スケール困難

であると言えそうです。

ウォーターフォール開発はスケールしない?

IPA 独立行政法人 情報処理推進機構の発行する「ソフトウェア開発データ白書 2018-1019」(*3)参照してみました。

大規模化による生産性の低下

白書の「図表8-2-4 FP規模別FP生産性の基本統計量(新規開発)」をみると、FP(ファンクションポイント)規模が400FPを超えると、規模が拡大するにつれて生産性が低下していく傾向が見えます。
また、「図表8-2-3 FP規模別FP生産性(新規開発)箱ひげ図」では、グラフ(箱ひげ図)化されており、この傾向をより直感的に認識できるのではないでしょうか。

規模拡大による生産性の低下は、本稿の冒頭に述べた、

  • ソフトウェアの構造、機能の依存関係の増加
    • ソフトウェアコンポーネント数
    • 機能数

に起因しているであろうと考えられます。

要員数増加による生産性の低下

これも白書を見てみました。「図表8-4-18 月当たり要員数別のFP生産性の基本統計量(新規開発)」によれば、月当たりの要員数が増えるにつれて生産性が低下していく傾向が見えます。 また、「図表8-4-17 月当たりの要員数別のFP生産量(新規開発)箱ひげ図」では、著しく低下していく傾向が見て取れます。

要員数の増加による生産性の低下は、これも本稿の冒頭に述べた、

  • コミュニケーションパスの増加
    • 人の数の増加
    • teamの数の増加

に起因しているであろうと考えられます。

なぜウォーターフォール開発で大規模開発を成功させてきたのか?

データからも大規模化による生産性低下が認められるなか、なぜウォーターフォール開発が大規模開発を成功させてきたのでしょうか?
成功したと思っていただけでしょうか、いやそんなはずはありません。
おそらく、

生産性低下はするものの、低下の度合いを経験的に見積れていた

ということではないでしょうか。
多くの大規模開発を経験する中で、そのリスクを工数と期間の見積りに反映することが出来たということではないでしょうか。

続いて後編では、アジャイル開発の大規模化について考察します。


参考文献

執筆

坂田 晶紀(さかた あきのり)富士通株式会社 ジャパン・グローバルゲートウェイ
ソフトウェア開発者、中小企業診断士(Registered Management Consultant)
メインフレームOS、主にシステム資源最適化プログラムの開発に従事。
その後、WEBアプリケーション開発業務に携わり、2002年からアジャイル開発を実践。
アジャイルソフトウェア開発の品質管理、開発管理、組織マネジメントを中心に、約1,000の職場をコンサルティング。

お問い合わせ

ページの先頭へ