軟件架構設計:實用方法及實踐(原書第2版) Designing Software Architectures: A Practical Approach

Cervantes, Humberto, Kazman, Rick 譯 康敏峰

相關主題

商品描述

本書闡述了如何以一種系統的、可預測的、可重覆的、節約成本的方式來設計各類軟件架構。書中不僅介紹了一種實用的架構設計方法,還提供了由可重用的設計知識所支撐的結構化方法,也收錄了豐富的案例研究,用於展示如何使用這一實用方法。利用現實案例,你將掌握已被驗證過的屬性驅動設計(ADD)的全新版本,比如伴隨功能需求和架構問題出現的可修改性、可用性以及可靠性。Humberto Cervantes和Rick Kazman基於他們豐富的經驗,指導你通過各具特色的實用設計來支持完整的軟件周期,從需求到維護,再到演化。你將學習如何成功地將設計整合在組織背景中,以及如何使用敏捷方法設計軟件系統。

作者簡介

亨伯托·塞萬提斯(Humberto Cervantes)是一位經驗豐富的軟件架構師,同時也是墨西哥城Iztapalapa大都會自治大學的教授。他的主要研究方向是開發工具和方法,以改進軟件架構設計實踐。他還持有SEI頒發的軟件架構師專業證書和ATAM評估師證書。

裏克·卡茲曼(Rick Kazman)是夏威夷大學信息技術管理專業的Danny和Elsa Lui傑出教授。他參與創建了架構分析方法(ATAM)以及用於架構分析的Titan和DV8工具。

目錄大綱

譯者序
前言
致謝
關於作者
第1章 引言
  1.1 動機
  1.2 軟體架構
    1.2.1 軟體架構的重要性
    1.2.2 生命周期活動
  1.3 架構師的角色
  1.4 ADD簡史
  1.5 總結
  1.6 擴展閱讀
  1.7 討論問題
第2章 架構設計
  2.1 通用設計
  2.2 軟體架構中的設計
    2.2.1 架構設計
    2.2.2 元素交互設計
    2.2.3 元素內部設計
    2.2.4 決策和設計級別
  2.3 為什麼架構設計如此重要
  2.4 架構驅動因素
    2.4.1 設計目標
    2.4.2 質量屬性
    2.4.3 主要功能
    2.4.4 架構關註點
    2.4.5 約束條件
  2.5 總結
  2.6 擴展閱讀
  2.7 討論問題
第3章 制定設計決策
  3.1 制定設計決策概述
  3.2 設計理念:創建軟體結構的基石
    3.2.1 參考架構
    3.2.2 模式
    3.2.3 策略
    3.2.4 外部開發的組件
  3.3 支持性能的設計理念
    3.3.1 性能策略
    3.3.2 性能模式
  3.4 支持可用性的設計理念
    3.4.1 可用性策略
    3.4.2 可用性模式
  3.5 支持可修改性的設計概念
    3.5.1 可修改性策略
    3.5.2 可修改性模式
  3.6 支持安全性的設計理念
    3.6.1 安全策略
    3.6.2 安全模式

  3.7 支持可集成性的設計理念
    3.7.1 可集成性策略
    3.7.2 集成模式
  3.8 總結
  3.9 擴展閱讀
  3.10 討論問題
第4章 架構設計過程
  4.1 對具備原則性的方法的需求
  4.2 屬性驅動設計3.0版本
    4.2.1 步驟1:審查輸入
    4.2.2 步驟2:通過選擇驅動因素建立叠代目標
    4.2.3 步驟3:選擇系統元素進行細化
    4.2.4 步驟4:選擇滿足選定驅動因素的設計概念
    4.2.5 步驟5:實例化架構元素、分配職責並定義介面
    4.2.6 步驟6:繪製視圖草圖並記錄設計決策
    4.2.7 步驟7:執行當前設計分析,並審查叠代目標和設計目標的實現情況
    4.2.8 必要時進行叠代
  4.3 在不同的系統環境中應用屬性驅動設計
    4.3.1 面向成熟領域的全新系統設計
    4.3.2 面向新興領域的全新系統設計
    4.3.3 面向現有系統的變更設計
    4.3.4 替換遺留應用程序的設計
  4.4 識別和選擇設計概念
    4.4.1 設計概念的識別
    4.4.2 設計概念的選擇
  4.5 生成結構
    4.5.1 實例化元素
    4.5.2 分配功能並識別屬性
    4.5.3 建立元素間的關係
  4.6 定義介面
    4.6.1 外部介面
    4.6.2 內部介面
  4.7 在設計過程中創建初步文檔
    4.7.1 記錄視圖草圖
    4.7.2 記錄設計決策
  4.8 跟蹤設計進度
    4.8.1 使用架構待辦事項列表
    4.8.2 設計看板的使用
  4.9 總結
  4.10 擴展閱讀
  4.11 討論問題
第5章 以API為中心的設計
  5.1 業務敏捷性
    5.1.1 從項目轉向產品
    5.1.2 業務敏捷性的驅動因素
  5.2 以API為中心的設計關註點
    5.2.1 API和可組合性
    5.2.2 API優先設計
    5.2.3 以API為中心的設計概念
    5.2.4 API管理

  5.3 以API為中心的設計和ADD
    5.3.1 ADD和API規範設計
    5.3.2 在以API為中心的設計的其他領域使用ADD
  5.4 總結
  5.5 擴展閱讀
  5.6 討論問題
第6章 可部署性設計
  6.1 可部署性原則和架構設計
    6.1.1 可部署性的定義
    6.1.2 持續集成、部署和交付
    6.1.3 可部署性設計的探討
  6.2 支持可部署性的設計決策
    6.2.1 可部署性策略
    6.2.2 可部署性模式
  6.3 可部署性和ADD
  6.4 總結
  6.5 擴展閱讀
  6.6 討論問題
第7章 設計基於雲的解決方案
  7.1 雲計算概述
    7.1.1 什麼是雲計算
    7.1.2 服務模型
    7.1.3 托管資源
  7.2 驅動因素和雲
    7.2.1 質量屬性
    7.2.2 約束條件
  7.3 基於雲的設計概念
    7.3.1 外部開發組件:雲功能
    7.3.2 策略
    7.3.3 模式
  7.4 雲解決方案中的ADD
  7.5 總結
  7.6 擴展閱讀
  7.7 討論問題
第8章 案例研究:酒店定價系統
  8.1 商業案例
  8.2 系統需求
    8.2.1 主要功能
    8.2.2 質量屬性場景
    8.2.3 約束條件
    8.2.4 架構關註點
  8.3 開發和運營需求
    8.3.1 質量屬性場景
    8.3.2 約束條件
    8.3.3 架構關註點
  8.4 軟體設計過程
    8.4.1 ADD步驟1:審查輸入
    8.4.2 叠代1:建立整體系統結構
    8.4.3 叠代2:識別支持主要功能的結構
    8.4.4 叠代3:處理可靠性和可用性質量屬性

    8.4.5 叠代4:滿足開發和運維需求
  8.5 總結
  8.6 擴展閱讀
  8.7 討論問題
第9章 案例研究:數字孿生平臺
  9.1 商業案例
  9.2 系統需求
    9.2.1 用例模型
    9.2.2 質量屬性場景
    9.2.3 約束條件
  9.3 設計過程
    9.3.1 ADD步驟1:審查輸入
    9.3.2 叠代1:參考架構和整體系統結構
    9.3.3 叠代2:工業物聯網要素的細化
    9.3.4 叠代3:大數據和AI元素的細化
  9.4 總結
  9.5 擴展閱讀
  9.6 討論問題
第10章 架構設計中的技術債務
  10.1 技術債務
  10.2 設計中技術債務的根源
  10.3 重構和重新設計
  10.4 技術債務和ADD
  10.5 總結
  10.6 擴展閱讀
  10.7 討論問題
第11章 設計過程中的分析
  11.1 分析和設計
  11.2 為什麼要進行分析
  11.3 分析技術
  11.4 基於策略的分析
  11.5 反思問題
  11.6 基於場景的設計評審
  11.7 總結
  11.8 擴展閱讀
  11.9 討論問題
第12章 組織中的架構設計流程
  12.1 架構設計與開發生命周期
    12.1.1 支持估算的設計
    12.1.2 支持敏捷開發的設計
    12.1.3 支持順序開發的設計
    12.1.4 架構設計與測試策略
  12.2 架構設計與組織結構
    12.2.1 個人設計或團隊設計
    12.2.2 架構師的多重角色
    12.2.3 組織的架構指南
    12.2.4 架構團隊
  12.3 總結
  12.4 擴展閱讀
  12.5 討論問題

第13章 結束語
  13.1 方法的必要性
  13.2 未來方向
  13.3 下一步
  13.4 擴展閱讀
  13.5 討論問題
附錄 基於策略的問卷調查