【アーキテクチャ アンチパターン】Reinvent The Wheel

概要

  • ソフトウェアシステムはスクラッチから作られることが多い
    • たとえ機能的に類似するシステムが過去あったとしても外部と独立して作られることが多い.
    • これらのシステムはgreenfield systemと呼ばれる

  • greenfield systemの特徴
    • 以下を欠いたstovepipe systemになりやすい
      • 相互運用性
      • 拡張性
      • 再利用性
    • 他の特徴
      • 過去のシステムとの相互運用性を必要とするが,過去のシステムは利用しない
      • オープンソースを利用しない

症状と問題

  • 閉鎖的なシステムアーキテクチャ
    • 相互運用性や再利用性を考慮しない
  • 商用ソフトのレプリカ
  • 未成熟・不安定なアーキテクチャ
  • 変化への対応や相互運用性への不十分なサポート
  • アーキテクチャが成熟する前のプロトタイプの開発サイクルが延びる
  • リスクとコストの管理ができない
  • エンドユーザへの価値が提供できない.
    • 既存システムの機能のレプリカに終わる.

どんなときに起きる?

  • 開発プロジェクト間のコミュニケーションの不足
  • アーキテクチャ定義プロセスが明示的に存在しない
  • クラッチから作られる場合

どう解決する?

  • 従来はArchitecture famingをしてきた

  • こういった先駆的な例を,目的とするアプリの課題に適用することをArchitecture miningという.
    • bottom-upなアプローチ
    • top-downなアプローチでもある.
  • このArchitecture miningによって以下の特徴をもつオブジェクト指向アーキテクチャを作るべき
    • ロバスト性のある
    • プロダクトに非依存
    • 再利用できる
    • 拡張性のある

  • step of mining
    1. 既存技術をモデル化する
    2. 共通インターフェースを定義
    3. 設計を洗練する