
![]() |
|||
|
時間がないからと言って、「早くコーディングをはじめなければ」とあせってはいけません。じっくりと落ち着いて作戦を練るのです。 |
|||
![]() |
|||
|
問題: |
|||
|
もちろん正解は、「1部屋も完成していない」です(4部屋と答えたくなったでしょうか?)。アパートを建てるには、少なくとも次の手順が必要でしょう:
「毎月2部屋ずつ、6ヶ月で12部屋」という作戦は、どう考えても無理があります。しかしソフトウェア開発の現場では、こういう無理のある作戦をたててしまう場合が多いようです。 |
|||
|
横軸に時間、縦軸に完成度をとって、開発工程のグラフを書いてみましょう。「毎月2部屋」作戦では、目標工程は一直線になります。しかし実際の開発はそれより遅れます。多くの場合、遅れの原因は次のようなものでしょう:
開発が遅れれば、出荷を遅らせるか、または未完成のまま期限通りに出荷するかという苦しい選択をしなければなりません。 |
|||
![]() |
|
私の観察によれば、良い工程は図の青いグラフのようなものです。ゆっくりとはじまり、中盤で加速し、仕上げはまたゆっくりになります。そしてオブジェクト指向はこれを可能にします。 |
|||
|
前半がゆっくりなのは、時間をかけて設計を行うためです。設計の目的は、「システムの明確な表現形を見つけること」と「今後の作業量を減らすこと」です。 中盤の加速が可能になるかどうかは、前半の設計の品質にかかっています。設計方針が明確であれば、どの機能をどのクラスで実装すれば良いのかが明らかなので、コーディングに迷うことはありません。もし仕様追加があったとしても、その機能をどこに追加すれば良いのかが明らかなので、やはり問題になりません。それに、時間が経過しても複雑化はそれほど進行しません。 うまくいけば後半は時間が余るので、十分テストすることができます。 |
|||
| 不安? | |||
|
あなたが開発者なら、はやく作りはじめたいという衝動と闘わなければなりません。もしあなたが管理者なら、「開発者はいつもコーディングに従事しているべきだ」という思いこみを捨てる必要があります。目に見えるものをつくっていないときが、実は最も生産的であるという可能性があります! |
|||
|
しかし、もし中盤の加速が実現できなかったら・・・。そう考えると恐怖ですね。確実に良い設計がなされているのか、それともただゆっくりしているだけなのかを見極めなければならないわけです。 そんなリスクは負えない?でも考えてみてください。「毎月2部屋」作戦は、確実に遅れるんですよ! |
|||
(「オブジェクト指向のはなし」は1999年2月から2000年4月にかけて作成されたコンテンツです。)