N2 ToolBox(跡地)

跡地です。引っ越しました。http://d.hatena.ne.jp/nosen

工程分割のメリット

2005-12-07 02:43:46 | 開発手法/方法論
工程を分割せずにすむなら分割しない方がよい

このエントリの草稿をしたためている時に、この原則が当てはまらない、
つまり、工程を分割する積極的理由が存在する
ケースを発見してしまいました。

それは、
前工程の成果物をチェックして、
事前に何を作ろうとしているか確認すること
によって、後工程でのより大きな手直しのリスクを回避する

ということです。

しかし、このメリットが成り立つためには、当然の前提条件があります。
それは、
前工程の成果物をチェックするコストが
後工程の手直しによる潜在的コストより小さい

という条件です。私の意見としては、最近のオープン系のシステム開発に
おいて、この前提条件が成り立つケースは少なくなっているのでは
ないかと思います。ゆえに、オープン系のシステム開発に限っていうと、
やはりほとんどの場合、「工程を分割せずにすむなら分割しない方が良い」
ということは正しいと思います。

なぜ、私が、
前工程の成果物をチェックするコストが
後工程の手直しによる潜在的コストより小さい

ということが成り立たないと思うのか?それにはもちろんいくつか理由があります。

3つほどあります。

1つは要求が複雑化しているため、上流工程で
前もって何をつくろうとしているのか確認するコストが増加している

ということが言えると思います。

2つめはシステム構成の複雑さの増加という問題です。
システムに必要なこと全てをメインフレームが面倒を
見てくれていた時代と異なり、現在ではシステムは実に様々な
構成要素から成り立っています。サーバ側で基本的なものだけでも、
OS, RDBMS, アプリケーションサーバ、様々なライブラリやフレームワークを
組み合わせて構築する必要があります。
その結果、システム構築上の技術的な問題点を
設計段階で全て洗い出すことは難しく
なっているとおもいます。
つまり、いくら前工程でコストをかけても
後工程での手戻りのリスクを減らせるとはかぎらない
状況が生まれている
と思います。

3つめは技術の進歩による、生産性の向上
という問題です。新しい技術の登場は常に開発者の悩みの種でしたが、
でも、それでも新しい技術が登場するたびに、ソフトウェア開発の生産性は
確実に上がり、開発者から単純作業を奪っていると思います。特に、
本番環境と同じプログラムが手元のPCでも
実行できるようになったこと
および、
xUnitのようなテスティングフレームワークによって
回帰テストのコストが下がったこと
によって、
下流工程における手直しのコストがどんどん下がっている
と感じています。

以上の理由により、現状では多くの場合、
上流工程での品質確認のコストより下流工程での手直しの
コストの方が少ない、つまり、
動いているソフトウェアを確認した方が早い状況が生まれている
と思っています。


最新の画像もっと見る

4 コメント

コメント日が  古い順  |   新しい順
Unknown (tatakaha)
2005-12-13 03:42:48
「動いているソフトウェアを確認した方が早い」状況は小規模な開発に限られるのではないでしょうか?



教科書的なコメントになりますが、大規模になればなるほど、上流工程での品質確認のコストは下流工程での手直しのコストより少なくなります。



まあ、実は私自身は「作りながら考える」タイプだったりするので、工程が少ない、比較的シンプルな作り方が好きだったりもするのですが(汗)
返信する
Unknown (ikkoan)
2005-12-14 01:42:57
tatakahaさんが、

大規模になればなるほど、上流工程での品質確認のコストが下流工程での手直しのコストよりすくなくなる、そう思われるのはどうしてなのでしょうか?ちょっと根拠がわからないと...

反論もむずかしいですね。

返信する
Unknown (tatakaha)
2005-12-14 12:17:40
確かに根拠はなく、感覚的なものに過ぎませんね。

というか、こういう議論にはデータが必要なので、データ収集を心がけないといかんですね・・・。めんどいけど。
返信する
3年も前のblogにレスするのもどうかと思いますが。 (nokonoko)
2008-05-02 03:20:20
Sierの立場からすると、多くの場合、契約(工程)の分割は少なくとも2工程は必要だと思います。
1.要件定義、外部設計の一部...委託契約
2.1以降から、システムテスト相当の作業...請負契約
3.ユーザテスト...委託契約

1の工程が必要な理由ですが、多くの顧客の場合、要件自体が曖昧で、作業が進むにつれ、認識の違いや話が変わってくるなんてことは珍しくありません。この部分の認識のずれをなくし、顧客と合意することが1の工程の目的になると思います。
2の工程に関しては、まとまった単位で外注先にお願いする場合には、工程をさらに分けたくなるかもしれません。
返信する