Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ソフトウェア開発の複雑さに立ち向かう

増田 亨
November 25, 2024
4k

 ソフトウェア開発の複雑さに立ち向かう

アーキテクチャカンファレンス2024 発表資料

増田 亨

November 25, 2024
Tweet

More Decks by 増田 亨

Transcript

  1. 自己紹介 業務系アプリケーションソフトウェアの開発者 モデル駆動設計 Java/Spring Boot/IntelliJ IDEA/JIG 有限会社システム設計 代表 since 2003

    コミューン株式会社 技術アドバイザ since 2023 2 増田 亨(ますだ とおる) 著書(2017) 訳書(2024)
  2. 予測しづらい状況下の行動モデル 13 現在の状況を観察 (新たな材料を獲得) 経験知の取り出し (手持ちの材料を利用) 状況の判断 仮説の立案 行動 目

    標 状況を変化させる 経験知を増やす 事業活動の行動モデル = ソフトウェアシステム開発運用の行動モデル
  3. 4つの品質特性:事業課題と設計方針 19 ソフトウェア 品質特性 事業課題 設計方針 合目的性 競争優位の確保と維持 競争優位の確保と維持を 目指して設計する

    経済性 利益 = 売上 - 費用 ソフトウェアで、売上増 and/or 費用減を推進する 変更容易性 競争優位の確保と維持の ために行動を変える 行動の変更(業務ルール変更) を進めるためのモジュール化 相互運用性 競争優位の確保と維持する ために事業活動を連動する アプリケーション間連係を 事業視点で最適化 整合させる
  4. 予測しづらい状況下の行動モデル(再掲) 23 現在の状況を観察 (新たな材料を獲得) 経験知の取り出し (手持ちの材料を利用) 状況の判断 仮説の立案 行動 目

    標 状況を変化させる 経験知を増やす 事業活動の行動モデル = ソフトウェアシステム開発運用の行動モデル
  5. 購買物流 生産 出荷物流 販売促進 販売 顧客支援 技術開発 人的資源の管理 調 達

    競争優位を分析する技法 25 事業活動を8つの領域に分類して競争優位を分析(価値連鎖モデル) 競争優位を確保し維持するために ・差別化する仕組みは? ・コスト優位を生み出す仕組みは? ・各活動の連動方法は?
  6. 業務領域の競争優位と設計方針 中核 一般 補完 競争優位 ◎ × × 複雑さ 〇

    〇 × 変化 〇 × × 設計方針 ドメインモデル イベント履歴 外部製品評価 CRUD/ETL 調達方法 内製 購入 外注 27
  7. 関心の分離とモジュール化の経験則 29 アーキテクチャ スタイル 設計パターン 実装パターン (イディオム) 全体を俯瞰した 関心の分離の 基本方針

    部分的な モジュール構造 実装技術依存の 問題解決方法 さまざまな経験則が入手可能 強調する点が異なるが 対立ではなく補完する関係 事業視点から どう利用するかを判断する
  8. 予測しづらい状況下のソフトウェア設計 35 現在の状況を観察 (新たな材料を獲得) 経験知の取り出し (手持ちの材料を利用) 状況の判断 仮説の立案 行動 目

    標 状況を変化させる 経験知を増やす 事業活動の行動学習モデル = ソフトウェアシステム開発運用の行動学習モデル
  9. 継続的な学習:三つの基本行動 観察する • 選択的注意(何を、なぜ観察するかを意識する) • 多様性:異なる経験と視点を持つ複数メンバーで協働観察する • 一般化されたモデルと関係づける 仮説の立案 •

    目的地までのあらすじを考える • あらすじ(予測)と実際の進行(行動の結果)との差分から学ぶ 行動から学ぶ • 行動によって、経験知を増やして、手持ちの判断材料を増やす • 行動によって、状況を変化させて、新たな判断材料を増やす 37
  10. 事業視点のソフトウェア設計:学び方 38 共創 経験則 習熟 さまざまな場面の経験を 自分なりに一般化した暗黙知 場面に応じて活性化する 経験によって更新される 書籍など、言語化/可視化された

    他者の経験則を、自分が取り組んでいる 個別の状況と対応づけて取り入れる 設計の知識と技能を お互いに持ち寄って 組み合わせる 制約の多い実際の文脈で 手を動かして 体で覚える うまくできるようになる 相乗効果(三つの掛け算) 足し算ではなく掛け算