紺屋の白袴

法政の院の授業、いよいよ後半に突入。全員でどんなプロジェクトを仕上げるか。
何を作るかまでは絞り込んだ。次は、概要設計。そして、詳細設計、各自への割当、と続く。

djangoの使い方を覚えたばかりだから、例年だったら、教室内を回って、そこそこ各自の「進行状況」を画面で見せてもらって、割当なんかも決める、というか、ある程度得手不得手を把握してから割り当てするところが、今年は、どうも、学生の状況が把握しにくい。それはそれで、別の話。

概要設計を発表してもらうのに、UMLのユースケース図とか、画面遷移図、データベースのクラス図を、UMLを使って用意して、予め提出しておいてから、来週発表して下さいと学生に伝えた。

若干早いけれど、これで「成績の最低保証」はしてしまおうかと思っている。「これだけの設計が出来ているなら、最低でもAは出せる」とか、「これは文句なしS」とかで、「ちょっと、これだとBレベルか」と思ったら、ここから先、7月にかけて、「個人攻撃」じゃないんだけど、「もうちょっと、この辺を詳しく作り直して、発表してください」的な追加課題をその人だけに上乗せしていって、最終的にはなんとか全員A以上を出せたらいいな、と。
ここだけの話なので、とりあえず、読まなかったことにして、忘れてください。

それはいいとして、このUMLとか、基本設計図。実際には、僕は仕事では使っていない。
単価が安い分、短納期で、短い期間にできるだけ数多く仕事を請けたい。という思惑もあって、概要設計の段階で打ち合わせを済ませたら、いきなり詳細設計に入る。1000円の床屋さんのような商売。コーディングする際に、Usage のコメントなどを出来るだけ書き込むってことはやるけど、それを詳細設計の代用にしている。そこの部分では、あまり問題が出ていないんだけれども・・・

ユースケース図って、「お客様」に理解してもらえるのか。どうやったら、「これから作ろうとしているシステム」の概要、詳細を相手に伝えられるのか、ここのところが最大の課題かもしれない。

実のところ、今ドツボにハマっている事例で言えば、例えて言えば、最初は2階建てのつもりで作り始めていたら、相手は3階建て、それ以上、欲しいだけ上に載せられると思っていた感じで、2階部分までの骨格ができたあたりで「どうやって、3階に上がるの?」的な質問を投げられて、「え?3階部分まで作るなんて、聞いていなかったんですが!」ってな感じの絶句。

3階に作り直すつもりで、骨格(データベースの基本構成)を書き直したら、例えて言えば、荷重を支えているメインの柱付近で「この辺を広々とした吹き抜けにして欲しい」的な感じのリクエストが出て、絶句。
そんなこんなで、基本構造の作り替えを2回やった挙句に、ついこの間、ポロッと「ここをこうして欲しい」という、かなり基本部分の設計変更にかかる話が出てきて、固まった。これで3回目。「大枠合意」の中には含まれているから、拒絶はできないという最悪の展開。

どうして、こんなことになっちゃったんだろうか。と言えば、「例外処理」。最初は、例外処理だと思っていた、その「例外」部分が、全く別の箇所に括りついてきて、ここがこうなったら、こっちもこうしてくれないと困る、的な関連が発生。連動させようとしたら、基本構造の検索処理などを書き直さざるを得なくなる。部分的な例外処理の追加では全く済まない「例外」が、小出しに、次から次へと出てくる。かなりレアなケースでも、基本設計全体が変わる。100回に1回でも発生するなら、それに対応するために、システムの規模が1.5倍以上に膨れる。

ある程度画面を作り、動作の骨格を決めて、試しに提示すると、突然「こういう場合には、こうした処理ができないと困る」的な話が出てきて、どれもこれも、レアケースらしいのだけれども、パッチワークに次ぐパッチワークの上に、止めを刺すように、「骨格変更」が出現する。パッチワークで凌げなくなったら、全体を一旦壊して作り替えるしかなくなる。

こちらも、業務フロウを熟知して作り始めた訳ではないから、もしも、上流工程の概要設計に時間をかけていたら、このトラブルは回避できたのか、と考えてみるにつけ、「ある程度形になって、実際のデータを入れ始めてからでないと、例外があることに気付いてもらえない」という、作り手と使い手の認識のギャップが根底にあって、その都度、心の中で、「そういうことは、最初にいってよ〜」と(もう何十回と)思いつつ、最初の段階では、そういう例外があることすら、忘れていたんだろうな、と、諦める結果になる。
例えばの話ですが、売上データを作れない(保存してはならない)のに、売上伝票を作らなければならない、って、どうやると思います?

結局、当初、3人月程度で見積もっていたシステム開発が、松尾くんを巻き込んで、二人がかりで既に15人月を超過し、まだ後最低でも1ヶ月は、一旦壊してから作り替えるという作業が入りそうで、疲弊しつつある。先方さんは、まだまだ、「ここをこうして、あそこをこうして」的な話を出したいみたいで・・・。画面のレイアウトを変える程度なら、お安い御用なんだけれども、業務フロウに関わる部分で、処理をバイパスしたり、例えば、「受注」したら即「売上伝票を作成する」的な、およそ、私や松尾くんが持っている「常識」が通用しない部分で、またしてもの大改造。

 

何だか、今はもう、呆けてしまって・・・いつになったら、終わるんだろ〜的な、諦め気分。

基本設計とか、設計文書、って、何だよそれ、役に立たねぇ、みたいなことを、思いながら、学校の授業ではUMLのユースケース図とか、クラス図なんかは、書けるようになりましょうね、って、とんだ嘘つき野郎になってしまった気がした。