ソフトウェア工学 第 7 回 木曜 5 限 F205 神原弘之 京都高度技術研究所 (ASTEM RI) http://www.metsa.astem.or.jp/se/ 1
講義の進め方 第 1 回イントロダクション ( 第 1 章 ) 第 2 ~ 7 回第 2 章 ~ 第 5 章 第 8 回中間ミニテスト (11 月 15 日 ) 第 9 回第 6 章 ~ 第 12 14 回ローム記念館 2Fの実習室で UML によるロボット制御実習 定期試験 2
概要 ソフトウェア工学の講義の目的 第 5 章構造化分析 ( 前回の残り ) 3
第 5 章構造化分析 前回 構造化分析は ソフトウェアが動作するシステムの機能に着目して 要求を仕様化する技法の一つ データフロー図という図的表現が中心
5.1 構造化分析とは 今回 構造化分析とは デ マルコ (Tom DeMarco ) により提案された分析技法 データフロー図 データ辞書 プロセス仕様書 を用いて システムを段階的に詳細化 して 要求仕様書を作成
5.1 構造化分析とは 前回 5.1.1 データフロー図 data flow diagram : DFD は システム内のデータの流れを図で示したもの フロー 1 エンティティ ( 源泉 ) フロー 2 フロー 3 プロセス 1 プロセス 2 フロー 6 フロー 4 データストア フロー 5 エンティティ ( 吸収 )
5.1 構造化分析とは ( つづき ) 前回 5.1.1 データフロー図データフロー図を構成する 4 つの要素 ( の (1) と (2) と (3)) (1) プロセス 入力データから出力データへの変換処理 円で表現し 内部に処理の内容を示す名称をつける (2) フロー プロセス間の定常的なデータの流れ 矢印で表現し 流れるデータの内容を示す名称をつける (3) データストア データを格納する場所 ファイルとも呼ばれる プロセス 1 フロー 1 データストア 平行線で表現し 格納するデータの内容を表す名称をつける
5.1 構造化分析とは ( つづき ) 前回 5.1.1 データフロー図 データフロー図を構成する 4 つの要素 ( の (4)) (4) エンティティ システムの外部に存在する機器 組織 人間など 長方形で表現し その内容を識別するための名称をつける データの発生元である源泉 ( ソース ) データの最終的な行き先である吸収 ( シンク ) に分けられる エンティティ ( 源泉 ) エンティティ ( 吸収 )
5.1 構造化分析とは 前回 5.1.2 データフロー図の階層化 (1) 全体文脈図 ( コンテキスト ダイアグラム ) を記述 システム全体を 1 つのプロセスとして捉え 外部エンティティとのデータの流れを記述する (2) プロセスの詳細化 複数の処理を含むプロセスを 複数のプロセスに分割する 分割後のプロセスやデータストアの間のデータの流れを明確にする
5.1 構造化分析とは 5.1.2 データフロー図の階層化 前回 b d e a 2.2 p c q f p2 b c d q2 2.2 q3 e a p1 p3 c q1 q4 f
5.1 構造化分析とは 前回 5.1.3 データフロー図における規則 (1) フローはデータの流れのみを表現し 制御の流れは記述しない (2) プロセスには必ず 1 つ以上の入力フローと出力フローがある (3)1 つのプロセスに複数の入力フローと出力フローがある場合 入出力関係は規定されない
5.1 構造化分析とは 前回 5.1.3 データフロー図における規則 (4) データの入出力に関する入出力順序やタイミングは表現できない (5) 起こりうるすべてのデータの流れを記述する
5.1 構造化分析とは 5.1.2 データフロー図の階層化 データの分割を伴うプロセスの詳細化の例 データの詳細化 a b p c b = x + y データ b を要素 x と要素 y に分割 a x y c
前回 ネット販売業務の要求記述 ( スライドでは省略 )
前回 5.2.1 データフロー図の作成 ネット販売業務に登場するプロセスやエンティティを見つけ出し 全体文脈図を作成する 注文者情報 ログイン情報 支払完了通知メッセージ 料金係 商品検索キー 注文者 商品一覧 ネット販売 商品管理情報 注文情報 発送依頼メッセージ 倉庫係
5.2.1 データフロー図の作成 ネット販売業務に登場するプロセスやエンティティを見つけ出し 全体文脈図を作成する エンティティ : 注文者 料金係 倉庫係 要求記述 ( の ) からネット販売業務のプロセスは 会員管理係に関する業務 注文受付係に関する業務 商品管理係に関する業務 に分割できる
前回 5.2.1 データフロー図の作成 要求記述について 主語は ( 動作の主体であるため ) データの送り元 述語は プロセス間のデータの受け渡し 動作の予格 ( 間接 ) 目的語は データの受取先 ( に ) 動作の対格 ( 直接 ) 目的語は プロセス間を流れるデータの候補 ( を ) を表す場合が多い
前回 5.2.1 データフロー図の作成 要求文 : 注文者は 注文受付係に注文情報を送ることで 希望する商品を注文することができる データフロー : 注文者 注文受付係 ( データ : 注文情報 )
前回 5.2.1 データフロー図の作成 ネット販売業務に登場するプロセスやエンティティを見つけ出し 全体文脈図を作成する 注文者情報 ログイン情報 支払完了通知メッセージ 料金係 商品検索キー 注文者 商品一覧 ネット販売 商品管理情報 注文情報 発送依頼メッセージ 倉庫係
前回 5.2.1 データフロー図の作成 ネット販売業務に登場するプロセスやエンティティを見つけ出し 全体文脈図を作成する 料金係 注文者情報 支払完了通知メッセージ ログイン情報 注文者 商品検索キー商品一覧注文情報 ネット販売 商品管理情報 発送依頼メッセージ 倉庫係
前回 5.2.1 データフロー図の作成 ( 会員情報ファイルと商品管理ファイルをデータストアとして表現 ) 注文者情報 注文者 1 会員管理 ログイン会員情報ファイル情報ログイン情報 商品検索キー 商品一覧 注文情報 2 注文受付 発送情報 料金係 支払完了通知メッセージ 3 商品管理 商品管理ファイル 商品管理情報 発送依頼メッセージ 倉庫係
前回 5.2.1 データフロー図の作成 前述の 2. 注文受付 のデータフローに着目 料金係 ログイン情報 会員情報ファイル 支払完了通知メッセージ 商品管理ファイル 注文者 商品検索キー 商品一覧 2 注文受付 発送情報 3 商品管理 注文情報
前回 5.2.1 データフロー図の作成 前述の 2. 注文受付 のデータフローに着目 料金係 ログイン情報 注文者 注文情報 商品一覧 会員情報ファイル 2 注文受付 支払完了通知メッセージ 注文情報 商品検索キー 商品管理ファイル 3 商品管理
前回 5.2.1 データフロー図の作成 前述の 2. 注文受付 を 2.1 ログイン処理 2.2 商品購入 2.3 商品検索 に分割 ( 完了 ) 料金係 ログイン情報 注文者 注文情報 商品一覧 2.1 ログイン処理 会員情報ファイル 2.2 商品購入 支払完了通知メッセージ 注文情報 商品検索キー 商品一覧 2.3 商品検索 商品管理ファイル 3 商品管理
前回 2.2 商品購入 に 以下の要求記述を追加 注文情報は 商品選択情報 ( 選択する商品の商品番号と商品選択メッセージ ) 商品取消情報 ( 選択を取り消す商品番号と商品取消メッセージ ) 注文確認メッセージ 注文確定メッセージに分けられる 商品選択係は 注文者から商品番号を受け取ると それをカート情報に追加する 商品取消係は 注文者から商品番号を受け取ると それをカート情報から削除する 注文確認係は 注文者から注文確認メッセージを受け取ると カート情報に存在する商品群に関する商品情報を商品管理ファイルから取り出し それらを注文者に商品一覧として送る 注文確定係は 注文者から注文確定メッセージを受け取ると カート情報に存在する商品群の商品番号を取り出し それらを注文情報として振込確認係に送る 振込確認係は 料金係から送られる支払完了メッセージを待つ 支払完了メッセージを受け取ると 注文確定係から受け取った注文情報を商品管理係に送る 次スライドで プロセスの 2.2 商品購入 を詳細化
前回 5.2.1 データフロー図の作成 2.2 商品購入 を詳細化するため 2.2 商品購入 のデータフローに着目 料金係 ログイン情報 注文者 2.1 ログイン処理 注文情報 商品一覧 会員情報ファイル 2.2 商品購入 支払完了通知メッセージ 注文情報 商品検索キー 商品一覧 2.3 商品検索 商品管理ファイル 3 商品管理
今回 5.2.1 データフロー図の作成 2.2 商品購入 を詳細化するため 2.2 商品購入 のデータフローに着目 ( 前のスライドから 商品購入 のデータフロー箇所だけ取り出した ) 料金係 支払完了通知メッセージ 注文者 注文情報 商品一覧 2.2 商品購入 注文情報 商品管理ファイル 3 商品管理
今回 5.2.1 データフロー図の作成 2.2 商品購入 を詳細化するため 2.2 商品購入 のデータフローに着目 ( 前のスライドから 商品管理ファイル の位置を変更しただけ ) 料金係 注文者 注文情報 商品一覧 商品管理ファイル 2.2 商品購入 注文情報 支払完了通知メッセージ 3 商品管理
今回 2.2 商品購入 に 以下の要求記述を追加 注文情報は 商品選択情報 ( 選択する商品の商品番号と商品選択メッセージ ) 商品取消情報 ( 選択を取り消す商品番号と商品取消メッセージ ) 注文確認メッセージ 注文確定メッセージに分けられる 商品選択係は 注文者から商品番号を受け取ると それをカート情報に追加する 商品取消係は 注文者から商品番号を受け取ると それをカート情報から削除する 注文確認係は 注文者から注文確認メッセージを受け取ると カート情報に存在する商品群に関する商品情報を商品管理ファイルから取り出し それらを注文者に商品一覧として送る 注文確定係は 注文者から注文確定メッセージを受け取ると カート情報に存在する商品群の商品番号を取り出し それらを注文情報として振込確認係に送る 振込確認係は 料金係から送られる支払完了メッセージを待つ 支払完了メッセージを受け取ると 注文確定係から受け取った注文情報を商品管理係に送る
2.2 商品購入 の 注文情報 に関する要求記述 今回 注文情報は 商品選択情報 ( 選択する商品の商品番号と商品選択メッセージ ) 商品取消情報 ( 選択を取り消す商品番号と商品取消メッセージ ) 注文確認メッセージ 注文確定メッセージに分けられる 商品選択メッセージ 注文者 注文確定メッセージ 2.2.1 商品選択 2.2.2 商品商品取消商品番号番号商品取消メッセージ 注文確認メッセージ 2.2.4 注文確定 2.2.3 注文確認
今回 2.2.1 商品選択 プロセスの要求記述 商品選択係は 注文者から商品番号を受け取ると それをカート情報に追加する 2.2.1 商品選択 商品選択メッセージ 商品番号 カート情報 注文者
今回 2.2.2 商品取消 プロセスの要求記述 商品取消係は 注文者から商品番号を受け取ると それをカート情報から削除する 商品番号 2.2.2 商品取消 カート情報 商品取消メッセージ 注文者
今回 2.2.3 注文確認 プロセスの要求記述 注文確認係は 注文者から注文確認メッセージを受け取ると カート情報に存在する商品群に関する商品情報を商品管理ファイルから取り出し それらを注文者に商品一覧として送る 商品管理ファイル カート情報 注文者 注文確認メッセージ 商品一覧 2.2.3 注文確認
今回 2.2.4 注文確定 プロセスの要求記述 注文確定係は 注文者から注文確定メッセージを受け取ると カート情報に存在する商品群の商品番号を取り出し それらを注文情報として振込確認係に送る カート情報 注文者 注文確定メッセージ 2.2.4 注文確定 商品番号 2.2.5 振込確認 注文情報
今回 2.2.5 振込確認 プロセスの要求記述 振込確認係は 料金係から送られる支払完了メッセージを待つ 支払完了メッセージを受け取ると 注文確定係から受け取った注文情報を商品管理係に送る 料金係 支払完了通知メッセージ 注文情報 2.2.4 注文確定 注文情報 2.2.5 振込確認 3 商品管理
今回 5.2.2 プロセス仕様 2.2 商品購入 の詳細化 ( 以下で完了 ) 商品選択メッセージ 2.2.1 商品選択 商品番号 商品番号 2.2.2 商品取消 商品取消メッセージ 商品管理ファイル カート情報 料金係 支払完了通知メッセージ 注文者 注文確認メッセージ 注文確定メッセージ 2.2.4 注文確定 商品一覧 商品番号 2.2.3 注文確認 2.2.5 振込確認 注文情報 3 商品管理 注文情報
今回 5.2.2 プロセス仕様 データフロー図の階層化において プロセスがこれ以上分割できないレベルに達した後 それぞれのプロセスの基本処理の内容をプロセス仕様書で記述する プロセス仕様書の記述には 構造化言語が用いられる 構造化言語とは 連接 選択 反復 の 3 つの構造により 機能を手続き的に記述する言語 その他には決定表 決定木 計算式などが用いられる
今回 2.2.1 商品選択 プロセスの要求記述 商品選択係は 注文者から商品番号を受け取ると それをカート情報に追加する 2.2.1 商品選択 商品選択メッセージ 商品番号 カート情報 注文者
5.2.2 プロセス仕様 2.2.1 商品選択 に関するプロセス仕様 1. 受け取った商品番号に該当する商品をカート情報から取得し 以下のいずれかの処理を行う 1.1 もし 該当商品が見つかった場合 以下の処理を行う 1.1.1 該当商品の個数をカート情報から取得する 1.1.2 該当商品の個数を 1 つ増加する 1.1.3 新しい個数をカート情報に保存する 1.2 もし 該当商品が見つからなかった場合 以下の処理を行う 1.2.1 該当商品をカート情報に 1 つ登録する 今回
今回 5.2.3 データ辞書 データ辞書は データフロー図に現れるデータ構造を定義するために用いられる 記述の方法 (1) a = b a は b に等しい ( 等価 ) (2) a + b a と b からなる ( 連接 ) (3) [ a b ] a または b のどちらか ( 選択 ) (4) (a) a はあってもなくてもよい ( 任意 ) (5) m {a} n a が m 回以上 n 回以下 繰り返し現れる ( 反復 )
5.2.3 データ辞書 今回 データ辞書の例 注文者情報 = 氏名 + 住所 +( 電話番号 )+ 初期パスワード 初期パスワード = 4 { 英数字 } 8 注文情報 = [ 商品選択情報 商品取消情報 注文確認情報 注文確定情報 ]
5.3 構造化分析におけるその他の手法 今回 データベースシステムやリアルタイムシステムの仕様化においては 3 つの図式だけでは不十分となる データフローに基づく分析を補う 実体関連図 状態遷移図を次以降のスライドで説明する
5.3 構造化分析におけるその他の手法 今回 5.3.1 実体関連図 実体 ( エンティティ ) 間の関連を図示 実体は システム内に存在する管理対象 ( 人 もの お金 場所 ) であり 名前をもつ長方形で表現 抽象的な概念や目に見えないものも実体 関連は 実体間の結びつきであり 関連名をもつひし形で表現 関連する実体のインスタンスの数や必須を表現する記号を 関連を表す実線の両端に付与できる
5.3 構造化分析におけるその他の手法 今回 5.3.1 実体関連図 注文者情報登録する注文者購入する商品 使う ネット販売システム 管理する は 実体 ( エンティティ ) は 関連
5.3 構造化分析におけるその他の手法 今回 5.3.1 実体関連図 注文者情報 と 注文者 のインスタンスは 1 対 1 の関係 注文者 と 商品 のインスタンスは 1 対多 の関係 注文者情報登録する注文者購入する商品 注文者 と ネット販売システム のインスタンスは 多対 1 の関係 使う ネット販売システム 管理する は 実体 ( エンティティ ) は 関連 商品 と ネット販売システム のインスタンスは 多対 1 の関係
5.3 構造化分析におけるその他の手法 5.3.1 実体関連図 注文者情報 と 注文者 は 必須 の関係 今回 注文者 と 商品 は 必須ではない の関係 注文者情報登録する注文者購入する商品 注文者 と ネット販売システム は 必須 の関係 使う は 実体 ( エンティティ ) は 関連 ネット販売システム 商品 と ネット販売システム の 必須 の関係 管理する
5.3 構造化分析におけるその他の手法 今回 5.3.1 実体関連図 インスタンス って なに? インスタンス の日本語訳は 実体 実体 ( エンティティ ) と直前のスライドでは説明 ( 教科書の本文 ) 同じ 商品 の異なる インスタンス を 複数の人が注文することは可能 商品 の同じ インスタンス を 同時に複数の人が注文することはできない
5.3 構造化分析におけるその他の手法 今回 5.3.2 状態遷移図 システムを状態機械としてみなす 機械は内部状態を持ち 外部とイベントをやりとりすることで状態を変える ( 遷移する ) 同じイベントが到着しても 状態に応じてアクション ( システムの応答 ) は変化する システムが取りうるすべての状態と遷移を記述 システムは必ず 1 つの状態に属している イベントは一瞬で起こり遷移時間は無視できる
5.3 構造化分析におけるその他の手法 今回 5.3.2 状態遷移図 緑字は イベント 赤字は アクション 初期状態 終了状態 起動 終了 待受 ログイン / メニュー表示 ログアウト ログイン中 ( 注文中 ) 新規登録 登録完了 タイムアウト 会員登録中
講義の進め方 第 1 回イントロダクション ( 第 1 章 ) 第 2 ~ 7 回第 2 章 ~ 第 5 章 第 8 回中間ミニテスト (11 月 15 日 ) 第 9 回第 6 章 ~ 第 12 14 回ローム記念館 2Fの実習室で UML によるロボット制御実習 定期試験 50