第3版 面向对象软体工程:使用UML、模式与Java

面向对象软体工程:使用UML、模式与Java(第3版)【第3版 面向对象软体工程:使用UML、模式与Java】《面向对象软体工程:使用UML、模式与Java(第3版)》是2013年出版的图书,作者是Bernd Bruegge、叶俊民 。
基本介绍书名:面向对象软体工程:使用UML、模式与Java(第3版)
作者:Bernd Bruegge,叶俊民等
ISBN:9787302238140
定价:69.5元
出版时间:2013-3-11
装帧:平装
编辑推荐本书反映了作者10多年来构造系统以及教授软体工程课程的体会 。我们发现,学生常常孤立地学习程式设计技术和软体工程技术,常常选择小的问题作为研究实例 。所带来的结果是,学生们能够有效地解决定义明确的问题,但当他们第一次真正面对複杂而真实的开发项目时,常常会感到束手无策 。真实的开发过程需要很多不同的技术和工具,要求开发人员之间进行合作 。针对这一情况,现今的软体工程本科课程体系中通常包括一门软体工程项目管理的课程,讲授组织成一个开发项目所必需的知识 。图书简介工具:UML、Java和设计模式编写本书时,在我们的头脑中一直有一个课程项目 。这个项目除了可以作为课程设计的项目之外,还可以在其他场合使用,例如用作短期集训或者短期研发的项目等 。我们使用了真实系统中的实例,并检验UML、基于Java的技术、设计模式、设计原理、配置管理以及质量控制等现代技术之间的互动 。此外,我们讨论了与项目管理相关的问题,这些问题与上述技术及其对複杂性和变化的影响相关 。前言十多年以前,我就了解到由卡耐基·梅隆大学(CMU)的Bernd Bruegge讲授的一门软体工程课程 。在很多其他大学的软体工程课程上,通常的做法是,在一个学期中,将3~4个学生分在一个小组中,并给每一个小组分派几个小问题或项目,其中每一个小问题或项目的研究周期不超过一个月 。在这些小项目中,有一个能力较强的主程式设计师,通常通过该主程式设计师的强力带动而推动整个小组的工作,以完成这些小项目 。在这样的背景之下,通常学生没有必要学习沟通技能,没有必要使用建模工具,也没必要处理实际问题中所存在的歧义性 。在这种环境下培养的学生并没有学会怎样去处理开发实际项目时将遇到的各种複杂性问题 。在Bruegge教授的课程中,全班同学在整个学期中都在完成同一个项目:为匹兹堡市开发一个面向查询的导航系统 。学生们得在上一个学期学生所开发出的互动系统的基础上,完成进一步的开发 。客户是市规划部门的经理和领域权威 。在该项目中,地理数据和汽车调度数据存在不精确、格式不兼容的情况,在学年结束时,学生们完成了一个超过27 000行代码的系统,该系统最终被客户接受 。这一结果与许多其他院校教学中使用的软体工程小项目相比,有多幺大的不同啊!CMU的学生通过学习该课程,理解到了处理现实世界複杂性和杂乱性所需要的策略、组织和工具 。学生们通过在实例中实践来学习软体工程课程,这是学会任何技艺的必由之路 。本书反映的是将软体开发作为一门工程学科的实用哲学 。作者採用一种观点——一种使用UML面向对象的方法,这使得软体工程的许多方面能够为学生所了解到 。这些内容包括完成实际项目所需要的建模技术、人与人之间的沟通技巧 。除此之外,还包含了如何管理变化的章节内容,这是每一个实际项目中均会出现的话题,但这一内容在其他的软体工程书籍中又常常被忽略掉 。阅读本书将会使读者对软体工程的丰富範畴及其複杂性有深刻的理解 。目录目 录译者的话 I前言 III序言 V致谢 XI第1部分 开 始第1章 软体工程导论 31.1 导言:软体工程的失误 31.2 什幺是软体工程 51.2.1 建模 61.2.2 问题求解 71.2.3 知识获取 81.2.4 基本原理 81.3 软体工程概念 91.3.1 参与者与角色 91.3.2 系统与模型 101.3.3 工作产品 111.3.4 活动、任务与资源 111.3.5 功能性需求与非功能性需求 121.3.6 记号、方法和方法学 121.4 软体工程开发活动 131.4.1 需求获取 131.4.2 分析 141.4.3 系统设计 161.4.4 对象设计 161.4.5 实现 161.4.6 测试 171.5 管理软体开发 171.5.1 沟通 171.5.2 基本原理管理 181.5.3 软体配置管理 181.5.4 项目管理 181.5.5 软体生命周期 191.5.6 总结 191.6 竞技场实例分析 191.7 推荐读物 201.8 练习 21第2章 使用UML进行建模 222.1 导言 222.2 UML综述 232.2.1 用例图 232.2.2 类图 242.2.3 互动图 252.2.4 状态机 252.2.5 活动图 262.3 建模活动中的概念 272.3.1 系统、模型和视点 272.3.2 数据类型、抽象数据类型和实例 292.3.3 类、抽象类和对象 292.3.4 事件类、事件和讯息 312.3.5 面向对象建模过程 312.3.6 约简表达和原型构造 332.4 UML的深入透视 342.4.1 用例图 342.4.2 类图 392.4.3 互动图 472.4.4 状态机 492.4.5 活动图 512.4.6 图的组织 532.4.7 图的扩展 552.5 推荐读物 562.6 练习 56第3章 项目组织和沟通 583.1 引言:一个有关火箭的例子 583.2 项目综述 593.3 项目管理概念 623.3.1 项目管理 623.3.2 角色 653.3.3 任务和工作产品 673.3.4 进度表 683.4 项目沟通中的概念 693.4.1 计画内沟通 693.4.2 计画外的沟通 743.4.3 沟通机制 773.5 有组织的活动 833.5.1 加入一个项目团队 833.5.2 使用沟通基础设施 843.5.3 参加项目团队情况通气会议 843.5.4 组织客户和项目总结 863.6 推荐读物 87 3.7 练习 87第2部分 複杂性处理第4章 需求获取 914.1 引言:可用性实例 914.2 对需求获取的总的看法 924.3 需求获取概念 944.3.1 功能需求 944.3.2 非功能性需求 944.3.3 完全性、一致性、清晰性和正确性 954.3.4 现实性、确认和可追蹤性 964.3.5 绿地工程、再工程和界面工程 974.4 需求获取活动 974.4.1 标识参与者(Actor) 984.4.2 标识场景 994.4.3 标识用例 1014.4.4 求精用例 1034.4.5 标识参与者和用例之间的关係 1054.4.6 标识初始的分析对象 1084.4.7 标识非功能性需求 1104.5 需求获取管理 1114.5.1 与客户协商规格说明:联合套用设计 1124.5.2 追蹤性维护 1134.5.3 需求获取的编档 1144.6 ARENA实例研究 1154.6.1 初始问题陈述 1154.6.2 标识参与者和场景 1174.6.3 标识用例 1204.6.4 求精用例与标识关係 1224.6.5 标识非功能性需求 1264.6.6 应接受的教训 1264.7 推荐读物 1274.8 练习 128第5章 分析 1305.1 导言:光幻影 1305.2 分析概述 1315.3 分析的概念 1325.3.1 对象模型和动态模型分析 1325.3.2 实体、边界和控制对象 1325.3.3 泛化和特化 1345.4 分析活动:从用例到对象 1345.4.1 标识实体对象 1355.4.2 标识边界对象 1375.4.3 标识控制对象 1385.4.4 使用顺序图将用例映射成对象 1395.4.5 使用CRC卡建模对象之间的互动 1425.4.6 标识关联 1435.4.7 标识聚集 1455.4.8 标识属性 1465.4.9 建模单一对象的状态相关的行为 1475.4.10 建模对象之间的继承关係 1485.4.11 分析模型评审 1485.4.12 分析小结 1495.5 分析管理 1505.5.1 分析文档化 1515.5.2 分配责任 1515.5.3 对分析的沟通 1525.5.4 分析模型的叠代 1535.5.5 客户发出的结束信息 1545.6 ARENA案例研究 1565.6.1 标识实体对象 1565.6.2 标识边界对象 1595.6.3 标识控制对象 1605.6.4 建模对象之间的互动 161 5.6.5 评价和加固分析模型 1635.6.6 应该吸取的教训 1655.7 推荐读物 1665.8 练习 166第6章 系统设计:分解系统 1686.1 导言:一个地板规划的例子 1686.2 系统设计概述 1706.3 系统设计概念 1716.3.1 子系统与类 1716.3.2 服务与子系统接口 1726.3.3 耦合与内聚 1736.3.4 分层与划分 1766.3.5 体系结构风格 1786.4 系统设计活动:从对象到子系统 1846.4.1 出发点:线路规划系统的分析模型 1846.4.2 标识设计目标 1866.4.3 标识子系统 1886.5 推荐读物 1906.6 练习 190第7章 系统设计:选择设计目标 1927.1 介绍:一个冗余系统的例子 1927.2 系统设计活动概述 1937.3 概念:UML部署图 1957.4 系统设计活动:选择设计目标 1967.4.1 将子系统映射到处理器和构件上 1967.4.2 标识并存储持久性数据 1977.4.3 提供访问控制 2007.4.4 设计全局控制流 2057.4.5 标识服务 2077.4.6 标识边界条件 2087.4.7 评审系统设计 2107.5 管理系统设计 2127.5.1 系统设计编档 2127.5.2 责任分配 2137.5.3 系统设计交流 2147.5.4 系统设计叠代 2157.6 ARENA案例研究 2167.6.1 标识设计目标 2167.6.2 标识子系统 2177.6.3 将子系统映射到处理器和构件 2187.6.4 标识并存储持久性数据 2207.6.5 提供访问控制 2207.6.6 设计全局控制流 2217.6.7 标识服务 2227.6.8 标识边界条件 2247.6.9 课程小结 2267.7 推荐读物 2267.8 练习 227第8章 对象设计:复用模式解决方法 2288.1 导言:挫折 2288.2 对象设计总论 2308.3 复用的概念:解对象、继承和设计模式 2328.3.1 套用对象和解对象 2328.3.2 定义继承和实现继承 2338.3.3 授权 2358.3.4 Liskov替换準则 2358.3.5 设计模式中的授权和继承 2368.4 复用活动:选择设计模式和构件 2388.4.1 使用Bridge模式封装数据存储 2398.4.2 通过Adapter模式封装遗留构件 2408.4.3 用Strategy模式封装上下文 242 8.4.4 使用Abstract Factory模式封装平台 2448.4.5 使用Command模式封装控制流 2458.4.6 用Composite设计模式封装层次 2468.4.7 选择设计模式的启发式準则 2488.4.8 标识和调整套用框架 2488.5 管理复用 2528.5.1 文档编辑复用 2538.5.2 分配责任 2548.6 ARENA案例分析 2548.6.1 使用Abstract Factory设计模式 2558.6.2 使用Command设计模式 2568.6.3 使用Observer设计模式 2578.6.4 课程回顾 2578.7 推荐读物 2588.8 习题 258第9章 对象设计:说明接口 2609.1 导言:一个铁路的例子 2609.2 接口规格说明概述 2619.3 接口规格说明概念 2629.3.1 类实现者、类扩展者和类用户 2639.3.2 类型、签名和可见性 2649.3.3 契约:不变式、前置条件和后置条件 2659.3.4 对象约束语言 2669.3.5 OCL集合:集合、袋以及序列 2699.3.6 OCL量词:全称量词forAll和存在量词exists 2729.4 接口规格说明活动 2729.4.1 标识遗漏的属性和操作 2739.4.2 说明类型、签名和可见性 2749.4.3 说明前置条件和后置条件 2759.4.4 说明不变式 2779.4.5 继承契约 2789.5 对象设计管理 2809.5.1 对象设计编档 2809.5.2 分配责任 2859.5.3 在需求分析中使用契约 2859.6 ARENA案例分析 2869.6.1 标识在系列赛风格TournamentStyle和回合Round中遗漏的操作 2869.6.2 定义说明系列赛风格TournamentStyle和回合Round中的契约 2889.6.3 定义说明淘汰赛风格KnockOutStyle和淘汰回合KnockOutRound??????契约 2909.6.4 课程回顾 2919.7 推荐读物 2919.8 练习 292第10章 将模型映射到代码 29410.1 导言:一个关于书的例子 29410.2 映射的概述 29510.3 映射的概念 29610.3.1 模型转换 29610.3.2 重构 29710.3.3 正向工程 29910.3.4 逆向工程 30010.3.5 转换原则 30010.4 映射活动 30110.4.1 最佳化对象设计模型 301 10.4.2 将关联映射到集合 30410.4.3 将契约映射到异常 30810.4.4 将对象模型映射到持久存储模式 31210.5 管理实现 31710.5.1 编档过程转换 31710.5.2 指派职责 31810.6 ARENA案例研究 31810.6.1 竞技场系统ARENA中的统计类Statistics 31910.6.2 将关联映射到集合 32010.6.3 将契约映射到异常 32210.6.4 将对象模型映射到资料库模式 32310.6.5 课程回顾 32410.7 推荐读物 32410.8 练习 325第11章 测试 32711.1 导言:测试太空梭 32711.2 测试概述 32911.3 测试概念 33211.3.1 故障、错误状态和失效 33311.3.2 测试用例 33511.3.3 测试桩和测试驱动 33711.3.4 更正 33711.4 测试活动 33811.4.1 构件检查 33811.4.2 可用性测试 33911.4.3 单元测试 34011.4.4 集成测试 34811.4.5 系统测试 35211.5 管理测试 35611.5.1 制定测试计画 35611.5.2 编写测试文档 35711.5.3 分配职责 35911.5.4 回归测试 36011.5.5 使测试自动化 36111.5.6 基于模型的测试 36211.6 推荐读物 36411.7 练习 365第3部分 变更管理第12章 基本原理管理 36912.1 引言:将火腿切成薄片 36912.2 基本原理概述 37012.3 基本原理概念 37212.3.1 集中式的交通控制 37312.3.2 定义问题:问题 37412.3.3 探索问题空间:提议 37512.3.4 评价求解空间:标準和讨论 37612.3.5 使求解空间崩溃:解决方案 37712.3.6 执行解决方案:活动项 37812.3.7 基于问题的模型和系统实例 37912.4 基本原理的活动:从问题到决策 38212.4.1 CTC系统设计 38212.4.2 在会议中获取基本原理 38312.4.3 异步获取基本原理 38912.4.4 当讨论变更的时获取的基本原理 39112.4.5 重新构造基本原理 39312.5 管理基本原理 39512.5.1 将基本原理文档化 39512.5.2 分配任务 396 12.5.3 关于基本原理交流的启发式规则 39712.5.4 问题模型和协商 39712.5.5 冲突解决策略 39912.6 推荐读物 40012.7 练习 400第13章 配置管理 40213.1 引言:一个飞机的实例 40213.2 配置管理的概要 40413.3 配置管理的概念 40513.3.1 配置项和CM聚集 40613.3.2 版本和配置 40613.3.3 变化请求 40713.3.4 升级和发布 40713.3.5 仓库和工作空间 40713.3.6 版本标识方案 40813.3.7 变化和变化集 40913.3.8 配置管理工具 41013.4 配置管理活动 41113.4.1 配置项和CM聚集标识 41313.4.2 升级管理 41413.4.3 发布版本管理 41513.4.4 分支管理 41713.4.5 不同版本管理 41913.4.6 变更管理 42113.5 对配置管理的管理 42213.5.1 配置管理的文档化 42213.5.2 分配配置管理责任 42313.5.3 计画配置管理活动 42413.5.4 持续集成:测试活动和改进管理 42413.6 推荐读物 42613.7 练习 426第14章 项目管理 42814.1 介绍:STS-51L发射决定 42814.2 项目管理概述 43014.3 项目管理概念 43414.3.1 任务和活动 43414.3.2 工作产品、工作包和角色 43514.3.3 工作分解结构 43614.3.4 任务模型 43614.3.5 技能矩阵 43714.3.6 组织 43814.3.7 可视组织结构 44014.3.8 组织结构图谱 44014.3.9 软体项目管理计画 44114.4 项目管理活动 44314.4.1 计画项目 44414.4.2 组织项目 44814.4.3 控制项目 45114.4.4 终结项目 45514.5 Agile项目管理活动 45614.5.1 项目计画:创建产品和冲刺后备 45714.5.2 组织项目 45714.5.3 控制项目:每一天的冲刺和灭火表(burn down charts) 45814.5.4 终止项目:对于冲刺的评论 45914.6 推荐读物 46014.7 练习 460第15章 软体生命周期 46215.1 导言:玻利尼西亚航行 46215.2 IEEE 1074:开发软体生命周期过程的标準 46515.2.1 过程与活动 46515.2.2 软体生命周期建模 467 15.2.3 项目管理 46715.2.4 前期开发 46815.2.5 开发过程 46815.2.6 后期开发 46915.2.7 整体过程(交叉开发过程) 47015.3 评价软体生命周期模型的成熟度 47115.4 生命周期模型 47215.4.1 以顺序活动为中心的模型 47315.4.2 以叠代活动为中心的模型 47515.4.3 以实体为中心的模型 47915.5 推荐读物 48115.6 练习 481第16章 方法学:综合考虑各种因素 48316.1 导言:首次攀登乔戈里峰(K2峰) 48316.2 项目环境 48616.3 方法学问题 48816.3.1 需要做多少个计画 48816.3.2 需要在多大程度上考虑复用 48916.3.3 需要建多少种模型 48916.3.4 过程包含多少步骤 49016.3.5 需要多大程度上的控制和监控 49116.3.6 什幺时候重定义项目目标 49216.4 方法学领域 49216.4.1 Royce方法学 49316.4.2 极限编程(XP) 49616.4.3 Rugby方法学 50016.5 案例学习 50516.5.1 XP项目:ATRACT 50616.5.2 局部主客户:FRIEND 50816.5.3 分散式项目:JAMES 51316.5.4 案例学习总结 51816.6 推荐读物 52116.7 练习 521第4部分 附 录附录A 设计模式 525A.1 Abstract Factory:封装平台 525A.2 Adapter:对遗留代码的包装 526A.3 Bridge:允许选择性实现 527A.4 Command:封装控制流 527A.5 Composite:表示递归的层次结构 528A.6 Facade:封装子系统 529A.7 Observer:将实体从视图中分离出来 529A.8 Proxy:封装开销大的对象 530A.9 Strategy:封装算法 531A.10 选择设计模式的启发式準则 532附录B 术语表 533附录C 参考文献 557