ソフトウェアアーキテクチャメトリクス ―アーキテクチャ品質を改善する10のアドバイス
はじめに
1章 解き放たれた4つのキーメトリクス1.1定義と計測
1.2 メンタルモデルのリファクタリング
1.2.1 最初に考慮するパイプライン
1.2.2 計装点を特定する
1.3 記録と算出
1.4 表示と理解
1.4.1 対象となるオーディエンス
1.4.2 可視化
1.4.3 フロントページ
1.5 議論と理解
1.6 オーナーシップと改善
1.7 結論
2章 適応度関数テストピラミッド:アーキテクチャテストとメトリクスのためのアナロジー
2.1 適応度関数とメトリクス
2.1.1 適応度関数:テストカバレッジ
2.1.2 適応度関数:ネットワークレイテンシーを考慮した統合テスト
2.2 適応度関数の区分
2.2.1 適応度関数の必須区分
2.2.2 適応度関数の任意区分
2.2.3 適応度関数の分類のまとめ
2.3 テストピラミッド
2.4 適応度関数テストピラミッド
2.4.1 最上層
2.4.2 中間層
2.4.3 最下層
2.5 適応度関数例の評価
2.6 より複雑な適応度関数例の評価
2.7 適応度関数とメトリクスを開発する
2.8 結論
3章 進化的アーキテクチャ:テスト容易性とデプロイ可能性でアーキテクチャを導く
3.1 学習と発見の重要性
3.2 持続可能な変化を実現するためのツール
3.3 テスト容易性:高品質なシステムを構築する
3.4 デプロイ可能性:システムの開発をスケーリングする
3.5 結論
4章 モジュール性成熟度指数でアーキテクチャを改善する
4.1 技術的負債
4.2 技術的負債の発生
4.3 MMIによる評価
4.4 モジュール性
4.5 階層性
4.6 パターン一貫性
4.7 MMIを算出する
4.8 MMIを決定するためのアーキテクチャレビュー
4.9 結論
5章 プライベートビルドとメトリクス:DevOps移行を乗り越えるためのツール
5.1 主要な用語
5.1.1 CI/CD
5.1.2 DevOps
5.2 「オーナーシップシフト」
5.3 ローカル環境を再び強化する
5.4 プライベートビルド
5.5 ケーススタディ:不安定なトランク
5.5.1 バグA1
5.5.2 バグA2
5.5.3 バグA3
5.5.4 バグA4
5.6 ケーススタディ:ブロックされたコンサルタント会社
5.7 メトリクス
5.7.1 フィードバックまでの時間
5.7.2 イテレーションあたりのデプロイされたアプリケーションにおける回避可能な統合課題の数
5.7.3 イテレーションあたりのトランクの安定性回復に費やした時間
5.7.4 プライベートビルドのコスト
5.8 メトリクスの実践
5.8.1 フィードバックまでの時間が長い、回避可能な統合課題の数が多い、トランクが安定するまでの時間が短い
5.8.2 フィードバックまでの時間が短い、回避可能な統合課題の数が多い、トランクが安定するまでの時間が短い
5.8.3 フィードバックまでの時間が長い、回避可能な統合課題の数が少ない、トランクが安定するまでの時間が短い
5.8.4 回避可能な統合課題の数が少なく、トランクが安定するまでの時間が長い
5.9 結論
6章 組織のスケーリング:ソフトウェアアーキテクチャの中心的役割
6.1 YourFinFreedom社の挑戦:モノリスを壊す
6.2 分散した巨大な泥団子となったマイクロサービス
6.3 方向性を模索する
6.4 ベストエフォートからインテンショナルエフォートへ
6.5 メトリクスによって意図的なソフトウェアアーキテクチャを導く
6.6 コミュニケーションを通じた期待マネジメント
6.7 アーキテクチャの学びと進化
6.8 そしてAnnaはどうなる?
6.9 結論
7章 ソフトウェアアーキテクチャにおける計測の役割
7.1 ソフトウェアアーキテクチャに計測を加える
7.2 計測のアプローチ
7.2.1 アプリケーションとインフラの実行時計測
7.2.2 ソフトウェア分析
7.2.3 設計分析
7.2.4 見積もりとモデル
7.2.5 適応度関数
7.3 システム品質の計測
7.3.1 パフォーマンス
7.3.2 スケーラビリティ
7.3.3 可用性
7.3.4 セキュリティ
7.4 始め方
7.5 架空のケーススタディ
7.6 落とし穴
7.7 結論
8章 メトリクスからエンジニアリングへの進化
8.1 適応度関数への道
8.2 メトリクスからエンジニアリングへ
8.3 自動化によってメトリクスを運用する
8.4 ケーススタディ:結合
8.5 ケーススタディ:ゼロデイセキュリティチェック
8.6 ケーススタディ:忠実度を測る適応度関数
8.7 結論
9章 ソフトウェアメトリクスを使用して保守性を確保する
9.1 メトリクスを使う理由
9.1.1 エントロピーがソフトウェアを殺す
9.1.2 循環依存関係の有害性
9.1.3 メトリクスがどのように役立つか
9.2 なぜメトリクスはもっと広く使用されないのか?
9.3 メトリクスを収集するツール
9.4 有用なメトリクス
9.4.1 結合と構造侵食を計測するメトリクス
9.4.2 サイズと複雑さを計測するメトリクス
9.4.3 変更履歴から得られるメトリクス
9.4.4 その他の有用なメトリクス
9.5 アーキテクチャ適応度関数
9.6 メトリクスを長期的に追跡する方法
9.7 より良いソフトウェアを作るためのいくつかの黄金律
9.8 結論
10章 ゴール・クエスチョン・メトリクスアプローチで未知数を計測する
10.1 GQMアプローチ
10.1.1 GQMツリーの作成
10.1.2 メトリクスの優先順位付けとデータ収集戦略の策定
10.2 ケーススタディ:未来を見通す力を身につけたチーム
10.2.1 システムコンテキスト
10.2.2 インシデント#1:Fooサービスへのリクエストが多すぎる
10.2.3 インシデント#2:未来を見る10.2.4ふりかえり
10.3 GQMワークショップを開催する
10.3.1 ワークショップの概要
10.3.2 ワークショップの手順
10.3.3 ファシリテーションのガイドラインとヒント
10.4 結論
参考文献
訳者あとがき
索引