「外壁の開口部に設ける防火設備に係る連結材の取 …外壁の開口部に設ける防火設備に係る連結材の取扱いについて (技術的助言) の解説
Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア...
Transcript of Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア...
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
収束データフロー
ProvideStudent
Data
ProvideProfessor
Data
ProvideAdministrator
Data
ClassifyData
student
professor
administrator
classified-data
データフローは、手続き的な情報を示していない。
例えば、次のDFDは、どういう意味を示して
いるのか。
P
a
b
c
d
e
2.1.3 データストア
データストアは、動かない状態の一つ又は幾つかのデータ項目を表す。
例えば, file, databaseは、データストアとして使われる。
データストアを図で表す。二つの可能性がある。(a) データストアに名前だけを挙げる。
(b) データストアに名前と番号を挙げる。
n a m e
n n a m e
( a )
( b )
データストアの使い方:
データストアについての要点:データフローを通じてプロセスに結ぶ。
プロセスからデータストアへのデータフローは、更新の意味を表す。データストアからプロセスへのデータフローは、データストアの情報を読み込むの意味を表す。
study-records
Professor FacultyOffice
students sorted-records
データストアとプロセスの間のデータフルーには、名前を付けるか、付けないかが構わない。
データストアは受動的である。
2.1.4 ターミネーター
ターミネーターとは、プログラムシステムと交信する外部
の実体である。
例えば、人、組織、政府機関などは、ターミネーターと成れる。
ターミネーターを図で表す。
Name
ターミネーターの事例:
ターミネーターが含まれるDFDは、文脈図(context diagram)と呼ばれる。
Ministry of Education
UniversityInformation
System
Parents
student-enrollment-data
enrollment-datarequest-for-study-records
available-study-records
ターミネーターについての要点:
ターミネーターは、設計されているプログラムの外のものである。設計者は、ターミネーターの内容や働き方などを変えることができない。ターミネーターらの間の関係は、DFDに表されない。
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 SystemOutput 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-registrationsingle-item-d = single-item-datatoatl-exp = toatl-expenseall-item-d = all-item-data
reg-confirm = registration-confirmation
item-d = item-datatotal-amount = total-amountitems-table = items-table
プロセスPersonal Expenses Management Systemの分解されたDFDは、次のスライドで表される。
プロセスCompute Total Expense は、次のDFDに分解される。
Find AllRelated Items
total-exp
Provide Month
month
Calculate TotalExpense
items-list total-amount
expenses-file
7.1
7.2 7.3
2.3 階層的DFDを描くガイドライン
複雑なプログラムシステムは、階層的なDFDで表すのが普通である。階層的なDFDを構築するに
は、ガイドラインがある。
次の階層的なDFDらを考えましょう。
T 1 T 2
T 3
T h eS y s t e m
a b
c
F i g u r e 0 t h e c o n t e x t d i a g r a m
12
34
a d
e f
g
h
b
c
F i g u r e 1 t h e d e c o m p o s i t i o n o f p r o c e s s T h e S y s t e m
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
F i g u r e 2 F i g u r e 3
F i g u r e 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を完成する。
一つレベルのCDFDの規模としては、約六つのプロセスを含むのは普通である。
階層的DFDには、構造の整合性を守ることが重要である。階層的DFDの構造の整合性によると、プロセスの入力と出力データフローは、必ずそれの分解されたDFDのプロセスに使われる。例えば、Figure 0 のトップレベルプロセスThe Systemには、一つの入力データフロー a および二つの出力データフロー bとcがある。それらのデータフローは、そのプロセスの分解したDFDに使われている。
買い物のICカードシステムの事例
機能要求:
(1)ICカードを認識できる。
(2)ICカードを使うためにパースワードが必要。(3)ICカードで買った物に対して支払い場合、直接
に自分の銀行口座から引き出す。
(4)支払いの金額は、自分の銀行口座の残高より大きい場合、支払いが出来ない。
買い物のICカードシステムのトップレベルDFD
プロセスPay_from_Bank_Accountの分解
Exercise 2.2練習問題2.1に設計されたATMシステムの階層的DFDを描きなさい。そのため、“middle-out” アプ
ローチの利用を薦め。例えば、プロセスWithdrawを二つのプロセスCheck-Amount とDispense-Cashを含むDFDに分解される。また、プロセスWithdrawを
含むDFDを一つの高いレベルのプロセスに抽象で
きる。
Small project階層的なDFDを用いて、「個人情報管理システム」を設計しなさい。そのシステムは次の機能を提供する。
個人費用の管理個人授業データの管理本の情報の管理
自分の情報によりその情報管理システムを設計しなさい。