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

Ғылым және технология

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

Пікірлер

    Келесі