图书简介:
目 录
第1章 软件工程概述 (1)
1.1 软件工程的产生和发展 (1)
1.1.1 软件危机与软件工程 (1)
1.1.2 软件工程的定义及基本原则 (3)
1.1.3 软件工程研究的内容 (3)
1.2 软件与软件过程 (4)
1.2.1 软件的概念和特点 (5)
1.2.2 软件工程过程及产品 (6)
1.3 软件过程模型 (6)
1.3.1 瀑布模型 (6)
1.3.2 增量模型 (7)
1.3.3 螺旋模型 (7)
1.3.4 喷泉模型 (8)
1.3.5 原型模型 (8)
1.3.6 智能模型 (9)
1.4 软件开发方法 (9)
1.4.1 结构化开发方法 (10)
1.4.2 原型化开发方法 (10)
1.4.3 面向对象的开发方法 (11)
1.4.4 敏捷软件的开发 (12)
1.5 软件工具与集成化开发环境 (15)
1.5.1 软件工具的发展过程 (15)
1.5.2 软件工具 (16)
1.5.3 集成化CASE环境 (18)
小结 (19)
习题1 (19)
第2章 面向对象方法与UML建模语言 (21)
2.1 面向对象方法概述 (21)
2.1.1 面向对象方法的特点 (21)
2.1.2 几种典型的面向对象方法 (22)
2.2 UML概述 (23)
2.2.1 UML的基本概念 (24)
2.2.2 UML的图形表示 (25)
2.3 建立用例模型 (28)
2.3.1 需求分析与用例建模 (28)
2.3.2 确定执行者和用例 (29)
2.3.3 用例建模实例 (31)
2.4 建立静态模型 (33)
2.4.1 类图 (33)
2.4.2 包图 (41)
2.5 建立动态模型 (42)
2.5.1 消息 (42)
2.5.2 状态图 (43)
2.5.3 顺序图 (46)
2.5.4 合作图 (47)
2.5.5 活动图 (50)
2.6 建立实现模型 (52)
2.6.1 组件图 (52)
2.6.2 部署图 (53)
2.7 RUP统一过程及其应用 (54)
2.7.1 UML与RUP统一过程 (54)
2.7.2 RUP的二维开发模型 (56)
2.7.3 RUP的迭代开发模式 (58)
小结 (59)
习题二 (59)
第3章 软件需求工程 (63)
3.1 软件需求的基本概念 (63)
3.1.1 软件需求的任务 (63)
3.1.2 功能需求与非功能需求 (64)
3.2 需求工程过程 (66)
3.2.1 需求工程的基本活动 (66)
3.2.2 获取需求 (66)
3.2.3 需求分析与建模 (67)
3.2.4 需求的有效性验证 (68)
3.2.5 需求管理 (69)
3.3 软件需求获取技术 (70)
3.3.1 面谈法 (70)
3.3.2 问卷调查法 (70)
3.3.3 需求专题讨论会 (71)
3.3.4 原型法获取需求 (71)
3.3.5 面向用例的方法 (72)
3.4 需求分析与建模技术 (73)
3.4.1 需求分析方法 (73)
3.4.2 结构化分析(SA)方法 (74)
3.4.3 面向对象的分析(OOA)方法 (79)
3.5 软件需求案例分析 (82)
3.5.1 案例1——用SA法建立需求模型 (82)
3.5.2 案例2——用OOA法建立需求模型 (84)
小结 (87)
习题二 (88)
第4章 软件设计 (91)
4.1 软件设计概述 (91)
4.1.1 软件设计在开发阶段中的重要性 (91)
4.1.2 软件设计阶段的任务 (92)
4.1.3 软件设计的目标 (92)
4.1.4 软件设计过程 (92)
4.2 软件体系结构设计 (93)
4.2.1 系统结构性模型——集中式系统模型 (93)
4.2.2 系统结构性模型——层次结构模型 (94)
4.2.3 系统结构性模型——分布式系统模型 (95)
4.2.4 控制模型 (100)
4.2.5 模块分解 (101)
4.3 详细设计描述工具 (104)
4.4 面向对象的设计 (105)
4.4.1 面向对象设计的准则 (106)
4.4.2 面向对象设计的基本任务 (106)
4.5 用户界面设计 (108)
4.5.1 用户界面设计的特性与设计任务 (108)
4.5.2 用户界面设计的基本原则 (109)
4.5.3 用户界面的基本类型 (110)
4.5.4 用户交互设计 (111)
4.6 MVC设计模式 (114)
4.7 软件设计实例 (115)
小结 (118)
习题四 (118)
第5章 软件构造 (121)
5.1 程序设计语言的选择 (121)
5.1.1 程序设计语言的分类 (121)
5.1.2 高级程序设计语言的基本组成 (122)
5.1.3 程序设计语言选择准则 (123)
5.2 程序设计方法 (123)
5.2.1 结构化程序设计 (123)
5.2.2 面向对象程序设计 (125)
5.3 程序设计风格 (127)
5.3.1 源程序文件 (128)
5.3.2 语句构造方法 (129)
5.3.3 数据说明方法 (129)
5.3.4 输入/输出技术 (130)
5.4 算法与程序效率 (130)
5.4.1 算法转换过程中的指导原则 (130)
5.4.2 影响效率的因素 (131)
5.5 软件代码审查 (133)
5.6 软件复用 (134)
5.6.1 软件复用的级别 (134)
5.6.2 软件复用过程 (135)
5.6.3 可复用构件 (135)
5.6.4 基于复用的开发过程 (136)
5.6.5 构件的组装和复用 (137)
5.7 软件构造实例 (137)
5.7.1 实现环境 (137)
5.7.2 系统编码实现 (138)
5.7.3 用户界面 (143)
小结 (143)
习题五 (143)
第6章 软件测试 (145)
6.1 软件测试概述 (145)
6.1.1 软件测试的基本概念 (145)
6.1.2 软件测试的特点和基本原则 (147)
6.1.3 软件测试过程 (149)
6.1.4 静态分析与动态测试 (151)
6.2 白盒法测试 (153)
6.2.1 语句覆盖 (153)
6.2.2 判定覆盖 (154)
6.2.3 条件覆盖 (155)
6.2.4 判定-条件覆盖 (155)
6.2.5 条件组合覆盖 (156)
6.3 黑盒法测试 (157)
6.3.1 等价分类法 (157)
6.3.2 边界值分析法 (158)
6.3.3 错误推测法 (158)
6.3.4 因果图法 (159)
6.4 软件测试的策略 (160)
6.4.1 单元测试 (160)
6.4.2 集成测试 (162)
6.4.3 确认测试 (164)
6.4.4 系统测试 (165)
6.4.5 ?测试和?测试 (166)
6.4.6 综合测试策略 (167)
6.5 软件调试 (167)
6.5.1 软件调试过程 (167)
6.5.2 软件调试策略 (168)
6.6 面向对象的测试 (170)
6.6.1 面向对象测试的特点 (170)
6.6.2 面向对象测试模型 (171)
6.6.3 面向对象测试类型 (171)
6.6.4 分析模型测试 (173)
6.6.5 面向对象的测试用例 (177)
6.7 自动化测试 (177)
6.7.1 自动化测试概述 (178)
6.7.2 实施自动化测试的前提条件 (179)
6.7.3 自动化测试过程 (180)
6.7.4 自动化测试的原则 (182)
6.7.5 敏捷测试 (182)
小结 (183)
习题六 (184)
第7章 软件维护 (186)
7.1 软件维护的基本概念 (186)
7.1.1 软件维护的目的 (186)
7.1.2 软件维护的分类 (186)
7.1.3 软件维护的特性 (187)
7.1.4 软件维护的代价 (188)
7.2 软件维护的过程 (189)
7.2.1 软件维护的组织和维护过程管理 (189)
7.2.2 维护工作的流程 (190)
7.3 软件维护技术 (191)
7.4 软件可维护性 (192)
7.4.1 软件可维护性的定义 (192)
7.4.2 提高可维护性的方法 (193)
7.5 软件再工程技术 (197)
7.5.1 逆向工程 (197)
7.5.2 软件再工程过程 (197)
7.5.3 再工程的成本及效益分析 (198)
7.5.4 再工程的风险分析 (199)
小结 (199)
习题七 (199)
第8章 软件项目管理 (201)
8.1 软件项目管理概述 (201)
8.1.1 软件项目管理的特点 (201)
8.1.2 软件项目管理的主要活动 (202)
8.2 软件项目可行性研究 (203)
8.2.1 可行性研究的任务 (203)
8.2.2 可行性研究报告 (203)
8.3 软件项目计划 (204)
8.3.1 软件项目计划内容 (204)
8.3.2 软件开发进度计划 (205)
8.4 软件项目成本估算技术 (207)
8.4.1 影响成本估算的因素 (207)
8.4.2 成本估算模型 (208)
8.4.3 成本/效益分析 (211)
8.5 软件项目人力资源管理 (211)
8.5.1 软件团队建设 (212)
8.5.2 团队人员的选择 (213)
8.6 软件项目风险管理 (213)
8.6.1 软件项目风险管理概述 (213)
8.6.2 软件项目风险管理过程 (214)
8.6.3 风险管理的理论和模型 (216)
8.7 软件质量保证 (218)
8.8 软件配置管理 (219)
8.8.1 软件配置管理的基本概念 (219)
8.8.2 软件配置管理的活动 (219)
小结 (222)
习题八 (222)
第9章 软件能力成熟度模型 (223)
9.1 CMM概述 (223)
9.1.1 软件过程成熟度的基本概念 (223)
9.1.2 软件过程的成熟度等级 (224)
9.2 CMM的结构 (225)
9.2.1 关键过程域 (226)
9.2.2 关键实践 (227)
9.2.3 共同特性 (227)
9.3 CMM的实施与评估 (227)
9.3.1 软件过程评估的必要性 (228)
9.3.2 软件过程评估及参考模型 (229)
9.3.3 软件过程改进 (231)
9.3.4 CMM评估的执行步骤 (231)
9.3.5 软件企业如何实施CMM (234)
9.3.6 CMM与ISO 9000标准 (236)
9.4 软件能力成熟度模型集成 (237)
9.4.1 CMMI的产生与发展 (237)
9.4.2 CMMI的模型 (237)
9.4.3 CMMI的评估 (239)
9.4.4 CMMI与CMM的比较 (240)
小结 (241)
习题九 (241)
第10章 软件工程课程设计 (243)
10.1 课程设计的目的和要求 (243)
10.2 课程设计步骤及安排 (243)
10.3 可视化建模工具Rational Rose (245)
10.3.1 Rose工具简介 (245)
10.3.2 绘制业务用例图 (246)
10.3.3 绘制用例图 (247)
10.3.4 绘制类图 (248)
10.3.5 绘制协作图与顺序图 (249)
10.3.6 绘制活动图 (250)
10.3.7 绘制状态图 (251)
10.3.8 绘制构件图和部署图 (251)
10.4 案例分析 (252)
10.4.1 案例一:ATM系统 (252)
10.4.2 案例二:网上拍卖系统 (257)
10.4.3 案例三:会议管理系统 (263)
10.4.4 案例四:仓库信息管理系统 (272)
参考文献 (278)
展开
第3版前言
随着互联网技术的应用和发展,网络软件及安全性已成为全球关注的热点,尤其近年继云计算、物联网后出现的大数据热潮,其潜在的巨大价值受到各界的广泛关注。软件工程作为研究、应用工程化方法创造、构建和维护高质量软件的学科,在大数据时代对培养软件工程人才起着不可替代的作用。
本书第3版在继承第2版特点的基础上,根据IEEE最新发布的、被称为软件工程发展史里程碑的软件工程知识体系指南SWEBOK V3,以及近年国内外软件工程技术的新发展,对内容和结构都做了较大的调整和修改。删除了较陈旧的内容,新增了如云计算模型,敏捷开发及测试等软件工程新技术。第3版的主要特点为:
1.内容丰富、具有先进性。本版的内容涵盖了SWEBOK V3的15个知识域,保证了内容的科学性和先进性。在系统介绍软件工程的基本知识的基础上,以软件建模思想为主线,重点对软件需求工程和软件设计这两个软件开发的重要阶段的内容重新进行了修订。
2.注重实践、案例导向。本书特别注重理论与实践相结合,在系统介绍软件工程基本理论的同时,不仅提供了丰富的软件开发案例,还引入了“Learning by doing”这一行之有效的先进教学理念,专题介绍与课堂教学同步进行的综合性、设计型的软件工程课程设计,让学生在“做中学”,在软件项目的开发实践中学习、深化、应用软件工程理论。
3.提供了丰富的优质教学资源。本课程是教育部-微软“软件工程精品课程”、教育部新世纪网络课程、四川省精品课程,四川省精品资源共享课程。教学资源包括高质量的“软件工程”电子课件、中英文两个版本的“软件工程网络课程”、电子教材、案例分析、资料查阅、在线讨论及“网上课程设计平台”等,为课程的学习提供了丰富的多媒体网络教学资源。
第3版的结构也以便于学习、掌握UML建模技术为指导思想进行了较大的调整。全书共分10章,第1章系统介绍软件工程的基本概念,第2章介绍UML统一建模语言和应用及RUP统一过程。第3、4章讨论了需求和设计这两个软件开发重要阶段的任务和原则,并对需求获取、需求分析建模、软件体系结构的常用模式、用户界面设计等关键技术进行了详细的讨论。第5、6章讨论软件构造和实现,以及测试技术。第7、8章介绍了软件维护及软件项目管理,第9章对CMM软件能力成熟度模型及应用进行了讨论。第10章详细介绍了开设软件工程课程设计的目的、要求、设计步骤,并介绍了可视化建模工具Rational Rose的使用,还提供了多个采用UML面向对象建模的软件开发实例。
教学过程中,可先只学习第2章的部分基础,在后续章节的学习中再进一步学习、研究和应用UML建模技术。
许家珆教授编写第1、3、6章,并负责全书统稿,白忠建副教授编写第4、5、8章、吴磊副教授编写第7、9、10章,许卡高工编写第2章。
电子科技大学黄迪明教授、四川大学彭德中教授认真审阅了全书,并提出了十分宝贵的修改意见,在此表示诚挚的感谢。本书在编写过程中,得到了许多教师和学生的鼓励和支持,对本书的编写提出了许多有益的意见和建议,在此对所有支持和帮助本书编写的人们表示衷心的感谢。
由于作者水平有限,诚恳希望广大读者批评指正!
作者Email:jiayixu@uestc.edu.cn
课程网站:http://222.197.183.243/se/web/soft/default.aspx
作 者
于电子科技大学
展开