新書推薦:

《
人工智能基础(高中版)
》
售價:NT$
254.0

《
殷商史(中国断代史系列)
》
售價:NT$
602.0

《
古法艾灸:寒湿一去消百病(第二版)
》
售價:NT$
203.0

《
时间的刻度:新京报年度好书20年
》
售價:NT$
500.0

《
中国国家图书馆藏敦煌文献·第二册
》
售價:NT$
14280.0

《
中国诗歌艺术十五讲
》
售價:NT$
254.0

《
HALCON机器视觉算法及应用
》
售價:NT$
454.0

《
牙周再生术
》
售價:NT$
3050.0
|
編輯推薦: |
·增加了对持续集成/持续部署、开发运维一体化、GitHub等流行的方法和工具的介绍。 ·增加了关于面向服务的架构、企业服务总线和微服务的讨论,以及与虚拟化和容器化相关的新概念和新工具。 ·增加了对安全问题的讨论,包括DevSecOps等方法所带来的安全性问题。
|
內容簡介: |
本书是一本概要介绍软件工程核心内容的导论性教材,完整覆盖了从初始阶段到发布、支持阶段的软件系统生命周期,讨论了贯穿软件生命周期的过程、质量保障及项目管理等问题。新版涵盖了技术和工具方面的一些新改进,同时减少了对过时技术的讨论。本书的三位作者除教学经验丰富外,还拥有多年在IBM、微软和亚马逊等公司从事软件研发和管理的工作经历。书中融合了这些经验,包含对系统分析和设计、软件工程原理、开发和支持过程、方法论、软件测试和质量以及产品管理的全面概述,内容精练,案例丰富。
|
關於作者: |
弗兰克·徐(Frank Tsui)
自20世纪70年代初开始在软件行业工作超过30年,曾担任IBM等多家跨国软件企业的研发主管或VP,之后加入学术界,曾任职于南方州立理工大学、佐治亚理工学院和肯尼索州立大学,现已退休。他拥有佐治亚理工学院计算机科学博士学位。
奥兰多·卡拉姆(Orlando Karam)
肯尼索州立大学教师。他在敏捷开发和开源软件社区非常活跃,还积极参与软件复杂性的研究。在过去的8年里,他一直在微软和亚马逊等公司工作。他拥有杜兰大学计算机科学博士学位。
芭芭拉·博纳尔(Barbara Bernal)
肯尼索州立大学软件工程荣休教授。她的专长是用户界面和以用户为中心的设计。她还积极参与美国工程教育协会和软件工程师教育学会的工作。
|
目錄:
|
译者序
前言
第1章 创建一个程序1
1.1 一个简单的问题1
1.1.1 决策,决策1
1.1.2 功能需求2
1.1.3 非功能需求3
1.1.4 设计约束3
1.1.5 设计决策4
1.2 测试4
1.3 估计工作量5
1.4 实现6
1.4.1 关于实现的几个要点6
1.4.2 基本设计7
1.4.3 使用JUnit进行单元测试8
1.4.4 StringSorter的实现8
1.4.5 用户界面12
1.5 总结14
1.6 复习题14
1.7 练习题15
1.8 参考文献和建议阅读15
第2章 构建一个系统16
2.1 构建一个系统的特征16
2.1.1 规模和复杂度16
2.1.2 开发和支持的技术性考虑17
2.1.3 开发和支持的非技术性考虑20
2.2 系统构建实例21
2.2.1 薪资管理系统的需求21
2.2.2 设计薪资管理系统22
2.2.3 薪资管理系统的编码和
单元测试24
2.2.4 薪资管理系统的集成和功能
测试24
2.2.5 发布薪资管理系统25
2.2.6 支持和维护25
2.3 协调工作26
2.3.1 过程26
2.3.2 产品27
2.3.3 人员27
2.4 总结27
2.5 复习题27
2.6 练习题27
2.7 参考文献和建议阅读28
第3章 工程化软件29
3.1 软件失败的示例和特点29
3.1.1 项目失败29
3.1.2 软件产品失效30
3.1.3 协调和其他关注点31
3.2 软件工程31
3.2.1 什么是软件工程31
3.2.2 软件工程的定义32
3.2.3 软件工程与软件的相关性32
3.3 软件工程专业与道德规范33
3.3.1 软件工程道德准则33
3.3.2 专业行为34
3.4 软件工程原则35
3.4.1 早期由Davis提出的软件
工程原则35
3.4.2 更现代的Royce原则36
3.4.3 Wasserman提出的软件工程
基础概念37
3.5 总结38
3.6 复习题38
3.7 练习题38
3.8 参考文献和建议阅读39
第4章 传统软件过程模型40
4.1 软件过程40
4.1.1 软件过程模型的目标40
4.1.2 “最简单”的过程模型41
4.2 传统过程模型41
4.2.1 瀑布模型42
4.2.2 主程序员制团队方法43
4.2.3 增量模型43
4.2.4 螺旋模型44
4.3 一个更加现代的过程45
4.3.1 Rational统一过程框架的一般
基础46
4.3.2 RUP的阶段46
4.4 进入和退出标准48
4.4.1 进入标准48
4.4.2 退出标准49
4.5 过程评估模型50
4.5.1 SEI的能力成熟度模型50
4.5.2 SEI的能力成熟度集成模型52
4.6 过程定义和通信52
4.7 总结53
4.8 复习题53
4.9 练习题54
4.10 参考文献和建议阅读54
第5章 敏捷软件过程模型56
5.1 什么是敏捷过程56
5.2 为什么使用敏捷过程57
5.3 一些过程方法57
5.3.1 极限编程58
5.3.2 水晶系列方法61
5.3.3 敏捷统一过程63
5.3.4 Scrum64
5.3.5 看板方法:一种新增的敏捷
方法65
5.3.6 开源软件开发66
5.3.7 过程总结67
5.4 过程的选择68
5.4.1 每一种过程更适用的项目
和环境68
5.4.2 敏捷过程的主要风险和问题69
5.4.3 敏捷过程的主要优点69
5.5 总结70
5.6 复习题70
5.7 练习题71
5.8 参考文献和建议阅读71
第6章 需求工程72
6.1 需求处理72
6.1.1 需求处理的准备72
6.1.2 需求工程过程73
6.2 需求获取与收集74
6.2.1 获取高层次的需求75
6.2.2 获取详细的需求76
6.3 需求分析78
6.3.1 通过业务流分析和聚类需求78
6.3.2 通过面向对象的用例分析和
聚类需求79
6.3.3 通过面向视点的需求定义
分析和聚类需求81
6.3.4 需求分析与排序81
6.3.5 需求可追踪性83
6.4 需求定义、原型化和审查84
6.5 需求规格说明与需求协商87
6.6 总结87
6.7 复习题88
6.8 练习题88
6.9 参考文献和建议阅读89
第7章 设计:架构与方法论91
7.1 设计导论91
7.2 架构设计92
7.2.1 什么是软件架构92
7.2.2 视图与视角92
7.2.3 元架构知识:风格、模式、
策略和参考架构93
7.2.4 基于网络的Web参考
架构—REST98
7.3 详细设计99
7.3.1 功能分解99
7.3.2 关系数据库101
7.3.3 大数据设计104
7.3.4 面向对象设计和UML106
7.3.5 用户界面设计109
7.3.6 一些进一步的设计问题115
7.4 HTML-Script-SQL设计示例115
7.5 总结118
7.6 复习题118
7.7 练习题118
7.8 参考文献和建议阅读119
第8章 设计的特征与度量120
8.1 设计描述120
8.2 设计属性的遗留特征120
8.2.1 Hal
|
內容試閱:
|
前 言
本书凝结了我们教授软件工程导论性课程的经验。尽管市面上已有不少同类图书,但很少有一本仅介绍核心内容的教材,适用于为期一学期、授课16周、大约每周3学时的课程。随着小规模网络应用的激增,许多信息技术新人尚未完全理解软件工程知识就进入了软件工程领域。本书适用于经验有限的新生和打算在软件工程领域开始新职业的经验丰富的信息技术专业人员。本书覆盖软件系统完整的生命周期—从初始阶段到发布阶段再到支持阶段。
本书的内容以三位作者的经验和职业背景为前提。第一位作者在IBM、Blue Cross Blue Shield、MARCAM和RCA等公司从事过构建、支持和管理大型复杂的关键业务软件的工作,有着超过25年的工作经验。第二位作者有着在微软和亚马逊等公司使用敏捷方法构建小规模软件的丰富经验。第三位作者精通双语,对英语学生和西班牙语学生都有着丰富的软件工程教学经验。
虽然新思想和新技术会不断涌现,书中介绍的一些原理可能也需要更新,但我们认为在本书中介绍的底层的、基础的概念会保持不变。
第5版重要更新
软件工程的基本概念和理论在三四十年前已经相当稳定。然而,技术和工具仍在不断发展、扩展,并且每四到五年改进一次。在第5版中,我们讨论了技术和工具的一些新改进,减少了一些领域,如过程评估模型,这些领域在今天变得不那么重要。我们仍保留了许多历史上重要的概念,这些概念构成了这个领域的基础,例如传统的过程模型。我们的目标是继续保持内容简洁,使得本书可以在为期16周的入门课程中教授。第5版的主要修改如下:
“持续集成”的现有和历史概念已经扩展为一个称为持续集成/持续部署(CI/CD)的新概念,并随着改进的工具和成熟的敏捷方法而获得发展。第2章对此进行了讨论。
为了反映更多当前的思想和术语,第4章被重新命名为传统软件过程模型,该章对过程评估模型,特别是能力成熟度模型集成(CMMI)的讨论大幅减少。第5章被重新命名为敏捷软件过程模型,以更准确地反映其内容,该章中添加了一个流行的敏捷方法,即开发运维一体化(DevOps),作为过程中新改进的下一个等级。
将许多与当前的设计和开发相关的思想和工具—如面向服务的架构(SOA)、企业服务总线和微服务—添加到第7章。
将与虚拟化和容器化相关的一些新概念和工具添加到第9章。
为了配合对持续集成和CI/CD的讨论,将GitHub/Git工具包含在11.5节中。
安全是一个非常重要的话题,它已经发展为一门独立的学科,涵盖了软件、硬件、信息基础设施技术和服务等主题。本书没有对这个话题进行全面的论述,而是在14.1节中增加了对Secure DevOps或DevSecOps等方法所带来的安全性的讨论。
此外,我们对全书中的部分语句做了细微修改以提升表达效果,我们也听取了使用过本书第1~4版的读者的反馈,并更正了语法和拼写错误。书中可能还会有一些错误,责任完全在我们。
本书的第1~4版被大量高等院校使用,我们感谢他们的信任和反馈,并且受益匪浅。我们希望所有未来的读者学完第5版之后,会认为这是更好的一本书。
本书组织结构
第1、2章展示了实施小型编程项目和构建关键业务软件系统所需工作之间的差异。我们特意用两章来强调单人“车库作坊”和构建一个大型“专业”系统所需的项目团队之间的区别。这两章中的讨论给出了学习和理解软件工程的基本原理。第3章中第一次较为规范地对软件工程进行了讨论,并介绍了软件工程专业及其道德规范。
第4、5章覆盖了软件过程、过程模型和方法学等传统主题。为了反映在这个领域取得的大量进展,这两章详尽地介绍了如何通过软件工程研究所(SEI)提出的能力成熟度模型来评价过程。
第6、7、9、10、11章在宏观层面上顺序覆盖了从需求工程到产品发布的开发活动。第7章通过一个使用HTML-Script-SQL设计和实现的实例,对用户界面设计展开讨论。在介绍完软件设计之后,第8章回顾并讨论了在评估概要和详细设计中使用的设计特征和度量指标。第11章不仅讨论了产品发布,还介绍了配置管理的基本概念。
第12章探讨了在将软件系统发布给客户和用户后的相关支持和维护活动,覆盖的主题包括来电管理、问题修复和功能点发布。在这一章中,进一步强调了配置管理的必要性。第13章总结了项目管理的不同阶段,同时介绍了一些具体的项目计划和监测技术。这仅是概要性的总结,并没有包括团队建设、领导才能等主题。软件项目管理过程区别于开发和支持过程。第14章总结全书,介绍软件工程领域当前面临的问题,并展望了该领域未来的主题。
附录部分通过团队计划、软件开发计划、需求规格说明、设计计划和测试计划的“概要示例”,帮助读者和学生深入理解软件开发中主要活动可能产生的结果。一个常见的问题是需求文档或测试计划应该写成什么样。为回答这个问题并提供一个切入点,我们给出了计划、需求、设计和测试计划4项活动可能产生文档的样例格式。具体如下:
附录A 软件开发计划概要
附录B 软件需求规格说明概要
示例1:SRS概要—描述
示例2:SRS概要—面向对象
|
|