7
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ソフトウェアPJの工期は工数の3乗根に比例する数式を理解する

Last updated at Posted at 2021-11-11

はじめに

下記サイトの「ソフトウェアプロジェクトの工期は工数の三乗根に比例する」にて数式が幾つか出てきました。

全体工数(E)の数式
$\displaystyle E = \int_{0}^{L} R{\left(t \right)}, dt = \frac{L^{3} a}{6}$
$R{\left(t \right)} = a \left(L t - t^{2}\right)$

プロジェクトの工期(L)の数式
$\displaystyle L=\sqrt[3]{\frac{6E}{a}}$

ピーク時人員数の数式
$\displaystyle R_{peak} = \frac{L^{2} a}{4}$

全体工期の数式
$L = 2.7 \sqrt[3]{E}$

自分は数学は苦手なんですが、何故3乗や6や4の分母が出てくるのかなどの理屈が知りたいんですよね。

全体工数(E)の数式

リソースヒストグラムの画像を引用させて頂きます。
image.png

リソースヒストグラムをすべて足し合わせたものが、全体工数になります。つまり、R(t)を[0,L]で定積分したものが全体工数です。計算してみると全体工数(E)は次のようになります。

$\displaystyle E = \int_{0}^{L} R{\left(t \right)}, dt = \frac{L^{3} a}{6}$

積分の基礎

微分積分については、下記の動画で学んで頂ければと思います。
中学数学からはじめる微分積分 - 予備校のノリで学ぶ「大学の数学・物理」 YouTube

積分は「次数を上げて、次数を分母に置く」という計算手法があります。
$x$ を積分した場合、$\dfrac {1}{2}x^2$ になります。
$x^2$ を積分した場合、$\dfrac {1}{3}x^3$ になります。
$x^3$ を積分した場合、$\dfrac {1}{4}x^4$ になります。

ちなみに微分は積分の逆で「次数を前に出して、次数を下げる」という計算手法になります。
$\dfrac {1}{3}x^3$ を微分した場合、$\dfrac {3}{3}x^{3-1}$ = $x^2$になります。

応用例

円周率の長さの公式 $2{\pi}r$ を積分(次数を上げて、次数を分母に置く)すると、
円周率の面積の公式(半径x半径x3.14)が $\dfrac {2}{2}{\pi}r^2={\pi}r^2$ が求まります。
球の表面積の公式 $4{\pi}r^2$ を積分(次数を上げて、次数を分母に置く)すると、
球の面積の公式が $\dfrac {4}{3}{\pi}r^3$ が求まります。

定積分とは

関数 $f(x)$ を積分するときは、∫(インテグラル)という記号を使って $\int f(x)dx$ と表記します。
積分には、不定積分と定積分があります。
積分のやり方と基礎公式。不定積分と定積分の違いとは? - アタリマエ!

不定積分
不定積分は微分したら $f(x)$ になるような関数を求めること
$\displaystyle F(x)=\int f(x)dx$

定積分
定積分は不定積分に積分区間の両端の値を代入した値の差のこと、関数 $f(x)$ を $a$ から $b$ の範囲で積分し、値の差(面積)を求めます。
$\displaystyle \int_a^b f(x)dx=F(a)-F(b)$

Lの3乗の理由

リソースヒストグラムは上向きの放物線を描いているので$x^2$の2次関数となります。
積分の計算手法に則れば$\dfrac {1}{3}x^3$ となり、3乗が出てきます。

分母が6の理由

image.png

リソースヒストグラムは上向きの放物線で土台である直線(時間)との面積を求めればいいので、1/6公式が使用できます。
放物線と直線で囲まれた面積を高速で求める1/6公式 - 高校数学の美しい物語
$\displaystyle\int_{\alpha}^{\beta} (x-\alpha)(x-\beta)dx=-\dfrac{1}{6}(\beta-\alpha)^3$

証明
積分の面積公式と証明(6分の1公式・接線など) - 理系ラボ
$x$ ではなく $x-\alpha$ が基準になるように変形して積分を行う。

$\displaystyle {\int_{\alpha}^{\beta} (x-\alpha) (x-\beta) dx }$
$\displaystyle {=\int_{\alpha}^{\beta} (x-\alpha) \left\{(x-\alpha)-(\beta-\alpha)\right\} dx}$
$\displaystyle {=\int_{\alpha}^{\beta} \left\{(x-\alpha)^2-(\beta–\alpha)(x-\alpha)\right\} dx}$
$\displaystyle {=\left[\frac{1}{3}(x-\alpha)^3–(\beta-\alpha) \cdot \frac{1}{2} (x-\alpha)^2\right]_{\alpha}^{\beta} }$
$\displaystyle {=\frac{1}{3} (\beta-\alpha)^3 –(\beta-\alpha) \cdot \frac{1}{2} (\beta - \alpha)^2}$
$\displaystyle {=\frac{1}{3} (\beta-\alpha)^3 - \frac{1}{2} (\beta - \alpha)^3}$
$\displaystyle {=-\frac{1}{6} (\beta-\alpha)^3 }$

$x$ に $\alpha$ を代入しても消えるので、$\beta$を代入した形のみが残る
一度聞いたら忘れない1/6公式の授業【積分公式の感覚的理解】

符号が正の理由

$y=x^2$が、下向きの放物線になり、$y=-x^2$が、上向きの放物線になります。
image.png

下記サイトにて、$y=a^2+bx+c$のグラフをスライダーで値設定して見ることができます。
https://www.geogebra.org/m/rhv5avxv

リソースヒストグラムは上向きの放物線なので、負数になります。
よって、先程の1/6公式は正数に変ります。
$\displaystyle -({-\frac{1}{6} (\beta-\alpha)^3 })$
$\displaystyle ={\frac{1}{6} (\beta-\alpha)^3 }$

1/6公式を当てはめる

全体工数(E) R(t)= 時刻tの工数 a = プロジェクトの動員係数 L=プロジェクトの工期
先述した正数の1/6公式に当てはめます。$\beta = L$、$\alpha = 0$ になります。
$R(t)=a(Lt−t^2)$
$\displaystyle E = \int_{0}^{L} R{\left(t \right)}, dt$
$\displaystyle ={\frac{1}{6} (L-0)^3a}$
$\displaystyle ={\frac{L^3a}{6}}$

これで下記の全体工数(E)の式が求まりました。
$\displaystyle E = \int_{0}^{L} R{\left(t \right)}, dt = \frac{L^{3} a}{6}$

プロジェクトの工期(L)の数式

全体工数(E) から式を変更することでプロジェクトの工期(L)の数式が求まります。
$\displaystyle E={\frac{L^3a}{6}}$
$L^3a$を求めるので両辺に$6$を掛ける
$\displaystyle 6 \times E={\frac{L^3a \times 6}{6}}$
$\displaystyle 6E=L^3a$
式の左右を入れ替える
$\displaystyle L^3a=6E$
$a$を右側に移行する($\frac{1}{a}$を両辺に掛けるのと一緒)
$\displaystyle L^3=\frac{6E}{a}$

3乗を右側に移行するとので3乗根になる。
これで下記のプロジェクトの工期(L)の式が求まりました。
$\displaystyle L=\sqrt[3]{\frac{6E}{a}}$

ピーク時人員数の数式

ピーク時というのは、放物線でいうところの頂点になります。
image.png

二次関数の軸と頂点の求め方など - 高校数学の美しい物語
軸の方程式,頂点の座標の導出
$y=ax^2+bx+c$ を平方完成する
$y=a\left(x^2+2\cdot\dfrac{b}{2a}x\right)+cy$
$=a\left(x+\dfrac{b}{2a}\right)^2-\dfrac{b^2}{4a}+cy$
$=a\left(x+\dfrac{b}{2a}\right)^2+\dfrac{-b^2+4ac}{4a}$

よって、軸の方程式は
$x=-\dfrac{b}{2a}x$
頂点の座標は
$\left(-\dfrac{b}{2a},\dfrac{-b^2+4ac}{4a}\right)$

先述した「符号が正の理由」と同じで、上向きの放物線になるので係数$a=-1$になります。
$a=-1$、$b=(L-0)$、$c=0$ を $y=ax^2+bx+c$ 当てはめます。

$\left(-\dfrac{(L-0)}{2 \times -1},\dfrac{-(L-0)^2+4 \times -1 \times 0}{4 \times -1}\right)=\left(\dfrac{L}{2},\dfrac{L^2}{4}\right)$
image.png
x軸が時間(t)となるので、$t=L/2$ 時に放物線のピークを迎えます。
a = プロジェクトの動員係数 を式に追加することで、ピーク時人員数の数式が求まりました。

$\displaystyle R_{peak} = \frac{L^{2} a}{4}$

全体工期の数式

ソフトウェアプロジェクトの工期と工数の関係は工数の三乗根に2.7をかけた数字に比例するとされています。この2.7という定数は、毎年の調査ごとに少しずつ違ってきます。
(中略)
これらの関係を数式にすると以下のようになります。Lは工期、Eはそのプロジェクトの工数です。
100人月のプロジェクトであれば、標準的な工期は12.5ヶ月かかると計算される。

1000人月で約27ケ月つまり2年3か月と計算される。
ソフトウェアメトリックス調査2020 システム開発・保守調査/一般社団法人日本システムユーザー協会
https://juas.or.jp/cms/media/2020/05/20swm_pr.pdf

$L = 2.7 \sqrt[3]{E}$

最後に

これで、何故3乗や6や4の分母が出てくるのかなどの理屈が分かりました。
今回、高校や中学レベルの数学で求めれることが分かったのですが、勉強して得られた知識は学習できていても習っていない違う状況・条件の問題だと分からないもんなんですよね。いわば応用力がない。

数式の解説ってググってもヒットしないんで、いつも苦労してしまう。
以前も二乗和を2で割る理由を苦労して探索して記事を書いたことがあります。

7
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?