Object-Oriented Conference 2024
採択
2024/03/24 16:00〜
Track A(共2-201)
招待セッション(40分)
招待セッション

設計で駆動するソフトウェア開発

masuda220 増田 亨 masuda220
4

このセッションでは「設計の知識と技能で駆動するソフトウェア開発」をテーマに以下の内容を発表します。

① ソフトウェア設計の基礎知識
・基本課題:複雑さと発展性
  大きな泥団子
  巨大な一枚岩
・解決のアプローチ:
  モジュラー性の向上
  イテレイティブな設計活動
・基本となる技法:
  モデル (簡略化)
  直接的な写像 (分析モデルと設計モデルの一致)
  自律分散 (独立)
  協調 (連係)

② モジュール化のアプローチ
・分類軸
  機能とデータ型
  可変と不変
  トップダウンとボトムアップ(分解と組立)
・オブジェクト指向プログラミングのモジュール化
  抽象データ型
  可変から不変へ
・ドメイン駆動設計のモジュール化
  複雑な業務ロジック
  アプリケーション固有の型システム
  値オブジェクト、集約、サービスの三階層

③業務系アプリケーションのアーキテクチャ
・コア(中核)
  計算判定
  アクション
・ポート(インターフェース)
  アクティブ
  パッシブ
・アダプタ(周辺)
  コマンド
  イベント
  データプロダクト

④モデル駆動設計
複雑さに立ち向かい、発展性を維持するために
モジュールの発見、実装、洗練
〜6つのモデルで6つの設計を駆動する
 ◆全体の形
   目的制約モデルと基本設計
 ◆中核モジュールの設計
   業務モデルとクラス設計
   利用モデルとアプリケーション設計
 ◆周辺モジュールの設計
   記録モデルとスキーマ設計
   協調モデルとプロトコル設計
   対話モデルとインタラクション設計

⑤ 設計と開発プロセスの相互作用
・モジュール駆動のタスク設計
・イテレイティブな設計 (モジュラー性の改善活動)
・継続的デリバリー vs. プロジェクト式デリバリー
・リファクタリング vs. 手戻り禁止

⑥ 設計の学び方
~モジュラー性向上の知識と技能
・経験則
・習熟
・共創