抽象によるソフトウェア設計 第6章 事例 その5

今日は 6.3 メディア資産管理のところからです

  • iView MediaPro という実在のソフトウェアのモデル化をして粗を探すらしい……
    • 「このモデル化の動機は、もしかしたら今とは異なる設計があり得たのではないかと思えるような、嫌な体験を何度か経験したことである」
    • 結論としては優れた設計だったということらしい
  • Catalog, Asset というシグネチャとアプリケーションの状態を表す ApplicationState シグネチャを宣言
    • ApplicationState は Catalog の集合と個々の Catalog の状態、現在の Catalog、Asset の集合である「カットバッファ」からなる
    • こういう完成しているアプリケーションのモデリングって実際に動かしてみた感触から構築するんでしょうか? どうやってこのモデリングにしたのか謎ですね
    • Catalog の状態には、Catalog が含む Asset の集合、表示状態/非表示状態の Asset、選択中の Asset を持つ。選択中の Asset は選択していない(Undefined)か表示状態の Asset のみであるという制約
  • 表示、非表示のきりかえやカットバッファの操作を述語として定義。これはメニューやボタンで実行するコマンド毎に定義しているみたい
    • 操作前の状態と操作後の状態の関係を定義する方式
  • 解析
    • 操作が普遍条件を保存することを確認
    • 切り取りと貼り付けが対称な操作になっていて互いに Undo として挙動すること
      • ただし、カットバッファの内容が戻らないので完全に一致ではない
    • etc... 確認したい内容は思いつくままに
  • ソフトウェアの挙動からモデリングしてみてその仕様をよく理解できる
    • ところで非表示の Asset を表示に戻す操作がなかったような……。省略されただけでしょうけど
  • 田中哲さんの名前が!

今年の朝読書は今日でおしまいです。