BLOGTIMES
2011/01/26

プログラミングは設計か製造か?

  softwareengineering  programming  paper 
このエントリーをはてなブックマークに追加

業界ではSEとPGの仕事の違いは何なのかということはよく議論になるところで、SE=設計する人、PG=実装(製造)する人のような感じで括られていたりするわけですが、その疑問に対する1つの解になる記事を見つけました。
現在、この「ソフトウェア工学とは何か」の邦訳はweb.archive.orgにしか残っていないようです。

今から20年前に書かれた記事としては古くささを感じさせない内容になっています。つまり、ソフトウェア工学がこの20年の間、この問題を進展させられていないといういうことでもあります。残念なことですが、最後の一文の「そうでなければ,私たちはいつまでも鉛筆,紙,ホワイトボードを使い続けることになるでしょう。」に集約されていると思います。

ソフトウェア工学とは何か*1(web.archive.org)

ソースコードがソフトウェア設計であると考えることによって重大な帰結が導き出されます。この帰結はあまりにも重要かつ自明であるものの,ほとんどのソフトウェア組織において盲点となっているものです。それは,ソフトウェアの製造(ビルド)が安価なものであるという事実です。あまりにも安いため安価なものとして見なす必要すらなく,ほとんど無料といっても良いくらいなのです。ソースコードがソフトウェア設計であると考えた場合,ソフトウェアの本当の製造はコンパイラとリンカによって行われることになるわけです。私たち自身もソフトウェア・システム全体のコンパイルとリンクのプロセスを,しばしば「ビルドを行う("doing a build")」と呼んでいます。また,ソフトウェア構築用の機器に対する資本投資も莫大なものとはなりません。実際に必要なものは,コンピュータ,エディタ,コンパイラ,リンカだけなのです。そして,いったんビルド環境が利用可能になれば,ソフトウェアの製造にはほんの少しの時間しか必要とならないのです。 50,000行のC++プログラムをコンパイルするには,かなりの時間が必要となるかもしれませんが,50,000行のC++と同じくらい複雑な設計のハードウェア・システムを製造することを考えた場合,取るに足らないものとなるはずです。

僕はコンパイラはソフトウェア工学*2の最大の発明であると考えていましたが、製造=コンパイルという考え方は確かに盲点でした。確かに、コンパイル以外の部分が全て設計であるという定義は納得感があります。これまで、MDAのような技術がプログラミングレスであるような記述を見る度に、「モデルを詳細に定義することは、それじたいがプログラミング一種じゃないの?」という疑問があったんですが、自分のその疑問に上記の定義はよく答えてくれます。

今回は時間がなかったので日本語をザーッと読んでしまいましたが、今度ゆっくり原文に目を通したいと思います。


トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/4035
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form

コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。

OpenID を使ってログインすることができます。

Identity URL: Yahoo! JAPAN IDでログイン