
编辑推荐
《软件架构设计:实用方法及实践》由机械工业出版社出版。
作者简介
作者:(墨西哥)温贝托·塞万提斯(Humberto Cervantes) (美国)里克·卡斯曼(Rick Kazman) 译者:刘旭斌 陈瑶 邵元英 栾云杰
温贝托·塞万提斯(Humberto Cervantes) Autonoma Metropolitanaltztapalapa大学教授,主要研究兴趣是软件架构,尤其是架构设计过程中使用的方法和工具,并积极推动这些方法和工具在软件产业中的应用。他拥有SEI软件架构专家和ATAM评估师认证。
里克·卡斯曼(Rick Kazman)夏威夷大学教授,卡耐基·梅隆大学软件工程研究所首席研究员,主要研究兴趣是软件架构、设计和分析工具、软件可视化,以及软件工程经济学。Kazman创建了很多非常有影响的架构分析方法和工具,包括SAAM(SoftwareArchitecture Analysis Method)、ATAM(Architecture Tradeoff Analysis Method)、CBAM(Cost—Benefit Analysis Method),以及Dali和Titan工具,他发表了150多篇论文,并且参与了多部图书的撰写,包括《软件架构实践》第3版和《软件架构评估》等。
刘旭斌,毕业于北京大学,有超过10年的外企软件开发和测试经历,目前就职于IBM,从事DevOps相关工作。
陈瑶,意大利都灵理工大学计算机工程硕士毕业,曾就职于IBM和网易,CertifiedScrumMaster,5年以上DevOps项目开发和管理经验,现在某大数据公司任技术项目经理。
邵元英,毕业于北京大学,先后在华为、NEC和IBM从事软件开发、测试及项目管理工作。现在某互联网公司任高级运营经理。
栾云杰,有超过10年测试、开发经验,目前工作于IBM,任项目测试主管。
目录
译者序
前言
第1章引言1
1.1写作动机1
1.2软件架构2
1.2.1软件架构的重要性2
1.2.2生命周期活动3
1.3架构师的角色5
1.4ADD发展史6
1.5小结7
1.6扩展阅读8
第2章架构设计9
2.1通用设计9
2.2软件架构中的设计10
2.2.1架构设计11
素交互设计11
素内部设计12
2.3为什么架构设计如此重要13
2.4架构驱动因子13
2.4.1设计目的14
2.4.2质量属性15
2.4.3主要功能19
2.4.4架构关注点20
2.4.5约束条件21
2.5设计概念:用于创建结构的构建块22
2.5.1参考架构22
2.5.2架构的设计模式24
2.5.3部署模式25
2.5.4策略26
2.5.5外部开发组件27
2.6架构设计决策30
2.7小结31
2.8扩展阅读32
第3章架构设计过程34
3.1原理性方法的必要性34
3.2属性驱动设计3.034
3.2.1步骤1:评审输入35
3.2.2步骤2:通过选择驱动因子建立迭代目标36
3.2.3步骤3:选择一个或多个系统元素来细化37
3.2.4步骤4:选择一个或多个设计概念以满足选中的驱动因子37
3.2.5步骤5:实例化架构元素、分配职责和定义接口37
3.2.6步骤6:草拟视图和记录设计决策38
3.2.7步骤7:分析当前设计、评审迭代目标、实现设计目的38
3.2.8按需迭代39
3.3根据系统类型遵循设计路线图39
3.3.1成熟领域的绿地系统设计39
3.3.2新兴领域的绿地系统设计41
3.3.3现存系统的设计(棕地)42
3.4识别和选择设计概念42
3.4.1识别设计概念42
3.4.2选择设计概念43
3.5结构生成46
素实例化47
3.5.2划分职责和识别属性47
3.5.3建立元素间的关系48
3.6定义接口48
3.6.1外部接口48
3.6.2内部接口48
3.7在设计中创建概要文档51
3.7.1记录视图的草图51
3.7.2记录设计决策53
3.8追踪设计进度55
3.8.1使用架构待办事项清单55
3.8.2使用设计看板55
3.9小结57
3.10扩展阅读57
第4章案例研究:FCAPS系统59
4.1商用案例59
4.2系统需求60
4.2.1用例模型60
4.2.2质量属性场景62
4.2.3约束条件62
4.2.4架构关注点62
4.3设计过程63
4.3.1ADD步骤1:评审输入63
4.3.2迭代1:建立一个完整的系统架构63
4.3.3迭代2:识别支持基本功能的架构70
4.3.4迭代3:解决质量属性场景的驱动因子(质量属性—3)77
4.4小结80
4.5扩展阅读81
第5章案例研究:大数据系统82
5.1商用案例82
5.2系统需求83
5.2.1用例模型83
5.2.2质量属性场景83
5.2.3约束条件84
5.2.4架构关注点84
5.3设计过程84
5.3.1ADD方法的步骤1:评审输入85
5.3.2迭代1:参考架构和系统整体结构85
5.3.3迭代2:技术选择91
5.3.4迭代3:数据流元素的细化99
5.3.5迭代4:服务层的细化104
5.4小结107
5.5扩展阅读107
第6章案例研究:银行系统109
6.1商用案例109
6.1.1用例模型110
6.1.2质量属性场景111
6.1.3约束条件111
6.1.4架构关注点111
6.2现有的架构文档112
6.2.1模块视图112
6.2.2分配视图113
6.3设计过程114
6.3.1ADD方法的步骤1:评审输入114
6.3.2迭代1:支持新的驱动因子114
6.4小结118
6.5扩展阅读119
第7章其他设计方法120
7.1一种软件架构设计的通用模型120
7.2以架构为中心的设计方法121
7.3RUP中的架构活动123
7.4软件架构设计的过程124
7.5一种实现架构与设计的方法126
7.6视点与视角方法127
7.7小结129
7.8扩展阅读129
第8章设计过程中的分析131
8.1分析和设计131
8.2为何分析133
8.3分析方法134
8.4基于策略的分析135
8.5值得反思的问题137
8.6基于场景的设计评审138
8.7架构描述语言141
8.8小结142
8.9扩展阅读142
第9章组织中的架构设计过程144
9.1架构设计与开发生命周期144
9.1.1售前阶段的架构设计145
9.1.2开发运维阶段的架构设计146
9.2组织方面的问题150
9.2.1个人设计还是团队设计150
9.2.2在组织中应用一套设计概念目录151
9.3小结152
9.4扩展阅读152
第10章结束语154
10.1方法的必要性154
10.2下一步155
10.3扩展阅读156
附录A设计概念目录157
附录B基于策略的问卷调查184
术语表196
文摘
版权页:
插图:
那么架构师如何实现适度的敏捷?他们如何在前期工作和导致返工的技术债务之间找到适当的平衡?对于小而简单的项目,使用没有前期工作的架构是有道理的。简单的修改和重构是容易且相对便宜的。在对需求有一些了解的项目中,可以从执行几个ADD方法迭代开始。这些设计迭代可以专注于选择主要架构模式(如果合适包括参考架构)和框架。这是图9.3e中描述的0迭代方法。这将有助于使项目结构化、定义工作任务和团队组织,并解决最关键的质量属性。如果当需求变化时,特别是如果这些需求是驱动质量属性的需求,那么就采用敏捷开发实验的实践,其中火花用于满足新的需求。火花是一个时间任务,用于回答技术问题或收集信息,它不会形成一个最终产品。火花在单独的分支中开发,如果成功,则合并到代码的主分支。这样,新的需求可以被乐于接受和管理,而不会对整个发展进程造成太大的破坏。
《软件架构设计:实用方法及实践》由机械工业出版社出版。
作者简介
作者:(墨西哥)温贝托·塞万提斯(Humberto Cervantes) (美国)里克·卡斯曼(Rick Kazman) 译者:刘旭斌 陈瑶 邵元英 栾云杰
温贝托·塞万提斯(Humberto Cervantes) Autonoma Metropolitanaltztapalapa大学教授,主要研究兴趣是软件架构,尤其是架构设计过程中使用的方法和工具,并积极推动这些方法和工具在软件产业中的应用。他拥有SEI软件架构专家和ATAM评估师认证。
里克·卡斯曼(Rick Kazman)夏威夷大学教授,卡耐基·梅隆大学软件工程研究所首席研究员,主要研究兴趣是软件架构、设计和分析工具、软件可视化,以及软件工程经济学。Kazman创建了很多非常有影响的架构分析方法和工具,包括SAAM(SoftwareArchitecture Analysis Method)、ATAM(Architecture Tradeoff Analysis Method)、CBAM(Cost—Benefit Analysis Method),以及Dali和Titan工具,他发表了150多篇论文,并且参与了多部图书的撰写,包括《软件架构实践》第3版和《软件架构评估》等。
刘旭斌,毕业于北京大学,有超过10年的外企软件开发和测试经历,目前就职于IBM,从事DevOps相关工作。
陈瑶,意大利都灵理工大学计算机工程硕士毕业,曾就职于IBM和网易,CertifiedScrumMaster,5年以上DevOps项目开发和管理经验,现在某大数据公司任技术项目经理。
邵元英,毕业于北京大学,先后在华为、NEC和IBM从事软件开发、测试及项目管理工作。现在某互联网公司任高级运营经理。
栾云杰,有超过10年测试、开发经验,目前工作于IBM,任项目测试主管。
目录
译者序
前言
第1章引言1
1.1写作动机1
1.2软件架构2
1.2.1软件架构的重要性2
1.2.2生命周期活动3
1.3架构师的角色5
1.4ADD发展史6
1.5小结7
1.6扩展阅读8
第2章架构设计9
2.1通用设计9
2.2软件架构中的设计10
2.2.1架构设计11
素交互设计11
素内部设计12
2.3为什么架构设计如此重要13
2.4架构驱动因子13
2.4.1设计目的14
2.4.2质量属性15
2.4.3主要功能19
2.4.4架构关注点20
2.4.5约束条件21
2.5设计概念:用于创建结构的构建块22
2.5.1参考架构22
2.5.2架构的设计模式24
2.5.3部署模式25
2.5.4策略26
2.5.5外部开发组件27
2.6架构设计决策30
2.7小结31
2.8扩展阅读32
第3章架构设计过程34
3.1原理性方法的必要性34
3.2属性驱动设计3.034
3.2.1步骤1:评审输入35
3.2.2步骤2:通过选择驱动因子建立迭代目标36
3.2.3步骤3:选择一个或多个系统元素来细化37
3.2.4步骤4:选择一个或多个设计概念以满足选中的驱动因子37
3.2.5步骤5:实例化架构元素、分配职责和定义接口37
3.2.6步骤6:草拟视图和记录设计决策38
3.2.7步骤7:分析当前设计、评审迭代目标、实现设计目的38
3.2.8按需迭代39
3.3根据系统类型遵循设计路线图39
3.3.1成熟领域的绿地系统设计39
3.3.2新兴领域的绿地系统设计41
3.3.3现存系统的设计(棕地)42
3.4识别和选择设计概念42
3.4.1识别设计概念42
3.4.2选择设计概念43
3.5结构生成46
素实例化47
3.5.2划分职责和识别属性47
3.5.3建立元素间的关系48
3.6定义接口48
3.6.1外部接口48
3.6.2内部接口48
3.7在设计中创建概要文档51
3.7.1记录视图的草图51
3.7.2记录设计决策53
3.8追踪设计进度55
3.8.1使用架构待办事项清单55
3.8.2使用设计看板55
3.9小结57
3.10扩展阅读57
第4章案例研究:FCAPS系统59
4.1商用案例59
4.2系统需求60
4.2.1用例模型60
4.2.2质量属性场景62
4.2.3约束条件62
4.2.4架构关注点62
4.3设计过程63
4.3.1ADD步骤1:评审输入63
4.3.2迭代1:建立一个完整的系统架构63
4.3.3迭代2:识别支持基本功能的架构70
4.3.4迭代3:解决质量属性场景的驱动因子(质量属性—3)77
4.4小结80
4.5扩展阅读81
第5章案例研究:大数据系统82
5.1商用案例82
5.2系统需求83
5.2.1用例模型83
5.2.2质量属性场景83
5.2.3约束条件84
5.2.4架构关注点84
5.3设计过程84
5.3.1ADD方法的步骤1:评审输入85
5.3.2迭代1:参考架构和系统整体结构85
5.3.3迭代2:技术选择91
5.3.4迭代3:数据流元素的细化99
5.3.5迭代4:服务层的细化104
5.4小结107
5.5扩展阅读107
第6章案例研究:银行系统109
6.1商用案例109
6.1.1用例模型110
6.1.2质量属性场景111
6.1.3约束条件111
6.1.4架构关注点111
6.2现有的架构文档112
6.2.1模块视图112
6.2.2分配视图113
6.3设计过程114
6.3.1ADD方法的步骤1:评审输入114
6.3.2迭代1:支持新的驱动因子114
6.4小结118
6.5扩展阅读119
第7章其他设计方法120
7.1一种软件架构设计的通用模型120
7.2以架构为中心的设计方法121
7.3RUP中的架构活动123
7.4软件架构设计的过程124
7.5一种实现架构与设计的方法126
7.6视点与视角方法127
7.7小结129
7.8扩展阅读129
第8章设计过程中的分析131
8.1分析和设计131
8.2为何分析133
8.3分析方法134
8.4基于策略的分析135
8.5值得反思的问题137
8.6基于场景的设计评审138
8.7架构描述语言141
8.8小结142
8.9扩展阅读142
第9章组织中的架构设计过程144
9.1架构设计与开发生命周期144
9.1.1售前阶段的架构设计145
9.1.2开发运维阶段的架构设计146
9.2组织方面的问题150
9.2.1个人设计还是团队设计150
9.2.2在组织中应用一套设计概念目录151
9.3小结152
9.4扩展阅读152
第10章结束语154
10.1方法的必要性154
10.2下一步155
10.3扩展阅读156
附录A设计概念目录157
附录B基于策略的问卷调查184
术语表196
文摘
版权页:
插图:
那么架构师如何实现适度的敏捷?他们如何在前期工作和导致返工的技术债务之间找到适当的平衡?对于小而简单的项目,使用没有前期工作的架构是有道理的。简单的修改和重构是容易且相对便宜的。在对需求有一些了解的项目中,可以从执行几个ADD方法迭代开始。这些设计迭代可以专注于选择主要架构模式(如果合适包括参考架构)和框架。这是图9.3e中描述的0迭代方法。这将有助于使项目结构化、定义工作任务和团队组织,并解决最关键的质量属性。如果当需求变化时,特别是如果这些需求是驱动质量属性的需求,那么就采用敏捷开发实验的实践,其中火花用于满足新的需求。火花是一个时间任务,用于回答技术问题或收集信息,它不会形成一个最终产品。火花在单独的分支中开发,如果成功,则合并到代码的主分支。这样,新的需求可以被乐于接受和管理,而不会对整个发展进程造成太大的破坏。
ISBN | 9787111573814 |
---|---|
出版社 | 机械工业出版社 |
作者 | 温贝托·塞万提斯 (Humberto Cervantes) |
尺寸 | 16 |