part ii: 構造化設計手法と...
Post on 15-Mar-2018
231 Views
Preview:
TRANSCRIPT
Part II: 構造化設計手法と設計の表現
2. データフロー設計:データフロー図
データフロー図とは、以下の特徴を持つ設計言語である。
抽象設計に適用する。特に、プログラムの構造を設計するには、適切な言語である。)
構造化設計手法である。
データの流れを重視する。
データ駆動の設計。つまり、データがプログラムの操作の間にどのように流れていることを定義することによって、プログラムの設計を行う方法である。
例えば、次の数式を計算するプロセスを
データフロー図で表現する:
(a + b) * (c + d) + f
Add1
Add2
Add3Multiply
a
b
c
d
fsum1
sum2
p res
データフロー図の同意語 :
バブル図(Bubble chart)
DFD (Data Flow Diagram)
バブル図(Bubble diagram)
プロセスモデル(Process model)
機能モデル(Function model)
適用の応用領域:
操作がデータより重要であるシステムの設計に
有効である。
紹介する内容:
DFDのコンポーネント
プロセス分解
階層的なDFDの構築の指針
2.1 DFDのコンポーネント
DFDは四種類のコンポーネントを使用する。
プロセス(process)
データフロー又はデータの流れ(Data flow)
データストア(Data store)
ターミネーター(Terminator)
2.1.1 プロセス
プロセスとは、入力により出力を生成する操作である。
プロセスの同意語:
バブル(Bubble)
機能(Function)
変換(Transformation)
操作(Operation)
プロセスを図で表す:
例えば,
重要: データフローの変換を
表すプロセスは意味があるが、
データフローに連接して
いないプロセスが使われない。
Name
ArrangeLectures
RegisterProjects
プロセス名の付け方。プロセス名は、次のように
作成できる。
動詞ー目的語の語句。
一定の機能を持つ組織の名前又は実体名。
重要: プロセス名は、そのプロセスの機能を示すべきである。
2.1.2 データフロー
データフルーとは、データ項目の移動を表すもの
である。
データフローを図で表す。
ここで、aはそのデータフロー名である。
a
データフロー名の付け方。データフローに次のよう
に名前を付ける。
名詞語句。
データの情報を示すべきである。
データフロー名は、一般に小文字英字で表す。
データフローはプロセスと一緒に使われ、プロセス
のデータフローを転換する機能を表す。
DivideRecords
SortRecords
study-records
qualified-student-records
failed-student-records GiveRecommendations
sorted-records
records-with-recommendations
データフローについての要点
データフローは、一種類の情報を表す。
データフローは、複合なデータ項目の表示ができる。
データフローは、方向を示す。
データフローは、分岐又は収束することができる。
例えば,
分岐データフロー
FacultyOffice
UniversityStudentOffice
Professor
student-records
収束データフロー
Provide
Student
Data
Provide
Professor
Data
Provide
Administrator
Data
Classify
Data
student
professor
administrator
classified-data
データフローは、手続き的な情報を示していない。
例えば、次のDFDは、どういう意味を示して
いるのか。
P
a
b
c
d
e
2.1.3 データストア
データストアは、動かない状態の一つ又は幾つか
のデータ項目を表す。
例えば, file, databaseは、データストアとして
使われる。
データストアを図で表す。二つの可能性がある。
(a) データストアに名前だけを挙げる。
(b) データストアに名前と番号を挙げる。
name
n name
(a)
(b)
データストアの使い方:
データストアについての要点:データフローを通じてプロセスに結ぶ。プロセスからデータストアへのデータフローは、更新の意味を表す。データストアからプロセスへのデータフローは、データストアの情報を読み込む意味を表す。
study-records
ProfessorFacultyOffice
students sorted-records
データストアとプロセス間のデータフルーには、名前を付けるか、付けないかが構わない。
データストアは受動的である。
2.1.4 ターミネーター
ターミネーターとは、プログラムシステムと交信する外部
の実体である。
例えば、人、組織、政府機関などは、ターミネーターと成れる。
ターミネーターを図で表す。
Name
ターミネーターの事例:
ターミネーターが含まれるDFDは、文脈図(context
diagram)と呼ばれる。
Ministry of Education
University
Information
System
Parents
student-enrollment-data
enrollment-data
request-for-study-records
available-study-records
ターミネーターについての要点:
ターミネーターは、設計されているプログラムの外部のものである。
設計者は、ターミネーターの内容や働き方などを変えることができない。
ターミネーターらの間の関係は、DFDに表されない。
買い物のICカードシステムの事例
機能要求:
(1)ICカードを認識できる。
(2)ICカードを使うためにパースワードが必要。
(3)ICカードで買った物に対して支払い場合、直接に自分の銀行口座から引き出す。
(4)支払いの金額は、自分の銀行口座の残高より
大きい場合、支払いが出来ない。
買い物のICカードシステムのトップレベルDFD
1Check IC card
2Authentication 4
Print outReceipt
3Pay from
Bank Account
IC_card
unacceptable_card
acceptable_card
password
acceptable_IC_cards
bank_accounts
wrong_pass
correct_pass
total_costlack_money_error
successful_pay
receipt
Exercise 2.1
以下の機能を持つATMシステムの設計をDFDで表現
しなさい。“ATMシステムは、 Receive-Request, Check-Password, Withdraw,
およびShow-Balanceという四つのプロセスを使う。
プロセスReceive-Request は、「引き出す」又は「残高を見せる」という
命令を受け、その命令をプロセスWithdraw 又はShow-Balance へ送
る。
同時に、プロセスCheck-Password へも入力されたカードのIDと
password を検査する指示を送る。
Check-Password からShow-Balance とWithdraw
にIDとpasswordが確認されたメセッジを送る。
Withdraw は、customer に引き出す金額を要請、
もしその金額が口座の残高より小さいなら、その金額の金を出力する。
皆プロセスからデータストアaccountsにアクセス
または更新する必要がある。
Show-Balanceは口座の残高を出力する。“
2.2 プロセス分解
プロセス分解の必要性:
プロセスをDFDに分解することにより、そのプロ
セスがどのように自分の入力から出力への変換を行ったということがもっと詳しく理解できる。
一つのレベルのDFDの複雑度を減少させる。
並列的チームワークを支える。
分解の事例: Personal Expenses Management System は、トップレベル
DFDである。
PersonPersonal Expenses
Management System
Output device
(screen, printer)
item-reg
single-item-d
total-exp
all-item-d
reg-confim
item-d
total-amount
items-table
Full names for data flows:
item-reg = item-registration
single-item-d = single-item-data
toatl-exp = toatl-expense
all-item-d = all-item-data
reg-confirm = registration-confirmation
item-d = item-data
total-amount = total-amount
items-table = items-table
プロセスPersonal Expenses Management Systemの分解されたDFDは、次のスライドで表される。
total-exp
all-item-d
shop-name
item-reg
single-item-d
Register Item
item-name
price
date
expenses-file
Output Confirmation
Message
com reg-confirm
Search Item Information
item-name Sort Items
items-list item-d
Compute Total
Expensetotal-amount
Obtain All Items Data
Make Item Table
all-items-list
items-table
23
5
6
7
8
9
プロセスCompute Total Expense は、次のDFDに分解される。
Find All Related Items
total-exp
month
Calculate Total Expense
items-list total-amount
expenses-file
7.1 7.2
2.3 階層的DFDを描くガイドライン
複雑なプログラムシステムは、階層的なDFDで
表すのが普通である。階層的なDFDを構築するに
は、ガイドラインがある。
次の階層的なDFDらを考えましょう。
T1 T2
T3
TheSystem
a b
c
Figure 0 the context diagram
12
34
ad
e f
g
h
b
c
Figure 1 the decomposition of process The System
2.1 2.2
2.3
d
b
f
k
i
h
s
s
3.1 3.2
3.3
3.4
e
g
h
l
j
2.2.2
2.2.1
2.2.3
j
h
b
x
y
Figure 2 Figure 3
Figure 4
ガイドライン
数字を用いて、プロセスと、それを分解したDFD
を結び。例えば, Figure 1 のプロセス 2 は、Figure 2 のDFD に分解された。そのため、Figure 2のプロセスらは、数字 2.1, 2.2, および2.3で表示する。
データストアにアクセスするプロセスが分解されたDFDにも、そのデータストアを適当に使う。例えば、プロセス3は、データストアs に書き込むことがある。この機能も分解されたDFDに反映されるはずである。
階層的DFDを一般にトップーダウン設計により作成する。しかし、ある場合は、階層的DFDを“middle-out” という方法で構築する。この方法で
は、先ず設計者が一番分かっているまたは一番重要な部分からDFDを設計する。その後、プロセスの分解およびDFDの統合によって、全体の階層的なDFDを作成する。
一つのレベルのDFDの規模は、約六つのプロセスを含むのは普通である。
階層的DFDには、構造の整合性を守ることが重要である。階層的DFDの構造の整合性によ
ると、プロセスの入力と出力データフローは、必ずそれを分解したDFDのプロセスに使われる。例えば、 Figure 0 のトップレベルプロセスThe System には、一つの入力データフロー a
および二つの出力データフロー bとcがある。
それらのデータフローは、そのプロセスを分解したDFDに使われている。
買い物のICカードシステムの事例
機能要求:
(1)ICカードを認識できる。
(2)ICカードを使うためにパースワードが必要。
(3)ICカードで買った物に対して支払い場合、直接に自分の銀行口座から引き出す。
(4)支払いの金額は、自分の銀行口座の残高より
大きい場合、支払いが出来ない。
買い物のICカードシステムのトップレベルDFD
1Check IC card
2Authentication 4
Print outReceipt
3Pay from
Bank Account
IC_card
unacceptable_card
acceptable_card
password
acceptable_IC_cards
bank_accounts
wrong_pass
correct_pass
total_costlack_money_error
successful_pay
receipt
3.1Check the balance
total_cost
3.2Deal withPaymentpay_com
lack_money_error
bank_accounts
balance_updating
successful_pay
correct_pass
プロセスPay_from_Bank_Accountの分解
Exercise 2.2
練習問題2.1に設計されたATMシステムの階層
的DFDを描きなさい。そのため、 “middle-out” アプ
ローチの利用を勧め。例えば、プロセスWithdrawを
二つのプロセスCheck-Amount と Dispense-Cashを
含むDFDに分解される。また、プロセスWithdrawを
含むDFDを一つの高いレベルのプロセスに抽象で
きる。
Small project
階層的なDFDを用いて、「個人情報管理システム」
を設計しなさい。そのシステムは次の機能を提供
する。
個人費用の管理
個人授業データの管理
自分の情報によりその情報管理システムを設計し
なさい。
(1)個人費用の管理
以下の具体的な機能を含む。
(1)買い物の情報と費用を登録、修正、および交換する。
(2)一つの物の情報を検索する。
(3)物別によって一か月の費用の状況を調べる。(例えば、交通、料理、衣服、書籍、電気、ガス、家賃など)
(4)収入を登録する。
(5)一か月の全ての費用の状況を表に作成して表示する。
(2)個人授業データの管理
以下の具体的な機能を含む。
(1)毎週の出席する授業を登録する。
(2)毎週の授業の時間割を表に作成して表示する。
(3)補講、停止する授業を登録する。
(4)一週間の中で、選択された日の授業を調べる。
(5)自分の今までの獲得した単位を調べる。
(6)教科書、参考書の情報を登録、更新、および交換する。
(7)習得した授業の評価情報を登録、検索、および修正する。
top related