具体描述
《敏捷系统工程》表达了系统工程的一种愿景,即在敏捷的工程背景环境中,精确的需求规范、结构和行为可满足系统安全性、安保性、可靠性及性能等更大的关注。阐述了系统开发的整个生命周期,包括需求、分析、设计及向特定工程学科的转交。Douglass博士自始至终都将敏捷方法与SysML和MBSE相结合,进而为系统工程师提供概念和方法层面应用的流程指南,使他们可避免规范中的缺陷并改进系统的质量。同时,敏捷方法可以降低系统工程的工作和成本。
作者简介
Bruce Powel Douglass 3岁时开始自学读书,不到12岁就开始学习微积分。他14岁辍学游历
美国,几年后进入俄勒冈大学学习数学专业。他最终获得俄勒冈大学运动生理学科学硕士学位
以及USD医学院神经生理学博士学位。他在USD医学院期间提出了一个名为自相关因子分析
的数学分支,用于研究多细胞生物神经系统中的信息处理。
Bruce作为软件开发人员和系统工程师在实时嵌入式系统领域已经工作超过30年,是实
时嵌入式系统领域著名的演说家、作者与顾问。他是嵌入式系统大会和UML世界大会的顾问
委员会的成员之一,并在会议上讲授过关于系统工程、项目估算和调度、项目管理、面向对
象的分析与设计、通信协议、有限状态机、设计模式以及安全性关键系统设计方面的课程。
Bruce 在实时系统、软件设计以及项目管理方面有多年的开发、授课与咨询经验。他还为很
多(特别是实时领域内的)杂志和期刊撰文。
Bruce是IBM物联网(IoT)业务部的首席布道师。作为首席布道师,除了披荆斩棘开拓道
路,他更像是一位首席科学家。Bruce与UML合作伙伴在UML与SysML标准的规定方面密切
合作。他开发了用于Rhapsody建模工具的第一个DoDAF的UML概要以及其他概要,例如故
障树分析概要以及安保性分析概要。他是对象管理组组织的实时分析和设计工作组的副主
席。他还撰写了其他几本关于系统与软件开发方面的书籍,包括Doing Hard Time: Developing
Real-Time Systems with UML, Objects, Frameworks and Patterns(Addison-Wesley, 1999)、Real-
Time Design Patterns: Robust Scalable Architecture for Real-Time Systems(Addison-Wesley,
2002)、 Real-Time UML 3rd Edition: Advances in the UML for Real-Time Systems(Addison-
Wesley, 2004)、Real-Time Agility(Addison-Wesley, 2009)、Design Patterns for Embedded Systems
in C(Elsevier, 2011)、 Real-Time UML Workshop for Embedded Systems(Elsevier, 2014)等,以及
一本关于乒乓球方面的短篇教材。
Bruce喜欢古典音乐,古典吉他弹奏水平达到专业水准。他参加过多场体育比赛,包括
乒乓球、自行车极限马拉松赛、赛跑以及全接触跆拳道,尽管目前还只是与打不还手的静物
交手。他最近重新回到三项全能运动比赛以及自行车极限马拉松赛,并在2014年首次参加了
铁人三项比赛。
Bruce在全世界进行广泛咨询与培训活动。如果你对此感兴趣,可以通过Bruce.Douglass@
us.ibm.com与他联系。
目录信息
第1章 什么是基于模型的系统工程 1
1.1 关键的系统工程活动 1
1.1.1 识别客户需要 2
1.1.2 规定系统需求 2
1.1.3 评估可依赖性 3
1.1.4 评价备选架构和技术 3
1.1.5 选择特定架构和技术 4
1.1.6 分配需求和接口到架构 4
1.1.7 向下游工程转交 4
1.1.8 将学科特定的设计综合至系统组成 5
1.1.9 以整体验证系统 5
1.1.10 系统确认 8
1.2 系统工程数据 8
1.2.1 系统开发规划 8
1.2.2 利益攸关者需求 9
1.2.3 系统需求 9
1.2.4 认证规划 9
1.2.5 子系统需求 9
1.2.6 学科特定的需求 9
1.2.7 安全性分析 10
1.2.8 可靠性分析 10
1.2.9 安保性分析 10
1.2.10 系统架构 10
1.2.11 综合测试规划 11
1.2.12 综合测试 11
1.2.13 验证规划 11
1.2.14 验证试验 12
1.2.15 确认规划 12
1.2.16 追溯矩阵 12
1.2.17 综合测试结果 13
1.2.18 验证结果 13
1.2.19 确认结果 13
1.3 系统工程的生命周期 13
1.3.1 V模型生命周期 13
1.3.2 增量式 15
1.3.3 混合式 16
1.4 基于模型的系统工程(MBSE) 17
1.4.1 建模的优势 17
1.4.2 用UML和SysML进行高精度建模 20
1.4.3 建模是敏捷系统工程的根本 20
1.4.4 在你的组织或项目中采纳建模 21
1.4.5 建模规则 25
1.5 总结 27
参考文献 27
第2章 什么是敏捷方法 29
2.1 敏捷宣言 30
2.2 敏捷方法的益处 32
2.2.1 提高工程数据的品质 32
2.2.2 提高工程效率 32
2.2.3 尽早获得投资的回报(ROI) 33
2.2.4 利益攸关者满意 33
2.2.5 增强了项目控制 33
2.2.6 响应变化 33
2.2.7 更早且更大幅度地降低项目风险 33
2.3 将敏捷宣言应用于系统工程 34
2.3.1 增量式地工作 34
2.3.2 动态地规划 34
2.3.3 主动降低项目风险 35
2.3.4 持续地验证 36
2.3.5 连续地综合 36
2.3.6 用例1:在空域中发现轨迹 36
2.3.7 用例2:进行定期的内置测试(PBIT) 36
2.3.8 频繁地确认 37
2.3.9 建模是aMBSE的根本 37
2.4 针对系统工程的敏捷最佳实践 37
2.4.1 工作产品的增量式开发 38
2.4.2 工作产品的持续验证 38
2.4.3 可执行的需求模型 39
2.4.4 链接到文本规范的基于模型的规范 41
2.4.5 连续的可依赖性评估 41
2.4.6 主动的项目风险管理 42
2.4.7 向下游工程的基于模型的转交 43
2.4.8 动态的规划 43
2.5 汇总:Harmony aMBSE流程 45
2.5.1 启动项目 47
2.5.2 定义利益攸关者需求 49
2.5.3 系统需求定义和分析 50
2.5.4 途径1:基于流的用例分析 51
2.5.5 途径2:基于场景的用例分析 51
2.5.6 途径3:基于状态的用例分析 52
2.5.7 架构分析 53
2.5.8 架构设计 55
2.5.9 进行迭代回顾 56
2.5.10 向下游工程转交 57
2.5.11 控制项目 58
2.5.12 进行品质保证审计 59
2.5.13 管理变更 59
2.6 总结 59
参考文献 60
第3章 SysML介绍 61
3.1 SysML概览 61
3.2 UML扩展机制 64
3.2.1 SysML模型元素 65
3.2.2 SysML图 66
3.2.3 行为图 67
3.2.4 需求图 68
3.2.5 结构图 69
3.3 组织你的模型很重要 72
3.4 关键SysML视图和核心语义 76
3.4.1 块、关系、接口和端口 76
3.4.2 顺序图 86
3.4.3 活动、动作和活动图 89
3.4.4 状态机图 94
3.5 最小SysML概要 103
3.6 总结 105
3.6.1 摘自UML 105
3.6.2 修改 105
3.6.3 新元素 106
参考文献 106
第4章 敏捷的利益攸关者需求工程 107
4.1 目标 107
4.2 利益攸关者需求工作流 107
4.2.1 牢记——这是敏捷MBSE 109
4.2.2 什么是用例 109
4.2.3 用例图 112
4.3 示例模型:T-Wrecks工业外骨骼 116
4.4 识别利益攸关者 117
4.4.1 驾驶员 118
4.4.2 机队管理人员 118
4.4.3 维护人员 118
4.4.4 采购方 118
4.4.5 安装人员 119
4.4.6 T-Wreckers测试团队 119
4.4.7 制造工程师 119
4.5 生成利益攸关者需求 119
4.5.1 什么是需求 119
4.5.2 性能需求和其他QoS需求121
4.5.3 需求可视化 122
4.5.4 需求管理工具 124
4.5.5 组织利益攸关者需求规范 124
4.6 对利益攸关者用例场景建模 124
4.6.1 什么是用例场景 125
4.6.2 场景分析工作流 127
4.6.3 T-Wrecks利益攸关者用例场景 129
4.7 创建/更新确认规划 135
4.8 总结 136
4.8.1 识别利益攸关者 136
4.8.2 生成利益攸关者需求 136
4.8.3 对利益攸关者用例场景建模 136
4.8.4 创建/更新确认规划137
4.9 未完待续 137
参考文献 137
第5章 敏捷的系统需求定义和分析 139
5.1 目标 139
5.2 系统需求工作流 139
5.2.1 识别系统用例 140
5.2.2 生成/更新系统需求141
5.2.3 进行用例分析 141
5.2.4 创建逻辑数据模式 142
5.2.5 分析可依赖性 142
5.2.6 创建/更新系统验证规划142
5.3 识别系统用例 142
5.4 生成系统需求 143
5.5 分析用例 144
5.5.1 基于流的用例分析 144
5.5.2 基于场景的用例分析 160
5.5.3 基于状态的用例分析 176
5.6 创建/更新逻辑数据模式 189
5.7 可依赖性分析 192
5.7.1 安全性分析 192
5.7.2 T-Wrecks初始可依赖性分析 201
5.8 创建/更新验证规划 204
5.9 总结 204
5.10 未完待续 205
参考文献 205
第6章 敏捷的系统架构分析与权衡研究 207
6.1 目标 207
6.2 架构分析工作流 208
6.2.1 识别关键的系统功能 209
6.2.2 定义备选解决方案 209
6.2.3 架构权衡研究 209
6.2.4 将多个解决方案并入系统架构 210
6.2.5 定义评估准则 210
6.2.6 向准则分配权重 210
6.2.7 为每个准则定义效用曲线 211
6.2.8 向众多备选解决方案分配MOE 211
6.2.9 确定解决方案 211
6.3 评估方法 211
6.3.1 简单方法 211
6.3.2 高保真方法 213
6.4 识别关键的系统功能(和特性) 216
6.5 定义备选解决方案 218
6.5.1 Speed Demon备选解决方案 218
6.5.2 T-Wrecks备选解决方案 219
6.6 进行架构权衡研究 222
6.6.1 定义评估准则 222
6.6.2 向准则分配权重 223
6.6.3 为每个准则定义效用曲线 224
6.6.4 向备选解决方案分配MOE 226
6.6.5 确定解决方案 229
6.7 将多个解决方案并入系统架构 229
6.8 总结 230
6.9 未完待续 230
参考文献 230
第7章 敏捷的系统架构设计 231
7.1 目标 231
7.1.1 什么是子系统 231
7.1.2 关键架构视图 232
7.2 架构设计工作流 234
7.2.1 识别子系统 234
7.2.2 向子系统分配系统需求 234
7.2.3 向子系统分配用例 235
7.2.4 创建/更新逻辑数据模式235
7.2.5 创建/更新子系统需求235
7.2.6 开发控制律 235
7.2.7 分析可依赖性 235
7.2.8 进行评审 236
7.3 识别子系统 236
7.3.1 Speed Demon子系统 237
7.3.2 T-Wrecks子系统 245
7.4 向子系统分配系统需求 248
7.5 向子系统分配用例 249
7.5.1 自底向上分配 250
7.5.2 自顶向下分配 251
7.5.3 公共任务 253
7.5.4 Speed Demon子系统用例分配示例 254
7.5.5 T-Wrecks子系统用例分配示例 259
7.6 创建/更新逻辑数据模式 265
7.6.1 Speed Demon跑步机示例 266
7.6.2 T-Wrecks示例 267
7.7 创建/更新子系统需求 268
7.8 开发控制律 269
7.9 分析可依赖性 270
7.9.1 安全性分析 271
7.9.2 可靠性分析 271
7.9.3 安保性分析 271
7.10 总结 271
7.11 未完待续 272
参考文献 272
第8章 向下游工程转交 275
8.1 目标 275
8.2 向下游工程转交的工作流 275
8.2.1 收集子系统规范数据 275
8.2.2 创建共享模型 276
8.2.3 定义子系统物理接口 276
8.2.4 创建子系统模型 277
8.2.5 定义跨学科接口 277
8.2.6 将需求分配到工程学科 277
8.3 收集子系统规范数据 277
8.3.1 收集SysML模型数据 277
8.3.2 收集其他工程数据 278
8.4 创建共享模型 279
8.5 定义子系统物理接口 280
8.5.1 从逻辑规范中创建物理规范 281
8.5.2 Speed Demon接口示例 284
8.5.3 T-Wrecks接口示例 287
8.6 创建子系统模型 290
8.7 定义跨学科接口 291
8.7.1 Speed Demon示例:Control Unit子系统接口规范 291
8.7.2 T-Wrecks示例 293
8.8 将需求分配到工程学科 297
8.8.1 Speed Demon示例 298
8.8.2 T-Wrecks示例 299
8.9 下游工程开始 304
8.10 系统工程还在继续 305
参考文献 305
附录A T-Wrecks利益攸关者需求 307
附录B T-Wrecks系统需求 311
· · · · · · (收起)
读后感
用户评价
这本书简直打开了我认识工程项目管理的新视角!我一直觉得,传统的项目管理模式,尤其是那种一步到位、严丝合缝的计划,在现实中往往脆弱得不堪一击。一旦需求变更,或者 unanticipated的问题出现,整个流程就会像多米诺骨牌一样崩塌。而《敏捷系统工程》这本书,就像一股清流,直接点破了这个痛点,并且提供了切实可行的解决方案。它没有故作高深地堆砌理论,而是通过大量贴近实际的案例,生动地展示了如何在一个充满不确定性的环境中,依然能够高效、灵活地推进复杂的系统工程项目。书中的“迭代开发”、“持续集成”、“反馈循环”这些概念,以前虽然听过,但总觉得隔靴搔痒。阅读这本书之后,我才真正理解了它们在系统工程领域的深层含义和实际应用价值。作者深入浅出地讲解了如何将这些敏捷原则融入到系统需求的定义、设计、开发、测试和部署的每一个环节,而且强调了团队协作和沟通的重要性。我特别喜欢它关于“价值驱动”的阐述,这不仅仅是交付功能,更是要持续地为客户和用户创造价值,而敏捷正是实现这一目标的最佳途径。读完之后,我迫不及待地想把书中的方法论应用到我目前负责的项目中,相信它能帮助我们规避很多潜在的风险,并且更快地响应市场变化,最终交付出真正满足用户需求的高质量系统。
我一直觉得,工程项目的成功,很大程度上取决于团队成员之间的默契和协作。《敏捷系统工程》这本书,正是把这种“人”的因素放在了非常重要的位置。它没有把重点放在冰冷的流程和工具上,而是花了大量的篇幅来探讨如何构建一个高绩效的敏捷团队。书中的“跨职能团队”、“持续改进的文化”以及“透明的沟通机制”等章节,给我留下了深刻的印象。作者通过生动的例子,展示了在一个相互信任、彼此支持的团队环境中,项目进展会多么顺畅。它强调了“拥抱变化”不仅仅是技术上的应对,更是团队心态上的转变。我特别喜欢关于“仆人式领导”的讨论,这与我以往对项目经理的刻板印象截然不同,它强调的是如何赋能团队,帮助团队成员解决障碍,而不是高高在上地发号施令。这本书让我深刻认识到,敏捷不仅仅是一种方法论,更是一种文化,一种价值观。在阅读过程中,我仿佛能看到自己团队的影子,也看到了未来团队可能达到的理想状态。这本书对我而言,不仅仅是关于如何做项目,更是关于如何建立一个优秀、高效、有活力的工程团队。
对于系统工程这样复杂且常常涉及多方协作的领域,如何有效地管理风险,一直是让我头疼的问题。《敏捷系统工程》这本书,在风险管理方面提供了非常独特的视角。它并没有采用传统的“事前预测、事后规避”的僵化模式,而是强调了“风险的持续识别和早期应对”。书中关于“探测性开发”、“快速原型验证”以及“小批量交付”的章节,为我提供了很多启发。作者认为,与其试图在项目初期就完全消除所有风险,不如通过一系列快速的迭代和反馈,尽早暴露潜在的风险点,并及时调整。我尤其赞同书中的观点,即“不确定性是常态,而不是异常”。通过将大型、复杂的项目分解成一个个小型的、可管理的迭代,我们能够更有效地控制风险,并且在出现偏差时,损失也是可控的。这本书让我意识到,敏捷的精髓之一就是“拥抱不确定性”,并从中学习和成长。读完之后,我感觉在面对复杂的系统工程项目时,我的信心有了很大的提升,因为我知道,我有了一种更灵活、更具韧性的方法来应对可能出现的挑战。
我一直认为,技术的进步应该服务于人类,为社会带来福祉。《敏捷系统工程》这本书,恰恰在这一点上与我的价值观产生了强烈的共鸣。它在讨论系统工程的实践方法时,始终将“用户价值”和“社会效益”放在核心位置。书中的“以用户为中心的设计”和“价值流的优化”等章节,让我深刻理解了如何通过敏捷的方式,将用户的真实需求转化为有价值的系统。作者并没有回避在系统开发过程中可能出现的伦理和道德问题,而是积极地引导读者思考如何构建负责任、可持续的系统。我特别喜欢书中的一个观点,即“敏捷不仅仅是追求速度和效率,更是追求高质量、高可靠性,以及能够真正解决用户痛点的系统”。它鼓励我们在追求技术创新的同时,也要保持对社会影响的审慎思考。这本书让我感觉,它不仅仅是一本技术书籍,更是一本富有远见和社会责任感的著作。它激励我思考,如何利用所学的系统工程知识,去创造真正有益于社会的系统。
这本书的论述方式非常新颖,让我在阅读过程中充满了探索的乐趣。它没有采用那种枯燥的教科书式讲解,而是更像一位经验丰富的工程师在分享他的智慧和实践心得。我尤其欣赏作者在讨论“系统演进”和“适应性设计”时所展现出的深刻洞察力。在当今快速变化的科技浪潮中,任何系统都不可能一成不变,必须具备随需应变的能力。《敏捷系统工程》这本书就精准地抓住了这一核心,它提供了一种全新的思维模式,指导我们如何构建能够自我修复、自我优化的系统。书中的“模块化”、“松耦合”和“接口定义”等章节,对于理解如何打造一个具有高度可维护性和可扩展性的系统至关重要。作者并没有止步于理论层面,而是非常细致地阐述了在实际操作中,如何去识别系统的关键组件,如何设计清晰的接口,以及如何在不同迭代中逐步演进系统。我印象最深刻的是关于“技术债务”的处理方法,这在很多项目中都是一个棘手的难题,这本书给出了非常实用的建议,如何在追求速度的同时,不牺牲系统的长期健康。总而言之,这是一本能让你从根本上重新思考系统设计和开发的策略性书籍,它不仅传授了知识,更重要的是培养了一种面向未来的工程思维。
扣掉一分是因为best practice讲得不多,对敏捷突出不够
扣掉一分是因为best practice讲得不多,对敏捷突出不够
在V模型的基础上做一些迭代,融合机械、电子、软件的整体工程。对于我软件部分的帮助,主要是一些建模手段。
在V模型的基础上做一些迭代,融合机械、电子、软件的整体工程。对于我软件部分的帮助,主要是一些建模手段。
扣掉一分是因为best practice讲得不多,对敏捷突出不够