ソースコードは設計情報
[ ソフトウェア開発 ]
『米マイクロソフト、ウィンドウズの設計情報の一部を公開へ』という記事が新聞に出ていました。
新聞のいう設計情報とは何だろうと思って読んでみると、それは仕様書ではなくユースケース図やらクラス図やらシーケンス図でもなく、ソースコードのことです。
なんだ、新聞正しく認識してるじゃん。というか「ソースコード」を専門用語を使わずに説明しようとすると、ソフトウェアの「設計情報」という言葉を使わざるを得ないわけです。ソースコードは製造物そのものではないのですから当然ですね。
それにもかかわらず、ソースコードを書くこと(=プログラミング)はものづくりでいうところの製造工程にあたる、という誤解はソフトウェアを作る業界では一般的です。
製造工程であるから、完全な設計図があれば人件費が安いところに外注に出してコストダウンができるはずという風に思われてしまうわけです。そして「スキルが必要ない単純労働」と認識されてしまうのです。とある雑誌で「プログラマの年収は明らかにSEよりも低い。それはプログラマは単純労働であり要求されるスキルが低いからである」と書いてあってがっかりしました。
もし誰にも誤読されない(だから安く外注に出せる)ほど厳密で完全な設計図があるとすれば、それはコンパイルして実行できるでしょう。つまりその設計図はソースコードです。
ソースコードは製造されたモノではなく、製造するのに必要十分な情報なのです。設計図と製造工程の指示を一緒にしたようなものでしょうか。ソフトウェアにおける製造工程とは、たとえばCDをプレスする工程になるでしょう。
ソフトウェアの恐ろしいところは、ものすごくいい加減な設計であってもメカニカルな機械と違ってそれなりに動いてしまうことです。欠陥がすぐには表面化しないのですね。

コメント
ソースコードは設計であり、実装であり、極論すると全て。。。かな。
というか、過去にいろいろな部署を見てきましたが、古いものについてちゃんとした仕様書が完璧に残ってるところなんて、見たことありません。「ソースを読むしか無い」はまあ普通にありがちな状況のような気がするんですが、どうなんでしょう。
ここのところ、少し気にっているのが開発生産性と品質検証の問題です。と言ってもまじめに調べてはいないのですが、検査部といろいろやりとりする関係で、いろいろ気になるのですよ。はっきり言えば、検査部の要求してくるものに少々納得の行かないものが少々というべきか、多少というべきか、ありますね。まるきり否定することもできないが、承服もし切れないものが。
はやりのアジャイル開発なら良くなる?(そういう単純なくくりで済む話でもない気はする)
投稿者: momo | 2006年2月 4日 01:27
momoさん> ソースコードは単なる製造物じゃないんだぜ、位の軽い気持ちでこのエントリを書いたのですが、確かにおっしゃるような面の問題もありますよね。
「綺麗で読みやすく、メンテナンスのしやすいコードを書く」技術はもちろん重要なのですが、そういうソースコードしか読めなくなってしまうと、おっしゃるような「ソースを読むしかない」状況で役立たずになってしまうかもしれません。どんなコードでも読み解く技術も重要だよなと最近思うようになりました。
開発生産性と品質の問題は永遠の課題ですね。ソフトウェアの場合は生産性をどのように測るかということからして問題ですし...。
このあたりの話題は、本をいっぱい読んでも混乱するばかりです。可能なら小規模にでも仕事で実践したりして、もし考えがまとまったらこちらでネタにするかもしれません。
投稿者: こじま | 2006年2月 4日 10:32