Introduction: ソフトウェア開発ライフサイクルにおける設計段階の目的は、SRS(ソフトウェア要求仕様)文書で与えられた問題に対する解決策を作成することである。 設計段階の出力はソフトウェア設計文書(SDD)です。
基本的に、設計は2部構成の反復プロセスです。 最初の部分は、システムが何をするのかを顧客に伝える概念的な設計である。
システムの概念設計:
- 簡単な言葉、すなわち顧客が理解できる言葉で書かれていること。
- 要求文書とリンクしている。
システムの技術設計:
- ハードウェアコンポーネントと設計。
- ソフトウェアコンポーネントの機能と階層構造。
- ソフトウェアアーキテクチャ
- ネットワークアーキテクチャ
- データ構造とデータの流れ
- システムのI/Oコンポーネント
- インターフェースを示す
Modularization.Of.Pirates システムの構成要素
- システムを理解するのが簡単。
- システムのメンテナンスが簡単。 何度も書き直す必要はありません。
カップリング。 カップリングとは、モジュール間の相互依存の度合いを表す尺度です。 良いソフトウェアは低結合になります。
結合の種類:
- データ結合。 モジュール間の依存関係が、データのみを渡して通信するという事実に基づいている場合、そのモジュールはデータ結合であると言われる。 データ結合では、構成要素は互いに独立で、データを介して通信を行う。 モジュールの通信にはトランポデータが含まれない。 例-顧客課金システム.
- スタンプ結合 スタンプ結合では、あるモジュールから別のモジュールへ完全なデータ構造が渡される。 したがって、トランポデータを含みます。 これは、効率的な要因のために必要な場合があります。この選択は、怠惰なプログラマーではなく、洞察力のある設計者によって行われます。
- 制御カップリング。 もしモジュールが制御情報を渡すことによって通信するならば、それらは制御結合と言われます。 パラメータが全く異なる動作を示す場合は悪く、パラメータが機能のファクタリングや再利用を可能にする場合は良くなることがある。 例-比較関数を引数に取るソート関数。
- 外部結合。 外部結合:外部結合では、モジュールは、開発中のソフトウェアまたは特定のタイプのハードウェアの外部の他のモジュールに依存する。 例:プロトコル、外部ファイル、デバイスフォーマットなど。
- 共通結合。 グローバルデータの変更は、そのデータにアクセスするすべてのモジュールにさかのぼり、変更の影響を評価することを意味する。 そのため、モジュールの再利用が難しく、データアクセスを制御する能力が低下し、保守性が低下するなどの欠点があります。 コンテンツカップリングでは、あるモジュールが他のモジュールのデータを変更したり、制御フローがあるモジュールから他のモジュールに渡されたりすることがある。 これは結合の最悪の形態であり、避けるべきです。
Cohesion: 結合度は、モジュールの要素が機能的にどの程度関連しているかの尺度である。 これは、単一のタスクの実行に向けられたすべての要素がコンポーネントに含まれている度合いです。 基本的には、結合力はモジュールをまとめる内部の接着剤である。 良いソフトウェア設計は高い凝集性を持っています。
凝集性の種類:
- 機能的凝集性。 1つの計算のためのすべての必須要素がコンポーネントに含まれている。 機能的結合は、タスクと機能を実行する。 それは理想的な状況である。
- 順序的な凝集。 ある要素があるデータを出力し、それが他の要素の入力となる、つまり部品間のデータフローが発生する。 これは関数型プログラミング言語で自然に発生する。
- コミュニケーショナル・コヒーシ ョン。 2つの要素が同じ入力データで動作するか、同じ出力データに向かって貢献する。 例-データベース内のレコードを更新し、プリンタに送信します。
- Procedural Cohesion。 手続き的結合:手続き的結合の要素は、実行の順序を保証する。 アクションの結合はまだ弱く、再利用可能である可能性は低い。 例:学生のGPAを計算、学生の記録を印刷、累積GPAを計算、累積GPAを印刷
- Temporal Cohesion。 要素はタイミングが関与していることで関連している。 時間的結合で接続されたモジュールは、すべてのタスクが同じタイムスパンで実行されなければならない。 この結合は、システムのすべての部分を初期化するためのコードを含む。 異なる活動の多くは、すべてのinit time.
- Logical Cohesionで発生します。 要素は機能的ではなく、論理的に関連している。 例)あるコンポーネントがテープ、ディスク、ネットワークから入力を読み取る。 これらの機能のコードはすべて同じコンポーネントにある。 操作は関連しているが、機能は大きく異なっている。
- 偶然の凝集性。 要素は関連していない(unrelated)。 要素にはソースコード内の位置以外に概念的な関係はない。 これは偶発的なものであり、結合の最悪の形態である。 例:1つの要素で次の行を表示したり、文字列の文字を反転させたりすること
Attention reader! 今、学習を止めないでください。 SDEの面接で重要なCS理論の概念を、学生に優しい価格のCS理論コースで掴み、業界に対応できるようになりましょう!
Article Tags :