Software-engineering-software-analysis-design-tools

提供:Dev Guides
移動先:案内検索

ソフトウェア分析および設計ツール

ソフトウェアの分析と設計には、要件仕様を実装に変換するのに役立つすべてのアクティビティが含まれます。 要件仕様は、ソフトウェアからのすべての機能的および非機能的期待を指定します。 これらの要件仕様は、人間が読める、理解できるドキュメントの形をとっており、コンピューターには何の関係もありません。

ソフトウェアの分析と設計は中間段階であり、人間が読み取れる要件を実際のコードに変換するのに役立ちます。

ソフトウェア設計者が使用するいくつかの分析および設計ツールを見てみましょう。

データフロー図

データフロー図は、情報システム内のデータの流れをグラフィカルに表現したものです。 着信データフロー、発信データフロー、および保存されたデータを表すことができます。 DFDは、データがシステムをどのように流れるかについては何も言及していません。

DFDとフローチャートの間には顕著な違いがあります。 このフローチャートは、プログラムモジュールの制御の流れを示しています。 DFDは、さまざまなレベルでのシステム内のデータの流れを表します。 DFDには、コントロール要素またはブランチ要素は含まれていません。

DFDのタイプ

データフロー図は論理的または物理的です。

  • *論理DFD *-このタイプのDFDは、システムプロセス、およびシステム内のデータフローに集中します。たとえば、銀行ソフトウェアシステムでは、異なるエンティティ間でのデータの移動方法。
  • *物理DFD *-このタイプのDFDは、データフローが実際にシステムに実装される方法を示します。 より具体的で、実装に近い。

DFDコンポーネント

DFDは、次の一連のコンポーネントを使用して、データのソース、宛先、ストレージ、およびフローを表すことができます-

DFDコンポーネント

  • エンティティ-エンティティは、情報データのソースおよび宛先です。 エンティティは、それぞれの名前を持つ長方形で表されます。
  • プロセス-データに対して実行されたアクティビティとアクションは、円または角丸長方形で表されます。
  • データストレージ-データストレージには2つのバリエーションがあります。両方の小さい辺がない長方形、または片側だけが欠けている開いた長方形として表すことができます。
  • データフロー-データの移動は、先の尖った矢印で示されます。 データの移動は、矢印の基部からソースとして矢印の先端に向かって表示されます。

DFDのレベル

  • *レベル0 *-最高の抽象化レベルDFDはレベル0 DFDとして知られ、情報システム全体を、すべての基礎となる詳細を隠す1つの図として表します。 レベル0 DFDは、コンテキストレベルDFDとも呼ばれます。
  • *レベル1 *-レベル0 DFDは、より具体的なレベル1 DFDに分類されます。 レベル1 DFDは、システム内の基本モジュールと、さまざまなモジュール間のデータの流れを示します。 レベル1 DFDは、基本的なプロセスと情報源にも言及しています。
  • *レベル2 *-このレベルでは、DFDはレベル1で言及したモジュール内のデータの流れを示します。 +高いレベルのDFDは、必要な仕様レベルが達成されない限り、より深いレベルの理解でより具体的な低いレベルのDFDに変換できます。

構造図

構造チャートは、データフロー図から派生したチャートです。 DFDよりも詳細にシステムを表します。 システム全体を最も機能の低いモジュールに分割し、システムの各モジュールの機能とサブ機能をDFDよりも詳細に説明します。

構造図は、モジュールの階層構造を表します。 各層で特定のタスクが実行されます。

構造図の構築に使用される記号は次のとおりです-

  • モジュール-プロセス、サブルーチン、またはタスクを表します。 制御モジュールは、複数のサブモジュールに分岐します。 ライブラリモジュールは再利用可能であり、どのモジュールからでも呼び出すことができます。 SCモジュール
  • 条件-モジュールのベースにある小さなひし形で表されます。 これは、制御モジュールが何らかの条件に基づいて任意のサブルーチンを選択できることを示しています。 SC条件
  • ジャンプ-サブモジュールの中央でコントロールがジャンプすることを示すために、モジュール内を指す矢印が表示されます。 SC Module Jump
  • ループ-曲線矢印はモジュール内のループを表します。 ループの対象となるすべてのサブモジュールは、モジュールの実行を繰り返します。 SC Loop
  • データフロー-末尾に空の円の付いた有向矢印は、データフローを表します。 SC Dataflow
  • 制御フロー-最後に塗りつぶされた円の付いた有向矢印は、制御フローを表します。 SC ControlFlow

HIPO図

HIPO(階層的入力プロセス出力)図は、システムを分析し、文書化の手段を提供する2つの組織化された方法の組み合わせです。 HIPOモデルは、1970年にIBMによって開発されました。

HIPOダイアグラムは、ソフトウェアシステム内のモジュールの階層を表します。 アナリストは、HIPOダイアグラムを使用して、システム機能の高レベルのビューを取得します。 機能を階層的にサブ機能に分解します。 システムによって実行される機能を示しています。

HIPO図は、文書化の目的に適しています。 グラフィカルな表現により、設計者や管理者はシステム構造の図を簡単に把握できます。

HIPO図

モジュール内の制御とデータのフローを示すIPO(入力プロセス出力)図とは対照的に、HIPOはデータフローまたは制御フローに関する情報を提供しません。

IPO Chart

HIPO図、階層表示、およびIPOチャートの両方の部分は、ソフトウェアプログラムの構造設計と同様のドキュメント化に使用されます。

構造化された英語

ほとんどのプログラマーはソフトウェアの全体像に気付いていないため、マネージャーから指示された内容のみに依存しています。 プログラマーに正確な情報を提供して正確かつ高速なコードを開発することは、高度なソフトウェア管理の責任です。

グラフや図を使用する他の形式の方法は、人によって解釈が異なる場合があります。

したがって、ソフトウェアのアナリストとデザイナーは、構造化英語などのツールを思いつきます。 それは、コーディングに必要なものとそのコーディング方法の説明に他なりません。 構造化された英語は、プログラマがエラーのないコードを書くのに役立ちます。

グラフまたは図を使用する他の形式の方法は、人によって解釈が異なる場合があります。 ここでは、構造化英語と擬似コードの両方が、その理解のギャップを緩和しようとします。

構造化英語は、構造化プログラミングパラダイムで単純な英語の単語を使用します。 これは究極のコードではなく、コーディングに必要なものとそのコーディング方法の一種の説明です。 以下は、構造化プログラミングのいくつかのトークンです。

IF-THEN-ELSE,
DO-WHILE-UNTIL

アナリストは同じ変数とデータ名を使用します。これらはデータディクショナリに格納されており、コードの記述と理解がより簡単になります。

オンラインショッピング環境での顧客認証の同じ例を取り上げます。 顧客を認証するこの手順は、構造化された英語で次のように記述できます。

Enter Customer_Name
SEEK Customer_Name in Customer_Name_DB file
IF Customer_Name found THEN
   Call procedure USER_PASSWORD_AUTHENTICATE()
ELSE
   PRINT error message
   Call procedure NEW_CUSTOMER_REQUEST()
ENDIF

構造化英語で書かれたコードは、日常の話し言葉の英語に似ています。 ソフトウェアのコードとして直接実装することはできません。 構造化英語はプログラミング言語に依存しません。

擬似コード

擬似コードは、プログラミング言語により近く書かれています。 これは、拡張されたプログラミング言語であり、コメントや説明が満載されていると見なされる場合があります。

擬似コードは変数宣言を回避しますが、C、Fortran、Pascalなどの実際のプログラミング言語の構造を使用して記述されます。

擬似コードには、構造化英語よりも多くのプログラミングの詳細が含まれています。 コンピュータがコードを実行しているかのように、タスクを実行する方法を提供します。

n個までのフィボナッチを印刷するプログラム。

void function Fibonacci
Get value of n;
Set value of a to 1;
Set value of b to 1;
Initialize I to 0
for (i=0; i< n; i++)
{
   if a greater than b
   {
      Increase b by a;
      Print b;
   }
   else if b greater than a
   {
      increase a by b;
      print a;
   }
}

決定表

決定表は、構造化された表形式で、条件とそれに対処するために実行される各アクションを表します。

エラーをデバッグして防止するための強力なツールです。 同様の情報を1つのテーブルにグループ化し、テーブルを組み合わせることにより、簡単で便利な意思決定を実現します。

決定表の作成

決定表を作成するには、開発者は基本的な4つの手順に従う必要があります。

  • 対処可能なすべての条件を特定する
  • 特定されたすべての条件に対するアクションを決定する
  • 最大可能ルールを作成する
  • 各ルールのアクションを定義する

決定表はエンドユーザーが検証する必要があり、最近ではルールとアクションの重複を排除することで簡素化できます。

インターネット接続に関する日々の問題の簡単な例を見てみましょう。 まず、インターネットの起動中に発生する可能性のあるすべての問題と、それぞれの可能な解決策を特定することから始めます。

列の条件の下で起こりうるすべての問題と、列のアクションの下で予想されるアクションをリストします。

条件/アクション

規則

条件

接続済みを表示

N

N

N

N

Y

Y

Y

Y

Pingは機能しています

N

N

Y

Y

N

N

Y

Y

ウェブサイトを開く

Y

N

Y

N

Y

N

Y

N

行動

ネットワークケーブルを確認してください

X

インターネットルーターを確認する

X

X

X

X

Webブラウザを再起動します

X

サービスプロバイダーに連絡する

X

X

X

X

X

X

何もしない

Table : Decision Table – In-house Internet Troubleshooting

エンティティ関係モデル

エンティティ関係モデルは、実世界のエンティティとそれらの間の関係の概念に基づくデータベースモデルの一種です。 現実のシナリオをERデータベースモデルにマッピングできます。 ERモデルは、属性、制約のセット、およびエンティティ間の関係を持つエンティティのセットを作成します。

ERモデルは、データベースの概念設計に最適です。 ERモデルは次のように表すことができます。

ERモデル

  • エンティティ-ERモデルのエンティティは現実世界であり、 _ attributes_ と呼ばれるいくつかのプロパティがあります。 すべての属性は、 _ domain_ と呼ばれる対応する値のセットによって定義されます。 +たとえば、学校のデータベースを考えます。 ここでは、学生はエンティティです。 学生には、名前、ID、年齢、クラスなどのさまざまな属性があります。
  • 関係-エンティティ間の論理的な関連付けは relationship と呼ばれます。 関係はさまざまな方法でエンティティとマッピングされます。 カーディナリティのマッピングは、2つのエンティティ間の関連付けの数を定義します。 +カーディナリティのマッピング:
  • 一対一
  • 一対多
  • 多対一
  • 多対多

データ辞書

データディクショナリは、データに関する情報の集中管理されたコレクションです。 データの意味と起源、他のデータとの関係、使用のためのデータ形式などを保存します。 データディクショナリには、ユーザーおよびソフトウェアデザイナーを容易にするために、すべての名前の厳密な定義があります。

データディクショナリは、多くの場合、メタデータ(データに関するデータ)リポジトリとして参照されます。 ソフトウェアプログラムのDFD(データフロー図)モデルとともに作成され、DFDが変更または更新されるたびに更新されることが期待されています。

データ辞書の要件

データは、ソフトウェアの設計および実装中にデータ辞書を介して参照されます。 データディクショナリは、あい​​まいさの可能性を排除します。 プログラム内のどこでも同じオブジェクト参照を使用しながら、プログラマーとデザイナーの作業を同期させます。

データディクショナリは、完全なデータベースシステムを1か所で文書化する方法を提供します。 DFDの検証は、データディクショナリを使用して実行されます。

内容

データディクショナリには、次に関する情報が含まれている必要があります

  • データフロー
  • データ構造
  • データ要素
  • データストア
  • 情報処理

データフローは、前述のようにDFDを使用して記述され、説明されているように代数形式で表されます。

= Composed of
\{} Repetition
() Optional
+ And
[/] Or

住所=家番号+(通り/エリア)+市+州

コースID =コース番号+コース名+コースレベル+コースグレード

データ要素

データ要素は、データおよび制御項目の名前と説明、内部または外部のデータストアなどで構成されます。 次の詳細を使用します。

  • 一次名
  • セカンダリ名(エイリアス)
  • ユースケース(使用方法と使用場所)
  • コンテンツの説明(表記法など。 )
  • 補足情報(プリセット値、制約など)

データストア

データがシステムに入力され、システム外に存在する場所からの情報を保存します。 データストアには以下が含まれます。

  • ファイル
  • ソフトウェアの内部。
  • ソフトウェアの外部ですが、同じマシン上にあります。
  • 別のマシンにあるソフトウェアおよびシステムの外部。
  • テーブル
  • 命名規則
  • インデックス作成プロパティ

情報処理

データ処理には2つのタイプがあります。

  • *論理:*ユーザーが見るとおり
  • *物理:*ソフトウェアが見るとおり