书籍作者:彭鑫 | ISBN:9787302607489 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:8389 |
创建日期:2023-04-15 | 发布日期:2023-04-15 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
本书是软件工程的入门教材,系统地阐述了现代软件开发过程、方法、技术以及相关工具,使读者能够全面掌握现代软件工程的相关基础知识以及软件工程师所需要具备的基本实践能力。
全书共分为10章,覆盖了现代软件工程的主要内容,特别是需求分析、软件设计、软件构造、软件测试等。本书各章的顺序按照软件工程师的学习和成长过程进行编排,首先围绕高质量编码所需的知识和能力进行介绍,然后逐渐过渡到更加抽象的软件设计和需求分析等内容。第1章介绍软件工程的含义、发展历程和重要思想。第2章介绍软件过程模型、敏捷方法与精益思想以及开发运维一体化(DevOps)。第3章介绍软件版本管理与开发任务管理。第4章介绍代码质量的含义以及高质量编码方法。第5章介绍软件设计的整体内容并具体介绍组件级详细设计方法。第6章介绍组件级、框架级、平台级三个层次上的软件复用方法。第7章介绍软件体系结构的基本概念以及分布式软件体系结构和云原生软件体系结构。第8章介绍软件需求分析方法、敏捷开发中的需求工程以及可信需求的含义。第9章介绍软件测试方法以及相关工具。第10章介绍软件持续集成、发布以及软件构建和依赖管理。
本书可作为高等院校计算机、软件工程、人工智能、自动化等相关专业的本科生教材,也可供相关领域的专业技术人员参考。
彭鑫 复旦大学计算机科学技术学院副院长、软件学院副院长、教授、博士生导师,中国计算机学会软件工程专委会副主任,Journal of Software: Evolution and Process联合主编,ACM Transactions on Software Engineering and Methodology等期刊编委。研究方向包括软件智能化开发与运维、泛在计算软件系统等。
游依勇 华为技术有限公司软件工程学院院长,在软件开发、产品线总裁、人才培养、产业管理、生态建设等岗位具有20多年的工作经验,曾获得国家科学技术进步奖和中国电子学会科学技术奖一等奖。
赵文耘 复旦大学计算机科学技术学院教授、博士生导师。研究方向为软件工程、企业信息化。曾获国家科技进步二等奖、电子工业部科技进步特等奖、上海市科技进步二等奖、上海市教学成果二等奖等多项省部级奖项。
云计算、大数据、人工智能等技术的发展及ICT(Information and Communications Technology,信息与通信技术)融合的趋势推动着新的软件应用形态、新的软件开发技术及新的软件开发过程不断涌现。在应用形态方面,软件以其极强的渗透性融入人们的日常生活,移动应用、小程序等网络化应用成为主流,而通信、能源、交通等基础设施也广泛采用了软件来实现数字化和智能化管理。在开发技术方面,以容器化和微服务为主要特征的云原生架构及相关软件技术成为越来越多软件项目的选择。在开发过程方面,敏捷方法已经成为主流,开发运维一体化(DevOps)与持续集成、持续交付等实践也得到了越来越多的应用,支撑这些新型开发流程与方法的云化开发平台也逐渐成熟。
本书面向现代软件工程所需要的基础知识和基本能力进行介绍,在覆盖经典软件工程方法与技术的同时突出体现了现代软件工程在开发过程和方法上的特点,例如,开发运维一体化及持续集成与持续交付、演化式设计、软件开发框架与平台复用、分布式与云原生软件体系结构、敏捷开发需求分析等。此外,本书还强化了高质量编码与可信软件开发的要求,体现了现代软件工程对于软件工程师个人的质量意识和可信软件开发能力的要求。
软件工程课程具有很强的实践性,所介绍的软件开发过程、方法和技术都需要结合软件开发实践进行理解和掌握。然而,传统的软件工程教材一般都是按照软件过程、软件需求、软件设计、软件测试这样的顺序进行介绍,而且对于版本管理、编码、构建与依赖管理等软件工程师的基本开发技能介绍较少。与之相对应的课程实践项目往往花费了大量时间在需求分析、设计及相关的文档撰写上,对于编码、构建、测试等基本能力的实践不够并且缺少一个循序渐进的体验过程。为此,我们与华为公司的软件人员能力提升变革项目团队一起合作,将华为多年来在ICT领域积累的软件开发方法、工具与相关实践融入软件工程课程,并按照软件工程师的学习和成长过程对相关内容重新进行了编排,首先围绕高质量编码所需的知识和能力进行介绍,然后逐渐过渡到更加抽象的软件设计和需求分析等内容。
建议通过本书学习软件工程的读者在按顺序学习各章内容的同时,能够围绕一个迭代化的软件开发项目逐步体验软件工程师的成长过程: 在初步理解软件开发过程以及版本和任务管理的基础上,首先能够高质量地实现比较小的代码单元(例如一个类),然后能够完成涉及多个类的局部软件设计并掌握一些常用的软件复用手段,接着了解更高层面上的软件体系结构特别是分布式软件体系结构设计,最后理解软件需求并掌握常用的需求分析方法。此外,完整的软件产品交付必须有相应的质量保障及交付过程支持,因此还需要学习并体验软件测试方法和技术,并了解软件产品是如何进行集成和发布的。
本书由复旦大学计算机科学技术学院CodeWisdom团队与华为公司软件人员能力提升变革项目团队合作撰写完成。其中,彭鑫负责第1章及第5~8章的编写,同时负责全书的修改及统稿; 游依勇负责第3~4章的编写,并基于华为软件开发经验进行了全书企业实践内容的归纳和总结; 赵文耘负责第2章及第9~10章的编写。除了三位作者外,复旦大学计算机科学技术学院CodeWisdom团队的吴毅坚、沈立炜、陈碧欢以及华为公司软件人员能力提升项目团队的赵亮、吕新平、王书建、纪朋、钱逢兵、李春华、吴刚等也参加了部分章节的编写和评审工作,为本书的出版做出了巨大的贡献,在此一并表示感谢。
为方便教师教学和学生学习,本书还配套教学课件、教学视频、示例代码和课程实践等资源,读者可在清华大学出版社官网该书主页下载。
感谢清华大学出版社的大力支持以及在本书撰写过程中的细心指导!同时还要感谢教育部高等学校软件工程专业教学指导委员会、全国高等学校计算机教育研究会、复旦大学计算机科学技术学院的领导和老师们对本书的大力支持!
由于作者水平有限,书中难免有不足和疏漏之处,恳请广大读者批评指正!
作者2021年12月
第1章软件工程概述
1.1软件的产生与发展
1.2软件工程的含义
1.3软件工程的系统观与演化观
1.4软件工程师的社会责任
1.5本书的内容结构
小结
第2章软件过程
2.1软件过程概述
2.1.1基本概念和发展历史
2.1.2软件生存周期过程标准
2.1.3软件过程模型
2.1.4软件过程改进
2.2敏捷方法与精益思想
2.2.1敏捷方法
2.2.2精益思想
2.2.3敏捷实践方法论
2.3开发运维一体化
2.3.1概览
2.3.2基本原则和技术实践
2.3.3持续集成、持续交付和持续部署
小结
第3章版本与开发任务管理
3.1版本与开发任务管理概述
3.1.1配置管理概述
3.1.2版本发布计划
3.2版本管理
3.2.1产品版本号命名
3.2.2代码版本管理
3.2.3代码分支与基线管理
3.3特性开发任务管理
3.3.1特性描述
3.3.2特性开发任务管理流程
3.3.3变更管理流程
3.4缺陷修复过程管理
3.4.1缺陷描述
3.4.2缺陷修复处理流程
3.5基于追踪与回溯的工作量与质量分析
3.5.1基于追踪的分析
3.5.2基于回溯的分析
小结
第4章高质量编码
4.1代码质量概述
4.1.1代码质量的含义
4.1.2可理解性和可维护性
4.1.3可靠性和信息安全性
4.1.4高效性
4.1.5可移植性
4.2代码风格
4.2.1标识符命名
4.2.2排版格式
4.2.3注释
4.3代码逻辑
4.3.1代码编写的基本要求
4.3.2重复代码问题
4.3.3代码复杂度问题
4.3.4高质量的子程序
4.4安全与可靠性编码
4.4.1数据验证
4.4.2代码逻辑问题
4.4.3错误处理
4.4.4断言
4.4.5异常处理
4.4.6安全编程函数
4.5代码质量控制
4.5.1个人测试与调试
4.5.2代码静态检查与质量门禁
4.5.3代码评审
4.5.4代码质量度量
4.6测试驱动开发
4.6.1TDD的概念与优势
4.6.2TDD的过程与原则
4.6.3TDD中的单元测试
小结
第5章软件设计
5.1软件设计概述
5.1.1软件设计目标
5.1.2软件设计层次
5.1.3软件设计思想
5.2面向对象设计
5.2.1面向对象设计过程
5.2.2面向对象设计描述
5.2.3内聚和耦合
5.2.4面向对象设计原则
5.2.5面向切面的编程
5.3契约式设计
5.4设计模式
5.5演化式设计
5.5.1演化式设计与计划设计
5.5.2代码坏味道
5.5.3软件重构
小结
第6章软件复用
6.1软件复用概述
6.1.1软件复用概念
6.1.2软件复用层次
6.1.3软件复用过程
6.1.4软件产品线
6.1.5开源软件复用
6.2组件级复用
6.2.1软件开发库复用
6.2.2在线服务复用
6.2.3接口描述规范
6.3框架级复用
6.4平台级复用
6.4.1典型平台能力
6.4.2基于平台的应用开发过程
6.5基于复用的软件开发案例
6.5.1后端服务开发
6.5.2前端We码小程序开发
小结
第7章软件体系结构
7.1软件体系结构概述
7.2软件体系结构决策
7.3软件体系结构描述
7.4软件体系结构风格
7.5分布式软件体系结构
7.5.1设计原则
7.5.2进程间通信
7.5.3负载均衡
7.5.4分布式存储
7.5.5可靠性保障
7.6云原生软件体系结构
7.6.1微服务体系结构
7.6.2微服务开发框架
7.6.3容器化部署
小结
第8章软件需求
8.1软件需求概述
8.1.1需求的含义及其来源
8.1.2需求的类型
8.1.3需求工程过程
8.1.4需求的质量要求
8.1.5系统需求与软件需求
8.2需求分解和精化
8.2.1系统愿景与上下文
8.2.2愿景与目标分解和精化
8.2.3优先级排序
8.2.4冲突识别与协商
8.3需求分析与描述
8.3.1场景分析与描述
8.3.2类分析与描述
8.3.3行为分析与描述
8.3.4需求文档
8.4敏捷开发中的需求工程
8.5软件可信需求
小结
第9章软件测试
9.1软件测试概念与原则
9.1.1软件质量事故
9.1.2软件测试概念
9.1.3软件测试原则
9.2软件测试过程模型
9.2.1V模型
9.2.2W模型
9.2.3敏捷测试模型
9.3软件测试类型
9.3.1单元测试
9.3.2集成测试
9.3.3系统测试
9.3.4验收测试
9.4黑盒软件测试方法
9.4.1等价类划分法
9.4.2边界值分析法
9.4.3判定表
9.4.4错误推测法
9.5白盒软件测试方法
9.6系统测试技术与工具
9.6.1功能测试
9.6.2性能测试
9.6.3兼容性测试
9.6.4易用性测试
9.6.5可靠性测试
9.6.6信息安全测试
小结
第10章软件集成与发布
10.1软件集成与发布概述
10.1.1持续集成与发布的前置条件
10.1.2持续集成与发布的价值
10.1.3云化与本地持续集成与发布
10.2持续集成
10.2.1集成过程
10.2.2持续集成的实践
10.2.3持续集成的自动化支持工具
10.2.4软件构建
10.3软件发布
10.3.1软件发布的反模式与基本原则
10.3.2蓝绿部署
10.3.3金丝雀发布
10.3.4暗发布
10.4部署流水线
10.4.1部署流水线概述
10.4.2华为软件开发云中的部署流水线
小结
参考文献
购物方便快捷,快递给力!
2022-07-10 11:12:59
内容体系很新,比传统的软工书籍有新意。
2022-07-11 09:46:02