採択
2024/03/24 10:55〜
Track B(共2-101)
招待セッション(40分)
基調講演

オブジェクト指向のリ・オリエンテーション ~歴史を振り返り、AI時代に向きなおる~

hhany 羽生田 栄一

オブジェクト指向という考え方がプログラミング言語Simula(Simula I:1962、 Simula67:1967)の影響のもとでAlan Kayによって1970年前後に生まれてから半世紀以上が過ぎた今、その歴史的な功罪を素直な目で振り返り(reflection)たい。そのうえで改めて「オブジェクト指向」という言葉・概念・思いの意味を、プログラミングや設計を踏まえたソフトウェア工学だけでなく、言語・哲学・文化といった観点からも広く見直してみたい。そうすることで新たな気持ちを込めて、「Objectオブジェクト」「Orientation指向」に生成AI・大規模言語モデル時代である現在において意味のある概念としてしっかりと向き直りたい(リ・オリエンテーション)と思う。それは新しい時代のオブジェクト指向の入門(オリエンテーション)にもなっていることを望んでいる。

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

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

masuda220 増田 亨

はじめに

  • 設計と開発プロセスの関係性
    • システムの構造とタスク構成
    • 設計の影響(生産性、外部品質)
  • ソフトウェア設計の知識と技能
    • 経験則 (経験による暗黙知 ⇒言語化:原則、パターン、体験談)
    • 習熟 (手を動かして内面化された経験則)
    • 共創 (知識と技能の連結)

① ソフトウェア設計の基礎知識

a. 基本課題

  • 複雑さと発展性
  • 大きな泥団子
  • 巨大な一枚岩(モノリス)

b. 解決のアプローチ

  • 関心の分離→部品化→モジュール化
  • 交換容易性(モジュラー性)

c. モジュール化:基本となる4つの技法

  • モデル
  • 直接的な写像
  • カプセル化
  • 仕様

② モジュール化

a. モジュールの分類

  • 機能(Function)と型(Type)
  • インバウンド、アウトバウンド、演算
  • 可変と不変
  • ブレークダウンとビルドアップ

b. オブジェクト指向プログラミングのモジュール化

  • 抽象データ型
  • 型の連結
  • 型の分類(subtyping)
  • 型の階層化?
  • 可変から不変へ

c. ドメイン駆動設計のモジュール化

  • 事業活動の複雑さ(最適化問題)
  • 複雑な業務ロジック
  • 分析モデルと設計モデルの一致 (ユビキタス言語)
  • アプリケーション固有の型 (値オブジェクト、集約、サービス)

③アプリケーションのモジュール構成(参照モデル)

  • コア(中心)
    • 計算判定
    • 業務機能
  • ポート(境界)
    • パッシブ(primary)
    • アクティブ(secondary)
  • アダプタ(周辺)
    • primary : テスト、Web UI、Web API、バッチ、イベントリスナー
    • secondary : 内部データソース、外部データソース、外部サービス

④モデル駆動設計

  • 全体
    • 事業活動、要件、アーキテクチャ
  • コア(中央)
    • 業務ロジック、ドメインモデル
    • 業務機能、アプリケーションサービス
  • アダプター(周辺)
    • 記録モデル、データベーススキーマ
    • 連係モデル、プロトコル設計
    • 対話モデル、インタラクション設計