web-dev-qa-db-ja.com

ソフトウェアエンジニアリングのモジュールとは実際には何ですか?

Stephen Schachによると、「クラシックおよびオブジェクト指向ソフトウェアエンジニアリング」の第6章では、

モジュールは、プロシージャ、関数、またはメソッドが呼び出される方法で呼び出すことができるコードの単一のブロックで構成されます

これは非常に曖昧で広いようです。それで、誰かがそれを明確に説明し、要件をモジュールに分割する方法のいくつかの実際の例を示すことができますか?ありがとう。

18
Hoan

モジュール、

  • コードとデータをカプセル化して、特定の機能を実装します。
  • には、クライアントがその機能に統一された方法でアクセスできるようにするインターフェイスがあります。
  • インターフェースを必要とする別のモジュールと簡単に接続できます。
  • 簡単に展開できるように、通常は1つのユニットにパッケージ化されています。

たとえば、dapper.netはデータベースアクセスをカプセル化します。機能にアクセスするためのAPIがあります。これは、ソースツリーにプラグインして構築できる単一のファイルです。

モジュールの概念は、プログラム機能をモジュールに分解することにより、ソフトウェアをモジュールと呼ばれる個別の交換可能なコンポーネントで構成する必要があることを提唱するモジュール式プログラミングパラダイムに由来します。

16
theD

モジュールは過負荷の用語である可能性があり、ソフトウェアとの関連で使用する場合、Wikipediaはそれを Modular Programming という用語で説明します。彼らは、トップダウン設計アプローチに基づいた構造化プログラミングの観点からそれを議論します。低 結合 および高 結合 の使用に関連するモジュール性の主要な特性。

CまたはC++のような言語では、モジュールはソースファイル(.cまたは.cpp)および通常1つの関連するヘッダーファイル(.h)から個別にコンパイルされたユニットの定義に関連しています。他の言語はモジュールを説明として使用し、Modula-2言語はモジュールの前後に構造化をその名前とアプローチに置いています。

歴史的に、モジュールは D.L。パルナス 論文 "ソフトウェアをモジュールに分解する際に使用される基準について" で説明されているように、他にもいくつかの影響があります。彼は主に、現在の最先端のオブジェクト指向分解に向けた大きな一歩であった機能分解をデータ指向分解に置き換えることの利点について議論することに関心を持っています。

オブジェクト指向言語はクラスを中心に編成されているため、モジュールという用語は、そのコンテキストではあまり重要ではなく、あまり正確ではありません。

12
DeveloperDon

モジュールの正式な定義はなく、プロジェクトのコンテキストでモジュールが何であるか(またはそうでないか)は、プロジェクトの性質と設計に大きく依存します。

一般的に言えば、モジュールは特定の緊密に結合された機能を提供するスタンドアロンコードであり、モジュールはコード内の論理境界を定義および適用します。

7
Roc Martí