MENU

Fun & Interesting

設計の知識と技能で駆動するソフトウェア開発 増田 亨 masuda220 #ooc_2024

Video Not Working? Fix It Now

内容 設計と開発プロセスの関係性 システムの構造とタスク構成 設計の影響(生産性、外部品質) ソフトウェア設計の知識と技能 経験則 (経験による暗黙知 ⇒言語化:原則、パターン、体験談) 習熟 (手を動かして内面化された経験則) 共創 (知識と技能の連結) ① ソフトウェア設計の基礎知識 a. 基本課題 複雑さと発展性 大きな泥団子 巨大な一枚岩(モノリス) b. 解決のアプローチ 関心の分離→部品化→モジュール化 交換容易性(モジュラー性) c. モジュール化:基本となる4つの技法 モデル 直接的な写像 カプセル化 仕様 ② モジュール化 a. モジュールの分類 機能(Function)と型(Type) インバウンド、アウトバウンド、演算 可変と不変 ブレークダウンとビルドアップ b. オブジェクト指向プログラミングのモジュール化 抽象データ型 型の連結 型の分類(subtyping) 型の階層化? 可変から不変へ c. ドメイン駆動設計のモジュール化 事業活動の複雑さ(最適化問題) 複雑な業務ロジック 分析モデルと設計モデルの一致 (ユビキタス言語) アプリケーション固有の型 (値オブジェクト、集約、サービス) ③アプリケーションのモジュール構成(参照モデル) コア(中心) 計算判定 業務機能 ポート(境界) パッシブ(primary) アクティブ(secondary) アダプタ(周辺) primary : テスト、Web UI、Web API、バッチ、イベントリスナー secondary : 内部データソース、外部データソース、外部サービス ④モデル駆動設計 全体 事業活動、要件、アーキテクチャ コア(中央) 業務ロジック、ドメインモデル 業務機能、アプリケーションサービス アダプター(周辺) 記録モデル、データベーススキーマ 連係モデル、プロトコル設計 対話モデル、インタラクション設計

Comment