職業プログラマの休日出勤

職業プログラマによる日曜自宅プログラミングや思考実験の成果たち。リアル休日出勤が発生すると更新が滞りがちになる。記事の内容は個人の意見であり、所属している(いた)組織の意見ではない。

至高のウォーターフォール型開発

ウォーターフォール(Waterfall)型開発とは、まるで上流から下流に水が流れるが如く、上流から下流へ仕様書やプログラムなどの成果物を流していき、最終的なソフトウェア製品を完成させるという古典的な開発手法です。

長所としては

  • 単純である
  • ソフトウェア以外の産業においても同じ考え方が用いられることが多い
  • 上流工程でミスってなければ良い成果を得やすい

といったことが挙げられます。

ところが、この3つめの長所の前提となっている「上流工程でミスってなければ」の条件が極めて重くのしかかるのが現代のソフトウェア開発です。その原因としては

  • 上流工程に携わる人間の技術力不足
  • 上流工程に携わる人間の想像力不足
  • 上流工程に携わる人間の権限不足(企業内で使う情報システムにほぼ限った話:理想的な情報システムを作ろうとしても他部署の了解が得られない、など)
  • 上流工程での作業期間不足
  • 下流工程に携わる人間が、上流工程の成果物を誤解してしまう
  • 時代の変化(開発中に周辺環境が変化し、求められる要件が変化してくる)

などが考えられます。特に最後の時代の変化については他の産業よりも影響を受け易いところかと思います。

こういったことによる悲劇があまりにも頻発していたことから、近年では企業内の情報システムの構築においても、アジャイルAgile:素早い)型開発が普及してきています(統計を取った訳ではありませんが、感覚として)。こちらでは「上流工程はミスっている可能性が十分にある」「下流工程の人が誤解している可能性が十分にある」「仕様が途中で変わる可能性が高い」ことを前提として一連の活動を進めて行きます。いわゆる「手戻り」時の被害を小さくする為の仕組みがアジャイル型の最大の特徴と言うことができるでしょう。アジャイル型にも流派は色々あるので、詳しくは参考リンクを見て頂ければ幸いです。

参考リンク

なぜ今、ウォーターフォール型開発なのか?

前述の通り、アジャイル型の最大の特徴は、手戻り発生時の被害を小さくする仕組みにあります。
それに対してウォーターフォール型は、手戻りが発生しないと仮定すると、アジャイル型よりも低予算・短納期で製品を完成まで導くことができるのです。手戻りを発生させない工夫を張り巡らすことで、勇気を持ってウォーターフォール型に挑むという選択肢だって当然出てくるのです。ウォーターフォール型開発を闇に葬り去ってはなりません。

至高のウォーターフォール型開発

しかしながら、十分な工夫をせず、根拠の無い自信を持って「今回は上手く行くに違いない」と自己暗示をかけて、まるで運任せに博打に興じるかの如くウォーターフォールに挑む人や企業は後を絶ちません。
そういう運任せな人達にはどんな理屈も通じない…ならば、験(げん)をかつぐことにしましょう。
まずは開発環境から!

Waterfall

f:id:t_motooka:20130804124003j:plain
Sydney市街地から南へ約38kmほど行ったところにある、Waterfallという駅です。もちろん、街の名前もWaterfallです。Sydney市街地から電車で1時間ほどかかります。
Waterfall railway station, Sydney - Wikipedia, the free encyclopedia


f:id:t_motooka:20130804125325j:plain
Waterfall Public School(公立小学校)。きっとワクワクするような授業内容になっているに違いありません。


f:id:t_motooka:20130804131757j:plain
Waterfallの街の東側は、 Royal National Park と呼ばれる国立公園になっていて、Australiaの大自然に触れることができます。このUloola登山道は、その国立公園の中を通るルートになっています。

Waterfall型開発の実践

この街でWaterfall型開発を行えば、もしかしたら成果があがるかもしれない!そう思って実践してきました。

f:id:t_motooka:20130804134329j:plain
ウォーターフォール型開発と言えば…エクセル方眼紙!!しかも、日本語版のExcel 2003を利用した、伝統的なExcel方眼紙になっています。
Excel方眼紙は開発プロセスとは無関係なのですが「ピクニックにはおにぎり!」っていうのと同じくらい、強い親和性があります。

この設計作業の後、実装を進めていったのですが、開始後に以下のような進捗阻害要因が検出されました。

  • 電源の確保が難しい
  • 黙って座っていると寒い(Australiaでは、今は冬)
  • 食糧の確保が難しい

結果的には、多くのウォーターフォール型開発の現場と同じように、後から進捗阻害要因が出てきて進まなかったり手戻りしたり、という結末を迎えただけでした。

でも、この大自然に囲まれた環境での開発、悪くないですよ!