# ソフトウェア工学の起源 Navigation: [[index]] ## 定義 ソフトウェア工学の起源とは、Michael S. Mahoney が [[@1990__CWIQuarterly__The Roots of Software Engineering]] で論じる、「ソフトウェアエンジニアリング」という語とその実践が1967–68年の NATO Science Committee 会議を契機に成立した歴史的経緯、および成立時に(しばしば無自覚に)持ち込まれた他分野からの借用モデル群を指す。この語は意図的に挑発的なものとして選ばれ、既存の工学分野が持つ理論的基盤と実務的規律をソフトウェア生産に持ち込む必要を含意したが、語が指すべき実践自体は当時存在しなかった ── 語は進行中の活動の記述ではなく、活動への希求の表明として作られた。(Source: [[@1990__CWIQuarterly__The Roots of Software Engineering]] §2) ## 借用モデル Mahoney の分析の核心は、ソフトウェア工学の議論の背後に、その適用可能性がほとんど吟味されないまま他の工学分野から借用されたモデルが存在し続けているという診断である。 - **互換部品・機械工具モデル**([[M.D. McIlroy]]): 「大量生産されたソフトウェア」というスローガンのもと、サブアセンブリ・互換部品(≒モジュール性)・機械工具(≒アセンブラ/コンパイラ)の類推が持ち込まれた。この基底モデルは、モジュラープログラミング → オブジェクト指向プログラミングという後年の展開にも継続していると Mahoney は分析する。(Source: [[@1990__CWIQuarterly__The Roots of Software Engineering]] §6) - **Taylor 流の科学的管理法**([[Frederick W. Taylor]]): 各作業要素の科学的基盤の確立・労働者の科学的選抜訓練・管理と労働者の協働・責任の均等分担という4職務モデル。プログラミングの科学が未確立だったため第一の職務からして果たせなかった。(Source: [[@1990__CWIQuarterly__The Roots of Software Engineering]] §6) - **Ford 流の組立ラインモデル**([[Henry Ford]]): 技能を労働者から生産機械へ移転し、機械の精度によって品質・互換性を保証するモデル。ソフトウェアの「フォード化」は、信頼性標準を満たすソフトウェアを自動生成するソフトウェアシステムの設計を意味するが、そのようなシステムは存在しなかった。(Source: [[@1990__CWIQuarterly__The Roots of Software Engineering]] §6) - **数学的検証モデル**([[Edsger W. Dijkstra]]): Ford流の「試して壊れたら直す」実験的モデルへの対抗として、プログラム正当性の数学的証明(構造化プログラミング)を志向する立場。→ [[構造化プログラミング]] これらのモデルはいずれも米国の機械工学・大量生産の伝統([[Edwin Layton]] が『The Revolt of the Engineers』で論じたアメリカ技術者の管理責任訓練の遺産)に由来し、ソフトウェア生産という新しい対象へそのまま移植を試みられた点で共通する。 ## 横断的知見 - 現時点では [[@1990__CWIQuarterly__The Roots of Software Engineering]] のみが本概念を直接論じるソースであり、複数ソースを突き合わせた横断的知見はまだ蓄積されていない。ただし [[@1976__IEEE-TC__Software Engineering]](Boehm 1976)の Area 1 / Area 2 二分類 ── 詳細設計・コーディングには科学的原理が一部存在するが、要件・設計・保守にはほとんど存在しない ── は、Mahoney が指摘する「Taylor の第一の職務(要素ごとの科学の確立)が果たされないままの状態」の6年後の定量的裏づけとして読める。両者を突き合わせると、1976年時点で既に Area 2 の科学的空白が認識されていながら、1990年になっても(Watts Humphrey 1989の定義が示すように)その空白が埋まっていないことが分かる。 - [[SWEBOK Straw Man Version]](1998)の関連分野同定作業([[ソフトウェア工学の関連分野]])は、Mahoney が診断した「借用モデルへの無自覚な依存」に対する制度的な応答とも読める ── Computer Science・Electrical Engineering・Management など9分野を関連分野として明示的に切り出す作業は、暗黙のモデル依存を可視化しようとする試みと位置づけられる可能性がある。ただし SWEBOK Straw Man 側に NATO起源への直接の言及はなく、この接続は本 concept での推測にとどまる。 ## 未解決の問い - Mahoney が指摘する4つの借用モデル(互換部品・Taylor・Ford・数学的検証)のうち、1990年以降にどれが優勢になったか(例: アジャイル・DevOps・ソフトウェアプロセス改善は Taylor モデルの復権か、それとも新しい第五のモデルか)。 - Boehm 1976 の Area 1 / Area 2 二分類と Mahoney 1990 の借用モデル論を統合すると、「科学的原理の欠如」と「工学モデルの借用」はどちらが根本原因でどちらが結果なのか。 - SWEBOK Straw Man(1998)以降の版で、ソフトウェア工学が「その他の工学分野」から独立したモデルを確立できたと言えるか。 - Nathan Rosenberg の「収斂(convergence)」概念(機械工具産業が特定顧客向け技法を汎用工具に転用するプロセス)は、現代のソフトウェアエコシステム(OSS ライブラリ・フレームワークの汎用化)に同型の過程として見出せるか。 ## 関連 - source: [[@1990__CWIQuarterly__The Roots of Software Engineering]] - entity: [[Michael S. Mahoney]] / [[F.L. Bauer]] / [[M.D. McIlroy]] / [[Frederick W. Taylor]] / [[Henry Ford]] / [[Edsger W. Dijkstra]] / [[Watts Humphrey]] / [[Brian Randell]] / [[Fred Brooks]] / [[Barry W. Boehm]] - concept: [[ソフトウェア危機]](同ソースが跡づける直接の帰結) / [[構造化プログラミング]](Dijkstra モデルの技術的実装) / [[ソフトウェア工学知識体系]] / [[ソフトウェア工学の関連分野]] ## 出典 - Michael S. Mahoney, "The Roots of Software Engineering", *CWI Quarterly* 3, 4 (1990), 325–334.