ソフトウェア品質をプロセスの早い段階から計測し、アーキテクチャの負債や技術的負債の蓄積を検知できるようにしておくことは、ソフトウェアの成功にとって重要です。ソフトウェアアーキテクチャに関するメトリクスを適切に導入できれば、パフォーマンスなどのリスクを軽減し、問題に対処するコストを抑えられます。
本書は、経験豊かな10人のソフトウェアアーキテクトたちが、知っておくべきメトリクスについて、貴重な経験やケーススタディと共に紹介します。
アーキテクチャが目標にどれだけ合致しているかの計測、追跡すべき適切なメトリクスの選択、可観測性/テスト容易性/デプロイ可能性を向上させる方法、アーキテクチャに対する取り組みの優先順位付け、学びに満ちた適切なダッシュボードの構築を解説します。
ソフトウェアアーキテクチャメトリクス
―アーキテクチャ品質を改善する10のアドバイス
Christian Ciceri、Dave Farley、Neal Ford、Andrew Harmel-Law、Michael Keeling、Carola Lilienthal、João Rosa、Alexander von Zitzewitz、Rene Weiss、Eoin Woods 著、島田 浩二 訳
- TOPICS
- System/Network
- 発行年月日
- 2024年01月
- PRINT LENGTH
- 276
- ISBN
- 978-4-8144-0060-7
- 原書
- Software Architecture Metrics
- FORMAT
- Print PDF EPUB
目次
はじめに 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 結論 参考文献 訳者あとがき 索引