オブジェクト指向でなぜつくるのか -知っておきたいプログラミング、UML、設計の基礎知識- (後半まとめ)

第7章〜最後までのまとめ。

オブジェクト指向

  • 汎用の整理術(上流工程)
    • 集合論(集合と要素)
    • 役割分担(メッセージパッシング)
  • プログラミング技術(下流工程)

UML(Unified Modeling Language)

「汎用の整理術」と「プログラミング技術」の共通成果物

  • OOPのプログラム構造や動作を表現 ->形のないソフトウェアを見る道具
  • オブジェクト指向を表現
    • ユースケース
      • コンピュータにまかせる仕事の範囲を表現
      • システムの全体像をつかむ
      • 外部仕様、サービス機能
    • アクティビティ図
    • ステートマシン図
      • 外部からのイベントによる状態変化を表現
      • 状態遷移図
  • UMLは文書やプログラムの理解を助ける手段

モデリング

現実世界をそのままとらえる視点からコンピュータの都合に合わせる視点へ
(現実世界とソフトウェアのギャップを埋める)

  • 業務分析
    • 現実世界の様子をそのままとらえる
    • why ->コンピュータをなぜ利用するのかを整理する
    • アクティビティ図
  • 要求定義
    • コンピュータに任せる仕事の範囲を決める
    • what ->コンピュータに何をさせるかを決める
    • ユースケース図/アクティビティ図にシステムのパーティションを追加/クラス図(概念モデル)/ステートマシン図
  • 設計
    • ソフトウェアをどう作るかを決める
    • how ->ソフトウェアをどう実現するか

オブジェクト指向設計

  • 設計作業の流れ
    1. 実行環境の定義
      • ハードウェア、ソフトウェアの選定
    2. ソフトウェア全体の構造定義
      • 複数のサブシステムへ分割
      • パッケージ図
    3. 個々のソフトウェア部品の設計
      • クラス、メソッドの仕様決定
      • インタフェースの決定
  • 保守性や再利用性を重視した設計
    • 重複を排除 ->ポリモーフィズム、継承
    • 独立性を高める
      • 凝集度(cohesion) ->メソッドや変数の意味的まとまりを強く
      • 結合度(coupling) ->クラス間の結び付きを弱く
    • 依存関係を循環させない

開発プロセス

  • ウォータフォール型開発プロセス
    • 仕様変更に柔軟に対応できない
  • RUP(反復型開発プロセス)
    • 方向づけフェーズ(Inception)
    • 推敲フェーズ(Elaboration)
    • 構築フェーズ(Construction)
    • 移行フェーズ(Transition)
  • XP(反復型開発プロセス)
    • XPの4つの価値
    • XPの12プラクティス
  • アジャイルソフトウェア開発宣言(Manifesto for Agile Software Development)
    1. プロセスやツールよりも、個人、そして協力を
    2. 完全なドキュメントよりも、動くソフトウェアを
    3. 顧客との契約交渉よりも、顧客との協調を
    4. 計画に従うよりも、変化への対応を