本书全面和系统地介绍了软件需求工程的基本概念和原理,以及开发和管理软件需求的方法和技术。此外,本书也介绍了软件需求工程中的一些新方法和技术,并结合了许多典型实例。本书可作为本科生高年级和研究生的教材,也可供从事软件开发工作和研究的专业人员参考和自学。
无
随着计算机应用的不断发展和深入,人们需要收集和处理的信息规模急剧增大,其中计算机软件在信息收集和处理中起着至关重要的作用。一方面,由于软件已成为信息基础设施,其日益成为人们生活中的一部分,如电子政府、电子商务和手机等,又由于软件具备密集型特点,人们也日益依赖它。另一方面,一些高尖端的技术领域,如航空航天、国防军事等领域,对软件的质量提出了很高的要求。然而,软件的开发状况和质量远未达到人们的期望和要求,例如,大部分软件产品不能在预期计划和预算经费内完成,软件的质量低下等。软件质量所导致的软件故障和失效,常常对人们的工作和生活带来诸多不便,甚至造成重大损失。虽然产生上述问题的原因有很多,但软件需求问题可以说是其中的一个最大原因。许多人经过研究发现,当软件开发项目失败时,软件需求问题通常正是核心问题。因此,在软件开发过程中,必须极早、有效地发现和解决与软件需求相关的问题。
在很长一段时间里,人们并没有充分认识到软件需求的作用,软件工程界也一直没有将需求工程作为一个独立的部分进行深入的分析和研究。直到20世纪90年代中期,随着软件系统开发中出现诸多问题,人们才逐渐认识到软件需求在整个软件开发中的重要性。一系列关于软件需求的重要学术会议经过广泛深入的研究和讨论,才正式将需求工程作为一门独立的子学科。需求工程是指应用工程化的方法、技术和规格来开发与管理软件的需求。需求工程的目标就是要获取高质量的软件需求。与软件工程中传统的需求分析概念相比,需求工程突出了工程化的原则,强调以系统化、条理化和可重用的方法及技术进行与软件需求相关的活动,从而提高所有与软件需求相关的活动及其过程的可管理性,降低需求开发和管理的难度及成本。
本书共分为13章。第1章概要地介绍需求工程的历史背景、基本原理和一些基本概念。第2章介绍几种软件的开发过程模型、需求工程在软件工程和软件开发中的重要地位以及软件需求的开发和管理过程。第3~9章按需求工程中开发和管理过程的顺序介绍各个阶段的任务、步骤、方法和技术。其中,由于在需求工程中形式化理论的研究是相当重要的内容,因此第7章重点介绍在需求分析和需求定义中使用的一些基本理论和形式化描述方法。第10~12章主要讨论需求工程中近些年研究出来的理论和方法,如面向软件行为和视点的需求建模与检测方法、面向问题域的需求分析方法以及面向多视点的需求工程。这些理论和方法促进了需求工程的研究和发展。最后,第13章概要地介绍需求工程与软件管理的关系,以及如何根据需求安排开发进度和估算工作量。
鉴于需求工程在软件开发中的重要地位,软件开发人员有必要学习和了解需求工程的有关知识。目前,国外有关需求工程的教材和专业书籍已有很多,我国也出版了一些需求工程的翻译书籍。这些都是为了提高人们对需求工程重要性的认识,以及更进一步推动有关需求工程的理论、方法和技术的研究及实践。本书根据武汉大学软件学院所开设的需求工程课程的讲义和学生的建议,以及一些相关的资料编写而成。在编写过程中,本书也参考了国内出版的一些教材和翻译书籍,在此谨向这些书的作译者表示衷心的感谢。我们希望本书对从事软件开发的专业人士和计算机专业的学生有所帮助,并使他们获得一些有益的知识。
本书适合作为计算机专业高年级本科生和研究生的教材,也可供具有一定实践经验的软件开发人员和计算机用户等参考和自学。不过,本书中的部分内容是关于形式化理论和新方法方面的介绍,需要较好的理论基础和参考其他方面的资料,故建议在教学中根据学生的具体情况有选择地讲授本书的内容,如可在讲授中跳过第7章和第10章等。此外,需求工程是一门实践性较强的课程,虽然本书没有给出习题和思考题,但讲授需求工程课程的老师可根据本书的内容设置一些习题和思考题,读者也可在本书的基础上结合软件开发中的一些具体实例进行实验和实践。
本书得到了深圳大学的教材出版资助。在本书的写作过程中,除封面署名外,刘小丽、张帆、万黎、陈曙、吴怀广和黄勃等人也参与了部分工作,本书还得到了机械工业出版社华章分社的温莉芳副总经理和游静编辑的大力支持,借此表示衷心的感谢。由于编者的水平有限,书中难免出现错漏,敬请读者批评指正。
编者
2020年10月
计算机\软件工程
本书特色
软件需求工程在软件开发中的作用相当重要。本书在概要介绍需求工程的历史背景、基本原理和一些基本概念之后,按需求工程中开发和管理过程的顺序较详尽地介绍了各个阶段的任务、步骤、方法和技术,并在介绍过程中结合了许多典型实例。
本书系统性强、内容全面、理论与实际相结合,包含了需求可视化、面向软件行为和视点的需求建模与检测方法、敏捷模型、基于组件的模型、用例图、跟踪图等内容,反映了近年来软件需求工程的发展趋势和应用现状,有助于从事软件开发的专业人士参考和计算机专业的学生学习,并使他们从中获得有益的知识。
作者简介
梁正平 深圳大学计算机与软件学院副教授,CCF软件工程专委会委员。毕业于武汉大学计算机学院软件与理论专业,获工学博士学位。主持和参加国家863计划、国家自然科学基金、广东省自然科学基金等科研项目十余项,并完成各类产学研合作项目多项。主要研究兴趣包括软件工程、形式化方法与技术、计算智能及应用等。
毋国庆 武汉大学计算机学院教授、博士生导师。主要从事软件形式化理论、软件开发方法和技术、需求工程和可信软件等方面的研究。多年来,除承担本科和研究生教学工作外,科研方面曾参加“银河-Ⅰ”巨型计算机操作系统的研制工作,并承担和主持国家863计划、国家自然科学基金等多个项目,以及其他一些软件开发项目。在国内外学术期刊及国际学术会议上发表了多篇论文和研究报告。
梁正平 毋国庆 袁梦霆 李勇华 编著:梁正平 深圳大学计算机与软件学院副教授,CCF软件工程专委会委员。毕业于武汉大学计算机学院软件与理论专业,获工学博士学位。主持和参加国家863计划、国家自然科学基金、广东省自然科学基金等科研项目十余项,并完成各类产学研合作项目多项。主要研究兴趣包括软件工程、形式化方法与技术、计算智能及应用等。
毋国庆 武汉大学计算机学院教授、博士生导师。主要从事软件形式化理论、软件开发方法和技术、需求工程和可信软件等方面的研究。多年来,除承担本科和研究生教学工作外,科研方面曾参加“银河-Ⅰ”巨型计算机操作系统的研制工作,并承担和主持国家863计划、国家自然科学基金等多个项目,以及其他一些软件开发项目。在国内外学术期刊及国际学术会议上发表了多篇论文和研究报告。
前言
教学建议
第1章需求工程概述
11需求工程的重要性
12什么是软件需求
13软件需求的分类
14需求规格说明
15需求工程定义
16其他一些基本概念
第2章软件工程与需求工程
21软件工程
22软件开发过程模型
221瀑布式模型
222快速原型模型
223渐增式模型
224螺旋式模型
225敏捷模型
226基于组件的模型
23需求工程在软件开发中的地位
231需求工程对软件开发的影响
232需求工程面临的困难
24软件需求的开发和管理过程
第3章需求获取
31确定需求开发计划
32确定项目的目标和范围
33确定调查对象
34实地收集需求信息
341实地收集需求信息面临的困难
342实地调查的步骤
343实地收集需求信息的方式
344需求信息的分类
35确定非功能需求
36在收集需求信息中应注意的问题
37使用场景技术的需求获取
371场景的定义及构成
372场景的表示
373场景的种类
374场景技术的特点
38基于用例的需求获取
第4章需求分析
41建立系统关联图
42分析需求的可行性
43构建用户接口原型
44确定需求的优先级
45需求建模
46建立数据词典
第5章需求建模方法与技术
51什么是模型
52软件工程中的模型
53结构化的需求建模方法
531SA方法的基本思想
532SA方法的描述手段
533示例说明
534SA方法的分析步骤
54面向对象的需求建模方法
541面向对象方法中的一些基本概念
542面向对象的需求分析
543OMT方法的图形描述工具
544基于OMT方法的需求建模步骤
55基于图形的需求建模技术
551UML概述
552用例图
553活动图
554协作图
555实体关联图
第6章需求定义
61需求规格说明的作用
62需求规格说明的特性
63需求规格说明的结构和内容
64需求规格说明文档的编写要求
65需求规格说明的描述语言
第7章需求的形式化描述
71形式化规格说明及其方法
72形式化规格说明与软件开发
73基于公理或推理规则的形式化规格说明
74基于代数的形式化规格说明…
75形式描述语言Z
751Z简介
752Z的数学符号
753Z中的图表
754Z规约的示例
76形式描述语言LOTOS
761LOTOS简介
762LOTOS的数据描述语言
763LOTOS的进程
764LOTOS规约的示例
77B方法
771B方法简介
772B方法中的数学符号
773B方法中的抽象机
774B规约的示例
第8章需求验证
81需求验证的目的和任务
82需求验证的内容和方法
83需求评审
831审查人员的确定和分工
832正式的审查过程
833审查的内容
834需求评审面临的困难
84需求测试
85编制用户使用手册草案
86解释需求模型
87需求可视化
第9章需求管理
91需求变更控制
92需求规格说明文档的版本控制
93需求变更状态的跟踪
94需求跟踪
941可跟踪信息分类
942需求跟踪技术
第10章面向软件行为和视点的需求建模与检测方法
101基本原理
1011基本概念
1012基本步骤
102视点表示模型和视点管理
1021视点表示模型
1022划分问题域和标识视点的具体步骤
1023视点管理
103需求模型的具体构建方法
1031行为描述语言
1032行为描述语言的动态语义
1033构建行为模型的具体过程
1034实例说明
1035图形化输入
1036异类视点需求模型的转换实现
104需求模型的检测方法
1041检测内容
1042检测过程
1043检测过程中各检测方法的具体实现
105基于行为模型的需求可视化
106需求建模方法的特点
107进一步的研究
1071方法的实现
1072有待研究的问题
第11章面向问题域的需求分析方法
111问题域
112问题域的划分
113问题框架
114问题框架的类型
115PDOA方法的分析步骤
1151问题及问题域的界定与描述
1152基于问题框架的问题域划分
116问题框架实例间的关系及其组合
1161问题框架实例间的关系
1162问题框架实例的组合…
第12章面向多视点的需求工程
121什么是视点
122多视点与需求工程
123多视点需求工程的过程模型…
1231视点的标识
1232视点的表示
1233视点的分析
1234视点的集成
124示例
第13章需求工程与软件开发管理…
131需求与估算
132需求与项目进度安排
133基于需求的软件规模估算
134基于需求的工作量估算
附录A校园通系统
参考文献