顶部
收藏

软件工程:从理论到实践


作者:
毛新军 董威
定价:
63.00元
ISBN:
978-7-04-058548-3
版面字数:
780.000千字
开本:
16开
全书页数:
暂无
装帧形式:
平装
重点项目:
暂无
出版时间:
2022-06-17
读者对象:
高等教育
一级分类:
计算机/教育技术类
二级分类:
软件工程专业课程

本书将软件工程理论与软件开发实践相结合,在作者多年从事软件工程教学、科研和开发所取得的经验和成果基础上,引入以开源软件技术为代表的软件产业界成功实践和软件资源,通过具体和完整的软件开发案例,深入诠释程序、软件和软件工程的概念、思想和内涵,系统介绍软件工程的过程、方法学和工具,强化软件工程课程的综合实践。

全书分为6部分,共16章。第一部分是基础篇,包含第1~3章,从程序和软件入手,介绍软件工程的基本概念和思想、常见的软件过程及主流的软件开发方法。第二部分是需求篇,包含第4~6章,介绍获取、分析、建模和文档化软件需求的过程和策略、语言和工具、软件制品和质量保证。第三部分是设计篇,包含第7~10章,介绍软件体系结构设计、用户界面设计、软件详细设计的过程和策略、语言和工具、软件制品和质量保证。第四部分是实现篇,包含第11~13章,介绍程序编码和软件测试的过程和策略、技术和工具、软件制品和质量保证。第五部分是运维篇,包含第14~15章,介绍软件部署、运行、维护和演化的策略和方法。第六部分是管理篇,包含第16章,介绍软件项目管理的相关内容。

本书遵循课程规范,具有知识体系新颖、内容组织科学、知识诠释深入、教学资源丰富等特点,可作为高校计算机或信息大类专业的本科生教材,也可作为研究生教材和软件开发工程师的参考用书。

  • 前辅文
  • 第1章 从程序到软件
    • 1.1 何为程序
    • 1.2 程序质量
    • 1.3 程序质量保证方法
      • 1.3.1 程序编码风格
      • 1.3.2 程序设计方法
      • 1.3.3 程序代码重用
      • 1.3.4 结对编程
    • 1.4 程序质量分析方法
      • 1.4.1 人工代码审查
      • 1.4.2 自动化分析
      • 1.4.3 程序测试技术
    • 1.5 编写程序需解决的问题
    • 1.6 何为软件
      • 1.6.1 软件的概念
      • 1.6.2 软件生存周期
      • 1.6.3 软件的特点
      • 1.6.4 软件的分类
    • 1.7 开源软件
      • 1.7.1 何为开源软件
      • 1.7.2 开源软件实践
      • 1.7.3 开源托管平台和社区
      • 1.7.4 开源软件的优势
      • 1.7.5 开源许可证
      • 1.7.6 开源软件的利用
    • 1.8 软件质量
    • 1.9 软件特征的变化
      • 1.9.1 软件的地位和作用
      • 1.9.2 软件的基本形态
      • 1.9.3 软件系统的规模
    • 1.10 软件建设的挑战和使命
    • 1.11 本书软件案例
      • 1.11.1 “小米便签”MiNotes
      • 1.11.2 “12306”软件
      • 1.11.3 “空巢老人看护”软件ElderCarer
    • 本章小结
    • 推荐阅读
    • 基础习题
    • 综合实践
  • 第2章 软件工程概述
    • 2.1 软件工程的产生背景
      • 2.1.1 从编写程序到软件开发
      • 2.1.2 软件危机
    • 2.2 软件工程的概念和思想
      • 2.2.1 何为软件工程
      • 2.2.2 软件工程的三要素
      • 2.2.3 软件工程的目标
      • 2.2.4 软件工程的原则
    • 2.3 计算机辅助软件工程
      • 2.3.1 何为计算机辅助软件工程
      • 2.3.2 CASE工具和环境
    • 2.4 软件工程视角下的软件开发
      • 2.4.1 软件创作与软件生产
      • 2.4.2 软件创作与软件生产的软件工程方法
    • 2.5 软件工程的发展
      • 2.5.1 软件工程的发展历程
      • 2.5.2 软件工程发展的特点
      • 2.5.3 我国软件工程的发展
    • 2.6 软件工程教育
      • 2.6.1 软件工程从业人员
      • 2.6.2 软件工程教育发展
      • 2.6.3 软件工程教育国际规范
      • 2.6.4 软件工程教育挑战
      • 2.6.5 “软件工程”课程教学
    • 本章小结
    • 推荐阅读
    • 基础习题
    • 综合实践
  • 第3章 软件过程模型和开发方法
    • 3.1 软件过程模型
      • 3.1.1 何为软件过程
      • 3.1.2 代表性的软件过程模型
      • 3.1.3 软件过程模型的重型化特点
      • 3.1.4 软件过程模型的选择
    • 3.2 敏捷方法
      • 3.2.1 何为敏捷方法
      • 3.2.2 极限编程
      • 3.2.3 Scrum
      • 3.2.4 测试驱动的开发
    • 3.3 群体化开发方法
      • 3.3.1 何为群体化开发方法
      • 3.3.2 基于群体的软件开发技术
      • 3.3.3 开源软件开发实践
      • 3.3.4 基于群智的知识分享
    • 本章小结
    • 推荐阅读
    • 基础习题
    • 综合实践
  • 第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.2.4 需求工程师
    • 4.3 结构化需求分析方法学
      • 4.3.1 基本概念和思想
      • 4.3.2 数据流图及软件需求模型
      • 4.3.3 面向数据流的需求分析的步骤和策略
    • 4.4 面向对象的需求分析方法学
      • 4.4.1 基本概念和思想
      • 4.4.2 面向对象建模语言UML
      • 4.4.3 面向对象的需求分析步骤和策略
    • 4.5 需求工程的CASE工具
    • 4.6 需求工程的输出和评审
      • 4.6.1 软件需求制品
      • 4.6.2 软件需求缺陷
      • 4.6.3 软件需求评审
    • 4.7 软件需求变更管理
    • 本章小结
    • 推荐阅读
    • 基础习题
    • 综合实践
  • 第5章 获取软件需求
    • 5.1 获取软件需求概述
      • 5.1.1 软件需求从何而来
      • 5.1.2 获取软件需求的方式
      • 5.1.3 获取软件需求的困难
      • 5.1.4 获取软件需求的方法
    • 5.2 获取软件需求的过程
    • 5.3 明确问题和基于软件的解决方案
      • 5.3.1 明确软件要解决的问题
      • 5.3.2 明确基于软件的解决方案
    • 5.4 导出和构思初步软件需求
      • 5.4.1 识别软件的利益相关者
      • 5.4.2 导出和构思软件的功能需求
      • 5.4.3 导出和构思软件的非功能需求
      • 5.4.4 持续获取软件需求
    • 5.5 描述初步软件需求
      • 5.5.1 自然语言描述
      • 5.5.2 软件原型描述
      • 5.5.3 UML用例图
      • 5.5.4 UML用例图描述
      • 5.5.5 撰写软件文档
    • 5.6 评审初步软件需求
      • 5.6.1 输出的软件制品
      • 5.6.2 评审初步软件需求
      • 5.6.3 软件需求可行性分析
    • 本章小结
    • 推荐阅读
    • 基础习题
    • 综合实践
  • 第6章 分析软件需求
    • 6.1 分析软件需求概述
      • 6.1.1 为何要分析软件需求
      • 6.1.2 分析软件需求的任务
    • 6.2 软件需求模型及UML表示方法
      • 6.2.1 软件需求模型
      • 6.2.2 交互图
      • 6.2.3 类图
      • 6.2.4 状态图
    • 6.3 分析软件需求的过程
    • 6.4 分析和确定软件需求优先级
      • 6.4.1 分析软件需求的重要性
      • 6.4.2 分析软件需求的优先级
      • 6.4.3 确定用例分析和实现的次序
    • 6.5 分析和建立软件需求模型
      • 6.5.1 分析和建立用例的交互模型
      • 6.5.2 分析和建立软件需求的分析类模型
      • 6.5.3 分析和建立对象的状态模型
    • 6.6 文档化软件需求
      • 6.6.1 撰写软件需求规格说明书
      • 6.6.2 输出的软件制品
    • 6.7 确认和验证软件需求
      • 6.7.1 评审软件需求
      • 6.7.2 解决软件需求问题
    • 本章小结
    • 推荐阅读
    • 基础习题
    • 综合实践
  • 第7章 软件设计基础
    • 7.1 软件设计
      • 7.1.1 何为软件设计
      • 7.1.2 软件设计模型及设计元素
      • 7.1.3 软件设计的质量要求
    • 7.2 软件设计的过程和原则
      • 7.2.1 软件设计的一般性过程
      • 7.2.2 软件设计的约束和原则
      • 7.2.3 软件设计工程师
    • 7.3 结构化软件设计方法学
      • 7.3.1 基本概念和模型
      • 7.3.2 变换型数据流图的转换方法
      • 7.3.3 事务型数据流图的转换方法
    • 7.4 面向对象的软件设计方法学
      • 7.4.1 基本思想
      • 7.4.2 面向对象的软件设计原则
      • 7.4.3 面向对象的软件设计优势
    • 7.5 软件设计的CASE工具
    • 7.6 软件设计的输出和评审
      • 7.6.1 软件设计制品
      • 7.6.2 软件设计缺陷
      • 7.6.3 软件设计验证与评审
    • 7.7 软件设计管理
    • 本章小结
    • 推荐阅读
    • 基础习题
    • 综合实践
  • 第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.3 软件体系结构设计过程
    • 8.4 设计初步的软件体系结构
    • 8.5 重用可用的已有软件资源
    • 8.6 精化软件体系结构设计
      • 8.6.1 确定公共基础设施及服务
      • 8.6.2 确定设计元素
    • 8.7 设计软件部署模型
    • 8.8 文档化软件体系结构设计
    • 8.9 评审软件体系结构设计
    • 本章小结
    • 推荐阅读
    • 基础习题
    • 综合实践
  • 第9章 用户界面设计
    • 9.1 用户界面设计概述
      • 9.1.1 人机交互方式
      • 9.1.2 用户界面设计的任务及其重要性
    • 9.2 用户界面组成及表示方法
      • 9.2.1 图形化用户界面的组成
      • 9.2.2 用户界面设计模型的UML表示
    • 9.3 用户界面设计的过程和原则
      • 9.3.1 用户界面设计的过程
      • 9.3.2 用户界面设计的原则
    • 9.4 用户界面的初步设计
    • 9.5 建立用户界面间的跳转关系
    • 9.6 精化用户界面设计
    • 9.7 用户界面设计的输出
    • 9.8 评审用户界面设计
    • 本章小结
    • 推荐阅读
    • 基础习题
    • 综合实践
  • 第10章 软件详细设计
    • 10.1 软件详细设计概述
      • 10.1.1 何为软件详细设计
      • 10.1.2 软件详细设计的任务和过程
      • 10.1.3 软件详细设计的原则
    • 10.2 软件详细设计模型及表示方法
    • 10.3 面向对象的软件设计模式
      • 10.3.1 何为设计模式
      • 10.3.2 面向对象的软件设计模式
    • 10.4 用例设计
      • 10.4.1 用例设计的过程和原则
      • 10.4.2 设计用例实现方案
      • 10.4.3 构造设计类图
      • 10.4.4 评审用例设计方案
      • 10.4.5 输出的软件制品
    • 10.5 类设计
      • 10.5.1 类设计的过程和原则
      • 10.5.2 确定类的可见范围
      • 10.5.3 精化类间的关系
      • 10.5.4 精化类的属性
      • 10.5.5 精化类的方法
      • 10.5.6 构造类对象的状态图
      • 10.5.7 评审类设计
      • 10.5.8 输出的软件制品
    • 10.6 数据设计
      • 10.6.1 数据设计的过程和原则
      • 10.6.2 确定需要永久保存的数据
      • 10.6.3 确定数据存储和组织的方式
      • 10.6.4 设计数据操作
      • 10.6.5 评审数据设计
      • 10.6.6 输出的软件制品
    • 10.7 子系统和构件设计
    • 10.8 文档化和评审软件详细设计
    • 本章小结
    • 推荐阅读
    • 基础习题
    • 综合实践
  • 第11章 软件实现基础
    • 11.1 软件实现概述
      • 11.1.1 何为软件实现
      • 11.1.2 软件实现的过程与原则
      • 11.1.3 程序员
    • 11.2 程序设计语言
      • 11.2.1 程序设计语言的类别
      • 11.2.2 程序设计语言的选择
      • 11.2.3 流行的程序设计语言
    • 11.3 高质量编码
    • 11.4 支持软件实现的CASE工具
    • 11.5 软件实现的输出
    • 本章小结
    • 推荐阅读
    • 基础习题
    • 综合实践
  • 第12章 编写代码
    • 12.1 编写代码的任务
    • 12.2 基于软件设计编写代码
      • 12.2.1 编写类代码
      • 12.2.2 编写用户界面代码
      • 12.2.3 编写数据设计代码
    • 12.3 代码片段重用
    • 12.4 软件缺陷
      • 12.4.1 软件缺陷、错误和失效的概念
      • 12.4.2 软件缺陷的描述
      • 12.4.3 软件缺陷的应对方法
      • 12.4.4 软件缺陷的状态
    • 12.5 程序调试
    • 12.6 基于群智知识解决编程和调试问题
    • 12.7 编写代码的输出
    • 本章小结
    • 推荐阅读
    • 基础习题
    • 综合实践
  • 第13章 软件测试
    • 13.1 软件测试概述
      • 13.1.1 何为软件测试
      • 13.1.2 软件测试的思想和原理
      • 13.1.3 测试用例的设计
      • 13.1.4 测试用例的运行
      • 13.1.5 软件测试面临的挑战
      • 13.1.6 软件测试工程师
    • 13.2 软件测试的过程和策略
      • 13.2.1 软件测试过程
      • 13.2.2 单元测试
      • 13.2.3 集成测试
      • 13.2.4 确认测试
      • 13.2.5 系统测试
    • 13.3 软件测试技术
      • 13.3.1 白盒测试技术
      • 13.3.2 黑盒测试技术
      • 13.3.3 非功能测试技术
    • 13.4 面向对象的软件测试技术
      • 13.4.1 面向对象的软件测试的特殊性
      • 13.4.2 交互测试
      • 13.4.3 继承测试
    • 13.5 软件测试计划的制订与实施
      • 13.5.1 软件测试组织
      • 13.5.2 制订和实施软件测试计划
    • 13.6 软件测试的输出
    • 本章小结
    • 推荐阅读
    • 基础习题
    • 综合实践
  • 第14章 软件部署
    • 14.1 软件及其环境
      • 14.1.1 软件的运行环境
      • 14.1.2 软件运行环境的变化
    • 14.2 软件部署的概念和原则
    • 14.3 软件部署方式
      • 14.3.1 单机部署
      • 14.3.2 分布式部署
    • 14.4 软件部署方法
      • 14.4.1 基于操作系统的部署
      • 14.4.2 基于软件开发框架和中间件的部署
      • 14.4.3 基于容器的部署
    • 14.5 支撑软件部署的CASE工具
      • 14.5.1 Fat Jar
      • 14.5.2 Installer Project
      • 14.5.3 Jenkins
    • 本章小结
    • 推荐阅读
    • 基础习题
    • 综合实践
  • 第15章 软件维护和演化
    • 15.1 软件维护
      • 15.1.1 何为软件维护
      • 15.1.2 软件维护的特点和挑战
      • 15.1.3 软件维护工程师
    • 15.2 软件演化
      • 15.2.1 何为软件演化
      • 15.2.2 软件演化法则
    • 15.3 软件逻辑老化问题
      • 15.3.1 何为软件逻辑老化
      • 15.3.2 软件逻辑老化的原因和表现
      • 15.3.3 解决软件逻辑老化的方法
    • 15.4 软件维护技术
    • 15.5 软件维护过程
      • 15.5.1 不同情况下的软件维护过程
      • 15.5.2 软件维护需要解决的问题
    • 15.6 软件的可维护性
    • 15.7 软件维护的输出
    • 本章小结
    • 推荐阅读
    • 基础习题
    • 综合实践
  • 第16章 软件项目管理
    • 16.1 软件项目管理概述
      • 16.1.1 何为软件项目
      • 16.1.2 软件项目管理的对象
      • 16.1.3 软件项目管理的内容
    • 16.2 软件度量、测量和估算
      • 16.2.1 基本概念
      • 16.2.2 软件项目估算
      • 16.2.3 应用软件度量、测量和估算
    • 16.3 软件项目计划
      • 16.3.1 何为软件项目计划
      • 16.3.2 软件项目计划的表示
      • 16.3.3 软件项目计划要考虑的因素
      • 16.3.4 制订软件项目计划的步骤
      • 16.3.5 实施软件项目计划
    • 16.4 软件项目跟踪
      • 16.4.1 软件项目跟踪的对象
      • 16.4.2 软件项目跟踪的方法
      • 16.4.3 软件项目跟踪的步骤
    • 16.5 软件配置管理
      • 16.5.1 基本概念
      • 16.5.2 软件配置管理过程
      • 16.5.3 软件配置管理计划
    • 16.6 软件风险管理
      • 16.6.1 何为软件风险
      • 16.6.2 软件风险的类别
      • 16.6.3 软件风险管理模式
      • 16.6.4 软件风险管理方法
    • 16.7 软件质量保证
      • 16.7.1 基本概念
      • 16.7.2 软件质量保证方法
      • 16.7.3 软件质量保证计划
    • 本章小结
    • 推荐阅读
    • 基础习题
    • 综合实践
  • 参考文献

“软件工程”课程旨在讲授软件工程的基本思想、原则、方法、技术、过程和工具等,培养学生开展复杂软件系统的工程化开发能力,包括:系统能力、解决复杂工程问题能力、创新实践能力、团队协作能力、交流表达能力等。教授的知识点包括:软件工程基本思想和原则、面向对象软件开发方法、软件需求工程、软件设计技术、软件构造技术、软件测试、软件部署、软件维护、软件项目管理等。本课程还需开展相关的软件开发实践,要求学生运用所学的知识,借助CASE 工具和平台,开发一个上规模、 有创意和高质量的软件系统,以帮助学生深入理解和掌握软件工程知识,积累软件开发经验,培养软件工程能力。

相关图书