Web教材一覧システム調達

部品化と再利用

キーワード

サブルーチン、標準パターン、非手続き型言語、データベース、オブジェクト指向、SOA


部品化と再利用の手段

機械を設計するのに、ボルトやナットまで設計することは稀です。それは形状、材質、強度などが一定水準の品質であることが規格化されているからです。このように工業製品では、標準化した部品を用いることにより、生産の合理化、品質保証を実現しています。
 それと同様に、ソフトウェアでも、部品化をして再利用することが行われてきました。

サブルーチン

技術計算での「方程式の求根」や「連立方程式の解」、事務処理での「ファイルの操作」や「データのソート」など、多くのプログラムで共通して利用される処理があります。その処理プログラムをサブルーチンや副プログラムといいます。オブジェクト指向言語系ではクラスとして扱われます。サブルーチンを集めたものをライブラリといいます。
 これを利用すれば、プログラマはコーディングするメインプログラム(主プログラム)の中で、サブルーチンにある処理部分はそれを呼び出す命令を記述することができます。それにより、次のようなメリットがります。

サブルーチンは、言語ソフトウェアでの提供。アドオンソフト、市販ライブラリなどがありますが、自作することもあります。自作の場合、広く利用でき、利用勝手のよいサブルーチンにするには、モジュール分割の評価基準を参照するのが適切です。

標準パターン

事務処理では、ソート、照合、集計など、似たような処理が多くあります。サブルーチンとは逆に、メインルーチンが担当するフレームを汎用的に使えるプログラムとして標準化しておき、その中で個別処理をする部分だけをコーディングします。

事前に中計キー、小計キーでソートされているファイルを読んで、明細行、小計、中計、総計の表を出力する標準パターンを例にします。
 そのロジックを記述したメインプログラム(標準パターン)を用意しておき、ファイルの仕様、ソートキーや累積項目の変数、コントロールブレイクした(小計、中計が発生した)ときの処理プログラムを記述する場所に印をつけておきます。プログラムするときは、その場所だけをコーディングすればよいのです。

ここでは疑似言語を用いており、指定指示もあいまいですが、イメージはつかめるでしょう。

メインプログラム(標準パターン)
  総計累計項目 = 0     
  call ファイル読込
  while (データがある間) {
    前中計キー = 中計キー
    中計累計項目 = 0
    while (中計キー == 前中計キー) {
      前小計キー = 小計キー
      小計累計項目 = 0
      while ((中計キー == 前中計キー) and (小計キー == 前小計キー)) {
        call 明細行処理
        小計累計項目 = 小計累計項目 + 明細累計項目
        call ファイル読込
      }
      call 小計処理
      中計累計項目 = 中計累計項目 + 小計累計項目
    }
    call 中計処理
    総計累計項目 = 総計累計項目 + 中計累計項目
  }  
  call 総計処理

サブルーチン(個別記述)
  ファイル読込
    中・小計キー、明細累計項目の定義
    ファイルのデータがなくなったときのフラグ設定
  明細行処理
    明細行累計項目間の計算と出力
  小計処理
    小計累計項目間の計算と出力
  中計処理
    中計累計項目間の計算と出力
  総計処理
    総計累計項目間の計算と出力

このような標準パターンを検討するには、プログラムを全体かから細部に階層的に分割し、細部を実行する順序をします。そして、汎用化する部分と個別記述する部分を区分することになります。すなわち、構造化設計で設計することになり、標準パターンを利用して生成したプログラムは構造化プログラムになります。

関係者全員が、標準パターンを使えば、プログラムのどの部分で何をしているかが共通理解できます。これはウォークスルーの実施で大きな効果があります。また、多様な標準パターンが用意されていえば、システム全体を標準パターンの組合せとして構築することにつながります。

部品再利用を前提としたシステム開発

システム開発アプローチ

DOA(データ中心アプローチ)
販売システム、会計システムなど業務を縦割りにして、担当者がどのデータをどのように処理するかをプログラムする方法をプロセス中心アプローチ(POA)といいます。そのようなアプローチでは、得意先や商品、売上データなどを、多くのシステムで個別に定義し、生成・運用することになります。それに対して、DOAでは業務横断的に必要となる項目やデータをデータベースにし、各業務はそれらを参照したり更新することだとするアプローチです。すなわち、データの部品化だといえます。
OOA(オブジェクト指向アプローチ)
例えば、売上ファイルのデータの追加をする受注、出荷フラグを立てる納品など、データベースとそのデータを処理するプログラム(メソッド)を部品化部品化しました。
SOA(サービス指向アーキテクチャ)
さらに部品の粒度を大きくして、受注とか在庫確認など、業務として意味のある単位(サービス)を部品化たものです。

非手続き型言語

修正個所を発見するには、プログラムのステップ数が短いほうが容易です。COBOLのような手続き型言語に比べてSQLのような非手続き言語を用いれば、ステップ数は非常に少なくなります。非手続き型言語は、標準パターンを言語化して汎用性を高めたものだと解釈することもできます(参照:「プログラミング言語の発展」)。

部品化と再利用の推進

部品化のメリット

部品化のデメリット

反面、適切な管理をしないで部品化を進めると、かえって混乱が生じます。

部品化推進の留意点

そのため、部品化を推進するには、多様な対処が必要になります。