素歩人徒然 堰 ウォーターフォールモデルの誤り
素歩人徒然
(14)



── ウォーターフォールモデルの誤り

 休日は努めて運動をすることにしている。天気のよい日などは多摩川の河原に出てジョギングすることが多いが、最近は心臓への負担を軽くするためジョギングとウォーキングを交互に取り入れている。私はこれをジョーキング(Jolk(=jog+walk)ing)と称している。

 多摩川の右岸のサイクリングコースを川上に向かってジョーク(?)していくと、登戸の手前に宿河原堰(しゅくがわらせき)がある。丁度二ヶ領用水(最近、国の文化財に指定された)の取水口があるあたりで、対岸には和泉多摩川の住宅街が見える。ここは以前、台風の影響で多摩川の水量が増したとき、対岸(東京側)の堤が決壊して新興住宅の一部が流失してしまうという出来事があった。後に山田太一作の「岸辺のアルバム」としてテレビドラマ化され有名になった、あの場所である。

 堤が決壊したのは、堰の先端で流れの向きが変わり、結果的にその変化した水の流れが堤をえぐり取ったためだったと記憶している。その際に、堰の一部を急遽取り壊して流れの影響をなくそうと試みたのだが効果は得られなかった。その後長く堰は不完全なままに残されていたが、数年前から宿河原堰を完全な姿にするための大改築が行われていた。それがようやく完成に近づいたのである。

 改築中は、河川敷内に砂利を運ぶための大型ダンプカーが出入りし、そのための専用道路や橋が作られたりして、環境破壊も極まれりといった状況になっていた。その上、建設中に河原から化石が出たりして一時は素人考古学者が大挙して発掘に押しかけるということもあった。それがとうとう完成したのである。

 堰が完成すると、河原は再びもとの静けさを取り戻した。しかしはたして自然環境はもとに戻るのであろうか、はなはだ疑わしい。川の幅一杯に堰ができてしまったために、川魚は遡上できなくなってしまうことであろう。堰の下流側では水量が減るので、満潮時に海水が逆流してきて一部では植生が変わってしまうこともあると聞く。まあ、いくらなんでも登戸あたりまで海水が戻ってくることはなかろうが。

 近年、日本の河川にはダムや堰が多く造られアユやサケなどの魚が上流へ遡るのを困難にしているという。よくテレビなどで魚が産卵のため川上へと遡っていく様を見ることがあるが、その努力の凄まじさに感心させられることが多い。繰り返し繰り返し跳躍を試みて、小さな滝や多少の落差など何するものぞと乗り越えていく。そして全身傷だらけになって生まれ故郷に戻り、産卵して力尽きて死ぬのである。

 我々が携わるソフトウェア開発という仕事でも、多くの困難を乗り越えていかねばならぬが、彼ら魚類のように命懸けで滝を登るということはないから救いがある。ソフトウェア設計では、設計の各段階を着実にこなしていけば決して後戻り工程が発生することはない、と我々は先輩から教えられてきた。その結果、こういったソフトウェア開発のステップのことを“ウォーターフォールモデル”などと呼ぶのである。

 一般にソフトウェア開発では、ウォーターフォール(滝)を遡って設計をやり直さなければならない場面に遭遇することがままあるものなのだ。昔はそういう場合、先輩の教えを思い出し内心忸怩たる思いに駆られながらも「万止むなし」と前段階の設計に戻ってやり直し作業を行ったものである。原因は分かっている。その段階ではまだ決定できなかった部分の詳細設計を残して、そのまま先に進んだことが最大の間違いのもとだったのである。そのことは十二分に分かってはいても、現実にはそうせざるを得なかったのである。そういう時私は、自分の洞察力の無さ、決断力の無さ、そして設計能力の未熟さを反省しつつ、周囲の仲間に向かってひたすら謝り協力を求めるしか方法がなかったのである。つまり、これまでは溯ることは悪と見做されてきたのである。

 しかし最近では少し様子が変わってきて、もはやウォーターフォール型は流行らなくなってきた。“スパイラル型”と称して前段階と後段階を行きつ戻りつしながら設計を進めていくことが推奨されるようになってきたからである。

 考えてみると、常に変化する顧客の要求仕様に臨機応変に応えるには、上流工程への遡りを避けることはできない。すべての仕様を完璧に固めない限り一歩も前へ進めないとしたら、設計に要する時間はもっともっと長くなることであろう。上流工程にもどってやり直すことを認めないというやり方は、実は現実的ではなかったのである。

 構築の下流工程で得られた知識や経験から生まれてきたアイディアというものは、時として一段階も二段階も流れに逆らって飛び越え、上流工程からやり直さなければ実現が難しいものがあるに違いない。逆に言えば、上流工程の作業に影響を及ぼすようなアイディアでなければ、画期的な改良効果は得られないとも言えるのではないか。我々はシステムの改良を目的としたアイディアの発掘とその実現に当たっては、設計段階での溯りを妨げる“堰”を決して設けてはならないと思うのである。■