実際にソフトウェアエンジニアリングのモジュールとは何ですか?[閉まっている]


18

Stephen Schachによると、「古典的およびオブジェクト指向のソフトウェアエンジニアリング」、第6章:

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

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

回答:


16

モジュール、

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

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

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


多数の要件があるため、各要件をモジュールと見なすことができますか?たとえば、要件「従業員を追加する」はモジュールにすることができますか?
ホアン

1
いいえ、または依存します。プログラム機能は、まとまりのある単位に分割する必要があります。このような方法で要件を細分化できる場合は、「はい」の場合があります。しかし、私はまだこのようなものを見ていません。また、「Adding Employee」はモジュールの候補であってはなりません。通常、モジュールは、プログラムを論理的にまとまった単位に分解する高レベルの構造です。
theD

12

モジュールはオーバーロードされた用語である可能性があるため、Wikipediaでは、ソフトウェアとの関連でその使用を議論する際に用語Modular Programmingで説明しています。彼らは、トップダウン設計アプローチに基づいた構造化プログラミングの観点からそれを議論します。モジュール性の重要な特性は、低結合と高凝集度の使用に関連しています。

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

歴史的に、モジュールは、DL Parnasの論文「ソフトウェアをモジュールに分解する際に使用される基準について」で説明されているように、いくつかの他の意味を持っています。彼は主に、機能分解をデータ指向分解に置き換えることの利点を議論することに関心があります。これは、オブジェクト指向分解である現在の最先端技術への大きな一歩でした。

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


7

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

一般的に、モジュールは、特定の密結合機能を提供するスタンドアロンのコードです。モジュールは、コード内の論理境界を定義し、強制します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.