温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
软件工程
过程
原理
方法
工具
新工科建设之路软件工程规划教材 软件工程过程:原理、方法与工具 张剑波 方 芳 周顺平 编著 Publishing House of Electronics Industry 北京BEIJING II 内 容 简 介 本书以 IEEE 计算机协会 2014 年 2 月发布的 SWEBOK V3 为蓝本,以软件工程过程、模型与方法为主线,围绕其中 8 个主要的软件工程实践活动,详细介绍了在软件工程领域被广泛接受的知识域。全书分10 章,主要内容包括:软件工程过程、软件工程模型与方法、软件需求、软件设计、软件构造、软件测试、软件维护、软件配置管理、软件项目管理、软件质量等。本书适合作为高等学校软件工程及计算机相关专业的研究生、高年级本科生教材,也适合软件工程专业人员及希望从事软件工程相关工作的其他专业人员阅读。未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。版权所有,侵权必究。图书在版编目(CIP)数据 软件工程过程:原理、方法与工具/张剑波,方芳,周顺平编著.北京:电子工业出版社,2019.8 ISBN 978-7-121-36661-1.软 .张 方 周 .软件工程高等学校教材 .TP311.5 中国版本图书馆 CIP 数据核字(2019)第 100394 号 策划编辑:冉 哲 责任编辑:底 波 印 刷:装 订:出版发行:电子工业出版社 北京市海淀区万寿路 173 信箱 邮编 100036 开 本:7871 092 1/16 印张:16.75 字数:422.4 千字 版 次:2019 年 8 月第 1 版 印 次:2019 年 8 月第 1 次印刷 定 价:49.80 元 凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,联系及邮购电话:(010)88254888,88258888。质量投诉请发邮件至 ,盗版侵权举报请发邮件至 。本书咨询联系方式:。III 前 言 软件是可以运行在计算机及电子设备中的指令和数据的有序集合。随着人类社会的发展和技术的进步,现在的软件具有产品和产品生产载体的双重作用。作为产品,软件在不同硬件环境(移动电话、手持平板、台式机或者大型计算机)中扮演着信息转换的角色;作为产品生产的载体,软件提供了计算机控制、信息通信、应用程序开发与控制的基础平台。相比计算机硬件能力以每两年提高一倍的速度发展,软件开发则面临着复杂性(Complexity)、不可见性(Invisibility)、易变性(Changeability)、服从性(Conformity)、非连续性(Discontinuity)等亟待解决的难题。软件工程是指将系统化、规范化和可量化的工程化方法应用于软件的开发、运行和维护,包括过程、一系列实践方法和大量工具,用于帮助专业人员构建高质量的计算机软件。同时,软件工程也是一门独立的学科,有自己的课程教育体系。为了规范和推动软件工程理论研究、工程实践和教育的发展,2014 年 2 月 20 日,IEEE 计算机协会发布了软件工程知识体系(Software Engineering Body of Knowledge,SWEBOK)指南第 3 版,简称 SWEBOK V3。该指南将 SWEBOK2004 第 2 版(软件工程本科课程大纲)、GSwE2009(软件工程硕士课程大纲)、CSDP(软件开发工程师认证)和 CSDA(初级软件工程师认证)、SEVOCAB(系统与软件工程术语)等标准进行了统一,同时补充了近 10 年来软件工程研究与实践的新成果,包括 11 个软件工程实践知识域和 4 个软件工程教育基础知识域(软件工程经济学、计算基础、数学基础和工程基础)。该指南描述了软件工程学科内容的特征,明确定义了软件工程相对于计算机科学、项目管理、计算机工程和数学等其他学科的范围。本书内容的组织正是以该指南为参考依据的。与国内外已经出版的同类书籍相比较,本书围绕“软件工程过程、模型与方法”,针对软件需求、软件设计、软件构造、软件测试、软件维护、软件配置管理、软件项目管理和软件质量这 8 个主要软件工程实践活动(见图 1),通过原理、方法与工具的介绍,为读者构建了一个完整的软件工程过程的知识体系,帮助读者更好地将所学知识应用于实践,并运用软件工程方法解决实际应用问题。通过本书的学习,读者可以掌握软件生命周期、软件工程过程中包含的主要活动和软件工程模型;理解常规软件生命周期框架中所包含的各阶段和活动;理解软件开发中的 8个主要活动间的相互关系;掌握几种主要的软件工程模型的主要特征及适用范围;理解为了在进度和预算内获取高质量的软件,选择合适的软件工程模型的重要性;全面掌握软件项目的开发和管理技术,能运用软件工程方法鉴别和解决大型软件项目开发过程中出现的主要问题。在章节安排上,本书首先为读者建立完整的软件工程过程的概念体系,接着详尽地给出各种常用的软件生命周期模型、建模过程与方法;然后以软件开发过程中工作产品构建时所执行的一系列活动、动作和任务的集合为参考,对其中软件需求、软件设计、软件构造、软件测试和软件维护这 5 个框架活动进行详细说明,帮助读者掌握软件工程过程从沟通、策划、建模、构造到部署这 5 个环节涵盖的基本原理、方法与工具;最后,对软件配 IV 置管理、软件项目管理和软件质量这三个普适性活动进行详细介绍,它们包含软件工作产品的准备和生产过程中所必需的活动(建模、文档、日志等)集合,为读者深入学习软件工程过程管理、过程监控及过程改进等软件管理知识打下了良好的基础。图 1 本书的编写得到中国地质大学(武汉)2018 年研究生精品教材建设项目的资助。本书在编写过程中得到了中国地质大学(武汉)软件工程系老师们的指导和帮助,研究生赵素彬和刘明焱参加了资料整理、绘图和排版等工作,在此一并致谢。由于作者水平有限,书中不足之处在所难免,敬请读者批评指正。编者 V 目 录 第 1 章 软件工程过程.1 1.1 软件过程定义.1 1.1.1 软件过程管理.2 1.1.2 软件过程框架.2 1.2 软件生命周期.5 1.2.1 软件过程分类.6 1.2.2 软件生命周期模型.8 1.2.3 软件过程适应.18 1.2.4 实践考虑.18 1.3 软件过程评估与改进.18 1.3.1 软件过程评估与改进模型.19 1.3.2 软件过程评估方法.19 1.3.3 连续式和阶段式软件过程评估.19 1.4 软件过程工具.32 习题 1.33 第 2 章 软件工程模型与方法.34 2.1 建模.34 2.1.1 建模的原则.34 2.1.2 模型的性质与表达.35 2.1.3 语法、语义和语用.35 2.1.4 前置条件、后置条件和不变量.36 2.2 模型的类型.36 2.3 模型分析.37 2.4 软件工程方法.38 2.4.1 启发式方法.38 2.4.2 形式化方法.39 2.4.3 原型方法.39 2.4.4 敏捷方法.40 习题 2.40 第 3 章 软件需求.41 3.1 基本概念.41 3.1.1 软件需求定义.41 3.1.2 软件需求层次.42 3.1.3 软件需求分类.43 VI 3.1.4 需求工程.45 3.1.5 启动步骤.46 3.2 需求获取.48 3.2.1 软件需求来源.49 3.2.2 需求获取技术.50 3.3 软件需求分析.54 3.3.1 分析模型概述.55 3.3.2 建立分析模型.57 3.3.3 分析技术.59 3.3.4 架构设计.60 3.3.5 需求协商.61 3.4 软件需求规格说明.61 3.4.1 意义.62 3.4.2 分类.62 3.4.3 描述方法.63 3.5 软件需求确认.65 3.5.1 软件需求评审.65 3.5.2 原型法.67 3.5.3 软件需求测试.68 3.5.4 验收测试.68 3.6 软件需求管理.69 3.6.1 需求基线.70 3.6.2 需求跟踪.72 3.6.3 需求变更.74 3.7 软件需求工具.76 习题 3.77 第 4 章 软件设计.78 4.1 软件设计基础.78 4.1.1 软件设计过程.81 4.1.2 软件设计原则.82 4.2 软件架构设计.86 4.2.1 软件架构风格.87 4.2.2 软件架构设计方法.88 4.2.3 软件架构设计步骤.92 4.3 用户界面设计.95 4.3.1 通用用户界面设计原则.96 4.3.2 用户交互模式设计.98 4.3.3 用户界面设计流程.99 4.3.4 用户界面设计方法.100 4.4 软件设计质量.102 VII 4.4.1 软件设计质量的意义.102 4.4.2 软件设计质量的评估.104 4.5 软件设计符号.105 4.5.1 结构描述.106 4.5.2 行为描述.115 4.6 软件设计策略和方法.124 4.7 软件设计工具.125 习题 4.126 第 5 章 软件构造.127 5.1 软件构造基础.127 5.1.1 复杂性最小化.127 5.1.2 多维视角的软件构造.127 5.2 软件构造过程.128 5.2.1 生命周期模型.128 5.2.2 构造语言.129 5.2.3 开发者测试.131 5.2.4 重构.132 5.3 软件构造管理.133 5.3.1 变更管理.133 5.3.2 版本控制.133 5.4 软件构造技术.134 5.5 软件构造工具.136 习题 5.137 第 6 章 软件测试.138 6.1 软件测试基础.139 6.1.1 软件测试目的.139 6.1.2 软件测试定义.139 6.2 软件测试级别.140 6.2.1 测试阶段级别.140 6.2.2 测试对象级别.144 6.3 软件测试技术.147 6.3.1 静态测试.147 6.3.2 动态测试.150 6.3.3 白盒测试.150 6.3.4 黑盒测试.153 6.3.5 自动化测试.158 6.4 软件测试过程.159 6.4.1 测试计划阶段.160 6.4.2 测试设计阶段.163 VIII 6.4.3 测试执行阶段.165 6.4.4 测试监控阶段.166 6.4.5 测试结束阶段.167 6.5 软件测试工具.168 6.5.1 静态分析工具.168 6.5.2 黑盒测试工具.168 6.5.3 单元测试工具.169 6.5.4 负载测试工具.169 习题 6.170 第 7 章 软件维护.171 7.1 软件维护基本概念.171 7.1.1 软件维护定义.172 7.1.2 软件维护特点.172 7.1.3 软件维护目的.173 7.1.4 软件维护组织.173 7.2 软件维护关键问题.174 7.2.1 软件维护技术问题.174 7.2.2 软件维护管理问题.175 7.2.3 软件维护成本预算.176 7.2.4 软件的可维护性.177 7.3 软件维护过程.179 7.3.1 软件维护过程概述.179 7.3.2 软件维护活动.180 7.4 软件维护技术.181 7.4.1 程序理解.181 7.4.2 再工程.182 7.4.3 逆向工程.184 7.4.4 迁移.185 7.4.5 退役.186 7.5 软件维护工具.186 习题 7.187 第 8 章 软件配置管理.188 8.1 软件配置管理的过程管理.189 8.1.1 软件配置管理的组织背景.189 8.1.2 软件配置管理涉及的人员.189 8.1.3 软件配置管理计划.190 8.1.4 软件配置管理的监管.191 8.2 软件配置标识.192 8.2.1 被管控项目的识别.192 IX 8.2.2 软件库.199 8.3 软件配置控制.201 8.3.1 软件变更请求.201 8.3.2 跟踪并控制变更.202 8.3.3 软件配置偏差和弃用.203 8.4 软件配置状态统计.203 8.5 软件配置审计.204 8.5.1 配置库审计.205 8.5.2 基线审计.205 8.6 软件构建和发布管理.206