機械設計とソフトウェア設計の違い

機械設計の第一回の授業において、まずものづくりの流れについての解説があった。ここにおいて、最初に二つソフトウェア開発との違いを見ることが出来る。

  1. 機械設計は基本的にウォーターフォールモデルに基づいて行われるが、ソフトウェアは別の手法をとることも多い。
  2. ソフトウェア開発においては部品図と組立図は基本的に同時に行うことになる。例えば部品図というのは各クラスのインターフェース定義、組立図はクラス図となる。ソフトウェア開発であれば、どの部分に何の機能を持たせるか、ということを考えてからクラス図を作り、そこから部品図を組み立てる方針が良いと思う。

さて、ではなぜこの違いが生じるのだろうか。まずひとつは成果物の「堅さ」によるものだろう。ソフトウェアは、所詮はソースコードというテキストファイルであり、不要になれば捨ててしまえばよいし、一部だけ残すこともコメントアウトすることも可能だ。
だが、機械はそういうわけにはいかない。人件費はどちらの場合にもかかるが、機械の場合だと超高級な材料を使っていることもありえる。また、一部だけ作り直すということが難しい場合も多い。これらの理由により、プロトタイプモデルのような設計方法は無駄になりやすい。
つまり、機械設計は様々な要因がより効果的と呼ばれている他の開発手法を選択することが出来なくしているということが出来る。言い換えると、もしもこの問題を解決することが出来れば、開発において劇的な進歩を見ることが出来ると考えられる。
例えばCADのようなモデリングツールを使うことで、実際に物を作ってからではなく検証することが出来る。あるいは実際にCPUを組み立てる前にFPGAで動作を確認することが出来る。手書きでレポートを書くよりも、ワープロで行ったほうが修正が容易であるのとまったく同じ理由だ。
であれば、例えばねじの設計であっても同じような手法が取れないだろうか。各物質の情報を入力し、形状を入力することで、実際に作る前に用意にそれが使用可能かを判定することが出来るという、とてもありふれたシミュレーションを、一般的なケースにおいて作ることが出来るというツールはどうやったら作れるだろうか。
この授業を通して、それを学んでみたいとは思う。