前号(今出ているのではないです)の2007年4月2日号の日経ビジネス、特集「”抜け殻”正社員 派遣・請負依存経営のツケ」40ページ3段目「大手でもシステムを作れない」のところに、CSKホールディング副会長、JISA副会長の有賀貞一氏が、以下のように述べている。
(以下斜体は、上記日経ビジネスP40から引用)
「下請け頼みの体質が染みついた結果、NECや日立製作所のような大手でさえ、自社だけではシステムが作れなくなっている」
このことは、たしかにそのとおりといえよう(この業界にいる人なら、まず反論しないだろう)。ただ、ウィリアムのいたずらは、そのあとに、以下の言葉を付け足したい。
しかし、下請けも、システムが作れなくなっている。
つまり、だれも作れなくなってきているのだ。。。
これを説明するには、システムをつくるために、3つの工程が必要なことを説明しないといけない。
1つは、実際の業務をモデル化し、文章化する工程-これが要求仕様
2番目に、その文章化したのを、コンピューターの世界に落としこみ、設計する世界
-これが、外部設計
3番目に、コンピュータの世界でかかれたものを、コンピュータープログラムに落とし込む世界
-これが、内部設計やプログラミング。
今、本屋さんに行くとうっている、JavaやC++,Strutsの本とかは、この3番目に相当する。UMLは、クラス図は、2番目の操作結果としてて来る、3番目、ユースケース図、アクティビティ図は1番目に相当する。
つまり、1番目から2番目の世界に落とし込む方法は、本屋さんには売ってない。
で、下請けはまず、3番目の方法、つまりJavaやCのプログラムについて、設計書があっているとしたら、設計書からプログラミングできる方法を教えて、業務につかせる。
メーカーも、まず、3番目のプログラミングできる人をもとめる(DBでもSQLをかけるというのは3番目に相当する)。
しかし、1番目から2番目の落とし方が正しく落とせないと、設計書に漏れが出るので、3番目のプログラムは、仕様変更で無間地獄に陥ったように果てしなく直さないとならない。。。
ので、やめてしまう。
実際、下請けの退職率は、かなり高い。
まあ、これは、その日経ビジネスの記事を読んでいれば、推測はつくであろう。
40ページよりか、前にはコンピューター業界以外の下請けでどんどん人がやめる話が書いてある。コンピューター業界も同じってことだ。
だから、1番から2番を落とし込むテクニックを教える前に、どんどん人は、やめてってしまう。やめたったら、また、プログラムから教える。
じゃあ、業界全体としては。。。3番までどまりなのだ。そのうち、この業界からもやめてしまうし、実際、2年以内でやめると、結局転職先でも、とりあえず、プログラミングから(教える部分は省略しても、とりあえず同じ仕事をさせる)やらせるので。。。
そーすると、本屋さんは、売れる本を出す。。相対的に読む人の多い、プログラミングの本が並ぶ(JAVA,C++,Perlなどのコーナーは広い)。
でも、システムをつくるには、1番から2番の落とし込みが重要なんだけど。。。それには、実は、3番をやって、1番の世界を知って、2番の設計を何回か練習しないと。。たいたい、5年くらいかかる(ITSSのレベル4程度、アプリケーションエンジニア試験に受かるか、受からないか程度)。でも、そこまで業界でやっている人は。。。もっと儲かる、マネージャーのほうになってしまうので、その分野に詳しい人が少ない。
なお、日経システムのその後の記述、過去の記憶からすると、そういうカタチではなかったはずだ。
かつては下請けを使うといっても、その範囲は限られていた。元請け会社の責任者であるプロジェクトマネージャーが、顧客の要望を取りまとめ、システムを設計する責任を負っていた。
いや、システムの設計をするのはむかしは、SEだ。
いまのSEっていうのは、ソフト技術者で、2番目の外部設計ドキュメントを作るのと、2番目から3番目に落とし込む人をさしているが、むかしのSEは、1番の要求仕様、1番から2番目の要求仕様書からシステムに落とし込むところ、2番目の外部設計ドキュメントをつくるまでが仕事だった。なので、プロジェクトマネージャーがこういう仕事をするのでなく、SEの人がして、SEの人はいっぱいいたんだけど、いまは、この1番から2番への落とし込みをする人がいなくなってきているのが、問題になっている。
ってことで、明日からはじまる週のあいだ(もしかしたら翌週になるかも)のどこかの「開発の初めから順番に書いていってみる」シリーズの中で、その要件仕様書から外部設計への落とし込みについて、書くと思います。
![](https://mokano.main.jp/card/analsysimg.cgi?imgfname=gokusho.jpg&ID=bun070401)