この投稿は10/14の日科技連特別講義のチャットで頂いた質問への回答です。 (→回答一覧へ)
【質問】 「しくみを想像できないのはなぜか?」 「FMEAモデルとの関係は?」
5ページの図はハードウェア開発で行われるFMEAそのものだと思いました。
ハードウェアであれば明示的に部品が分かれていて、それらの相互作用で動作するという「仕組み」が比較的考えやすいのでしょう。
ですが、ソフトウェアシステムでもサーバー等のハードウェアやソフトウェアモジュールという具合に部品に分かれていて、それらがどう相互に作用して動作しているかの仕組みは想像できそうなものです。
でも、それが出来ないソフトウェアエンジニアが多いというのはどうしてなのでしょう?
仕組みを手順として考えてしまう人が多いというのは、まさにソフトウェアを手続き指向で考えてしまうということに通じるのかもしれません。
オブジェクト指向で考える習慣を付けることで解決になるのかも。
などなどと色々と考えながら聞かせて頂いております。
非常に示唆に富むお話で参考になります。
【回答】
FMEAは私も参考にしました。そのうえで、ハードウェア開発に限らず応用できるもっと簡易な方法として「しくみ・事象・対処」を使っています。
確かにハードウェアは明示的に部品が分かれているので「相互作用のしくみ」を考えやすいです。
ソフトウェアの場合はその明示的な境界がないのに対して、オブジェクト指向はそこに境界を作りハードウェア部品に近いメンタルモデルで考えられることを目指したのではないかと思います。 とはいえオブジェクト指向言語を使ってはいても実際に書くコードは手続き的な部分が多いですし、コピペ+ちょっとの修正で仕事をしているようなエンジニアだと「しくみ」の発想がないのではないでしょうか。