本书的主要特色
软件需求工程在软件开发中的作用相当重要。本书在概要介绍了需求工程的历史背景、基本原理和一些基本概念之后,按需求工程中开发和管理过程的顺序较详尽地介绍了各个阶段的任务、步骤、方法和技术,在介绍过程中结合了许多典型实例。此外,本书还介绍了需求工程中近几年所研究出和正在研究的一些新理论和新方法。
本书的内容丰富,有助于从事软件开发的专业人士和计算机专业的学生们学习和参考。
作者简介
毋国庆,武汉大学计算机学院教授、博士生导师。主要从事软件形式化理论、软件开发方法和技术、需求工程和可信软件等方面的研究。多年来,除承担本科和研究生教学工作外,在科研方面曾参加“银河—Ⅰ” 巨型计算机操作系统的研制工作,并承担和主持国家863计划和国家自然科学基金等多个项目,以及其他一些软件开发项目。多次在日本东京大学等地从事软件工程和形式化理论方面的合作研究,在国内外学术期刊和国际学术会议上发表多篇论文和研究报告。
梁正平,2006年毕业于武汉大学计算机学院软件与理论专业,获工学博士学位,深圳大学信息工程学院副教授。曾参加过国家自然科学基金等多项科研课题,主要的研究兴趣包括软件工程、形式化方法与技术、可信计算等,先后讲授过软件需求、操作系统、高级语言程序设计、计算机基础等课程。
无
随着计算机应用的不断发展和深入,人们需要收集和处理的信息规模急剧增大,其中计算机软件在信息收集和处理中起着至关重要的作用。由于软件已成为信息基础设施并具备密集型特点,使得软件一方面日益成为人们生活中的一部分,如电子政府、电子商务和手机等,人们也日益依赖软件。另一方面,一些高尖端的技术领域,如航空航天、国防军事等领域,对软件的质量提出了很高的要求。然而,软件开发的开发状况和质量远未达到人们的期望和要求,例如,大部分软件产品不能在预期计划和预算经费内完成,软件的质量低下等。软件质量所导致的软件故障和失效,常常对人们的工作和生活带来诸多不便,甚至造成重大损失。虽然产生上述问题的原因有很多,但软件需求问题可以说是其中的一个最大原因。许多人经过研究发现,当软件开发项目失败时,软件需求问题通常正是核心问题。因此,在软件开发过程中,必须极早和有效地发现和解决与软件需求相关的问题。
在很长一段时间里,人们并没有充分认识到软件需求的作用,软件工程界也一直没有将需求工程作为一个独立的部分进行深入的分析和研究。直到20世纪90年代中期,随着软件系统开发中出现的诸多问题,人们才逐渐认识到软件需求在整个软件开发中的重要性。通过一系列关于软件需求的重要学术会议进行广泛深入的研究和讨论,才使得需求工程作为一门独立的子学科正式形成。需求工程是指应用工程化的方法、技术和规格来开发和管理软件的需求。需求工程的目标就是要获取高质量的软件需求。与软件工程中传统的需求分析概念相比,需求工程突出了工程化的原则,强调以系统化、条理化和可重用的方法和技术进行与软件需求相关的活动,从而有利于提高所有与软件需求相关的活动及其过程的可管理性,降低需求开发和管理的难度和成本。
本书共分为12章。第1章概要地介绍了需求工程的历史背景、基本原理和一些基本概念。第2章介绍了几种软件的开发过程模型、需求工程在软件工程和软件开发中的重要地位以及软件需求的开发和管理过程。第3~9章按需求工程中开发和管理过程的顺序介绍各个阶段的任务、步骤、方法和技术。其中,由于在需求工程中形式化理论的研究是相当重要的内容,故第7章重点介绍在需求分析和需求定义中使用的一些基本理论和一些形式化描述方法。第10章和第11章主要讨论和介绍需求工程中近几年所研究出的新理论和新方法,如面向问题域的需求建模方法和面向多视点的需求工程方法。尽管这些新理论和新方法尚未实用化,但它们促进了需求工程的研究和发展。最后,第12章概要地介绍了需求工程与软件管理的关系,以及如何根据需求安排开发进度和估算工作量的方法。
基于需求工程在软件开发中的重要地位,软件开发人员有必要学习和了解需求工程的有关知识。目前,国外有关需求工程的教材和专业书籍已有很多,我国也出版了一些需求工程的翻译书籍。这些都是为了提高人们对需求工程重要性的认识,以及更进一步推动有关需求工程的理论、方法和技术的研究和实践。本书的编者们多年来一直从事需求工程方面的研究和教学实践,特别是本书的第一作者在武汉大学软件学院以多届计算机专业和非计算机专业的研究生为对象进行了有关需求工程课程的讲授。本书也是根据该课程的讲义和学生们的建议,以及一些相关的资料编写而成的。在编写过程中,本书也参考了国内出版的一些教材和翻译书籍。在此,谨向这些书的作者们表示衷心的感谢。编者们希望此书有助于从事软件开发的专业人士和计算机专业的学生们的工作和学习,并从中获得一些有益的知识。
本书适合作为计算机专业高年级本科生和研究生的教材,也可供具有一定实践经验的软件开发人员和计算机用户等参考和自学。不过,本书中部分内容是关于形式化理论和新方法方面的介绍,需要较好的理论基础和参考其他方面的资料,故建议在教学中应根据学生的具体情况有选择地讲授本书的内容,如可在讲授中跳过第7章和第10章等。此外,需求工程是一门实践性较强的课程,虽然本书没有给出习题和思考题,但讲授需求工程课程的老师可根据本书的内容设置一些习题和思考题,读者可在本书的基础上结合软件开发中的一些具体实例进行实验和实践。
在本书的写作过程中,除封面署名外,刘小丽、张帆和万黎等参与了部分工作,特别是机械工业出版社华章分社的有关人员给予了极大的支持和帮助。此外,本书也得到国家高技术研究计划(863计划)的资助,借此表示衷心的感谢。
由于需求工程诞生的时间相对较为短暂,还处于发展过程中,加之编者们的水平有限,错误在所难免,恳请多多指教。
作者
2008年7月
于武汉
本书的主要特色
软件需求工程在软件开发中的作用相当重要。本书在概要介绍了需求工程的历史背景、基本原理和一些基本概念之后,按需求工程中开发和管理过程的顺序较详尽地介绍了各个阶段的任务、步骤、方法和技术,在介绍过程中结合了许多典型实例。此外,本书还介绍了需求工程中近几年所研究出和正在研究的一些新理论和新方法。
本书的内容丰富,有助于从事软件开发的专业人士和计算机专业的学生们学习和参考。
作者简介
毋国庆,武汉大学计算机学院教授、博士生导师。主要从事软件形式化理论、软件开发方法和技术、需求工程和可信软件等方面的研究。多年来,除承担本科和研究生教学工作外,在科研方面曾参加“银河—Ⅰ” 巨型计算机操作系统的研制工作,并承担和主持国家863计划和国家自然科学基金等多个项目,以及其他一些软件开发项目。多次在日本东京大学等地从事软件工程和形式化理论方面的合作研究,在国内外学术期刊和国际学术会议上发表多篇论文和研究报告。
梁正平,2006年毕业于武汉大学计算机学院软件与理论专业,获工学博士学位,深圳大学信息工程学院副教授。曾参加过国家自然科学基金等多项科研课题,主要的研究兴趣包括软件工程、形式化方法与技术、可信计算等,先后讲授过软件需求、操作系统、高级语言程序设计、计算机基础等课程。
近20年里,计算机学科有了很大的发展,人们普遍认为,“计算机科学”这个名字已经难以涵盖该学科的内容,因此,改称其为计算学科(Computing Discipline)。在我国本科教育中,1996年以前曾经有计算机软件专业和计算机及应用专业,之后被合并为计算机科学与技术专业。2004年以来,教育部计算机科学与技术教学指导委员会根据我国计算机专业教育和计算学科的现状,为更好地满足社会对计算机专业人才需求,发布了《高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)》(以下简称《规范》),提出在计算机科学与技术专业名称之下,构建计算机科学、计算机工程、软件工程和信息技术四大专业方向。《规范》中四大专业方向的分类,在于鼓励办学单位根据自己的情况设定不同的培养方案,以培养更具针对性和特色的计算机专业人才。
为配合《规范》的实施,落实中央“提高高等教育质量”的精神,我们规划了“面向计算机科学与技术本科专业规范系列教材”。本系列教材面向全新的计算学科,针对我国高等院校逐步向新的计算机科学与技术专业课程体系过渡的趋势编写,在知识选择、内容组织和教学方法等方面满足《规范》的要求,并与国际接轨。本套教材具有以下几个特点:
(1) 体现《规范》的基本思想,满足其课程要求。为使教材符合我国高等院校的教学实际,编委会根据《规范》的要求规划本套教材,广泛征集在国内知名高校中从事一线教学和科研工作、经验丰富的优秀教师承担编写任务。
(2) 围绕“提高教育质量”的宗旨开发教材。为了确保“精品”,本系列教材的出版不走盲目扩大的路子,每本教材的选题都将由编委会集体论证,并由一名编委担任责任编委,最大程度地保证这套教材的编写水准和出版质量。
(3) 教材内容的组织科学、合理,体系得当。本套教材的编写注重研究学科的新发展和新成果,能够根据不同类型人才培养需求,合理地进行内容取舍、组织和叙述,还精心设计了配套的实验体系和练习体系。
(4) 教材风格鲜明。本套教材按4个专业方向统一规划,分批组织,陆续出版。教材的编写体现了现代教育理念,探讨先进的教学方法。
(5) 开展教材立体化建设。根据需要配合主教材的建设适时开发实验教材、教师参考书、学生参考书、电子参考资料等教辅资源,为教学实现多方位服务。
我们衷心希望本系列教材能够为我国高等院校计算机科学与技术等专业的教学作出贡献,欢迎广大读者广为选用。
“面向计算机科学与技术专业规范系列教材”编委会
出版者的话
序言
前言
教学建议
第1章需求工程概述1
11需求工程的重要性1
12什么是软件需求2
13软件需求的分类3
14需求规格说明4
15需求工程定义5
16其他一些基本概念6
第2章软件工程与需求工程7
21软件工程7
22软件开发过程模型7
221瀑布式模型8
222快速原型模型9
223渐增式模型10
224螺旋式模型11
225面向对象的开发模型12
23需求工程在软件开发中的地位13
231需求工程对软件开发
的影响13
232需求工程面临的困难14
24软件需求的开发和管理过程15
第3章需求获取17
31确定需求开发计划17
32确定项目的目标和范围18
33确定调查对象19
34实地收集需求信息22
341实地收集需求信息面临
的困难22
342实地调查的步骤23
343实地收集需求信息的
方式23
344需求信息的分类24
35确定非功能需求26
36在收集需求信息中应注意的
问题27
37使用场景技术的需求获取28
371场景的定义及构成28
372场景的表示29
373场景的种类29
374使用用例的需求获取30
375场景技术的特点31
第4章需求分析32
41建立系统关联图32
42分析需求的可行性33
43构建用户接口原型34
44确定需求的优先级别35
45需求建模36
46建立数据词典37
第5章需求建模方法与技术38
51什么是模型38
52软件工程中的模型39
53结构化的需求建模方法40
531SA方法的基本思想41
532SA方法的描述手段41
533实例说明49
534SA方法的分析步骤52
54面向对象的需求建模方法54
541面向对象方法中的
一些基本概念54
542面向对象的需求分析57
543OMT方法的图形描述
工具58
544基于OMT方法的需求
建模步骤64
55基于图形的需求建模技术78
551UML概述78
552活动图79
553协作图80
554实体关联图81
第6章需求定义83
61需求规格说明的作用83
62需求规格说明的特性84
63需求规格说明的结构和内容85
64需求规格说明文档的编写
要求91
65需求规格说明的描述语言93
第7章需求的形式化描述96
71形式化规格说明及其方法96
72形式化规格说明与软件开发97
73基于公理或推理规则的形式
化规格说明98
74基于代数的形式化规格说明100
75形式描述语言Z Notation101
751Z Notation简介101
752Z Notation的数学
符号101
753Z Notation中的图表102
754Z Notation规约的
实例103
76形式描述语言LOTOS106
761LOTOS简介106
762LOTOS的数据描述
语言106
763LOTOS的进程107
764LOTOS规约的实例109
77B方法110
771B方法简介110
772B方法中的数学符号111
773B方法中的抽象机112
774B规约的实例114
第8章需求验证116
81需求验证的目的和任务116
82需求验证的内容和方法117
83需求评审117
831审查人员的确定和
分工118
832正式的审查过程119
833审查的内容120
834需求评审面临的困难121
84需求测试121
85编制用户使用手册草案122
86解释需求模型123
第9章需求管理124
91需求变更控制124
92需求规格说明文档的版本
控制128
93需求变更状态的跟踪128
94需求跟踪129
941可跟踪信息分类130
942需求跟踪技术130第10章面向问题域的需求
分析方法133101问题域133
102问题域的划分135
103问题框架135
104问题框架的类型136
105PDOA方法的分析步骤141
1051问题及问题域的
界定与描述141
1052基于问题框架的
问题域划分145
106问题框架实例间的关系及
其组合150
1061问题框架实例间的
关系150
1062问题框架实例的
组合151
第11章面向多视点的需求工程153
111什么是视点153
112多视点与需求工程154
113多视点需求工程的过程模型…155
1131视点的标识156
1132视点的表示1571133视点的分析159
1134视点的集成162
114实例163
第12章需求工程与软件开发管理…170
121需求与估算170
122需求与项目进度安排171
123基于需求的软件规模估算172
124基于需求的工作量估算173
参考文献175