「動乱の1968年」と大量生産されるソフトウェアコンポーネント

「動乱の1968年」と呼ばれるこの年、世界は大きな変革と混乱の中にありました。国際社会は自由と平等、変革への渇望に揺れ動く中で、テクノロジーが未来を形作る力として注目され始めていました。そのような中、NATO科学委員会はドイツ・ガルミッシュにおいて、ソフトウェア工学に関する画期的な会議を開催しました。この会議で最も注目を集めた議論の一つが、M.D.マッキルロイによる「ソフトウェア部品の大量生産」に関する提案でした。

マッキルロイは、ハードウェア産業が精密で効率的な製造体制を築き上げている一方で、ソフトウェア産業は未だ職人的な手法に依存している現状を憂慮しました。彼は、ソフトウェア部品を工業化することで、標準化と効率性を実現し、重複する開発作業を削減できると提唱しました。その中心となるアイデアが「ソフトウェアファミリー」です。彼のビジョンでは、開発者が精度や堅牢性、性能などの要件に応じたソフトウェアルーチンをカタログから選択できる未来が描かれていました。これらの部品は、ハードウェア部品のように交換可能であり、モジュール化されているべきだとしています。

また、マッキルロイは、ソフトウェアの多様性を実現するための手法として「パラメータ化設計」の重要性を強調しました。この設計では、異なるハードウェアやユーザーのニーズに対応できるよう、精度や堅牢性などを柔軟に調整することが可能です。彼はさらに、数値計算、入出力処理、テキスト管理といった分野での初期標準化を提案し、その可能性と課題について議論しました。

この提案は、当時急速に発展しつつあった情報化社会の未来を見据えたものであり、混乱の中で進歩を模索する時代において、技術革新の希望を示しました。1968年という歴史的な変動期において、彼のビジョンはソフトウェア開発の効率化だけでなく、人類の進歩への道筋をも示唆していました。

現代におけるモジュール設計やAPI、オープンソースリポジトリは、マッキルロイの原則を反映したものであり、彼のアイデアがどれほど先見的であったかを証明しています。技術と人間の進歩が交わる地点において、彼の提案は希望の灯火であり、動乱の1968年におけるもう一つの重要な変革の象徴であったのです。


マキルロイの提案の主なポイントは以下の通りです:

  1. 再利用可能なコンポーネント: ソフトウェアを構築する際、部品の再利用性を重視し、効率的に新しいシステムを構築できるようにする。

  2. 部品の標準化: ハードウェアのように、標準化された部品を用意して、互換性や統一性を確保する。

  3. パラメータ化されたモジュール: コンポーネントを柔軟に利用できるよう、パラメータ化を導入する。

  4. 自動化: 再利用可能な部品を効率よく生成・管理するためのツールやプロセスを自動化する。

マキルロイの思想は、今日のモジュール化プログラミング、ライブラリ、フレームワーク、パッケージ管理システム(npm、pipなど)に直接的な影響を与えています。また、ソフトウェア工学の重要な基盤となった「コンポーネントベース開発(Component-Based Development)」の原点とも言えます。

この提案は、1968年にナト報告書(NATO Software Engineering Conference)で発表され、現代のソフトウェア工学の礎を築きました。

https://www.cs.dartmouth.edu/~doug/components.txt

アブストラクト

本レポートでは、ソフトウェア開発における部品化と工業化の概念を提唱しています。マッキルロイは、現在のソフトウェア産業がハードウェア産業と比較して未熟であり、標準化、モジュール化、効率的な設計原則が欠如していることを指摘します。ソフトウェア部品の標準化を推進することで得られる利点、設計における可変性やパラメータ化の重要性、そしてソフトウェア部品産業の試験的な立ち上げに向けたステップを議論しています。


章ごとの要約

8.2.1: ソフトウェア部品の大量生産

ソフトウェア部品をハードウェアの部品のように工業的に生産し、標準化する必要性が述べられています。現在の状況では効率が悪く、同じようなものが何度も再発明されています。機械工学や電気工学と比較しながら、部品のカタログ化、高品質化、カスタマイズ可能性の重要性を強調しています。


ソフトウェア産業の未工業化

著者は、現在のソフトウェア生産を「工業化以前の職人的な作業」と評し、ハードウェア産業のように部品やツールの標準化が欠けている点を批判します。これがソフトウェア開発の効率性を著しく妨げていると指摘します。


ソフトウェア部品

ソフトウェア部品に特化したサブ産業の必要性を説明します。この産業では、精度や堅牢性、性能に応じた家族(ファミリー)として部品を提供し、それぞれが高品質であることを保証する必要があります。これにより、ユーザーは部品を「ブラックボックス」として安全に利用できるようになります。


具体例: サイン関数

サイン関数を例に、ソフトウェア部品に必要な多様性(例: 精度、範囲、堅牢性)を説明します。個別に多くの関数を開発するのではなく、パラメータ化や自動化を活用することで、効率的に大規模なインベントリを構築できる可能性を示しています。

低レベルなサイン関数ルーチンを例に考えてみましょう。標準的なカタログにはいくつのバリエーションを収録すべきでしょうか?直感的には、以下のような多様性を持つ次元が考えられます。精度: おそらく10種類の異なる近似関数があれば十分でしょう。
浮動小数点計算と固定小数点計算の選択肢。
引数の範囲: 000からπ/2\pi/2π/2、000から2π2\pi2π、−π/2-\pi/2−π/2からπ/2\pi/2π/2、−π-\pi−πからπ\piπ、および−大値-\text{大値}−大値から+大値+\text{大値}+大値など。
堅牢性: 引数の検証を全く行わないものから、完全な有意性の喪失を通知するもの、あるいは特定の範囲の違反を通知するものまで。


これらを考慮すると、10種類の精度、2種類のスケーリング(浮動小数点と固定小数点)、5種類の引数範囲、3種類の堅牢性が組み合わさり、基本的なサイン関数ルーチンの組み合わせは300種類になります。また、完全なカタログには「計測基準のサイン関数」も含まれるべきです。この関数は、実行時に指定された任意の精度で結果を返すことが期待されます(ただし、それにはコストがかかる可能性があります)。

さらに、詳細なニーズに対応するための、実装がやや難しい可変性の次元も考えられます。時間と空間のトレードオフ(テーブルルックアップによる):
(a) テーブルサイズ
(b) 入力値の量子化(例えば、入力が度数単位の整数である場合)
その他の可能性:
(c) 期待される入力シーケンスの既知の特性を活用(例えば、同じ引数で連続してサインとコサインを呼び出す場合の効率化)。


もし、企業が300種類のサイン関数ルーチンを一つずつ書き、それを大量販売で利益を得ようとすれば、間違いなく破産するでしょう。カタログ内の一部の項目は、注文されることさえないかもしれません。しかし幸運なことに、このような「インベントリ」を提供するコストは、単一のルーチンを維持するコストの300倍にはなりません。異なる精度の近似を生成する自動化技術が存在するからです。また、堅牢性の度合いに応じたコードの挿入や削除を可能にする編集およびバインディング技術もあります。実際に根本的に異なるルーチンが必要なのは、おそらく浮動小数点と固定小数点の違いに限られるでしょう。そのため、基本的なインベントリを作成することはそれほど難しいとは思えません。

このサイン関数の例は、ソフトウェア部品の大量生産について興味深い事実を改めて浮き彫りにします。今日ではほとんどのサイン関数が浮動小数点で計算されていますが、それでも固定小数点のオプションを捨てるべきではありません。それを捨てることは、小規模なプロセス制御やリアルタイムアプリケーション向けの、多数の小型ハードウェアに特化したルーチンの大部分を放棄することを意味するからです。

ソフトウェアの「大量生産」とは、製造業でいうところの「モデル」や「サイズ」の多様性を意味します。それは、各モデルの単なる複製の多さとは異なるものです。


パラメータ化された部品ファミリー

部品設計における「バインディングタイム(結合時)」の概念を議論します。既存の例としてIBMのOS/360 Sysgenが挙げられますが、その限界を指摘し、より柔軟でスケーラブルな部品設計が必要であると述べています。


適用分野

数値計算ルーチン、入出力変換、幾何学処理、テキスト処理、ストレージ管理など、初期段階で標準化に取り組むべき分野を特定しています。それぞれの分野における課題と可能性を分析しています。


市場の展望

ベル研究所をケーススタディとして、ソフトウェア部品の標準化がもたらす市場の可能性を論じています。現在の非効率的なソフトウェア開発の状況を改善し、高品質の部品による生産性向上が期待されています。


現在の供給者

現在存在するCACMアルゴリズムやユーザーグループ、ソフトウェアハウス、製造業者の製品を評価し、それらが十分に需要を満たしていない理由を説明します。


部品工場

ソフトウェア部品産業を立ち上げるためのロードマップを提案します。包括的なインベントリの構築、政府や研究機関の支援、工業的な生産手法の重要性、そしてカタログ化や流通の課題について議論しています。


標準化に関する議論

部品産業を急いで標準化することのリスクを指摘し、柔軟で適応可能な標準が必要であると述べています。業界が成熟する中で自然な収束が期待されるとしています。


まとめ

マッキルロイは、ソフトウェア部品産業の確立を通じて、標準化されたカタログを作成し、システム設計の効率を大幅に向上させることを提唱しています。このようなアプローチは、現在の未熟なソフトウェア産業を進化させ、より高品質で柔軟なソフトウェア開発を可能にする道を開きます。

いいなと思ったら応援しよう!

あたり帳簿
お願い致します