はじめに
下記サイトの「ソフトウェアプロジェクトの工期は工数の三乗根に比例する」にて数式が幾つか出てきました。
全体工数(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)の数式
リソースヒストグラムをすべて足し合わせたものが、全体工数になります。つまり、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の理由
リソースヒストグラムは上向きの放物線で土台である直線(時間)との面積を求めればいいので、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$が、上向きの放物線になります。
下記サイトにて、$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}}$
ピーク時人員数の数式
二次関数の軸と頂点の求め方など - 高校数学の美しい物語
軸の方程式,頂点の座標の導出
$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)$
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で割る理由を苦労して探索して記事を書いたことがあります。