「経営情報学会 情報システム工学研究部会」 「プログラム設計技術」 -ソフトウェアの要求定義から設計まで2006年11月25日 玉井 哲雄 (東京大学大学院総合文化研究科) 1 概要 ソフトウェアプロセス 要求分析 モデル化技術 オブジェクト指向モデル アーキテクチャ設計 「酒屋問題」を例として要求分析から設計まで の流れを解説する 2 ソフトウェアプロセス 3 プロセスとプロダクト プロダクト: 中間製品を含めたすべ ての生産物 プロセス: プロダクトを産み出す工程 ソフトウェアの開発プロセスを単にソ フトウェアプロセスという. 4 ソフトウェアのライフサイクル・モデル 標準的なソフトウェア開発手順を定 め開発作業をガイド 開発プロジェクトの管理モデルとして 使用 開発方法論,ツールと開発環境,文 書体系などを定める基盤 5 ライフサイクル・モデル 落水型ライフサイクル・モデル 分析 設計 プログラ ミング テスト 運用 保守 6 V-モデル 受入れ 分析 テスト 運用 保守 システム テスト 設計 プログラ ミング 単体 テスト 7 落水型モデルの強調点 フェーズ間の明確な区切りときちんと した文書による受け渡し フェーズの手戻りの最小化 管理のし易さ 8 他のライフサイクル・モデル プロトタイピング型モデル 逐次進化型モデル 再利用モデル 並行開発プロセス (concurrent engineering) 軽快な(agile)プロセス z 極端(extreme)プログラミング(XP) 9 プロトタイピング型モデル プロトタ イピング 分析 設計 プログラ ミング テスト 運用 保守 10 逐次進化型モデル 分析 設計 プログラ ミング テスト 運用 保守 11 極端プログラミング(XP) ソフトウェア公開の予定をまず決め,それに従っ て開発計画設定 公開は小さな単位で頻繁に 開発プロジェクトを小さい作業の繰り返しに分割 まずテストケースを作る.テストケース=仕様 再構成(refactoring)の徹底 12 プロセスの評価 プロセスの成熟度評価モデル z SE-CMM (Capability Maturity Model for Software) CMU-SEIで開発 元来は米国国防省のソフトウェア調達先の評 価用モデル CMMIに統合 ISOにおけるプロセスモデルの標準化 13 何を作るか? - 要求分析 - 14 要求工学 システム/ソフトウェアへの要求を系統的 に抽出し,整理し,定義し,分析し,追跡 する方法 1970年代半ばに提唱 1990年代半ばから要求工学国際会議 2004年に京都で開催 15 要求分析の考え方 要求抽出型 z 要求を持つユーザの存在を仮定 z 代表的な手法: シナリオ作成 z ○顧客指向 ×散漫になりがち ニーズ 意図 抽出 要求 16 要求分析の考え方(2) 目標指向型 z システム開発が目指す目標を展開し ていく. z ○系統的, ×目標に特化した解 分解 統合 目標 葉の 収集 目標木 要求 17 要求分析の考え方(3) 領域モデル型 z 対象領域を写像してモデルを作る. z オブジェクト指向モデルなどを使用 z ○要求変化に柔軟,×システムイメー ジが見えにくい 写像 問題領域 モデル 対象世界 18 酒屋倉庫管理の目標展開 顧客満足度の向上 よい注文対応 迅速な出荷 速やかな 出庫指示 在庫コストの減少 よい商品 出荷間違い の防止 多様な銘柄 の仕入れ - 過剰在庫 の圧縮 商品の 品質維持 商品の滞留 時間短縮 在庫切れ 防止 在庫状況の 正確な把握 入庫後 即時登録 先入れ 先出し 19 要求の種類 機能要求 非機能要求 z 性能 z 使いやすさ z 安全性(security) z 保守性 z 可搬性(portability) z 組織文化,法律などからくる制約 20 要求仕様 要求を厳密に定義,記述したもの 通常は形式的/非形式的言語表現 「いかに(how)」でなく「なにを(what)」 21 仕様記述の難しさ 対象とする問題領域の非論理性 ユーザが要求を意識していないか,表現 できない 開発者が,ユーザの言葉を理解できない 利害関係者の多さ ユーザの意図や外部条件が変化する 対象となる問題領域が大きく複雑すぎ て,記述方法が分からない 22 仕様を読む人 ソフトウェアの発注者, 利用者,操作者 ソフトウェアの開発者 検査者 書く人は? z 開発者が利用者に聞きながら,また 資料を分析して,記述することが多い 23 モデル化技術 24 モデル化技術 モデルとは z 構造を持った対象を,その性質や動作 を理解するために抽象化したもの モデル構築の目的 z 対象世界(領域)の把握 → 分析 z 開発するシステムの表現 → 要求仕様 25 UML記法 Unified Modeling Language G. Booch, J. Rumbaugh の合流に I. Jacobsonが後から参加 1995年5月 Unified Method (暫定版) 1997年11月 OMGよりUML1.1 2003年3月 UML1.5 最新版 UML2.0 (2004年10月) 26 UMLの位置付け オブジェクト指向モデル記述言語 これまでの分析や設計ノウハウを図 を中心に集大成 グラフ構造を持つモデル表現法のカ タログ 27 UMLの図式 ユースケース図 クラス図 振舞い図 z z z z 状態図 活動図 系列図 協調図 実装図 z コンポーネント図 z 配備図 28 共通問題ー酒屋問題 ある酒類販売会社の倉庫では,毎日数個のコンテナが搬入 されてくる.その内容はビン詰めの酒で,1つのコンテナに は10銘柄まで混載できる.扱い銘柄は約200種類ある.倉庫 係は,コンテナを受け取りそのまま倉庫に保管し,積荷票 を受付係へ手渡す.また受付係からの出庫指示によって内 蔵品を出庫することになっている.内蔵品は別のコンテナ に詰め替えたり,別の場所に保管することはない. 空になったコンテナはすぐに搬出される. 積荷票: コンテナ番号(5桁) 搬入年月,日時 内蔵品名,数量(の繰り返し) 29 さて受付係は毎日数十件の出庫依頼を受け,その都度倉庫 係へ出庫指示書を出すことになっている.出庫依頼は出庫 依頼票または電話によるものとし,1件の依頼では,1銘柄 のみに限られている.在庫がないか数量が不足の場合には, その旨依頼者に電話連絡し,同時に在庫不足リストに記入 する.また空になるコンテナを倉庫係に知らせることにな っている.倉庫内のコンテナ数はできる限り最小にしたい と考えているからである. 出庫依頼: 品名,数量 送り先名 30 受付係の仕事(在庫なし連絡,出庫指示書作成および在庫不 足リスト作成)のための計算機プログラムを作成せよ. 出庫指示書: 注文番号 送り先名 コンテナ番号 品名,数量 空コンテナ搬出マ-ク 在庫不足リスト: 送り先名 品名,数量 (の繰り返し) • なお移送や倉庫保管中に酒類の損失は生じない. • この課題は現実的でない部分もあるので,入力 データのエラー処理などは簡略に扱ってよい. 31 酒屋問題の全体文脈図 空コンテナ コンテナ 倉庫係 注文品 出庫指示書 依頼者 積荷票 空予定コンテナ 出庫依頼書 不足連絡 受付係 在庫不足リスト 32 オブジェクト指向モデル 33 オブジェクト指向分析/設計 オブジェクトとオブジェクト間の静的・ 動的関係を捉える. 分析→設計→実装が継ぎ目な し(seamless)に進むことを唱う. 種々の図式表現の提案 → UML(Unified Modeling Language) に統合の方向 34 オブジェクト指向の源流 シミュレーション(SIMULA67) 抽象データ型(CLU(1976), Alphard(1976), EUCLID(1977)) 知識表現(フレーム(1975),KRL(1977), KL-ONE(1985)) 意味データモデル(ER(1976)) 動的プロセスモデル(ACTOR(1977)) マルチメディア(Smalltalk(1977)) 35 オブジェクトの抽象化 カプセル化 z 静的な特性(属性,状態)と動的な特性(動作,操 作,メッセージ受発信)を単位化 z 情報隠蔽 クラス階層 z 汎化/特化(継承) z クラス/インスタンス 多相性(polymorphism) オブジェクト間の関係 z 静的関係: 集約,関連 z 動的関係: メッセージ交換 36 統合プロセス(Unified Process) UMLを記法とした開発プロセス I. Jacobsonのユースケース法を中心 にOMTやBooch法を統合 ユースケース重視はある意味で機能 要求に基づくモデル化への回帰.そ れだけに実践的. 37 統合プロセスの概要 ユースケースの記述 クラスの同定 クラス図の作成 協調関係の記述 状態遷移図の作成 パッケージ化 38 ユースケース I.Jacobsonが提唱した手法 UMLでも採用 ユースケースとは利用者がシステムを使 う際のシナリオ ユースケースとそれを使う役割(アクタ)の 関係を示すのがユースケース図 要求を分析し,必要なオブジェクトを定め るために用いる. 39 コンテナ搬入 《include》 倉庫係 出庫指示 《include》 アクタ 受付係 注文受付 《extend》 在庫不足 ユースケース ユースケース図 40 ユースケース(2) 記述項目 z ユースケース名 z アクタ z 事前条件 z 基本系列 z 事後条件 z 代替系列 41 クラスの同定 インターフェース・クラス z アクタとシステムのインターフェース 実体クラス z ひとまとまりのデータを包含するもの 制御クラス z ユースケースを実行するための制御 的役割を果たすもの 42 所有者 クラス図 氏名 年令 住所 エンジン 1 排気量 1 関連 (association) * 自動車 モデル 年式 汎化 (generalization) トラック 積載量 1 集約 (aggregation) 1 1 車体 サスペンショ ン方式 車輪 * 直径 乗用車 何人乗り 多重度 43 酒屋問題のユースケース図 コンテナ搬入 <<include>> 出庫指示 倉庫係 <<include>> 注文受付 <<extend>> 受付係 在庫不足 44 酒屋問題 ユースケース名:コンテナ搬入 アクター:倉庫係,受付係 事前条件: 基本系列: 1. 倉庫係は,搬入されたコンテナの内容と積荷票を 照合し,積荷票を登録する. 2. システムは,在庫不足として登録されている注文 で,この入荷により在庫不足が解消されたものがあ れば,それを受付係に知らせる. 3. 在庫不足が解消された注文があれば,受付係はそ れらにつき出庫指示ユースケースを実行する. 事後条件: 搬入されたコンテナの持つ内蔵品のデータ が,参照可能である.出庫があった場合は,それに応 じて在庫データが更新されている. 45 ユースケース名:注文受付 アクター: 受付係 事前条件: 基本系列: 1. 受付係は,顧客から注文を受ける. 2. 受付係は,その注文についての在庫状況をシステムに問い 合わせる. 3. システムは注文に応ずることができる在庫があることを受付 係に伝える. [代替系列] 在庫が不足している場合は,在庫不足ユース ケースへ 4. 受付係は,この注文につき出庫指示ユースケースを実行す る. 事後条件: 出庫に応じて在庫データが更新されている. 46 ユースケース名:出庫指示 アクター: 受付係,倉庫係 事前条件: 当該の注文に対して在庫が存在する. 基本系列: 1. 受付係はシステムに出庫指示書を作成するよう指 示する. 2. システムは出庫指示書と,空きコンテナが生じる場 合はその空きコンテナ番号を,倉庫係に示す. 3. システムは,在庫データを更新する. 事後条件: 出庫に応じて在庫データが更新されてい る. 47 ユースケース名:在庫不足 アクター: 受付係 事前条件: 指定された注文の在庫が不足している. 基本系列: z システムは注文に応じた在庫がないことを受付係 に知らせる. z 受付係は,顧客に在庫不足連絡を行う. z システムはこの注文を,在庫不足により未出荷で あるものとして登録する. 事後条件: 当該注文が在庫不足で未出荷であることが 登録されている. 48 酒屋問題のクラス図 受付 倉庫 注文受付(注文) 在庫不足注文の検索(品名):注文の集合 1 1 1 コンテナ登録 在庫充足?(注文):論理値 出庫指示(注文):出庫指示書,空コンテナ 1 * 注文 受付年月日 品名 数量 納入年月日 受付状況:在庫不足/在庫あり/出庫済み 在庫不足登録( ) 出庫済登録 顧客 住所 名前 在庫不足連絡(注文) 1 注文者 * 保管する * コンテナ 搬入年月 日時 在庫確認(品名):数量 出庫指示(品名,数量) 搬出可能?:論理値 1 積荷内容 * 内蔵品 品名 数量 49 注文受付(在庫有りの場合)の系列図 受付 倉庫 コンテナ 注文 注文受付(注文) 在庫充足?(注文) 集計 在庫確認(注文. 品名) 数量 … 充足 出庫指示(注文) 在庫更新 出庫指示(品名,数量) … 出庫指示書,空コンテナ 出庫済登録 50 注文の状態遷移図 受付済み 在庫確認済み[在庫有り] 在庫確認中 出庫待ち 在庫確認済み [在庫無し] 出庫完了 出庫済み 記録抹消 コンテナ搬入 在庫不足中 51 アーキテクチャ設計 52 酒屋問題のアーキテクチャ 問題: 入庫情報はコンテナ単位 注文は品目単位 アーキテクチャ設計上の判断 z 情報をコンテナ単位に保持.品目単 位のデータは必要に応じ抽出 z 情報を品目単位に保持.コンテナが 入庫するたびに,それを品目単位に 変換 53 酒屋問題のクラス図 受付 倉庫 注文受付(注文) 在庫不足注文の検索(品名):注文の集合 1 1 1 コンテナ登録 在庫充足?(注文):論理値 出庫指示(注文):出庫指示書,空コンテナ 1 * 注文 受付年月日 品名 数量 納入年月日 受付状況:在庫不足/在庫あり/出庫済み 在庫不足登録( ) 出庫済登録 顧客 住所 名前 在庫不足連絡(注文) 1 注文者 * 保管する * コンテナ 搬入年月 日時 在庫確認(品名):数量 出庫指示(品名,数量) 搬出可能?:論理値 1 積荷内容 * 内蔵品 品名 数量 54 注文受付(在庫有りの場合)の系列図 受付 倉庫 コンテナ 注文 注文受付(注文) 在庫充足?(注文) 集計 在庫確認(注文. 品名) 数量 … 充足 出庫指示(注文) 在庫更新 出庫指示(品名,数量) … 出庫指示書,空コンテナ 出庫済登録 55 品目クラスの導入 56 酒屋問題のクラス図 品目クラス導入版 57 注文受付の系列図 品目クラス導入版 58
© Copyright 2024 Paperzz