オブジェクト指向概論 第5講 オブジェクト指向開発とは何か 立命館大学 情報理工学部 黄 宏軒 1 5.1 なぜオブジェクト指向開発か ソフトウェア開発に対する様々な課題 =ソフトウェア危機(Software Crisis) n 危機をどう乗り越えていったらよいか ⇒その解の1つがオブジェクト指向開発 n 2 ソフトウェア危機(1960年代~) 1. 2. 3. 4. 5. 6. ソフトウェア規模の増大 ソフトウェアコストの増大 バックログ(開発の積み残し)の増大 ソフトウェア生産性の低下 ソフトウェア品質の低下 ソフトウェア技術者の不足 ソフトウェア工学の誕生(1968年) 3 新たなソフトウェア危機 ライフサイクルの短期化 1. 競争の激化によりシステムの開発サイクル, バージョンアップの間隔が短くなっている n n 例:Webサイトの立ち上げ:2~4ヶ月,携帯電話:3~6ヶ月 ⇒ 一から作っていられない=再利用,部分開発 オープンシステム化 2. ソフトウェア実行のためのハードウェアやOS・ミドルウェア が多様化 n n 例:ハードウェア:メインフレーム,PC,携帯,OS:Unix,Windows ⇒いろいろなものを組み合わせる技術 4 新たなソフトウェア危機(続き) インターネットの発展 3. インターネットでeビジネスが現実に n n 例:ネットショッピング,オークション,宿泊予約,… ⇒ いつでも,誰にでも使え,信頼できるシステムが求められ る 大規模・分散システム化 4. ネットワークを使っていろいろなシステムを連携 n n 例:ショッピングサイトとクレジット決済 ⇒複数個のシステムを連携させて1つのサービスを構築する 5 ソフトウェア危機への対応 オブジェクト指向開発で乗り切ろう n ・・・大規模で複雑なものを分解,整理して考えると 1. コンポーネント開発 q コンポーネント単位で開発するので,分散システムを作りやすい 部品化 2. q 部品を組み合わせていくので,短期にできる 要求変更に強い 3. q 部分的な変更がしやすい リスクの限定 4. q コンポーネント内にリスクを限定できる 6 5.2 開発プロセス n 開発プロセスとは,システム開発の ライフサイクル(開発を開始してから終了する までの手順)を示したもの q n 分析,設計,実装,テストなどの進め方 代表的な開発プロセスのモデル ウォーターフォールモデル q スパイラルモデル q オブジェクト指向モデル q 7 ウォーターフォールモデル n システム開発を幾つかの段階に分けて,滝 (ウォーターフォール)のように上流工程から 下流工程へと順番に開発を進めていく方法 システム要件 要求定義 の定義 基本仕様書 機能仕様の作成 外部設計 機能仕様書 プログラム構造の設計 内部設計 管理がしやすい 構成仕様書 コーディング,単体テスト コーディング 結合テスト,システムテスト プログラム テスト 8 ウォーターフォールモデルの問題点 システム要件 要求定義 の定義 完璧にできている ことが前提 基本仕様書 機能仕様の作成 外部設計 機能仕様書 プログラム構造の設計 内部設計 構成仕様書 コーディング,単体テスト コーディング やり直し 結合テスト,システムテスト プログラム テスト しかし得てして このころに 問題発覚! 9 ウォーターフォールモデルの問題点(続き) n システムが要求どおりに出来ているかどうか,最後 にならないとわからない 要求定義 受入テスト 外部設計 内部設計 コーディング システムテスト 結合テスト 単体テスト 10 ウォーターフォールモデルのリスク リスクがなかなか 減らない リスク 要求定義 外部設計 内部設計 実装 テスト 11 人月の神話 = ? 4人×6ヶ月=24人月 8人×3ヶ月=24人月 ・ 問題が発生する ↓ ・ 遅れを取り戻そうと人を投入しても 新規要員への知識移転のために 遅れは逆に増加する 12 ウォーターフォールモデルの メリット・デメリット n メリット q n 開発の進捗状況がわかり易いので,管理しやすい デメリット 問題への気づきが遅れがち q 結合テストの頃に発見される問題が多い q 後になればなるほど手戻りが大きい q 開発リスクがなかなか減らない q 13 スパイラルモデル n システム全体を一度に作るのではなく,分析/設計 /実装/テストという工程を何回も繰り返しながらシ ステムを成長させていく 分析 テスト 設計 実装 14 スパイラルモデルのメリット・デメリット n メリット サイクル毎に検証をすることで,リスクを早く 減少させることができる q 前のサイクルの検証結果を反映させることで, 仕様の変更に対応しやすい q 新しいシステムに適用しやすい q n デメリット q システムがうまく分割できない場合には 適用しにくい 15 オブジェクト指向モデル n n n システムをいくつかのコンポーネントに分割し,分割 した部分の組み合わせを単位として,分析・設計・実 装・テストを繰り返して開発を進める方法 スパイラルモデルの一種 オブジェクト指向の考え方と相性が良い 16 オブジェクト指向モデル(続き) 分析 設計 分析 設計 分析 設計 テスト 実装 テスト 実装 テスト 実装 反復1回目 反復2回目 反復3回目 サービス A サービス サービス A B サービス サービス サービス B C A ベースコンポーネント ベースコンポーネント ベースコンポーネント 17 オブジェクト指向モデルのリスク 反復するたびに リスクを軽減できる リスク 反復1回目 反復2回目 反復3回目 反復4回目 18 オブジェクト指向モデルの メリット・デメリット n メリット q q q n サイクル毎に検証をすることで,リスクを 早く減少させることができる 前のサイクルの検証結果を反映させることで, 仕様の変更に対応しやすい 出来上がった機能からリリースできるので,短期でサービス を稼動しやすい デメリット q q プロジェクト管理が難しい 品質管理や構成管理(バージョン管理)が難しく, コストが増加しがち 19 5.3 開発手法 n 開発手法とは q 開発プロセスを具体化し,開発の進め方を定義し たもの n n n 作業工程の順序・関係 各作業工程の内容,手順と入出力成果物 利用する成果物(モデル,文書)の構造,記述法 20 オブジェクト指向開発手法のいろいろ Booch OMT OOSE Coad/ Yourdan Martin/ Odell ・・・ Coad Martin/ Odell ・・・ Booch,OMT, OOSEは UPに統合された Unified Process UML ノーテーション (記述法)は UMLに統合された 21 Unified Process(UP)とは n n n n n さまざまなオブジェクト指向型開発手法を統合して作成された ため,「統一プロセス」と呼ばれている 作者はGrady Booch(Booch法),Jim Rambaugh(OMT), Ivar Jacobson(OOSE).この三人はスリーアミーゴス(three amigos)と呼ばれる 記述法としてUMLを用いる オブジェクト指向型開発手法として,標準になりつつある より具体的に定義したものとして,IBMのRUP(Rational UP) がある. 22 UPの特徴 n 管理されたインクリメンタルな反復型開発 q n ユースケース駆動 q n ユースケース(ユーザの要求仕様をシステムの利用法と いう形で記述したもの)を出発点にして開発 アーキテクチャセントリック q n 要求,成果物,人,リスクなどを管理しながら,マイルス トーンを設定した計画のもとで反復開発を実施する アーキテクチャ(システムのベースとなる骨組み)を中心に 開発を進める カスタマイズ可能 q システムによって柔軟にカスタマイズして使える 23 インクリメンタルな反復型開発 イテレーション 要求 分析 設計 実装 テスト フェーズ 方向づけ バージョン1 推敲 作成 バージョン2 移行 バージョン3 24 反復型開発のフェーズ n インセプション(方向づけ)フェーズ q n エラボレーション(推敲)フェーズ q n システム構築のための核となるアーキテクチャベースライ ンを作る.骨組みと黄金ルート(必ず通る基本のルート)を 作る. コンストラクション(作成)フェーズ q n アイデアのプロトタイプの開発と評価.開発を進めるべき か,止めるべきかを判断する. システムとして仕上げる.β版のリリースが目標. トランジション(移行)フェーズ q β版のリリースとフィールドでの評価結果の反映. 25 ユースケース駆動 要求 分析 設計 実装 テスト ユースケース モデル 分析モデル 設計モデル デプロイメント モデル 実装モデル 仕様書 設計書 テストモデル 配備図 プログラム テスト仕様書 26 ユースケースの視点 開発者の視点 ユースケース1 モジュールA1とD1 の開発優先度 が高い モジュールA1 モジュールD1 ー ユースケース2 モジュールA2 モジュールB1 視 点 ユースケース3 モジュールA3 モジュールB2 モジュールC1 ユースケース4 モジュールA4 モジュールB3 モジュールC2 モジュールD2 モジュールD3 モジュールB4 27 アーキテクチャセントリック n システムのベースとなる骨組み(アーキテクチャ)を 優先して開発する クライアント Webサーバ DB サーバ 基本 DB アーキテクチャベースラインを確立 28 アーキテクチャセントリックの考え方 開発者の視点 ユースケース1 モジュールA1 モジュールD1 ー ユースケース2 モジュールA2 モジュールB1 視 点 ユースケース3 モジュールA3 モジュールB2 モジュールC1 ユースケース4 モジュールA4 モジュールB3 モジュールC2 モジュールD2 モジュールD3 モジュールB4 モジュールA3~D3を 優先して開発 29 アジャイルプロセス(Agile Process) n 重厚長大な開発手法(UP)に対するアンチテーゼ q n Agile Manifesto q q n 小さいシステムはもっと簡単に作ってもいいだろう 2001年2月 Kent Beckを始めとする軽量プロセスの 提唱者による宣言 http://www.agilemanifesto.org 状況に対して柔軟にかつ迅速に対応する q スキルのある開発者が10名以下で作れる開発規模 30 アジャイルプロセスの特徴 n プロセスやツールよりも q n 大量の詳細なドキュメントやモデルよりも q n 検証可能な動くソフトウェアに基づくことが大事 契約上の駆け引きよりも q n 開発者個人の能力や相互コミュニケーションが大事 顧客とのコラボレーションが大事 計画を硬直的に守ることよりも q 変化に柔軟に対応することが大事 31 いろいろなAgile Process n n n n n n XP: eXtreme Programming SCRUM ASD: Adaptive Software Development FDD: Feature Driven Development DSDM: Dynamic Systems Development Method LD: Lean Development 32 XP (eXtreme Programming) n n Agile Processの草分け オブジェクト指向によるインクリメンタルな反復型開発 (UPと同じ) q q q n ただし軽量かつ柔軟で俊敏(Agile)を旨とする 短期間(1~2週間単位)でのイテレーション 形式的な完璧さよりも動くことを重視 少数のメンバによる小規模開発 33 XPの追求する4つの価値 n コミュニケーション(Communication) q q q n 開発メンバ,顧客と常に対面による的確な情報伝達を 心掛ける 毎朝ミーティング,常に議論,すぐ顧客に確認 (オンサイトカスタマ) ペアプログラミング(デザイン・コーディングとレビュー・テス トの同時進行) 単純さ(Simplicity) q q 必要以上に設計に凝らない.いつでも壊せるつもりでいる. 大掛かりな事前設計の排除(シンプルな設計,リファクタリ ング) 34 XPの追求する4つの価値(続き) n フィードバック(Feedback) q q n 推測はやめてプログラムに聞け!(こまめにリリース) テストファースト(まずテストプログラムを書き,成功するよ うに実装) 勇気(Courage) q q 要求や仕様,設計の変更を恐れるな! 小さな絶え間なき改善=こまめにリリース,リファクタリン グ重視 35 XPの12のプラクティス n n n n n n n n n n 計画ゲーム→Planninng Game ペアプログラミング→Pair Programming こまめにリリース→Small Releases コードの共同所有→Collective Ownership メタファ→Metaphor 継続的インテグレーション→Continuous Integration シンプルな設計→Simple Design 週40時間労働→40-Hour Week テスティング→Testing オンサイト顧客→On-site Customer 36 XPの12のプラクティス(続き) n n n n リファクタリング→Refactoring コーディング規約→Coding Standard オープンな開発スペース→Open Workspace 日ごとのスキーマ進化→Daily Schema Migration 37 XPのメリットデメリット n メリット 短期間の開発が可能 q 顧客とともに仕様を検証していくことで,顧客の要 求にあったシステムが作りやすい q n デメリット 大規模開発には使えない q 開発メンバのスキル(能力)がある程度そろってい ないと難しい q 管理がしにくい q 38 第5回のまとめ n n n n n 新たなソフトウェア危機に対して,オブジェクト指向は解決の ベースとなりうる 「開発プロセス」とは,システム開発のライフサイクル(開発を 開始してから終了するまでの手順)を示したもの ウォータフォールモデルは分析/設計/実装/テストを段階 的に行う.管理しやすいが,リスクが後工程まで残りがち スパイラルモデルは,4つの工程を繰り返しながら開発する. リスクを早く減らせる オブジェクト指向モデルは,スパイラルモデルの一種で,コン ポーネント単位に段階的に開発する 39 第5回のまとめ(続き) n n n n 代表的なオブジェクト指向開発手法=Unified Process.管 理された反復型開発,ユースケース駆動,アーキテクチャセ ントリック,カスタマイズ可能という特徴を持つ オブジェクト指向開発手法では,記述法としてUML(Unified Modeling Language)を使う UPのような重厚長大な開発手法のアンチテーゼがAgile Process Agile Processの代表であるXPでは,少人数で短期間の反 復開発を行う.4つの価値(コミュニケーション,単純さ, フィードバック,勇気)を追求する 40
© Copyright 2024 ExpyDoc