PowerPoint プレゼンテーション

ソフトウェア工学
Software Engineering
†
九州産業大学情報科学部
松本正雄
Prof.Dr. M.J. Matsumoto
2009
2009
1

† This lecture is not of a traditional software
engineering but rather of advanced one
which is primarily oriented towards
business informatics. This series of lecture
is an enhanced version of those first
presented in the spring semester at
Informatik X Universität Dortmund,
Germany back in 1995 and at several other
Universities in Europe, US and Japan.
2009
2
ソフトウエア工学
工学的手法によるソフトウエアの健全
な開発
2009
3
ソフトウエア工学とは?
•
•
•
•
1.ソフトウエア工学の位置付け
2.内容骨子
3.何故ソフトウエア工学が必要か
4.履修の仕方
2009
4
情報技術の職業に絶対必要
• 企業の採用基準が一変した。
• 長年かかって仕事できるようになれば良い
ではなく、入社したらすぐ見当はずれでなく
仕事に立ち向かってゆける人を採用する
• ソフトウエア工学の知識なく情報の仕事を
するのは無理です。
• 友人に知らせてあげて。
2009
5
1.ソフトウエア工学の位置付け
•
•
•
•
実践的(理論的でなく)
技術寄り(業務寄りでなく)
大規模複雑系への対応
ソフトウエア開発の諸問題への対応
2009
6
Business Aspects
Enterprise Modeling
e-business
State of The
Solution Engineering
IT Strategy
State of The Practice
Software Engineering
2009
Technology Aspects
7
Business and Managerial Aspects
Enterprise Modeling
e-business
State of Art
IT Strategy
ソリューション工学
Solution Engineering
情報システムプロジェクト管理
State of Practice
IS Project Management
ソフトウエア工学
Software Engineering
2009
Technology Aspects
8
ソフトウエア工学の狙い
•
•
•
•
•
要求を把握し、それに叶うシステムを定義し、
そのシステム像を分析し、
最適な実現の仕方を設計し、
実装した後、合目的性などを検証する。
カットオーヴァ(運用開始)の後、ライフサイク
ル全体にわたりシステムを保守する。
• その全工程を工学的に支援する。
2009
9
課題
• 要求仕様の確定が困難→業務モデル立
脚
• 保守が困難→業務モデルから一気に形成
• 分析・設計・実装を暗箱+とする
• 独立した検査体制とする
• +Black Box
2009
10
ソフトウエア工学が対象とする工程群
要求定義工程
分析
設計
実装
検証(検査)
保守
2009
運用開始
11
ソフトウエア工学とソリューション工学の相対的関係
ソリューション工学のサイクル
問題の発見・同定
解決モデル練成
システム実現・実
践
2009
ソフトウエア工学の対応領域
12
ソリューション工学
問題発見同定
解決案策定
ソリューション
モデリング
システム実現
運用・進化
ソフトウエア工学
要求定義
システム分析
システム設計
モジュール
間設計
2009
実装
検査
モジュール内設計
13
ソフトウエア工学とソリューション工学
ソフトウエア工学
目的
ソリューション工学
ソフトウエアライフサ ビジネスライフサイク
イクルへの対応
ルへの対応
取り扱う工程 ソフトウエア要求定
義から保守まで
問題同定からソ
リューション進化まで
手法
ソリューション工学
2009
ソフトウエア工学
14
2.内容骨子
• 1 分析と設計の基本的な考え方
– 分析や設計の手法は多い
– 背後にある基本的な考え方を理解する必要有り
– 例題演習(チーム討議して発表)
• 2 ライフサイクルの基本的な考え方
– SWプロセスモデルの選択
• 3 重要課題への対処
– 検証可能性への対処(VOD)
– 開発競争力向上への対処(Reuse)
– 変化への対応(SOA)
2009
15
3.何故ソフトウエア工学か
• 1.経営からの厳しい要求
– 納期、品質、投資効果
• 2.品質・納期・原価・保守の根深い問題
• 3.開発環境の激変
–
–
–
–
Off Shore Development
COTS(Components off the Shelf)
パッケージの浸透(基幹系ERP)
構造化→OO指向→SOA指向
• 4.レガシー(Legacy)問題:新規系と統合
• 5. ITの社会に及ぼす影響
2009
16
一軸からニ軸の社会へ
生産者の論理
垂直統合
囲い込み
大都市の時代
インダストリ・ソリュ-ション
2009
中小企業・個人の論理
水平連携
インターフェースの標準化
地域の時代
コミュニティ・ソリュ-ション
17
4.履修の仕方
• 十分に理解すること
–
–
–
–
重要案件だが勉強する機会は稀だろう
質問ー大歓迎!mjm@
出席ー出席率100%が望ましい。
座席ー随意
• 例題演習は必ず提出すること。
• 試験:実施する
• 成績
– 日常の取り組み姿勢と理解度の両方を評価して決め
る。期末試験80%、レポートなど20%
2009
18
ソフトウェア設計・製造自動化技術
1.位置づけ
○システム開発
システム
開発
要求定義
分解など
システム分析
SystemsAnalysis
モジュール外設計
システム全体を
ハード/ソフト/人間
の3つの系に区分
け
ソフトウェア全
体のモジュール
への分解
Inter-module Design
分析設計
モジュール内設計
Intra-module Design
プログラム・モジュー
ル設定
実装(インプリ
メンテーション)
2009
検査
19
何故、分解に着目するか?
• システム全体を捉え、それをいかに作成す
るかが課題。
• モジュール1に分解し2、その設計まででき
れば、後は実装しシステム統合(組み上げ
れば)済む。
•
•
2009
注1:全体を構成する各部分を指す。構成要素とも言う
注2:モジュ-ル分解(Decomposition)と言う。
20
分解の方法
• 分析・設計方法から説明する場合もある。
• 工程としてのシステム分析・設計では、その方法
は多岐にわたり、本質を見失いがち。
• 中心課題は、該工程におけるモジュール分解な
ので、その方法をまず理解しよう
•
断片的な事柄の理解ではなく、課題を総括的に理解し
た上で、個別詳細方法を理解するほうが賢明。
•2009 その他の懸案は付随的である。
21
その他の懸案事項
• 最近、流行りのe-ビジネスモデリングとの関連
は?
• オブジェクト指向方法との関連は?
• プラットフォームアーキテクチャとの関連は?
2009
22
090414 課題演習
• モジュール分解を学
生管理システムを例
に行え
• 着目すること→静的
分解(機能階層、機能
情報関連)
2009
• 視覚化せよ
23
今流行のe-ビジネスモデリング
やSOAとの関連
• 定義1:“e-ビジネス”
 ITを駆使して新しいビジネスモデルを考案し執行する
• 定義2:“e-ビジネスモデリング”
 上記e-ビジネスのモデルを作成する。ビジネスの基本的
仕組み、プロセス、IT実装部分の同定など。
・定義3:SOA
 上記e-ビジネスモデルを構成する業務プロセスの粒度で
システム構成要素に対応づけてシステムを形成すること
をSOAと言う
2009
24
プログラムや
データ
モジュール
ソフトウエア
情報通信システム
ビジネスプロセス
ビジネスモデル
エンタプライズシステム
2009
25
何に着目するか?
• 機能(システムに具備されるサービス、処理、操
作、制御)
• 振舞(時間の流れに沿って展開される動作、状
態遷移)
• 情報(情報の粒度は粗から細まで多々ある)
• 性能(時間性能)
• 品質(信頼性)
• 構造(制御の構造、プラットフォームやアプリケー
ションのアーキテクチャ構造など)
• 構成要素
•
- オブジェクト
•
- コンポネント
2009
26
モデル化とは
• 懸案の本質を明らかにすること
– 着目している懸案以外は捨象する。
• モデル化の例
• 情報モデル
• 構造モデル
• 振舞モデル
• 状態遷移モデル
– など
2009
27
分析と設計
分析
設計
目的
ハード、ソフト、 2段階のモ
人間の繋がりに ジュール設計
手法
分解(システム
分解)
分解(モジュー
ル分解)
注意点
分担の適切さ
モジュール分解
の視点
2009
28
オブジェクト指向開発方法
(OODM)との関連
• OODMはオブジェクトに着目して、システムの分
析、設計、実装などを行う方法である。
• UMLの場合ユースケース、アクティビティ、オブ
ジェクト、クラス、コンポジット構造、コンポーネン
ト、シークエンス、コミュニケーション、相互作用
概要、ステートマシン、配置、タイミング、パッ
ケージの12図式がある。
• システム全体と構成部分との関係、構成部分の
解明が(実装可能な程度に)本来必要
2009
29
○開発区分
開発区分
ー“工程”に基づく
ー“場”と“視点”に基づく
●理想的区分・・・・・・・図1.1参照
●現実的区分・・・・・・・図1.2参照
2009
30
システム開発の作業手順
• 何を最初に検討するか?
2009
31
例題
• 地震を感知したら、警報を発するシステム
2009
32
ソフトウェア設計・製造自動化技術
1.方法
分解(Decomposition)
○システムのモジュール分解
システム全体をモジュールにいたるまで分解
○目的
●複雑さの克服
●開発作業の分担
○目標
モジュールへの分割とその内容定義やインターフェース規定を行う。
○方法
分割征服(Divide and Conquer)
●目安
モジュール独立
G.J.Myersの指針
Cohesion(凝集度)
・モジュールの強度・・・・・・・・・・表2.1参照
2009
・モジュール間の結合・・・・・・・・表2.2参照
33
ソフトウェア設計・製造自動化技術
1.方法
○分析アプローチ
システム全体のはたすべき機能を、HW、SW、人間/組織
に割りふり、各要素間の関連を明らかにしていく。
○システム分析と結果の表現方法
要素の粒度(Granularity )
粗い(Coarse Grain)=大きい塊
細かい(Fine Grain)=小さい塊
2009
34
システム分析の方法
• 1) 静的分析
•
機能階層
•
機能情報関連
•
DFD(Data Flow Diagram)
• 2) 動的分析
•
時間軸に基く振る舞い(シーケンスチャートSequence Chart)
•
状態遷移(状態遷移図)
•
非同期処理(ペトリネット)
•
シュミレーション的性能分析
• 3) 統合的分析
•
構造化分析(SA)
ジャクソン法(JSD)
2009
35
090414 課題演習
• モジュール分解を学
生管理システムを例
に行え
• 着目すること→静的
分解(機能階層、機能
情報関連)
2009
• 視覚化せよ
36
目標・目的
単位管理
機能
学生管理
研究室所属管理
履修管理
機能
機能
B
A
登録
成績
機能
a
機能
b
機能
X
機能
y
レベル1
C
機能
c
機能
Z
レベル2
レベル3
図2.14 機能の階層的関係
2009
37
学生管理システム
履修管理
単位管理
履修登
録
報告
成績登録
確認
研究室所属
管理
単位管理
記録
レベル1
レベル2
レベル3
機能の階層的関係
2009
38
分解(学生管理システムの場合)
• 学生管理システム
– 単位管理
– 履修管理
– 研究室所属管理
• さらに分解の余地はあるか?
2009
39
層(Layer) Layer by Layer
①レベル1での機能と情報の関連分析
②レベル1での機能と情報の関連分析
③レベル1での機能と情報の関連分析
2009
図2.16機能と情報の関連分析のアプローチ
40
Operational Viewpoints
Monitor and control
operators
User type A
Target
Immediate environment
User type B
SYSTEM
(embedded systems)
Other
SALFS
Directly
Connected
COSTS
ENHANCEMENTS
2009
systems
EXPANSION PERFORMANCE
RELIABILITY
41
(出典:CORE)
実体関連図 Entity Relationship
ER Diagram
Generate
Service Request
Postponed Request
Generate
Service Action
Associate
Associate
Allocate
Customer Service ID
Use
Customer Device
Record
Switching
Service
Have
Use
Customer Record
Cable
Main Processor
Use
Cabinet
Extdended Wire
Associate
Work
One A for one B:
A
B
One A for many B:
A
B
One A for zero one B:
A
B
A
B
One A2009
for zero or many B:
Work
Engineer
Connect
pole
42
CALL
SUBSCRIBER _REGISTER
INTERFACE
ENV
_HANDLER
A_OFF_HOOK
CONNECT_DIG_REC
CONNECTION
DLAL_TONE
DLALLED_DIGIT
DLAL_TONE_OFF
DIGIT
FETCH_NEXT_DIGIT
DIALLED_DIGIT
RING_TONE_TO_A
DIGIT
SEND_RING_TONE_TO_A
CONNET_CALL_HANDLER
DISCONN_DIG_REC
RING_TONE_A_OFF
A_ON_HOOK
B_ANSWER
CONVERSATION
A_ON
DISC_B
2009
シーケンスチャート
43
CALL_HANDLER
SUBSCRIBER _REGISTER
INTERFACE
ENV
A電話上げ
時
間
の
流
れ
接続(DIG_REC)
接続
DLAL_TONE
番号ダイアル
DLAL_TONE_OFF
番号
次の桁FETCH
番号ダイアル
番号
repeat
接続(CALL_HANDLER)
Aへリングトーン
Aへリングトーン返す
(DIG_REC)切り離し
Aへのリングトーンオフ
A電話機置く
Bが応答
会話
A電話機置く
Bと切り離し
シーケンスチャート
State Transition Diagram状態遷移図
Diagram showing state and its transition triggered by event
[Expression A]
Active活動
中
Finish Breakfast
[Expression B]
In Sleep
Bed in Time
Intermediate
寝ぼけ状態
Intermediate
In Sleep睡
眠
Morning Call
Active
Morning Call
Finish Breakfast
2009
Bed in Time
45
状態遷移図
状態、遷移、イヴェント
ベッドに就く
活動中
寝ぼけ状態
朝食完了
状態
睡眠
目覚時計が鳴
(四角のなかに状態名を書く)
凡例
A
B
なにやかや
2009
(AからBへの)遷移
イヴェント(トリガーとも言う)
46
状態遷移図
[図]
活動中
朝食完了
ベッドに就く
睡眠
寝ぼけ状態
目覚時計が鳴
[シーケンスチャート]
睡眠
寝ぼけ状態
活動中
目覚時計が鳴
朝飯完了
2009
ベッドに就く
47
状態遷移図
状態、遷移、イヴェント
[図]
活動中
朝食完了
ベッドに就く
寝ぼけ状態
睡眠
目覚時計が鳴
48
状態遷移表
• 状態A
• 状態1 状態Aから状態1へ遷移する条件(イベント起
生)
• 状態2 状態Aから状態2へ遷移する条件
• 状態3
• 状態B
• 状態1
• 状態2
• 状態3
• 状態C
2009
49
状態遷移表
• 状態 睡眠中
•
状態1 睡眠中
•
状態2 寝ぼけ
•
状態3 活動
• 状態 寝ぼけ
•
状態1 寝ぼけ
•
状態2 活動
•
状態3 睡眠
• 状態 活動
•
状態1 睡眠
•
状態2 寝ぼけ
•
状態3 活動
2009
-
目覚まし時計鳴る
不可
-
朝食完了
不可
就寝
不可
-
50
状態遷移
• 状態の数が増えれば遷移の数も増える
• そのことへの解決方法
•
階層化
2009
51
空
転送要求
データ通信
異常処理
終了確認
転送終了
2009
52
空
異常終了
異常発生
転送要求
データ通信
異常発生
異常処理
異常発生
終了確認
転送終了
階層化しない状態遷移図
2009
53
空
転送要求
異常終了
データ通信
異常処理
異常発生
終了確認
転送終了
2009
階層化した状態遷移図
54
詳細な例は148-9コマ参照
• 腕時計の制御例
• 電源on-off
• アラーム機能on-off
• ビープ音制御
• など
2009
55
CORE Stages
and outputs
Problem Definition
Problem
Statement
Terms of
reference
Viewpoint Structuring
Viewpoint
Descriptions
Viewpoint
structure
Work
plan
Tabular collection
Preliminary Data
flow and Action
Descriptions
Date structure
and history
descriptions
Single
viewpoint
models
descriptions
Combined
viewpoint
model
descriptions
2009
System Constraints
Specification
Tabular
collection
forms
Data Structuring
Single Viewpoint
Modeling
Data
Structure
Diagrams
Combined Viewpoint
Modeling
Single
viewpoint
models
Constraints Analysis
Combined
viewpoint
models
56
機能情報関連図
• 機能間を流れる情報を追記した図
2009
57
機能情報関連図 (学生管理システムの場合)
成績
単位管理
単位情報
履修管理
卒研単位情報
2009
単位取得情報
研究室所属管理
58
機 能 階 層(ペイロールの例)
ペイロール
月例給与計算
勤怠データ入力
データ確認
計算
帳(票)表出力
賞与
査定データ
2009
賞与計算
59
演習提出
•
•
•
•
•
ペイロールシステム
機能階層図と機能情報関連図
docファイル(下位互換)
K’Life レポート機能で送信
09.4.17(金)正午12:00
2009
60
何故、機能分解?
• SOA技術の根幹である
• 次が分からないとSOAが理解できない
–
–
–
–
–
2009
機能とは
機能の詳細化
機能と情報の関連
サービスとは
サービス指向アーキテクチャとは
61
不具合例
• ファイルが読めない
• ファイルの冒頭に学籍番号氏名ナシ
• 類似回答(僅少部分変更してあるが)
– 自主性ナシ
• 枝問の一部しか回答せず
• 設問無視
2009
62
多い間違い
• 1.機能階層図と機能情報関連図の間の矛盾
– 機能が不一致
– レベルが不統一
• 2.機能情報関連図において
– 機能間を流れる情報を示さず、一連の処理の流れを
示している
– 機能や情報に漏れがある
– 辻褄が合わない
• 方向間違い
• 情報間違い
• 機能間違い
2009
63
ペイロールシステムの機能階層図
ペイロールシステム
月例給与
賞与計算
年末調整
社会保険
税改定
レベル1
ペイロールシステムの機能情報関連図
勤怠データ
給与データ
月例給与額、給与データ
月例給与
年末調整
賞与計算
人事給与 査定データ, 給与データ
人事課
課
2009
注 給与データ=(基本給、手当、税、控除)
賞与額、支払保険料
64
誤字訂正
誤:ペイロールシステムの機能情報階層図
正:ペイロールシステムの機能情報関連図
2009
65
レベル2以下の表示
• レベル1の各機能ボックスを詳細化
• レベル1図から詳細図へ辿れる仕組み
– 3次元階層図で示す
– 各レベル/各機能に階層項番を付けて示す
– ドリルダウンで詳細を見れるようにする
2009
66
3次元階層図
①レベル1の機能情報関連
②レベル2の機能情報関連
③レベル3の機能情報関連
2009
機能情報関連図を層の積み重ねで示す
67
「月例給与計算機能」の3次元表示例
①レベル1の機能情報関連
賞与
昇給
月例
上から下へ辿る:詳細が分かる
下から上へ辿る:要約が分かる
年調
勤怠データ
②レベル2の機能情報関連
確認
数値確
月給計算
遅
刻
③レベル3の機能情報関連
早
退
2009
無断欠
勤
減
点
機能情報関連図複数層(ペイロール月例の場合)
68
3次元表現の作成法
• 機能階層図を見て各機能を階層ごとに描く
– すべての機能について行う
• 各層において機能ごとに機能情報関連図
を描く
– すべての機能について行う
• 必要なだけ層を詳細化する(→分解)
• 矛盾、欠損、不完全が無いようにチェック
2009
69
エンタプライズシステムの
• 機能階層図→次図参照
2009
70
エンタプライズシステム
• 仕入計画管理
–
–
–
–
発注処理
仕入処理
仕入訂正処理
発注終了処理
• 販売管理
• 生産管理
2009
71
エンタプライズシステムの
• 機能情報関連図→次図参照
• 注
• 1)前図(機能階層図)の仕入計画管理下
のレベル3朱記部分だけ着目せよ(詳細図
示)。
• 2)販売管理、生産管理などは機能名だけ
で詳細は示していない。
2009
72
仕入先
商品倉庫
返
品
情 発
報 注
情
報
ク 報
レ
ー
ム
情
入
荷
検
査
報
告
発 情
注 報
情
報
318
仕入計画管理
仕
入
計
画
情
報
発
注
終
了
情
報
仕
入
実
績
情
報
発注情報
発注計画情報
318.1
・朱記部分→レベル3
・参考に→その外側にレベル2の機能名だけ
納
品
情
報
・
請
求
情
報
発注処理
318.2
入
荷
情
報
仕入処理
ク
レ
ー
ム
情
報
仕
入
訂
正
処
理
318.3
仕入訂正処
理
318.4
発注終了処
理
買
掛
情
報
仕入実績情報
経営計画管理
買
掛
情
報
入
庫
・
返
品
情
報
返
品
情
報
財務管理
生産管理
在庫管理
2009
73
販売管理
まとめ
• 何故モジュール分解するのか
• その方法
– 「静的分解方法」の場合
• 何に着目するのか
– 機能階層図
– 機能情報関連図
• 工程での違いは?
– 分解の根本的な考え方は同じ
– 分解の対象が違うだけ
2009
74
以上が習得できたらDFDへ
• DFDとはデータフロー図Data Flow Diagram法
• DFDは静的分解に次を追加
– DB→二重線
– 流れの始点Sourceと終点Sink→長方形
– Real Time DFDでは信号や制御の流れ
• DFDが描ければ、次を簡単に設計できる
– モジュールの階層化と実行制御
– データ辞書→DB
2009
75
DFD例示:学生管理システム
• 分析設計を行え
– 通常の学生管理を支援するシステムとする。
– 機能情報関連や機能階層の図示
• 機能情報関連図を示せ
• 機能階層を分解せよ(必要な階層数だけ)
– DFDなど他の手法、を用いて分解せよ。
– 結果を比較せよ
2009
76
取得単位管理
取得済単位情報
履修管理
3年末取得単位数
成績情報
卒研単位
研究室所属
機能情報関連図
2009
77
学生管理システム
単位管理
履修管理
履修管理
研究室所属管理
成績管理
再履修
機能階層
2009
78
学生
エラー*
エラー*
履修管理
履修db
教員
単位・評価
報告
履修登録
正常データ
db更新
成績管理
正常データdb更新
成績db
学生管理
警告
学生db
応答
問い合わせ
問題学生
学部・大学
学生管理情報システム
2009
79
演習090421 図書館システム
• 分析設計を行え
–
–
–
–
2009
通常の図書館業務を支援するシステムとする。
機能情報関連図と機能階層図を描き、
必要なだけ詳細化(分解)せよ。
上記システム案件をDFDなどの他の手法を用
いて分解し、結果を比較せよ
80
演習090421
• 分析設計を行え
– 要求定義は通常の図書館業務を支援するシ
ステムとする。
– 機能階層図、機能情報関連図
– DFD(データフロー図)
– を示した後、静的分解とデータフロー図法の
比較考察を箇条書きで記せ。
2009
81
図書館システム
•
•
利用者サービス機能
-会員管理
• 受け入れ処理(会員登録)
•
•
•
• 抹消処理(会員取消)
– 貸出処理
• 貸し出し期限切れ書籍検索
– 督促状発行
– 返却処理
• 期限内返却か
• 期限超過ー罰
蔵書管理
ー受入・廃棄処理
-利用統計処理
ー修理依頼
ー未返却図書処理
予実算管理
他図書館連携業務
82
演習時の注意
• システムの主要機能に思いを馳せよ
• 立場:利用者、延滞者、書店、(図書係員、大学、
他図書館)
• データフローを追え!DFD書けたらモジュール構
像を想起せよ。
• 詳細は後回し、全体を先に把握せよ!
• 詳細化は階層を下げて考え、書けば済む
• 一度にすべて書けなくても、後から追加可能→
• システム拡張の問題
2009
83
この後
•
•
•
•
•
•
1.機能階層図を導き出す
2. DFや格納データ項目の詳細を整理→DB化
3.層別に深く掘り下げ(必要レベルまで)詳細化
4.設計とその検証を行う(→pp113-121)
5. 各種技法使用して実装へ
ーOOD(従来的システム構築)Object-oriented
Development
• ーSOA(最新技術:即システム運用へ)Service^oriented Architecture
2009
84
図書館システム
レベル2
余実管理と蔵書管理だけ取り上げた例
利用者
却下
購入希望
予実管理
許可
予算実績DB
蔵書管理
蔵書DB
2009
発注
納品
書籍販売店
85
前図の機能階層図
図書館システム
予実管理
2009
蔵書管理
86
利用者サービスを追加
図書館業務システム
予実管理
2009
蔵書管理
利用者サービス
87
図書館業務システム
ソース・シンクを追記した例
利用者
却下
延滞者
購入希望
返却督促
予実管理
返却
許可
予算実績DB
不具合はないか?
蔵書管理
蔵書DB
発注
納品
書籍販売
貸出要求
貸出す
利用者
2009
88
図書館業務システム
レベル2
この後、レベル2のそのほかの機能も追記する。
利用者
却下
レベル2の各機能を詳細化し、図示する。
購入希望
誤りがないかチェックする。
予実管理
結
果
通
知
許可
予算実績DB
会員
登録/
削除
F1
F2
蔵書管理
蔵書DB
発注
納品
書籍販売店
利用者サービス
会員DB
2009
F1:貸出/返却要求
F2 :督促
89
利用者サービスを高度化
• 利用者からの要求
–
–
–
–
蔵書の照会
貸し出し(待つ場合の予約)
返却(通常、延滞後)
その他の問い合わせ
• システムの機能(利用者向け)
– 問い合わせへの応答
– 延滞者発見と通知
• システムの機能(管理向け)
–
–
–
–
未返納本の処理
破損・有効期限満了本の処置
購入処理(書店対応)
購入本の配架
• システムの機能(本部・学部向け)
– 予実算管理
– 利用方法改定
– 中期運営計画
• 他図書館との連携
2009
– 融通(借り貸し)
90
DFD演習に見る間違い
•
•
•
•
•
階層間違い
DBが一元的でない
ソース・シンクが間違い
システム境界線が不明
規約違反
2009
91
可視化
•
•
•
•
Visualization
目に見えるようにして、意思疎通する
理解
改良、洗練化
2009
92
図書館業務システム(続)
サービス要求(照会・
貸出・返却)
利用者
却下
利用者サービス
要求対応
希望
予実管理
問合せ
許可
応答
蔵書管理
発注
納品
2009
書籍販売
93
図書館業務システム(続)
サービス要求(照会・
貸出・返却)
利用者
却下
利用者サービス
要求対応
希望
会員DB
予実管理
他図書館
問合せ
許可
応答
要求
応答
蔵書管理
予実DB
要求
本部・学部
2009
蔵書DB
発注
納品
書籍販売
対処
94
図書館業務システム(続)
サービス要求(照会・
貸出・返却)
利用者
却下
利用者サービス
要求対応
希望
他図書館
予実管理
問合せ
許可
応答
要求
応答
蔵書管理
要求
本部・学部
納品
書籍販売
対処
未返却
2009
発注
リスト
督促
督促
利用者
95
以下同様に詳細化や拡張
• 利用者サービスを詳
細化せよ
• 「他図書館連携業務」
にも対応できるようシ
ステムを拡張せよ
2009
96
集計
40
35
30
25
20
第二回
•
•
•
•
出席者数
39
レポート提出者数 12
優秀
4
努力賞
5
15
10
5
0
出席
2009
優
選外
97
出来具合
158
100
DFD
モジュ-ル構造
50
50
212
90 45 (照会・貸だけ)
45(同左)
081
80 40 (照会・貸返だ
け)
70 35 (貸返だけ)
40(同左)
046
2009
35(同左)
98
続
DFD
モジュ-ル構造
128
45 45 (冗長)
0(無し)
034
50 50 (照会・貸
返だけ)
0(無し)
080
45 40 (貸だけ)
5(非対応)
187
40 40 (貸だけ)
0(無し)
2009
99
DFD
モジュ-ル階層
083 20
0(無し)
20(DFD非対応)
079
0
0(無し)
0(無し)
056
5
0(データ無きDFD) 0(無し)
2009
100
環境
・政治
・経済
・技術
(市場)
操縦管理
・生産
環境動向情報
・意思決定
・長期計画
環境動向情報
実
績
報
告
操縦指令情報
経営管理
(達成予算等)
・販売(購買)
・研究開発
経営計画
需要者
方
針
・
目
標
財務報告情報
・市場分析(販売予測)
・サービス
請
求
情
報
請
求
情
報
財務管理
・原価計算
予算情報等
・財務分析
実績報告情報
入
金
情
報
供給者
・予算編成
・実績(収支)計算
・売掛、買掛管理
・人事計画
人事異動情報等
労務・勤労情報等
労
状務
況・
勤
労
報
告
情
報
人 情
事 報
計 等
画
人事管理
・人員配置計画
・労務管理
人件費情報等
人事異動・労務支出情報等
・給与計算
2009
操縦実績情報等(売掛,買掛,契約,生産
等)
価格.経費情報等(生産,販売原価及び価格,信用状況等)
図2. 13 機能情報関連図
101
支
払
情
報
システム分解技法の要点
システムの階層分割
●Layer-by-Layer Decomposition
●分割の一般指針・・・強度を強く、結合度を
弱く(Composite Designの指針)
2009
102
システム全体の外部環境を明確
Layer(層) by Layer
Decomposition
レイヤ 1
:機能の構成要素
:ファイル
:コール(呼び出し)
:データの参照
レイヤ 2
構成要素間の関係を定める
SADT= Systems
Analysis And
Design Technique
レイヤ 3
最終的には、簡単にコーディングできるプログラムモジュールへ
2009
103
Procedure is laired
Procedure for super
ordinate module
Procedure for
subordinate module
2009
Procedure for ultimately
subordinate module
104
表2.1 モジュール強度(凝集度)の程度
強
暗合的
strength)
度
(coincidental
説明
1つのモジュールとしての塊に特に意味関連性がない。
そうしたモジュールを修正すると、それをCALLしている
モジュールに影響を与える可能性が大。
論理的な視点から複数の処理機能をまとめる。例えば、
入力処理と言う論理的モジュールはカード、磁気テープ、
磁気ディスクなどからの入力処理を内包させることが可
能だが、モジュールの内部が複雑になり、使用側からの
パラメタ指定が多くなる傾向がある。
論理的
(logical strength)
時間的
(classical strength)
論理的モジュールの1種であるが、実行タイミングを考
慮して、グループ化したモジュールのこと。例えば、初期
化時に行うべき処理を集めたモジュール。
手順的
(procedural strength)
流れ図を見て,複数個のブロックをまとめてモジュールと
して構成したような手順的モジュール。
(communicational
手順的な強度に加え、モジュールを構成する各内部要
素に密接な関係がある場合、そのモジュールを連絡的
と言う。
情報的
(information strength)
個別に使用可能な機能複数を構成上1つのモジュール
にしたもの。構成後も個々の機能は別々に利用出来る。
機能的
(functional strength)
モジュールは切っても切れない関係性の強いもので構
成され、1つの機能を意味する。
連絡的
strength)
表2.2 モジュール結合度の程度
結合度
内容結合
(content coupling)
共通結合
(common coupling)
外部結合
(external coupling)
制御結合
(control coupling)
スタンプ結合
(stamp coupling)
データ結合
(data coupling)
説
明
あるモジュールが他のモジュールの内容を直接参照している場
合。高級言語では、通常EXTERNAL 属性のデータしか参照し
あえないので、この結合関係は作成しにくい
データの共通領域を設け、関係するモジュールはそれを参照し、
実行される。
例:FORTRANのCOMMON領域,PL/1のEXTERNAL属性をも
ち、%INCLUDEで共有しあうデータ領域を通してのモジュール間
結合関係
共通結合と似ているが、共通データを参照する際、各モジュール
は参照項目名に対し外部宣言(PL/IならEXTERNAL属性)を行う
機能コード、標識、スイッチなどの制御情報を引数としてCALLす
るCALLされたモジュールの処理の流れは、その引数により決
定される
データ領域が共通領域になく、同一データ構造を参照する際、モ
ジュール間の引数としてデータ構造名を渡し、参照する方法
モジュール間のデータはすべて引数として渡す。しかも、データ
はすべてデータ要素であり、制御要素やデータ構造はない
モジュール分解の目安
• モジュール(構成要素)の
– 強度(凝集度)は強く
– 結合度は弱く
• 何故か?
• モジュールの独立性はできるだけ高いほう
が良いので。
2009
107
Modularity and Software Cost
Cost to interface
Cost of efforts
Region of minimum cost
Total software cost
Cost /module
Number of modules
Figure 7.8
Cohesion
…A measure of the relative function strength…
Coincidental
Temporal
Communicational
Logical
Procedural
Sequential
Functional
Low ● ● ●
2009
“Scatter-brained”
●
●
Cohesion spectrum
Figure7.9
●
●
●
●
High
108
“Single-minded
●
Modularity and Software Cost
Region of minimum cost
Total software cost
Cost to interface
コ
ス
ト
Cost /module
システムを構成するモジュール数
Cohesion
Coincidental
Logical
Low ● ● ●
2009
“Scatter-brained”
●
●
Temporal
Communicational
Procedural
Sequential
Cohesion spectrum
Figure7.9
●
●
●
●
Functional
High
109
“Single-minded
●
今まで説明した事項
分解
ー考え方(①トップダウン、②データ抽象化、③データフロー)
ー具体的方法
● モジュール外(システム分析やシステム設計)
•
1-1. 機能階層図
•
1-2. 機能情報関連図
•
1-3. DFD
•
1-4. シーケンスチャート
•
1-5. 状態遷移
•
1-6. ペトリネット
● モジュール内(モジュール設計)
•
2-1. 制御構造設計法
•
2-2. データ構造設計法
2009
110
ソフトウェア設計・製造自動化技術
2. .設計技術/ソフトウェア設計
目的
ソフトウェア(の機能)を、最終的には、いくつかのプログラムモジュー
ルの有機的結合体で実現する仕方を決定する
目標
1) そうしたプログラムモジュール群とその構成の決定
2) プログラムモジュールの機能(詳細)仕様決定
ソフトウェア設計( 大別して2つの段階)
1)大域的:
モジュール外(間)設計→「モジュールに至る分割を意識」
2)局所的:
モジュール内設計→「モジュールの設計を意識」
モジュールのアルゴリズムの設計、
2009
ロジックの設計、
ローカルデータの設計
111
モジュール外内とは
• モジュール外とは、
システムレベルからモジュールレベル
(内部は含まず)までの範囲
• モジュール内とは、
モジュールの内部
2009
112
機能の呼び出し関係に着目
(トップ・ダウン設計法)中央集権型
システム分解の基本枠組み
(階層分割)
データ抽象化に基づくモジュールに着目
(データ抽象化設計法)地方分権型
順次データ列の変換に着目
(データ・フロー設計法)連邦型
2009
図2.1 ソフトウェアモジュール外設計法
113
トップダウン設計 (Top Down)
●まず、主要機能要素について,その内部処理を
副機能呼び出しを含む形で設計
●副機能について、順次、同様に設計してゆく
データ抽象化設計 (Data Abstraction)
●データとそれに関連する、互いに関係の強いいくつかの操作機
能を1つのモジュールにまとめる
データフロー設計 (Data Flow)
●順次データ列を扱う場合、構成要素間を流れるデータに着目し
て設計する
●設計後の実現の仕方
○各処理を並列プロセスとし、中間データ列
をプロセス間通信のメッセージバッファとする
○Myersの複合設計における方式
2009
○Jacksonのプログラムインバージョン
114
設
計
順
序
:1入口の手続き
:呼び出し関係
2009
図3 トップダウン設計
115
要素間の関係
トップダウン設計 吟味
システム全体を最初から見通せる場合、効果的。
上位の機能
理解し易い
下位の機能
コマ切れ機能でとなり、それぞれ単独では
理解し難い。インターフェースも複雑化。
データ抽象化技法
と組合わせて使用
2009
116
データ抽象化設計法
吟味
データ抽象化は、良いモジュール化を得る上で有効
一般に何を外部手続きとするかの設計が難しい。
2009
117
テ
ー
ブ
ル
き使
を用
コ側
ー
ルか
すら
るは
だ、
こ
けれ
でら
よの
い外
部
手
続
共通データ
(a) 複雑な共通データを介したモジュール化
clear
add
search
テーブルモジュール
clear
情
報
隠
蔽
add
search
名前
内容
属性
hash
(b)抽象化技法を使ったモジュール化
2009
(c)抽象的なテーブルの概念
図4 データ抽象化技法によるモジュール化
118
拡張
同じ構成の抽象データを複数個宣言して使えるようにしたもの→抽象データ
データの実体(オブジェクト)にその操作(メソッド)が付随していると把える。
型理論 (Type theory)
・パラメータ付抽象データ型
・ジェネリック関数
(複数の型のデータを統一的に扱える関数)
2009
119
(紫合,ソフト設計技法、ソフトウェア科学‘84より)
データフロー設計*
システム分析(SA)の機能情報関連図に似ている。
制限 :
機能は、並列に動作するプロセス。
情報は、プロセス間で扱われるデータストリーム
* データフロー図(Data Flow Diagram)設計ではプロセス並列性
を条件にしていないので注意
2009
120
出力1
処理1
中間データ1
処理3
処理2
処理4
多間データ3
中間データ2
図5 データフローダイアグラム(DFD)
モジュール化
(a) 制限に合っている例
2009
出力2
:データフロー
(a) 制限に合わない例
121
データフロー図
A
モジュール間結合方法:データの受け渡し関係による
D1
D2
B
C
等価
モジュール間結合方法:呼び出し関係に基づく
制御フロー図
P
パラメータの渡し先
コール関係
A’
2009
B’
C’
図7 複合設計でのデータフロー→制御関係変換
122
データフロー設計法
吟味:
・並列処理特有の非同期性にまつわる複雑さを軽減
・独立性の高い、扱い(理解し)やすいモジュール化
(理由) データフローの各プロセスは、入出力のデータだけが
外部とのインターフェイスになる
・通常のプログラミング言語では効率よく実現できない。
変換(データフローの通常プロセスへ)
・マイヤーズの構造化設計
・ジャクソンのプログラムインバージョン
2009
123
システム分析法
ソフトウェア設計・製造自動化技術
2.4.設計技術/まとめ
静的(主に、機能に関して)
●境界明確化とハードウェア、ソフトウェア、人間系の役割分担分析
●システム(ソフトウェア)の階層構造分析(Structural)
●機能・情報関連分析(Functional)
●オブジェクト指向分析(Object-oriented)
動的(主に、振舞に関して)
●時系列分析
●状態遷移分析
●非同期処理分析
●シュミレーションを使った分析
複合的(主にデータフローを基にした階層モジュールとその制御構造に関して)
●構造化設計(Rossほか)
●プログラミングインバージョン(Jackson)
2009 variation
●Some
124
応用
• 前述は基本的考え方
• 実践上は、基本的考え方を基にした具体
的設計法でモジュール設計を行う
• その1つがDFD
2009
125
DFD
• DFDとはData Flow Diagram(データフ
ロー図)の略
• DFD設計法
2009
126
Data Flow Diaguram
端末
Data
flow
データ
フロー
source
process
Data
flow
process
process
destinatio
n
Data
flow
process
process
structure chart
=階層モジュール
Data Flow
definitions
Process
Description
DB
Defin
itions
Program module
names
項目名にインデンテーショ
ンをつけて
Structured English
図式間の関係
Data
Dictionary
Decision table Decision
tree structure
127
STRUCTURE CHART
Issue-pay-checks
Emp-num
For all employees
Employee-pay
record
Salaried-pay
record
Net-hrly-pay
Hrly-pay
record
Emp-name
Emp-pay
Net-salaried-pay
Employee-pay
record
Get-emp-pay-rec
Calculate-net-pay
Calculate-net-pay
Calculate-net-pay
For hourly worker
For salaried worker
For salaried worker
Nomal-deductions
gsp
Pay-rate
Gross-hrly-pay
Gross-sal-pay
nd
Nomal-pay
Gros-hr-pay
Hrs-wked
Tax-details
Tax-details
bonuses
Calculate-gr-pay
Calculate
Calculate-gr-pay
For hourly
Normal deductions
For salaried
worker
Any diagram may be annotated
using the text selection in the
2009 methodology menu
worker
Paychecks
Tue Nov 08 ,1988 3:48System
128
Architect
不正問合せ
問合せへの
正当
問合せ元
問合せ
問合せ
問合せへの
問合せ
内容を
応答
応答作成
応答先
編集
口座
情報
2009
DBからのデータ/
顧客状況
図DFD sourceとdestinationとデータベースの表し
方
129
(Invalid)
Inquiry
Inquiry
(Valid)
Source of
Inquiry
Inquiry
EDIT
INQUIRY
PRODUCE Response
Destination
Inquiry
INQUIRY
of Response
RESPONSE
Account
Master
Data/Status
Info
データベース
2009
図DFD sourceとdestinationとデータベースの表し
方
130
システムを階層的なデータフロー図で表現
INVENTRY
CUSTOMER
LOW
STOCK
OVFRDUE
NOTICE
PHONE
PRODUCT
PAYMENT
NOTICE
CHECK
CHECK
Get
INVENTORY
CUSTOMER
PRODUCT
INVOICE
REGIONAL
OFFICE
XACT
POST
OFFICE
ATTACH
EDIT
XACT
AND
ORDER
PACKAGE
INVOICE
CANCEL
CANCEL
PROCESS
DATA
CANCEL
ORDER
ROUTE
PRODUCE
CONFIRM
ATION
CUSTOMER
CONFIMATION
ORDER
AIR POST
PACKAGE OFFICE
INVENTORY
PAYMENT
INVOICE
CUSTOMER
INVOICE
PAYMENT INVOICE
PROCESS
PAYMENT
DATA
PRODUCE
INVOICE
INVENTORY
INQURY
CUSTOMER
PROCESS
INQUIRY
INVOICE
INQUIRY DATA
INQUIRY RESPONSE
プロセス:機能を
表す
PRODUCE
INQUIRY
RESPONSE
ABC
2009
図1.1 信用販売会社の論理的なDFD
データストア:蓄積
131
型データ
MAIN
record
record
#1
#4
#3
#2
GET
EDIT
EDIT
EDIT
EDIT
WRITE
SEQUENCE
RECORD
TYPE 1
TYPE 2
TYPE 3
TYPE 4
RECORD
RECORD
RECORD
RECORD
RECORD
record
record
GET
CHECK
CHECK
CHECK
CHECK
RECORD
SEQUENCE
ALPHA
NUMERIC
HISTORY
error
error
error
text
text
text
error
text
PRINT
ERROR
2009
図1.6 編集プログラムのstructure chart
132
Overall data flow
diagram
(Chapter 3)
Explosion
of each
process
External logic
of process
Content
Immediate access
analysis
And structure
Of data flows
IF…
THEN…
c
(Chapter5)
ELSE…
B
A
Immediate-access
diagram(Chapter
7) 2009
Logic tools
SO…
Data dictionary
133
の表示を
つり銭を
定する
符の表示 計算
投入物を を刷する
する
入金額を 取る
算する
入要求
投資金額の をけ取
進入物
不足を る
進入物を
入れる
ックする
中央変換部分
購入金額
コイン投入口
コイン投入/返却口
カード貯蔵場所
取り消し
購入枚数ボタン
ボタン
切符 つり銭受け
表示機
投入物を
受け取る
1
活,非活
トリガ
活,非活
中央変換
部分
切符を発行
する
要求金額
の総計
発行切符
切符の表示を
決定する
切符の表示
投入金額を
精算する
投入モ-ード
トリガ
要求金額の総計
投入OK
購入要求を
受け取る
切符の表示
を印刷
投入金額」の過
不足チェックする
投入物を
返却する
つり銭を
つり銭指示
計算する
投入金額の総計
図10.2-3 複数のダイアグラムを一枚のダイヤグラムに変換
処理に対する非手続き的仕様を前節のGRACEの解説で説明した等関係式の集合として与え、これを実現するモ
ジュール仕様を設計し、SPACEのロジックテーブル郡」として生成する。
2009
134
DFDまとめ
• 1.階層ごとにデータフロー図を作成する
• 2.その時、プロセスとデータに注意を払う
• 3.モジュール呼び出し関係図がおのずと
出てくる(制御図)
• 4.データフロー図を階層化する
• 5.モジュール構造図やDBが抽出できる
2009
135
Inventory control adjustments
MANAGE
MENT
SAFETY FACTORS
BULK FACTORS
Pro are
report &
handle
queries
Assemble
Requisition
for
publisher
Detemine
recorders
(inventory)
ORDER HISTOY
NVENTORY
Penoing reos
Purchase orders in prograss
Satisly
Create
CUSTO
All{oders
MERS
Verity I
Back
nventory
available &
order or
requisition
adiuse stock
(not carreid)
Noninventory
back-orders,
pending
items
Regs
Alter back order
update
inventory
titles
Verily
shipment
contents
level
Predaid
orders
Oder&paymennt
shloment
Edit
Varily
Order &
payment
credit is
credititorders
OK
Enter
Generate
pre-payment
shipping
details
note
Pubushers
acctpayeled
invoice
(if present)
Verity
Amagurasu
acctpayeled
Invoice
Orepare
payment
to
Payment of invoice
vendors
Apply payment
To
Generate
vendors
Conlirmation
Check for books upolied
& paid
2009
Invoice
136
RDS SYSTEMS.Inc
SYSTEM LEVEL Dataflow Diagram
Vendor
Customer
purchoses
Cpos
Ven-invoice
Ven-pur-order
Custome
accoumling
sales
Ven-pock-slip-dk-copy
Cpo-sold
P1
P3
sales
accounling
of goodsand
customers
Ven-pur-order-copy
Goods-descreponcynoticotion ssiscrepnotific
Inventory-credit
Customer-pok-slip
Hemstockwec
Cust-shipping-nolilicotion
P2
Iereivinng
Vendor-
Orderd-goods
purchose file
hab
inventory
U-g-r-h
ungrderdgoods and
return notificotion
Shelveg
Archives file
system
starage
shipping
Process 2 has been highlighled using
the style pen feature
PRINTING USING TH REDUCE TO ONE PAGE FEATURE
Note many font styles available,any fonts under Windows are supported
2009
RSD SYSTEMS INC SYSTEM DATAFLOW
TUE NOV 08,1998 15:19 system archilect
137
RSD SYSTEMS.INC
Cust-billing-copy
SYSTEM LEVEL Dataflow Diagram
Customer
accounting
vendor
Cust-statement
CDOS
customer
sale
Cust-payment
Ven-pur-order
Ven-invoice
Purchases
P3
P1
Accounting of
goods and
customers
Ven-pack-slip-&-goods
Cpo-sold
sales
Paid-ven-purchases
Ven-pur-oder-copy
Inventory-credit
Item_stock_rec
Customer-pak-slip
Inv_credit
P2
receiving
hub
inventory
Innentory-debit
shopping
2009
Goods-descrepancynotification
Unorderd
goods and
return
notification
D-n
Discrep
-notific
file
Order-goods
shelves
strage
Paid-cust-bills
Archives
files
system
Cust-shipping-notification
Process 2 has been
138 using the
highlightted
Style Pen feature
Word/Mellor Real Time Dataflow Diagram
STRT/ENDMEASMILE
DRIVER
ENGINE
CTRLON/OFF
MAINTAIN
AUTO SPEED
ENGINE_ON_OFF
STAT/STPINCSPD
RESUME_FLAG
AUTO_SPEED
BRAKE
ROTATION RATE THROTTLE_ROSITION
BRAKE PEDAL
DRIVE SHAFT
2009
THROTTLE
Real-Time Support is provided at no
CRUISE CONTROL
Additional charge
Tue Sep13,1988 19:52
System Architect 139
DATAFLOW DIAGRAM-DEMARCO
D
?
Ven-po
P1.2
Po-form
Cust-po
D
P1.3
Unknown-part-num
Fill-out standrd
part-suppliers
Generate ven-po
Standard-cust-po
Under stock-notification
P1.1
Back-orders
Check-stock
onhand
Ven-po-copy
Ver-stand-cust-po-form
D inventory
Custome-bill-copy
P1.4
Dummy-cust-po
Gen-cust billpack-inv
P1.5
Fill-back-order
Inventory-credit
Cust-invoice
This text has been included using the text symbol
from the methodology menu.
Note that crosshatched arrowheads
2009
Cust-packing-slip
Indicate
That dataflow is connected on one side only
1.Sales
Mon Nov07,1988
15:18
140
System Architect
DATAFLOW DIAGRAM-DEMARCO
Vendor-invoice
0
0
ven-pur-file
Vendor Name
ven-pur-file
P2.2
Rec-ven-invoice
Ven-pack-slip-&-goods
Inventory-credit
Vendor info
Inventory-credit
P2.1
Rec-ven-packingslip
Left expond indicolor indicoles
that a “Commel” is attached
Goods-discrepancy-notification
Goods-discrepancy-notification
Ordered-goods
Unordered-goods-&-ret-notficat
1.Sales
Receiving Deparetment processing.
Note that level Numbers
2009may be automatically generated
Mon Nov07,1988
15:18
System Architect
141
演習060508:図書館システムの
分析設計
• DFD(Data Flow Diagram)法でモジュー
ル分解せよ
• Source と Destinationは適宜
• 明示すべき図
– DFD(階層有りと階層無し)
– モジュール構造図
2009
142
(貸し出し不可能)
要求
貸し出し情報
要求者
要求処理
DB検索
2009
貸し出し処理
結果
DB更新
更新済み
143
演習070515 モジュール分解を行え
• 1.各種レンタルショップのシステム
– 分解時の着眼点は
•
•
•
•
機能階層
データフロー
機能情報関連
その他
• 2.警報システム(非常事態発生を検知し通
報する)
2009
144
レンタルショップのD/F
貸し出し不可能
(応対不可能)
要求
貸し出し情報
利用者
要求処理
DB検索
貸し出し処理
結果
DB更新
貸し出し
更新済み
DB更新
買出し墨
2009
売り上げ貸し出す
145
複合設計
• 1.データの流れに着目してトランザクショ
ン分析
• 2.機能間のデータの流れを明確にする
• 3.機能の集合ごとにグループ化(源泉、
変換、吸収)する。
• 4.上記グループ分けを基にモジュール構
造図やDB辞書等を作成する。
2009
146
システム全体構造と情報の流れ
モジュール化
支援ツール
モジュール
モジュール
インターフェス
詳細設計
支援ツール
支援ツール
設計
辞書
関数
関数名と意味記述
関数のコール関係
2009
パラメータ・データ宣言と意味記述
パラ
メータ
F1
意味記述
関数call
関数1
Parm1
parm2
パラメータ1 F2,f3
147
パラメータ1
設計の流れ
関数
要素
意味
モード
{IF:正常処理)
[THEN]
F1
オープン
P1
条件の間
データ入力
F2
P2
2009
インターフェース設計
処理方式の設計148
「状態遷移図の登録イメージ」
システム制御 形状メニュー 画面編集
symbol
relation
line Dot_line
グラフ編集
path
作図補助
relation
Cha_arc
領域
アク
属性
P_ state
量子
no
state
接ア
yes
Rext_state
yes
input
Int_inp
output
2009
149
状態遷移
• システム内部の状態が遷移する(状態遷
移マシーン)は正当性検証に特段の工夫
が要る。
• 午後の情報システムプロジェクト管理で詳
説するので、そこで聞いて欲しい。
2009
150
Citizen quartz muiti alarm
Alarm-ataus
main
Chimestotus
displays
light
off
wait
regular
Deep-test
date
disa
dle
00
disoolod
on
10
time
b
10
c
01
Alarmsbeep
2min in date
2min in date
deep
anable
Thit t1
quiet
dead
T hitT2Alarms
stopwotht
zero
off
reg
2-beep
out
chime
update2
alarm2
alarm2
off
2009
off
hr
10
on
log
update1
on
min
1min
power
Alarm2-ataus
ok
hr
on
alarm1
10
on
1min
Alarms
3-beep
disa
dle
beep
min
bina
anable
enable
151
State Transition Diagram Analysis Facilities
STD Editor
no
yes
Retrieval facilities
Program Translator
STD Simulator
Ba----------
In service ?
? Blocking ?
-------------------
?dight analaysis
--------------------
Ha---------------
2009
Ha---------------
Yes?
Ros_main
No?
(
Await first
Int stat
:
Local?
Int t
:
Yes?
Int V
:
Yes?
State-task_init(); for
ret
152
Petri Net
• 考案者: Karl Adam Petri
• システムの動的振る舞いを表現するには
最小限
• -動作の基本要素であるアクション種類
• -アクションの実行順序関係
• を記述
2009
153
Petri-netの4要素
• トークン:処理されるべきリソース
• プレース:トークンを保持するための組織や装置
• アーク:イベント生起に必要なリソースをトラン
ジッションに供給する。またイベントに基づき処理
されたリソースを他の場所へ移動するためのも
の
• トランザクション:モデル化対象世界でのイベント
またはイベントに基づく処理
2009
154
発火fire
• 発火:トランジッションによりトークンが処理される
ことをトランジッションの発火と言う。
• 発火可能:トランジッションの入力となるプレース
のすべてにトークンがある(必要リソースがすべ
て揃った)とき発火可能となる。
• トークン移動:トランジッション発火によりトークン
は入力プレースから出力プレースへ移動し、次に
発火可能となったトランジッションが発火する
2009
155
非決定性
• 1つのプレースp1を2つのトランジッション
T1,T2が共有する場合、T1,T2は競合する
と言い、どちらが発火するか非決定的。
2009
156
T1
P2
A3
A1
P1
x
T2
P3
A2
A4
2009
157
非同期処理
• 状態遷移では1つのプロセスの状態しか
扱わない。
• Petri-netでは複数のプロセスの動作を1つ
の枠組みで表現できる。
2009
158
合
BEGIN
否
STD
FORK
MG
FC
JOIN
SN
X
Z
Y
PN
図3.9 example of Petri Net class
PN
END
図3.10 control flow of a programFree choice Petri Net
producer :
consumer :
SN
FC
s
STD MG
2009
図3.11 relation among Petri
Net classes
159
図3.12 producer-consumer problem
P1 :
reader 1 :
P2 :
・
・
・
R1
TR1
C1
R1
・
CS1
R1
M
・
TW
CS2
F1
F2
reader 2 :
図3.13 mutual exclusion problem
・S
P
・
Q
writer
W
・
TR2
・
R
R2
図3.14 reader-writer problem
C2
d
c
b
a
e
x
f
y
z
2 out of
3 net
2009
図3.15 cigarette smokers’ problem
F1
・
F2
F3
F4
F5
・
・
・
・
T1
T2
T3
T4
T5
1
2
3
4
5
160
図3.16 dining philosopher problem
Petri-netを動かしてみよう
•
•
•
•
•
条件が満たされると
発火!
リソースは、次へ
条件が満たされると
また発火!
2009
161
モジュール内設計法
● 大局的設計段階でシステムの全体構造、複数モジュー
ルへの分割とモジュール間の関係、個々のモジュール
の機能などを定義後、
●局所的設計段階で、個々のモジュールの実現の仕方
を定める。
◇ 設計法
○制御構造に着目した方法
構造化プログラミング
○データ構造に着目した方法
Warnier法、
Jackson法
○モジュールを機能視点から、複数の断片に分け、そ
2009
れらを結合してゆく方法
PAM など
162
制御構造に着目したモジュール内
設計法
• 構造化プログラミングで許される3構造の
みを使用してモジュールを表現
• 順次制御
• 選択制御 (亜流あり)
• 繰返制御 (亜流あり)
2009
163
Yes
S1
S2
S1
P
No
S2
P1
case
P2
S1
S2
Pn
No
P
S
Yes
・・・・・
Sn
S
No
S1
S2
(a) 順次制御
if P then
S1
else
S2
end
case
(P1) : S1
(P2) : S2
・
・
・
While P
S
end
P
Yes
iterate
S
until P
(Pn) : Sn
end
(b) 選択制御
(c) 繰り返し制御
図15 基本制御構造
2009
164
Until繰り返しの盲点
• 条件Pが満たされれば、終了してSを実行
せず、次へ行く。
• そのはずが、最初、Pが満たされていても、
Sを実行してから条件P判定。
• このロジックを甘く見たため、大事故に。
2009
165
While 文字 = 空白
get 文字
end
空白をスキップ
if 文字=“/” then
コメントをスキ
ップ
get 文字
get 文字
iterate
if 文字 = “*” then
“*/” までスキップ
語を識別
“*/” 以外を
スキップ
while 文字 = “*”
get 文字
else
“/” 記号識別
end
get 文字
end
until 文字 = “/”
end
第1レベル
第2レベル
プログラムの段階的詳細化の例
2009
第3レベル
第4レベル
コメントは/*・・・・・・*/で示されているものとする
166
A
A
B
CALL I B (d)
D
put d to D
get x from D
d
IB
Integer Q 初期値 = 1
goto L (Q) ;
L (1) ;
Q = n ; return ;
L(n) :
図8 Jackson の プログラムインバージョン
2009
167
データ構造に着目したモジュール内
設計法
• 入力と出力のデータの構造的関連に準拠
してモジュール構造を決定する
2009
168
*
コマンド列
*
コマンド
コマンド名
コマンド名D
出現順
&
コマンド名C
パラメータ
ファイル名パラメータ
コマンド名B
パラメータ
担当者パラメータ
日付パラメータ
日 付
ファイル名
(a) データの構造図
担当者
コマンド名A
パラ
メータ部
コマンドB
パラ
メータ部
コマンドA
(b) 具体的なデータの出現例
図17 コマンド列データの構造
2009
169
コマンド列
出力
コマンド
コマンド名
レポート
パラメータ部
レポート名
レポート本体
パラメータ
日 付
: データ
の対応
本体行
ファイル名
担当者
(a) 入力データ構造
(b) 出力データ構造
コマンド列→出力
コマンド→レポート
コマンド名→
レポート名
パラメータ部
パラメータ
日 付
2009
ファイル名
レポート本体
本体行
担当者
(c) 入力と出力をつき合わせたデータ構造
図19 入力と出力のデータの構造上の関連(例)
170
前記の構造を反映したモジュール
内設計
• コマンド列処理
• コマンド列と出力処理
2009
171
コマンド列の処理
全体の前処理
端末から読み取り
コマンド列の処理
while not end
コマンド前処理
コマンド名処理
パラメータ部の処理
パラメータ部前処理
端末から読み取り
while パラメータ認識
パラメータの処理
パラメータ前処理
case パラメータの種類
( 日 付 ) : 日付パラメータの処理
(ファイル名) : ファイル名パラメータの処理
(担 当 者) : 担当者パラメータの処理
end
パラメータ後処理
end
端末から読み取り
パラメータ部後処理
コマンド処理
コマンド後処理
end
全体の後処理
2009
図18 データ構造を反映させたプログラム構造
172
「コマンド列」と「出力処理」
全体の前処理
端末入力
コマンド→レポート処理
while not end
「コマンドとレポート出力」前処理
コマンド名→レポート名処理
パラメータ部処理
パラメータ部前処理
while パラメータ指示
パラメータ処理
パラメータ前処理
case パラメータの種類
( 日 付 ) : 日付パラメータの処理
(ファイル名) : ファイル名パラメータの処理
(担 当 者) : 担当者パラメータの処理
end
end
パラメータ後処理
端末入力
パラメータ部後処理
レポート本体前処理
Wile 本文行先未完
本文行作成
本文行出力
end
レポート本体後処理
コマンド→レポート後処理
end
2009
全体の後処理
173
ミニテスト
• 177参照
2009
174
演習070522 モジュール内設計
• 各種レンタルショップシステムについてモ
ジュール内設計を行え。
– 制御構造に着目して
– データ入出力に着目して
2009
175
070522モジュール内設計演習
• 制御構造法適用できた:田中宏宗
• 貫、藤本、淵脇、倉本、坂原、畑、野見山、
梶山、白川、豊住、古田、吉村将太、川添、
増永、:制御パターン不適用
• 林田、山口、中村仁、小田浩之、小田慧
介:ある部分をf/c表現
• 久冨、緒方、廣松、弓崎、吉村晴、伊藤瞬:
白紙
• 西丸、松並、廣田、菅原、梅野、山田、松
井(構造図):意味不明
2009
176
発注
要求 返
購
入貸
却
・・・・・ 返却処理
購入出
一般要求処理モジュール
2009
無
有
発注処理
発注処理モジュール
図15 制御構造に基づくモジュール設計(回答例)
177
質問:モジュール内設計法として正
しいのはどれか?
• 1.データ入力と出力の間に関係性があるとき、制御構造
設計法は有効である
• 2.データ入出力に関係性がないとき、データフロー設計
法は有効である
• 3.制御構造とはモジュールにおける実行の制御の構造
を意味する。
• 4.制御構造設計法では3種類の制御構造の組み合わ
せしか使用できない。
• 5.上記4の3種類で全ての場合に対応でき、検証レ
ビューが容易化される。
2009
178
今後の講義予定
• 206参照
2009
179
実時間系の分解
• 動的設計手法を使用する
–
–
–
–
実時間DFD
シーケンスチャート
アクテイヴィテイ図
状態遷移図・状態遷移表
• 階層無し
• 階層有
– ペトリネット図
– その他
2009
180
a
b
制御部
c
A
a
入力データ
B
c
A
a →A
変換部
出力データ
C
b
B
b→ B
変換部
c→C
変換部
図9 制御関係によるモジュール化が適切な例
(入力-出力に対応があるとき)
I
I→M
変換
M
M→O
変換
入力データ
I
出力データ
図10 データフロー関係によるモジュール化が適切な例
(入力-出力に対応がないとき)
2009
181
C
検索結果
コマンド
検索
製品管理システム
製品
データ
2009
報告書
登
録
DB
報
告
182
製品管理システム
コマンド処理
コマンド
制御
コマンド
パラメータ
検索結果
登録処理
検索処理
報告処理
製品
データ
エラーメッセージ
ハンドラ
エラー
メッセージ
抽象
データベース
報告書
:抽象化技法による
多入口操作をもつ
モジュール
DB
図12 第1レベルの構造
2009
183
登録処理
登録コマンド
制御
エラー無
のとき
エラーの
個数
データ
解析処理
データベース
登録処理
製品
データ
エラー
メッセージ
DB コマンドファイル
エラーメッセージ
ハンドラ
2009
抽象
データベース
図13 登録処理の構造
184
データ解析処理
語分解
語列
製品
データ
構文
チェック
修正
語列
DBコマンド
生成
DBコマンド
チェック
DBコマンド
列
DBコマンド
ファイル
エラーメッセージ
ハンドラ
図14 データ解析処理の構造
2009
185
これまでの説明は一般論
• システム分解を具体的に行う場合
• 一般論でも行える。
• 図書館システムについて大局的から局所
的分解まで行ってみよ。
• 警報システムについて同様に行え。
• 違いに気がつくか。
2009
186
領域固有のシステム分解
• 実時間型ソフトウエア • 情報処理型ソフトウエア
• 並行プロセスの制御
• 入出力データ構造に留意
• 状態遷移に留意
• 入出力データやDB構造と
処理の対応関係に留意
2009
187
システム分解
System Decomposition
ケース・スタディ1:実時間システムの場合
2009
188
P
P
コンカレント
P
状態マシン
アルゴリズム
I1
2009
命 令
189
システム分解のレベル
関心事
コンカレント
スティミュリ/応答パターン
イベントの同期制御
システムとのインタラクション
状態マシン
機能分析
アルゴリズム
タスク選択/呼び出し
グローバル・データの取扱い
データ構造
オペレーション
論理判断
制御
図4 実時間システムの分解例
2009
190
あいまい/非形式的
具体的/形式的
システム
併行マシン
状態マシン
アルゴリズム
命令
順次
2009
図3 実時間システムの設計の進め方
191
提 示 仕 様 (レベルM)
ふるまい要求
テスト要求
構造要求
性能要求
分析
下位レベルのモデルが要求を
満たせない場合
分析
テストモデル
ディシジョン・モデル
ふるまいモデル
分析
分析
性能モデル
ふるまいモデル
ディシジョン・モデルが要求を満たせない場合
送り出し仕様(レベルM+1)
2009
192
図6 段階的洗練化
実時間系の設計
状態に基づくソフトウエア設計(State-based
・ふるまいのビュー
・機能のビュー
・構造のビュー
CAD)を行う
(状態図)
(アクティビティ図)
(モジュール図)
以下、「警報通知システム」を例に説明する
2009
193
早期警報システム
監視
OP_COM
[in (IDLE)]/GO
・
比較
OUT_OF_
RANGE/
STOP(TK_MS)
SU_COM
SP(SET_UP)
コマンド待ち
RESET
TIME_OUT
設定
警報表示
・
計測
切り離し
切り離し
接続
接続
・
GO
計測中
休止
SP(TK_MS)
2009
194
図7 状態図(簡単な例)
オペレータ
接続
警報メツセ-ジ
切離
早期警報系
SU_COM
OP_COM
早期警報制御
範囲(上限・下限)
値の設定
RESET
範囲外
範囲確認
設定
測定
測定値格納変数
TK_MS
計測値
測定値と範囲値を
比較
警報表示
範囲内
2009
図8 アクティビティ図
195
計測部METERING_
DEVICE
OPERATOR
OK.
MM
監視部MONITOR
DO
OPERATOR
KEYBOARD
KM
コマンド処理部
COMMAND_
HANDLER
CC
MD
表示部
DISPLAY_
SCREEN
比較部COMPARATOR
2009
図9 モジュール図(簡単な例)
196
EWS_CONTROL
OP_COM
[in (IDLE)]/GO
・
COMPARING
SU_COM
SP(SET_UP)
WAITING_FOR_
COMMAND
OUT_OF_
RANGE/
STOP(TK_MS)
MONITORING
RESET
TIME_OUT
SETTING_UP
DISPLAYING
・
MEASURING
DISCONNECTED
DISCONNECT
CONNECT
CONNECTED
・
GO
OPERATING
IDLE
SP(TK_MS)
2009
197
図7 状態図(簡単な例)
OPERATOR
DISCONNECT
CONNECT
EARLY_
WARNING_
SYSTEM
WARNING_
MESSAGE
SU_COM
OP_COM
UP_
LOW_
LIMITS
EWS_CONTROL
RESET
OUT_
OF_
RAN
TAKE_
MEASUREMENTS
(TK_MS)
SET_UP
RANGE
COMPARE
DISPLAY
MEASUREMENTS
OUT_OF_RANGE_VALUES
2009
図8 アクティビティ図(簡単な例)
198
METERING_
DEVICE
OPERATOR
OK.
MM
MONITOR
DO
OPERATOR
KEYBOARD
KM
COMMAND_
HANDLER
CC
MD
DISPLAY_
SCREEN
COMPARATOR
2009
図9 モジュール図(簡単な例)
199
システム分解
System Decomposition
ケース・スタディ2: データ処理型システムの場合
2009
200
システム分解のレベル
機能分解/システム構造階層
フォーム設計
コンポーネントとフォームの関係付け
システム
プログラム
部品
2009
主 要 関 心 事
主制御構造
入力-処理-出力
部品呼び出し
アルゴリズム
図5 データ処理型の分解例
201
フォーム
システム構成単位
R:
帳 票
S:
画 面
W:
作業単位
E:
実行単位
実行制御用
使用
F : ファイル
実体
構成
リンク用JCL
ロードモジュール
P : プログラム単位
コンパイル用JCL
オブジェクトモジュール
ソースプログラム
呼び出し
A
多対多関係
1対多関係
1対1関係
B
C
図10 (a) 概念モデル
S2
W1
E2
E1
E3
P2
P1
S1
P5
R1
P6
P9 P10
P8
P6
P9
P7
P3
R2
P10
R3
F1
2009
図10 システム構造の設計
F2
F3
202
図10 (b) 実際の構造モデル
⑤マトリックス ①組織構造図
②サブジェクト
エリア図
③機能階層図 ④機能依存図
戦略情報
計画
⑥ER図
⑦プロセス
階層図
⑧プロセス
依存図
ビジネス
エリア分析
⑪マトリックス
[[[アクション
⑫会話フロー図 ⑬画面設計
ビジネス
システム設計
⑨プロセス
⑩構造図
アクション図
⑰データ構造設計
xx xxxx
xxx x
⑭プロト
タイピング
xxxxxxx
xxx
⑮プロシィージャ
アクション図
⑯構造図
[[[アクション
技術設計
ワークステーション
メインフレーム
⑲コード生成
⑱データベース生成
製造
DB2
テーブル
トランザク
ション
コントローラ
スクリーン
応用
プログラム
2009
203
図3.3‐2 IEF(Information Engineering Facility)の概要
ソフトウエアCAD
目的
○良質の設計を効率的に
○標準化ドキュメントによる意思疎通の容易化
構成
○良質の設計を効率的に
○標準化ドキュメントによる意思疎通の容易化
インスピレーション源
(類似性、経験、知識)
表現形式
(仕様言語、数学、論理)
設計対象モデル化
ツール系
設計情報ベース
(仕様)
論
駁
2009
クリティカル ビュー
(無矛盾性、テスト容易性、
妥当性)
確認
了解
演繹
低位仕様検討
却
下
204
Designing by CASE
Purpose
○Help efficient good design
○Easy to communicate by standardized
Structure
○Modeling design entity
○Design description language
○Repository
Inspiration Source
(Experience,Expertise)
Representation
(Specification lang.,Mathematics)
Design Entity Modeling
Tools
Repository
Reject
Criticize
Critical Review
(Incontradiction,Reasonability,Testability)
Validation
Reasoning
Agree
2009
Lower Level
Specification Study
205
Methodlogies
Programming Techniques
・Structured Programming
GO TO less
Sequential , Selection , Repeat
・Topdown Programming
Stepwise Refinement
Structured Techniques
・Data Flow Diagram
・ER Diagram
・State Transition
Object-oriented Paradigm
Formal Approach
Design Methods
・Modularity
・Abstraction
・Encapsulation
・Information Hinding
2009
Semantics Abstraction
206
残り7回の講義予定
•
•
•
•
•
•
•
•
•
•
1.ソフトウエア開発プロセス(工程)論 2
2.ソフトウエア検証方法 3
3.ソフトウエア開発の技術革新
3.1 再利用(Reuse) 2
3,2 SOA技術
4.最近の話題
4.1 SOX法
4.2 Web 2.0の世界
5.ITは社会貢献できるか
6.まとめ
2009
207
ソフトウエア開発プロセス
• ソフトウエア開発を組織的に行うプロセスとし
て、何が良いかは永年課題である。
• 該プロセスのモデル(工程の見本)
• ウォーターフォール(Water Fall)
• ラピッドプロトタイピング(Rapid Prototyping)
• スパイラル(Spiral)螺旋型
2009
208
SYSTEM
REQUIREMENTS
VALIDATION
SOFTWARE
REQUIREMENTS
VALIDATION
PRELIMINARY
DESIGN
VALIDATION
DETAILED
DESIGN
VALIDATION
CODE AND
DEBUG
DEVELOPMENT
TEST
TEST AND
PREOPERATIONS
VALIDATION TEST
OPERATIONS
AND
MAINTENANCE
REVALIDATION
2009
Figure 2. Waterfall model
209
システム要求定義
手戻り
VALIDATION
ソフトウエア要求定義
VALIDATION
分析・概要設計
VALIDATION
詳細設計
VALIDATION
実装・デバッグ
DEVELOPMENT
TEST
検査・試験的運用
VALIDATION TEST
運用・保守
REVALIDATION
2009
Figure 2. Waterfall model
210
Project
Plan
Rapid
Analysis
Database
Development
Menu
Development
Function
Development
Prototype
Iteration
Modeling
Benchmarking
Detailed
Design
Implementation
Training/
Maintenance
2009
211
Figure 4. Rapid-prototype cycle model
プロジェクト
計画
Benchmark Test
ラピッド
分析
DB
開発
評価結果が良く
ない
ユーザインター
フェース設計
主機能開発
試作品の迅速作成と評価が主眼
本格的製品の開発ではない
プロトタイピング
ベンチマーク
モデル作成
詳細設計
実装
運用準備/
保守
2009
Figure 4.
Rapid-prototype
life
212
cycle model
Spiral Model
DETERMINE OBJECTIVES
ALTERNATIVES &
CONSTRAINTS
CUMULATIVE COST
EVALUATE ALTERNATIVES
INDENTIFY , RESOLVE
RISKS
risk analysis
risk analysis
risk
analysis
COMMITMANT
PARTITION
R
proto
A type
prototype
prototype
operational
prototype
rqts.plan concept of
Life cycle operation
plan
development requirements
validation
plan
unit
test
code
integradesign
validation
integration
tion and
and
verification
and test
test
acceptance
implementation test
DEVELOP , VERIFY
PLAN
2009
NEXT PHASE
NEXT LEVEL PRODUCT
213
RA Requirements
Analysis
Spiral Model
CUMULATIVE COST
目標(含む代替)および
制約
決定
代替目標の評価
リスクの同定と解決
リスク分析
リスク分析
リスク
分析
コミツトメント
分割
R
proto
A type
運用指向の
プロトタイプ
プロトタイプ
プロトタイプ
要求定義 概念
Life cycle 設計
検討
実装
単体
テスト
開発計画立案 要求の検証
システム統合
とテスト
設計の検
証
運用
将来計画
2009
システム
統合テスト
アクセプタンス
テスト
次期システム
の開発と検証
214
リスク(危機)の高いシステムの場合
• リスク:作業の進行を妨げる諸々の要因
• 予測できない危機も含めて、その対策講じ
ながら進める仕方
• リスクに直面して、プロジェクトの進捗を止
めないようにしたいが、リスクの解消もしな
ければならない。
2009
215
Life Cycle Model : Characteristics
対照性
L/Cモデル
ウォーターフォール
特徴
2009
オペレーショナル
(スパイラル)
-洗練化
-進捗の仕方
-システム
段階的
フェ-ズドアプローチ
塑像的システム
繰り返し対話的
プロトタイプベース
彫刻的システム
-リスクへの配慮
ハイテクノロジ・リスク
-管理の特徴
工程管理指向
ハイアプリケーショ
ン・リスク
新規開発指向
-プロトタイプ作成
造り捨て的(Throwaway)
進化的(Evolutional)
216
演習課題:プロセスモデル
• 1.ソフトウエア開発では何故プロセスが問
題なのか?
• 2.何故プロセスモデルを議論するのか?
• 3.プロセスモデルの代表例を3つ挙げそ
れらの特徴を記せ
2009
217
Life Cycle Model : Characteristics
Waterfall
Model
-Refinement
-Approach
-System
-Orientation
Stepwise
Phased
System
Architecture
High Tech.
Risk
Managementoriented
Interactive
Prototyping based
System
Sculpture
High Appl
Risk
Productionoriented
-Prototyping
Throw-it-away
Evolutional
-Risk
2009
Operational
Model
218
Water fallウォータフォールの特徴
• 品質は確かなものが得られる
• 時間・工数を多く必要
• システムの動作、性能、品質(使い易さ)が
かなり後工程にならないと分からない
・コスト高
・簡単な仕様のシステム作りに対しては、プ
ロセスが重過ぎる
2009
219
製品のライフサイクル
• ライフサイクルとは?
• 製品が生まれて、活用され、やがて寿命が
尽きるまでの期間を言う
• ライフサイクル内で何が行われるか?
2009
220
製品のライフサイクル
Life cycle
What
要求定義
分析
運用
現実
世界
仮想
世界
システム統合
設計
How
2009
221
製品ライフサイクル(ロの字形表現)
要求定義
ソフトウエア分析
システム仕様
WHAT
何を作るか
製品
の使
用者
検証
設計
実世界
IT世界
HOW
如何に
作るか
実装
システム統合
2009
ソフトウエア設計
222
何故寿命が尽きるか
• 前提としている技術アーキテクチャが古くなる
• サイクルを回して製品を改良しても勝てない
• 改良しても使用者の要求に添えなくなる
2009
223
Software development process and its cycle
USER REQUIREMENT
SPECIFICATION
U
S
E
R
FIANL
VERIFICATION
in A CYCLE
DEVELOPER’S
DEFINITION
SYSTEMISABLE
SPECIFICATION
WHAT
DESIGNING
実世界
IT世界
HOW
SYNTHESISE
PRODUCT
2009
REAL WORLD
SYNTHESISABLE
SPECIFICATION
ABSTRACT WORLD
224
ロの字形の注意
•
•
•
•
左半分は実世界、右半分は仮想世界
上半分はWhatの世界(何を作るのか)
下半分はHowの世界(如何に作るのか)
4事象は時計周りに、要求定義、分析、設
計、システム統合
• 何周か回れば、ライフサイクル終了
2009
225
R
M
R
M
要求定義
要求定義
分析・設計
W
分析・設計
H
W
H
(a) 上工程
R
M
分析・設計
製造
R
M
分析・設計
W
W
H
製造
H
(b) 中工程
R
R
M
M
W
W
最終検証
2009
製造
H
検証
(c) 下工程
図1.2 開発工程区分 : 現実(右)と理想(左)の対比
製造
H
226
開発プログレス
課題
分析
設計
実装
現状分析
WHY
脈絡分析
WHAT
WHY
機能仕様
HOW
WHAT
WHY
HOW
WHAT
WHY
HOW
WHAT
WHY
HOW
WHAT
WHY
HOW
WHAT
WHY
HOW
WHAT
WHY
HOW
WHAT
設計制約
システム設計
詳細設計
プログラムコード
ドキュメンテーション
運用環境
“システム開発は2W1Hの連鎖である”
図1.3 上・中工程の視点
2009
227
ソフトウエア・プロセス
ソフトウエア・プロセス=分解プロセス+合成プロセス+検証
Analysis
Synthesis
Verify
支援系
ユーザ (開発者にExplicit) : ツール系
ツール系の基盤 : 環境系
ソフトCAD
2009
228
(A cycle of software process) = (Analytical Process) + (Synthetical Process) + (Verification)
要求
製品ライフサイクル( V字形の表現)
システム検証
.
要求定義
システム設計
実装
2009
統合検証
製品
システムテスト
開発機上・実機上
統合テスト
単体テスト
単体検証
229
V字形の注意
• 左側路線は物作り、右側路線はテスト
• 中央は検証(左右の突合せ)
2009
230
(A cycle of software process) = (Analytical Process) + (Synthetical Process) + (Verification)
V字形ソフトウエア
ライフサイクル
Need
s
User Requirement
Specification
Systemisable
Specification
Systemisable
Specification
2009
Total Verification
Software,Manuals etc.
Integrated
System Test
Successive
Cycles
Deliverable
Product
Integrated
System
Systhesised
Program
231
Advanced Software Process Nucleus
real world
abstract world
PROCESS REALM
f-spec
needs
r-spec
User requirement
Specification
Systemisable specification
functional
structural
behavioral
performance
Decomposer
System Verification
Knowledge
Object Base
+
metrics
What’s view
decomposer specification
functible
structural
behavioral
Dynamics Ananlyser
design rational
Logic Composer
System
Operation
Realm
2009
Software plus
documentation
System Synthesiser
How’s view
synthesisable specification
Feedforward type management (quality,project,cost-risk,product configuration)
232
オブジェクト/オペ
レーション概念
データ
中心設計
カプ
セル化
データ型
ソフトを構造
体ととらえた
時、右の要素
から構成され
る
クラス
AKO
関係
階層
概念
継承
データ型
型と形
の分離
型と形の
連動
オブジェクト
指向
APO関係
構造化
次元
概要
図と地
2009
抽象
データ型
空間
概念
状態/時間
概念
並列
プロセス
メッセージ
通信
オブジェク
トの自律性
ACTOR理論
図14 ソフトウェア設計技術の発展の経緯
FRAME理論
233
Paradigm Comparison
Decisions
and
Rationale
Formal
Development
Informal
Requirement
Requirements
Analysis
Formal
specification
Validation
Automation
Based
Paradigm
Mechanical
Optimization
Turning
Maintenance
Fomal specification
Informal specification
Prototyping standard
Prototyping uncommon
Specification is the prototype
Prototype created manually
Prototype valided against intent
Code validated against intent
prototype becomes implementation
Prototype discarded
implementation machine aided
Implementation manual
Testing aliminated
Code tested
Formal Specification maintained Development
Concrete source code maintained
automaticallly documented
Design decidsions lost
Maintenance by replay
2009
Concrete
Source
Program
Maintenance by patching
234
Current paradigm
informal
Requirement
Requirements
Analysis
inFormal
specification
Concrete
Source
Program
coding
Validation
Validation
Maintenance
Testing
Turning
Maintenance
2009
235
次の文は正しいか?
• 1.ソフトウエア開発プロセスを問題にするのは、
健全に開発をしたいが、最適な進め方が不明だ
から。
• 2.ソフトウエア開発プロセスモデルとは、開発プ
ロセスの雛形を指す。
• 3.ウォータフォール型では、各工程で正しい結
果が出たか検証して、合格なら次工程へ、さもな
ければ元へ戻る。
• 4.ラピッドプロトタイピング型の主目的は、早期
ベンチマークテストを実施し、基本構想の妥当性
を峻別することである。
2009
236