目 录 第1章 软件工程概述1 1.1 软件和软件工程的概念2 1.1.1 软件的概念和特点2 1.1.2 软件工程的定义3 1.2 软件工程的产生和发展3 1.2.1 软件危机与软件工程3 1.2.2 软件工程的基本原则5 1.2.3 软件工程研究的内容5 1.3 软件过程7 1.3.1 软件生存周期7 1.3.2 软件工程过程及产品8 1.4 软件过程模型8 1.4.1 瀑布模型9 1.4.2 增量模型9 1.4.3 螺旋模型10 1.4.4 喷泉模型11 1.4.5 原型模型11 1.4.6 智能模型12 1.5 软件开发方法12 1.5.1 结构化开发方法13 1.5.2 原型化开发方法13 1.5.3 面向对象的开发方法14 1.5.4 敏捷开发方法16 章节习题19 第2章 可行性研究20 2.1 可行性研究的任务20 2.2 可行性研究的过程21 2.2.1 复查系统规模和目标21 2.2.2 研究目前正在使用的系统21 2.2.3 导出新系统的高层逻辑模型21 2.2.4 重新定义问题22 2.2.5 导出和评价供选择的解法22 2.2.6 推荐行动方针22 2.2.7 草拟开发计划22 2.2.8 书写文档并提交审查22 2.3 可行性研究阶段使用的工具23 2.3.1 系统流程图23 2.3.2 数据流图24 2.3.3 数据字典28 章节习题29 第3章 需求分析31 3.1 需求分析的任务32 3.1.1 需求分析的任务概述32 3.1.2 需求分析的任务详解32 3.2 需求分析的步骤34 3.2.1 具体步骤34 3.2.2 具体例子34 3.3 需求获取的方法35 3.4 需求分析的方法37 3.4.1 结构化分析37 3.4.2 面向对象的需求分析44 3.4.3 需求分析的新方法48 章节习题49 第4章 系统概要设计50 4.1 概要设计的任务51 4.2 概要设计的基本方法52 4.2.1 结构化设计方法52 4.2.2 面向对象设计方法58 4.2.3 面向数据结构设计方法58 4.3 概要设计的基本原理59 4.3.1 模块化59 4.3.2 抽象60 4.3.3 逐步求精61 4.3.4 信息隐蔽和局部化61 4.3.5 模块独立性62 4.4 软件结构的优化准则65 章节习题67 第5章 详细设计68 5.1 详细设计的内容69 5.2 详细设计工具69 5.2.1 结构化详细设计工具69 5.2.2 面向对象的详细设计及工具77 5.3 数据库设计88 5.4 人机界面设计88 5.5 程序软件结构复杂性的定量度量90 5.5.1 McCabe方法90 5.5.2 Halstead方法91 5.6 详细设计的原则91 5.6.1 面向过程的详细设计的原则91 5.6.2 面向对象设计的准则92 5.7 详细设计新方法94 5.7.1 面向服务的设计94 5.7.2 微服务架构95 5.7.3 ChatGPT在详细设计中的应用95 章节习题96 第6章 软件编码97 6.1 程序设计语言的分类97 6.1.1 程序设计语言软件工程角度划分98 6.1.2 程序设计语言代际划分103 6.2 程序设计语言的选择104 6.3 程序设计风格106 章节习题109 第7章 软件测试110 7.1 软件测试概述111 7.1.1 软件测试的重要性111 7.1.2 软件测试的概念111 7.1.3 软件测试的特点112 7.1.4 软件测试的基本原则112 7.1.5 软件测试模型114 7.2 软件测试步骤115 7.2.1 制订软件项目测试计划115 7.2.2 软件测试人员管理116 7.2.3 进行分阶段测试116 7.2.4 软件测试过程文档管理117 7.3 软件测试过程118 7.3.1 单元测试118 7.3.2 集成测试122 7.3.3 确认测试125 7.3.4 系统测试126 7.3.5 验收测试127 7.3.6 综合测试策略128 7.4 软件测试方法129 7.4.1 静态分析129 7.4.2 动态测试130 7.5 软件调试139 7.5.1 软件调试过程139 7.5.2 软件调试的困难139 7.5.3 软件调试策略140 7.6 自动化测试142 7.6.1 自动化测试概述142 7.6.2 实施自动化测试的前提条件143 7.6.3 自动化测试过程145 7.6.4 自动化测试的原则147 7.6.5 敏捷测试148 7.7 人工智能下的软件测试149 章节习题150 第8章 软件维护151 8.1 软件维护概述151 8.1.1 软件维护的概念151 8.1.2 软件维护的特点152 8.1.3 软件的可维护性153 8.2 软件维护过程155 8.2.1 建立维护组织155 8.2.2 维护申请与实施156 8.2.3 软件维护记录与文档管理156 8.2.4 软件维护活动评价158 8.3 用户手册的主要内容及写作要求158 章节习题159 第9章 软件项目管理160 9.1 软件项目管理概述161 9.1.1 软件项目管理的特点161 9.1.2 软件项目管理的主要活动161 9.2 软件项目风险管理162 9.2.1 软件项目风险管理概述162 9.2.2 风险的特性162 9.2.3 风险应对策略162 9.3 软件进度计划管理163 9.3.1 进度计划管理概述163 9.3.2 进度计划编制方法165 9.3.3 进度计划控制167 9.4 软件质量管理168 9.4.1 软件质量168 9.4.2 软件质量保证措施170 9.4.3 软件能力成熟度模型171 9.5 软件成本管理175 9.5.1 软件成本分析175 9.5.2 软件成本估算176 9.5.3 软件成本控制177 9.6 配置管理180 9.6.1 配置管理概述180 9.6.2 配置管理的组织180 9.6.3 配置管理的主要活动182 9.7 人力资源管理185 9.7.1 软件项目人力资源的特征185 9.7.2 人力资源管理的主要内容185 9.7.3 人员的组织与分工186 9.8 沟通管理188 章节习题189 第10章 大学生在线学习系统案例190 10.1 大学生在线学习系统的可行性分析190 10.2 大学生在线学习系统的需求分析195 10.3 大学生在线学习系统的概要设计209 10.4 大学生在线学习系统的详细设计220 10.5 大学生在线学习系统的编码规范说明236 10.6 大学生在线学习系统的软件测试252 10.7 大学生在线学习系统的软件维护272