Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア...

40
Part II: 構造化設計手法と 設計の表現

Transcript of Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア...

Page 1: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

Part II: 構造化設計手法と設計の表現

Page 2: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

2. データフロー設計:データフロー図

データフロー図とは、以下の特徴を持つ設計言語である。

抽象設計に適用する。特に、プログラムの構造を設計するには、適切な言語である。)

構造化設計手法である。

データの流れを重視する。

データ駆動の設計。つまり、データがプログラムの操作の間にどのように流れていることを定義するによって、プログラムの設計を行う方法である。

Page 3: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

例えば、次の数式を計算するプロセスをデータフロー図で表現する):

(a + b) * (c + d) + f

Add1

Add2

Add3Multiply

a

b

c

d

fsum1

sum2

p res

Page 4: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

データフロー図の同意語 :バブル図(Bubble chart)DFD (Data Flow Diagram)バブル図(Bubble diagram)プロセスモデル(Process model)機能モデル(Function model)

適用の応用領域:

操作がデータより重要であるシステムの設計に有効である。

Page 5: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

紹介する内容:

DFDの部品

プロセス分解

階層的なDFDの構築の指針

Page 6: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

2.1 DFDの部品

DFDは四種類の部品を持つ。

プロセス(process)データフロー又はデータの流れ(Data flow)データストア(Data store)ターミネーター(Terminator)

Page 7: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

2.1.1 プロセス

プロセスとは、入力により出力を生成する操作である。

プロセスの同意語:バブル(Bubble)

機能(Function)

変換(Transformation)

操作(Operation)

Page 8: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

プロセスを図で表す:

例えば,

重要: データフローの変換を表すプロセスだけが意味がある。このため、データフローに連接していないプロセスは、意味がない。

Name

ArrangeLectures

RegisterProjects

Page 9: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

プロセス名の付け方。プロセス名は、次のように作成できる。

動詞ー目的語の語句。一定の機能を持つ組織の名前又は実体名。

重要: プロセス名は、そのプロセスの機能を示すべきである。

Page 10: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

2.1.2 データフロー

データフルーとは、データ項目の移動を表すもの

である。

データフローを図で表す。

ここで、aはそのデータフロー名である。

a

Page 11: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

データフロー名の付け方。データフローに次のように名前を付ける。

名詞語句。データの情報を示すべきである。データフロー名は、一般に小文字英字で表す。

Page 12: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

データフローはプロセスと一緒に使われ、プロセスのデータフローを転換する機能を表す。

DivideRecords

SortRecords

study-records

qualified-student-records

failed-student-records GiveRecommendations

sorted-records

records-with-recommendations

Page 13: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

データフローについての要点

データフローは、一種類の情報を表す。データフローは、複合なデータ項目の表示ができる。データフローは、方向を示す。データフローは、分岐又は収束することができる。

Page 14: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

例えば,

分岐データフロー

FacultyOffice

UniversityStudentOffice

Professor

student-records

Page 15: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

収束データフロー

ProvideStudent

Data

ProvideProfessor

Data

ProvideAdministrator

Data

ClassifyData

student

professor

administrator

classified-data

Page 16: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

データフローは、手続き的な情報を示していない。

例えば、次のDFDは、どういう意味を示して

いるのか。

P

a

b

c

d

e

Page 17: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

2.1.3 データストア

データストアは、動かない状態の一つ又は幾つかのデータ項目を表す。

例えば, file, databaseは、データストアとして使われる。

データストアを図で表す。二つの可能性がある。(a) データストアに名前だけを挙げる。

(b) データストアに名前と番号を挙げる。

Page 18: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

n a m e

n n a m e

( a )

( b )

Page 19: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

データストアの使い方:

データストアについての要点:データフローを通じてプロセスに結ぶ。

プロセスからデータストアへのデータフローは、更新の意味を表す。データストアからプロセスへのデータフローは、データストアの情報を読み込むの意味を表す。

study-records

Professor FacultyOffice

students sorted-records

Page 20: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

データストアとプロセスの間のデータフルーには、名前を付けるか、付けないかが構わない。

データストアは受動的である。

Page 21: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

2.1.4 ターミネーター

ターミネーターとは、プログラムシステムと交信する外部

の実体である。

例えば、人、組織、政府機関などは、ターミネーターと成れる。

ターミネーターを図で表す。

Name

Page 22: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

ターミネーターの事例:

ターミネーターが含まれるDFDは、文脈図(context diagram)と呼ばれる。

Ministry of Education

UniversityInformation

System

Parents

student-enrollment-data

enrollment-datarequest-for-study-records

available-study-records

Page 23: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

ターミネーターについての要点:

ターミネーターは、設計されているプログラムの外のものである。設計者は、ターミネーターの内容や働き方などを変えることができない。ターミネーターらの間の関係は、DFDに表されない。

Page 24: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

Exercise 2.1以下の機能を持つATMシステムの設計をDFDで表現しなさい。“ATMシステムは、Receive-Request, Check-Password, Withdraw, およびShow-Balanceという四つのプロセスを使う。

プロセスReceive-Request は、「引き出す」又は「残高を見せる」という命令を受け、その命令をプロセスWithdraw 又はShow-Balance へ送る。

同時に、プロセスCheck-Password へも入力されたカードのIDとpassword を検査する指示を送る。

Page 25: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

Check-Password からShow-Balance とWithdrawにIDとpasswordが確認されたメセッジを送る。Withdraw は、customer に引き出す金額を要請、もしその金額が口座の残高より小さいなら、その金額の金を出力する。

皆プロセスからデータストアaccountsにアクセス

または更新する必要がある。

Show-Balanceは口座の残高を出力する。“

Page 26: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

2.2 プロセス分解

プロセス分解の必要性:

プロセスをDFDに分解することにより、そのプロセスがどのように自分の入力から出力への変換を行ったということがもっと詳しく理解できす。

一つレベルのDFDの複雑度を減少する。

並列的チームワークを支える。

Page 27: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

分解の事例: 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

Page 28: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

プロセスPersonal Expenses Management Systemの分解されたDFDは、次のスライドで表される。

Page 29: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと
Page 30: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

プロセス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

Page 31: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

2.3 階層的DFDを描くガイドライン

複雑なプログラムシステムは、階層的なDFDで表すのが普通である。階層的なDFDを構築するに

は、ガイドラインがある。

次の階層的なDFDらを考えましょう。

Page 32: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

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

Page 33: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

ガイドライン数字を用いて、プロセスとそれの分解されたDFDを結び。例えば, Figure 1 のプロセス2 は、Figure 2 のDFD に分解された。そのため、Figure 2のプロセスらは、数字 2.1, 2.2, および2.3で表示する。

データストアにアクセスするプロセスの分解されたDFDにもそのデータストアを適当に使う。例えば、プロセス3は、データストアs に書き込むことがある。この機能も分解されたDFDに反映されるはずである。

Page 34: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

階層的DFDを一般にトップーダウン設計により作成する。しかし、ある場合は、階層的DFDを“middle-out” という方法で構築する。この方法では、先ず設計者が一番分かっているかつ一番重要な部分からDFDを設計する。その後、プロセスの分解およびDFDの統合によって、全体の階層的DFDを完成する。

一つレベルのCDFDの規模としては、約六つのプロセスを含むのは普通である。

Page 35: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

階層的DFDには、構造の整合性を守ることが重要である。階層的DFDの構造の整合性によると、プロセスの入力と出力データフローは、必ずそれの分解されたDFDのプロセスに使われる。例えば、Figure 0 のトップレベルプロセスThe Systemには、一つの入力データフロー a および二つの出力データフロー bとcがある。それらのデータフローは、そのプロセスの分解したDFDに使われている。

Page 36: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

買い物のICカードシステムの事例

機能要求:

(1)ICカードを認識できる。

(2)ICカードを使うためにパースワードが必要。(3)ICカードで買った物に対して支払い場合、直接

に自分の銀行口座から引き出す。

(4)支払いの金額は、自分の銀行口座の残高より大きい場合、支払いが出来ない。

Page 37: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

買い物のICカードシステムのトップレベルDFD

Page 38: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

プロセスPay_from_Bank_Accountの分解

Page 39: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

Exercise 2.2練習問題2.1に設計されたATMシステムの階層的DFDを描きなさい。そのため、“middle-out” アプ

ローチの利用を薦め。例えば、プロセスWithdrawを二つのプロセスCheck-Amount とDispense-Cashを含むDFDに分解される。また、プロセスWithdrawを

含むDFDを一つの高いレベルのプロセスに抽象で

きる。

Page 40: Part II: 構造化設計手法と 設計の表現たDFDにもそのデータストア を適当に使う。例え ば、プロセス3は、データストア s に書き込むこと

Small project階層的なDFDを用いて、「個人情報管理システム」を設計しなさい。そのシステムは次の機能を提供する。

個人費用の管理個人授業データの管理本の情報の管理

自分の情報によりその情報管理システムを設計しなさい。