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

ビジネス考えてるかい?事業の持続的成長を促進させるシステム設計の考え方 / buisiness_purpose_system_design

ビジネス考えてるかい?事業の持続的成長を促進させるシステム設計の考え方 / buisiness_purpose_system_design

Developers Summit 2021 Summer (2021/07/30)の登壇資料です。
https://event.shoeisha.jp/devsumi/20210730/session/3249/

MinoDriven

July 30, 2021
Tweet

More Decks by MinoDriven

Other Decks in Programming

Transcript

  1. アジェンダ • 自己紹介 • 持続的成長とソフトウェア品質特性 • ビジネス理解の重要性に気付いた開発経験 • 持続的成長の減衰とビジネス目的減衰 •

    目的駆動名前設計 • 目的ベースのモデリング • 機能性のイノベーション • イノベーションを目指す組織のあり方 • まとめ • おまけ
  2. ソフトウェア品質特性(JIS X 25010:2013) 品質特性 品質副特性 機能適合性 機能完全性、機能正確性、機能適切性 性能効率性 時間効率性、資源効率性、容量満足性 互換性

    共存性、相互運用性 使用性 適切度認識性、習得性、運用操作性、ユーザーエラー防止性、ユーザーインター フェース快美性、アクセシビリティ 信頼性 成熟性、可用性、障害許容性、回復性 セキュリティ 機密性、インテグリティ、否認防止性、責任追跡性、真正性 保守性 モジュール性、再利用性、解析性、修正性、試験性 移植性 適応性、設置性、置換性
  3. ソフトウェア品質特性(JIS X 25010:2013) 品質特性 品質副特性 機能適合性 機能完全性、機能正確性、機能適切性 性能効率性 時間効率性、資源効率性、容量満足性 互換性

    共存性、相互運用性 使用性 適切度認識性、習得性、運用操作性、ユーザーエラー防止性、ユーザーインター フェース快美性、アクセシビリティ 信頼性 成熟性、可用性、障害許容性、回復性 セキュリティ 機密性、インテグリティ、否認防止性、責任追跡性、真正性 保守性 モジュール性、再利用性、解析性、 修正性、試験性 移植性 適応性、設置性、置換性 機能適合性(機能性)、修正性(変更容易性) が本セッションに関係します。
  4. 特定状況で想定通りの動きにならないメカ制御 停止中 動作準備 動作中 停止準備 停止中 特定状況では 想定の動きに ならない あるメカ制御アプリの開発エピソードです。

    メカの状態をステートマシンとして設計。Stateパターンを用いて、各Stateクラスに状態 ごとに対応するロジックをカプセル化しました。 しかし、ある特定状況で上手く動作しないことがありました。
  5. 特定状況で想定通りの動きにならないメカ制御 停止中 動作準備 動作中 停止準備 停止中 しかし微妙にぎこ ちなさが残存 なんとか仕様通りに動くよう 無理矢理で不自然な

    ロジックを実装 なんとか仕様通りの動作になるよう、調整用の固定値を挿入したり、特殊なロジックを 追加したり、だましだまし動かすようなことをしていました。 しかしやはりどうしてもイビツさが解消できないケースが残存していました。
  6. 私の開発経験と学び まとめ エピソード 品質特性 学び あるべき設計構造 変更容易性 ビジネス知識のおかげであるべき構造を設 計できた。 リファクタリングの 費用対効果

    変更容易性 対象ビジネスの中心的価値の模索が、費 用対効果の高いリファクタリングスコープの 策定に役立った。 機能性の損失 機能性 背景のビジネスニーズを知ることで正しい 状態モデルを設計でき、機能性の満足に 貢献した。
  7. 私の開発経験と学び 振り返り エピソード 品質特性 学び あるべき設計構造 変更容易性 ビジネス知識のおかげであるべき構造を設 計できた。 リファクタリングの 費用対効果

    変更容易性 対象ビジネスの中心的価値の模索が、費 用対効果の高いリファクタリングスコープの 策定に役立った。 機能性の損失 機能性 背景のビジネスニーズを知ることで正しい 状態モデルを設計でき、機能性の満足に 貢献した。 ビジネス目的(なぜ目的なのかは後述)を喪失していたら、これらの課題を解決できず、 持続的成長性に禍根を残す結果になっていたかもしれません。
  8. ビジネス目的は様々な要因で減衰する ビジネス 要求 ビジネス 要件 仕様 設計 実装 特にスタートアップ時は市場動 向や要求が不鮮明、

    目的の解像度が悪い 要件に落とし込んだ段階で目 的が減衰する場合あり 仕様は目的達成の手段に過ぎな いので、目的を喪失しやすい 仕様を満たすためだけの、機械仕 掛けなロジックが書かれる
  9. ソフトウェアイノベーションの例 BBS メール ブログ 情報拡散手段 SNS Twitterの リツイート ??? リツイートは、良くも悪くも話題性のあるツイートを爆発的に拡散する仕組み。

    こうした本質を解決するモデルを、ドメイン駆動設計では深いモデルと呼びます。 深いモデルは機能性の革新に大きく貢献します。 私は深いモデルを発明、発見してイノベーションに貢献したいです。
  10. まとめ • ITサービスの持続的成長にはソフトウェア品質特性(変更容易性、機能性)が 関係する • 品質特性を促進するアーキテクチャ設計には、ビジネス知識が大きく貢献す る • 事業の持続的成長の減衰とは、すなわちビジネス目的の減衰 •

    目的減衰防止と目的推進には様々な方法が考えられる ◦ 目的駆動名前設計と目的ベースのモデリングは、変更容易性と機能性 向上に貢献する ◦ 目的ベースのモデリングはイノベーションの可能性を秘めている ◦ READYFORでは「乳化」によりビジネスとエンジニアリングの近接を図っ ている