ソフトウェアアーキテクチャ博物館AtMuseum
失敗パターン


失敗パターン
失敗パターン地図 Module 一筆書き フローチャートをそのままコード化 クローン Design Architecture Task そもそも設計していない 末広がり 裏取引 神様データ 中央集権 スパゲティ 老舗温泉旅館 一枚岩 状態迷路 混ぜこぜ状態 走り切らない制御スレッド 途中で待つ データ競合 タスク過多 凸凹インタフェース 全体構造の欠如 いびつな形状 コード断片の切り貼り アドホックなフラグ追加 フラグ判断の積み重ね 処理の起点は小さいが、処理の終了が広がる 何でも屋アンチパターン 相互依存アンチパターン 野面積みアンチパターン 横並びアンチパターン 縦繋がりアンチパターン 画面べったりアンチパターン 脆い骨格アンチパターン フラグの成り立ちを誰も知らない「秘伝のたれ」 分割統治の失敗 動く関数を下から積み上げただけ レイヤーを超えて、全て対処する 相互依存が多い星形の依存性 マネージャが多く、担当範囲が曖昧 上下の役割分担が曖昧 撮影アプリ―撮影ミドルー撮影ドライバ 画面操作の関数で処理を行っている 安定した構造がなく、毎回構造が変わる 基本処理とエラー処理が混在 「~メイン」や「~コモン」という名称で雑多な処理を呼び込む 広範囲な循環依存 レイヤー違反 冗長なタスク 統一感のない提供インタフェース プリミティブコマンドと複合コマンドの混在 グローバル変数が全体を支配している ひとつの大きなファイルが全体を制御している ファイルや関数の依存線が絡みあっている 状態の取りうる値が10を超えている 巨大な状態遷移表 状態内部の条件判断で、次の状態を決めている 制御スレッドの途中で特定のイベントを待っている 複数のリソースを、複数の制御スレッドで、無秩序に使っている クラス分割の失敗 パーティション違反(直交性の欠如) 分割コンパイルできない レイヤーの飛び越え 下から上への逆方向依存 起床部の再帰呼び出し 異常系の内包 横断的関心の混在 異ドメインの混在 対称性の欠如 入口ひとつ出口複数 関数の途中でreturn openひとつclose複数 継承の誤利用 インスタンスがいない 曖昧な責務 親クラスより子クラスの責務が多い アドホックなインスタンス生成 子クラスから親クラスへの指示 多重継承の乱用 例外処理の点在 とりあえずNULL確認 getter/setterの利用 アドホックなデータ収集 同一責務の点在 例外処理の多重化 メッセージだけで処理が決まらない 意味のないコメント残骸 メソッド名が説明的 使っていない変数の残骸 HWべったり FWべったり 万能構造体 何が入っているかはわからない容れもの サイクロマチック複雑度10超 処理仕様とおり実装 仕様通りに実装してしまう フローチャートでの仕様 状態仕様とおり実装 システム全体の状態遷移 制御仕様とおり実装 タイミングチャートでの仕様 ユースケースシナリオでの仕様 アクティビティ図での仕様