講義資料


7.1 要約
 この論文は、モジュール化を、その開発時間の短縮を認めている間、システムの適応性やわかりやすさを改良する為の手法であると議論している。「モジュール化」の有効性は、システムをモジュールに分割する時に使われている判断基準に依存している。あるシステム設計の問題点が提案されており、平凡な分割とそうではない分割の両方が述べられている。それには、複雑な分割にはゴールへの略図の明確なメリットがあると示されている。分割が行われる時に使われる判断基準が議論されている。もし、モジュールが1つもしくはそれ以上のサブルーチンからなるという平凡な想定に基づいて実行されたら、複雑な分割は、ほとんどの場合において効率が悪くなるだろう。この結果にならないような実行の新しい取り組み方の概略が述べられている。

7.2 序論
 GouthierとPontは、モジュールプログラミングの原理のわかりやすい報告書をシステム・プログラム設計のテキストで1970年に見つけることができます。それを以下に引用する。
プロジェクトの取り組みによってうまく定められた分割はシステムのモジュール化を保証している。各々の仕事は、独立した、全く異なったプログラムモジュールを作ることである。1つのモジュールにおける実行時間と、その入出力がうまく定義されると、インターフェースと他のシステムモジュールの混乱は何もない。モジュールの完全な時間を検査する時間は、独立して検査される。つまり、検査が始められる前に、さまざまな仕事を同時に行うスケジューリングの問題点は何もない。結局、システムはモジュラーの様式によって維持されており、システムのエラーや欠陥は特定のシステムモジュールを調べることができる。
通常、システムをモジュールに分割する時に使われている判断基準については何も言われない。この論文は、例を使って問題点を議論し、システムをモジュールに分割する時に使われているいくらかの判断基準を提案するだろう。

7.3 A Brief Status Report
 モジュールプログラミングの領域の主な進歩はコーディング技術およびアセンブラーの開発でした。アセンブラーとは、1つのモジュールが別のモジュールの中でコードについての知識をほとんど用いずに書かれており、モジュールが全てのシステムの再集合なしで、再集合され、取り替えられているものである。この手段は、大きなコードを作るのにはとても価値があるが、問題システムの例として最もよく使用されるシステムは高度にモジュール化されたプログラムで、上記で書かれている技術を使っている。

7.4 予期されたモジュールプログラミングの利益
 モジュラープログラミングの予期された利益は、(1)管理、(2)生産の適応性、(3)わかりやすさ、である。
 (1) 管理…独立したグループはほとんどコミュニケーションの必要が
         ない1つ1つのモジュールにおいて機能しているので、開
         発時間が短縮されなければならない。
 (2) 生産の適応性…他のモジュールを変化させることなく1つのモジ
               ュールを徹底的に変化させることができるべき
               である。
 (3) わかりやすさ…一度にシステム1モジュールを研究することが可
               能でなければならない。それゆえ、全てのシス
               テムがよりよく理解されているので、よりよい計
               が可能である。

7.5 モジュール化とは
 以下は、モジュール化と呼ばれるいくつかの部分的なシステムの説明である。この文脈において、「モジュール」はサブプログラムではなく責任割り当てであると考えられる。モジュール化は、独立したモジュールの研究が始まることができる前になされるに違いない設計決定を含んでいる。全く異なる決定は各選択肢の中に含まれているが、すべての場合において、意図は1つ以上のモジュールに影響する全てのシステム・レベルの決定について記述することである。

7.6 システム例1:KWICインデックス生産システム
 次に述べるKWICインデックスの説明はこの論文を満足させるだろう。KWICインデックスシステムは、ラインの順序づけられたセットを受けつけ、各ラインは言葉の順序づけられたセットであり、また各言葉は文字の順序づけられたセットである。どんなラインも、初めの単語を削除しラインの終わりにそれを追加する、という作業を繰り返し行うことにより循環的に変えられるかもしれない。KWICインデックスシステムは、すべてのラインのすべての循環的な変更のリストをアルファベット順に出力する。
 これは、小さなシステムである。巨大なデータベースやソフトウェアを支援しない、などという極端な状況下を除けば、そのようなシステムは1週間か2週間以内に、優れたプログラマーによって生産されるに違いない。その結果、モジュールのプログラミングを動機づける障害のどれもこのシステムにとって重要ではない。大きなシステムを余すところなく扱うことは実用的ではないため、私たちは、あたかもそれが大規模なプロジェクトかのようにこの問題を扱う練習をし続けなければならない。私たちは、最新の取り組み方の典型となる1つのモジュール化と、大学生クラスのプロジェクトでうまく使用されてきた他のモジュール化を与える。

7.6.1 モジュール化1
 私たちは、以下のようなモジュールを示す。
■ モジュール1:入力
このモジュールは入力媒体からデータラインを読みこみ、それらを残りのモジュールによって処理する中心部に格納する。その性質は1語に4つ詰め込まれており、そうでなければ未使用の特徴は単語の終了を示すために使用される。インデックスは各ラインの始まりのアドレスを示すために維持されている。

■ モジュール2:循環的な変更
  このモジュールは、入力モジュールが完璧に機能した後に呼ばれる。それは、個々の循環的な変更の1つめの特徴のアドレス、およびモジュール1によって構築された配列中のラインのオリジナルインデックスを準備する。それは、オリジナルライン番号やアドレスの始まりなどのようなペアとなった言葉の中心部にその出力を託す。

■ モジュール3:アルファベット順
  このモジュールは、入力時にモジュール1、2によって生産された配列をとる。それは、
  モジュール2で生産されたものと同じ書式の配列を生産する。しかしながら、この場合において、循環的な移動は、別の順に(アルファベット順に)リストされる。

■ モジュール4:出力
  モジュール3とモジュール1によって生産された配列を使う時に、このモジュールは、循環的な移動をすべてリストする、うまく書式化された出力を生産する。非常に複雑なシステムでは、各ラインの実際の始まりが記録されるだろうし、情報を促進するポインタが挿入されるかもしれないし、また、循環的な移動の始まりは、実際にはライン中の最初の単語ではないかもしれない。

■ モジュール5:マスター・コントロール
  このモジュールが他4つのモジュール中の(時間順の)配列をコントロールする以上のことはほとんどしない。それは、エラーメッセージやスペースの割り当てなどを処理したりもするかもしれない。

 上記のものが決定的なドキュメントを構成しないことは明らかに違いない。より多くの情報が、動作が開始される前に提供されなければならないだろう。決定的なドキュメントは、中核フォーマットを示す多くの図、ポインタの協定、協定を呼ぶことなどを含むだろう。4つのモジュール間の全てのインターフェースが、動作が開始される前に具体的に挙げられなければならない。
これは、モジュールプログラミングの提案者全員によって意味された感覚の中のモジュール化である。システムはうまく定義されたインターフェースを備えた多くのモジュールに分割される。つまり、各々は十分に小さく、徹底的に理解され、よくプログラムされるために十分に単純である。小規模の実験は、これが詳細に述べられたタスクのためにほとんどのプログラマによって提案されるおおよその分解であることを示す。


トップ アイコントップページへもどる

直線上に配置