ソフトウェア工学の実践

ソフトウェアはモノではなく現象

工学の目的は品質である。  バートランド・メイヤー コンピューター・サイエンティスト

 ソフトウェアは人間の活動と強い親和性を持っています。ビジネスとしての事業活動や営業活動、個人的な遊びや創作活動など、とても多くのことに結び付きます。

これは例えば、ビジネスとソフトウェアの成長に関する意思決定は積極的に互いを密接に関わらせ、シームレスな営みとして行われる。これが最もソフトウェアの効果を享受できる姿です。ビジネスとソフトウェアとの間に入るものはそれが人であれ部門であれ少ない方が良いのです。

ビジネスとソフトウェアの成長に必要なものの1つは「科学的な手法」に基づいた営みの中で、自分たちに必要なものを探索し適応し続けることです。

複雑性と不透明性を相手に前進しなければならない事柄は、現代では全て「科学的合理主義に基づいた手法」を必須としており。ソフトウェアを開発する営みもこれに含まれます。

科学的合理主義とは「経験主義」と「漸進主義」です。この主義が”何ではないか”といえば、それは「官僚主義的」、「権威主義的」ではないし、管理職のいうことを聞くだけの規制的なモノでもありません。

経験主義

何も考えずに権威を敬うことは、真実に対する最大の敵である。  アルベルト・アインシュタイン 理論学者

 エンジニアリングは実際の経済的な制約の中で行われるものであるため、自分たちが選択しようとしている解決策が現実的であるかどうか考えなければなりません。「経験主義」とは事実を元に意思決定を行います。実践的な分野であるエンジニアリングは自分たちの推量を試すために作った実験に懐疑的な態度で希、現実からの経験に基づいてソフトウェア開発を前進させるものなのです。

漸進主義

Quality Without A Name. 無名の質。  クリストファー・アレグザンダー 建築家

 Wikipediaによれば漸進主義とは「漸進的な設計は、後でデザインを改良したりパフォーマンスを向上させたり、そのほかの変更をしたりするためにコンポーネントを自由に交換できるようにする、モジュラな設計の応用に直接繋がっている。」と定義されています。

漸進的にソフトウェア開発を進めるということは、少しずつ大きくしていくことです。そのためにはソフトウェア全体、ひいては開発全体に対してモジュール性やコンポーネント化を活用することです。

ソフトウェア工学の実践

 ソフトウェア開発は、探索と発見のプロセスです。ソフトウェア工学の実践者である「ソフトウェア・エンジニア」は学びのエキスパートになる必要があるのです。

私たちは、疑問を持ち、試行錯誤し、失敗し、リハーサルを重ね、完成させることで「学び」を自分のものにしていくのです。。