第三章需求工程•3.1概述•3.2需求获取方法•3.3需求分析的任务与原则•3.4需求建模方法•3.5需求图形工具•3.6需求验证•3.7需求管理3.1概述3.1.1软件需求定义3.1.2软件需求分类3.1.3需求规格说明3.1.4需求工程概念3.1.5需求工程过程3.1概述•软件需求工程的目的是定义软件所需要解决的问题。•软件需求是要把一个定义不足和模糊的问题转换为一个定义良好而准确的问题,进而找到解决问题的方案。3.1概述主要困难:1.软件开发人员与用户双方固有的矛盾2.需求具有易变性和难以表述性3.需求错误的高频性和修复的高成本性3.1概述3.1.1软件需求定义软件需求是指用户对软件的功能与性能需求,就是用户希望软件能够做什么事情,完成哪些功能,达到哪些性能等。3.1概述3.1.2软件需求分类1.业务需求说明软件系统必须完成的任务、实际业务或工作流程等。2.目标需求反映组织机构或客户对系统和产品提出的高层次的目标要求。3.功能需求指开发人员必须实现的软件功能或软件系统应具有的外部行为。3.1概述3.1.2软件需求分类4.性能需求指实现的软件系统功能应达到的技术指标,例如响应时间、精度、可扩展性等。5.约束与限制指软件开发人员在设计和实现软件系统时的限制,例如开发语言、数据库管理系统等。3.1概述3.1.3需求规格说明需求规格说明是指软件所应满足的全部要求,并用文档方式完整和精确描述。全部要求是指软件系统必须提供的功能和性能、约束条件和限制。3.1概述3.1.3需求规格说明软件需求规格说明的一般格式:1.引言2.任务概述3.数据描述4.功能要求5.性能需求6.运行需求7.其他要求(如可使用性、安全保密、可维护性、可移植性等)8.附录3.1概述3.1.3需求规格说明需求规格说明的特性如下:1.完整性2.正确性3.可行性4.必要性5.无歧义性6.可验证性7.划分优先级3.1概述3.1.4需求工程概念•需求工程就是应用工程化的方法、技术和规格来开发和管理软件的需求。•需求工程的目标是获取高质量的软件需求。•需求工程突出了工程化原则,强调以系统化、条理化和重复化的方法进行软件需求的相关活动,从而增强了管理性和降低了需求开发的成本3.1概述3.1.4需求工程概念需求工程的任务:1.确定待开发的软件系统的用户,并获取用户的需求信息。2.分析用户的需求信息,并按需求类型分类,过滤掉非需求的信息。3.根据需求信息建立软件系统的逻辑模型和需求模型,确定非功能需求和约束条件及限制。3.1概述3.1.4需求工程概念需求工程的任务:4.根据收集的需求信息和逻辑模型编写需求规格说明及文档。5.评审需求规格说明。6.当需求变更时,对需求规格说明及需求变更实施进行管理。3.1概述3.1.5需求工程过程需求工程过程分为需求开发和需求管理两阶段。需求获取需求分析需求描述需求验证需求管理需求开发过程需求管理过程3.1概述3.1.5需求工程过程1.需求获取确定和收集与待开发的软件系统相关的用户需求信息。2.需求分析对获得的用户需求信息进行分析和综合,找出错误和冲突及遗漏的地方,获得用户的准确的需求,进而建立软件系统的逻辑模型或需求模型。3.需求定义利用描述语言、标准格式书写软件系统的需求规格说明和文档。3.1概述3.1.5需求工程过程4.需求验证审查和验证软件系统需求规格说明,进而确定需求规格说明是否正确描述了用户对软件系统的需求。5.需求管理需求管理的任务是管理软件系统的需求规格说明和文档,评估需求变更带来的影响及成本费用,跟踪软件需求的状态,管理需求规格说明的版本等。3.2需求获取方法3.2需求获取方法需求获取过程确定需求开发计划建立项目范围和目标确定调查对象实地收集用户需求信息确定非功能需求和约束条件3.2需求获取方法1.确定需求开发计划本项工作的基本任务是确定需求开发的步骤,提出收集需求活动的具体安排和进度。2.确定项目范围和目标项目目标主要指项目开发的目的和意义,以及软件系统的目标。3.确定调查对象确定调查对象的基本任务是明确地确定来自不同层次的需求来源和用户,并将其分类。3.2需求获取方法4.实地收集用户需求信息实地收集需求信息阶段的任务是到现场实地调查和与用户交流,收集和理解用户需求信息。5.确定非功能性需求非功能需求是表明软件能否良好运行的定性指标。常用的非功能性需求如下:①可靠性②可用性③安全性④互操作性⑤易用性⑥可维护性⑦可移植性⑧可用性⑨健壮性3.3需求分析的任务与原则3.3.1需求分析的任务3.3.2需求分析的原则3.3需求分析的任务与原则3.3.1需求分析的任务•需求分析的基本任务是分析与综合已收集到的需求信息,通过分析找出需求信息内在联系和可能的矛盾,通过综合找出解决问题的方法并建立系统的逻辑模型。•具体地说,需求分析的是提炼、分析和审查已收集到的需求信息,找出真正的和具体的需求,并确保所有相关人员都理解其含义。3.3需求分析的任务与原则3.3.1需求分析的任务1.绘制系统关联图关联图是用于定义系统与系统外部实体间的界限和接口的简单模型。2.创建用户接口原型当开发人员或用户不能确定软件需求时,开发一个用户接口原型(可能的局部实现),这样使得许多概念和可能发生的事更为直观明了。3.3需求分析的任务与原则3.3.1需求分析的任务3.分析需求可行性在允许的成本、性能要求下,分析每项需求实施的可行性。4.确定需求的优先级应用分析方法来确定使用实例、产品特性或单项需求实现的优先级。5.为需求建立模型需求的图形分析模型是软件需求规格说明的补充说明。3.3需求分析的任务与原则3.3.1需求分析的任务6.创建数据字典数据字典是对系统用到的所有数据项和结构的定义,以确保开发人员使用统一的数据定义。7.质量功能调配质量功能调配是一种高级系统技术,它将产品特性、属性与对客户的重要性联系起来。该技术提供了一种分析方法以明确那些是客户最为关注的特性。3.3需求分析的任务与原则3.3.2需求分析的原则1.必须能够表达和理解问题的数据域和功能域对于计算机程序处理的数据,其数据域应包括数据流、数据内容和数据结构。就是将一种形式的数据转换成另一种形式的数据。3.3需求分析的任务与原则3.3.2需求分析的原则2.按自顶向下、逐层分解问题•分解问题是把问题以某种方式分解为几个较易理解的部分,并确定各部分间的接口,从而实现整体功能。•在需求分析阶段,软件的功能域和信息域都能做进一步的分解。这种分解可以是同一层次上的,称为横向分解;也可以是多层次的纵向分解。3.3需求分析的任务与原则3.3.2需求分析的原则3.要给出系统的逻辑视图和物理视图•这对系统满足处理需求所提出的逻辑限制条件和系统中其他成分提出的物理限制条件是必不可少的。•软件需求的逻辑视图给出软件要达到的功能和要处理数据之间的关系。•软件需求的物理视图给出处理功能和数据结构的实际表示形式。3.4需求建模方法3.4.1结构化需求建模方法3.4.2数据流图3.4.3数据字典3.4需求建模方法•需求建模方法的共同特性:1.提供描述手段2.提供基本步骤•建模方法主要包括结构化的需求建模方法和面向对象的需求建模方法3.4需求建模方法3.4.1结构化需求建模方法•基本特点是表达问题时尽可能使用图形符号的形式,设计数据流图时只考虑系统必须完成的基本功能,不必考滤如何具体实现这些功能。•基本思想是按照由抽象到具体、逐层分解的方法,确定软件系统内部的数据流、变换关系,并用数据流图表示。•描述手段①一套分层的数据流图②一本词典③其他补充材料3.4需求建模方法3.4.2数据流图1.数据流图的含义数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的传输变换过程。2.数据流图的特性(1)抽象性(2)概括性(3)层次性3.数据流图基本符号(1)源点(2)加工(3)数据流(4)数据存储文件4.数据流图的用途--作为交通信息的工具。3.4需求建模方法3.4.2数据流图5.数据流图的优缺点(1)总体概念强,每一层都明确强调干什么,需要什么,给出什么。(2)可以反映出数据的流向和处理过程。(3)由于自顶向下分析,容易及早发现并修正系统各部分的逻辑错误。(4)容易与计算机处理相对照。(5)不直观(6)人工绘制太麻烦,工作量较大。3.4需求建模方法3.4.2数据流图6.数据流图的画法(1)画数据流图的一般原则画数据流图的基本步骤概括地说,就是自外向内,自顶向下,逐层细化,完善求精。(2)数据流图的分层方法3.4需求建模方法3.4.2数据流图7.数据流图的绘制与其他流程图的差别(1)数据流图与系统流程图的区别将物流与资金流排除在外(2)数据流与程序流程图的区别只反映数据的流向、处理逻辑和必要的数据存储,它不反映处理逻辑的先后的时间顺序3.4需求建模方法3.4.2数据流图7.数据流图的绘制与其他流程图的差别(3)数据流与程序结构图的区别不反映控制关系、调用关系、控制流,只画数据流(4)数据流与控制流的区别有数据(指表示事物的信息,而不是控制信号)流过3.4需求建模方法3.4.3数据字典1.数据字典的定义数据字典是定义目标系统中使用的所有数据元素和结构的含义、类型、数量值、格式和度量单位、精度及允许取值范围内的共享数据仓库。2.数据字典的内容(l)数据流(2)数据项(3)数据结构(4)数据存储(5)处理逻辑(6)外部实体3.定义数据的方法--对数据自顶向下的分解3.4需求建模方法3.4.3数据字典4.数据字典的用途数据字典最重要的用途是作为分析阶段的工具。5.数据字典的实现目前实现数据字典有三种常见的途径:全人工过程,全自动化过程(利用数据字典处理程序)和混合过程(用正文编辑程序、报告生成程序等已有的实用程序帮助人工过程)。3.5需求图形工具3.5.1层次方框图3.5.2Warnier图3.5.3IPO图3.5需求图形工具3.5.1层次方框图•层次方框图用树形结构的一系列多层次的矩形框描述数据的层次结构。树形结构的顶层是一个单独的矩形框,它代表完整的数据结构,下面的各层矩形框代表这个数据的子集,最底层的各个框代表组成这个数据的实际数据元素(不能再分割的元素)。•系统分析员从对顶层信息的分类开始,沿图中每条路径反复细化,直到确定了数据结构的全部细节为止。3.5需求图形工具3.5.2Warnier图用Warnier图可以表明信息的逻辑组织,它不仅可以指出一类信息或一个信息量是重复出现的,也可以表示特定信息在某一类信息中是有条件出现的。3.5需求图形工具3.5.3IPO图•IPO图是输入/处理/输出图的简称,它是美国IBM公司提出的一种图形工具,能够方便地描绘输入数据、处理数据和输出数据的关系。•它的基本形式是在左边的框中列出有关的输入数据,在中间的框中列出主要的处理,在右边的框中列出产生的输出数据。3.6需求验证3.6.1目的与任务3.6.2内容与方法3.6.3需求评审3.6需求验证3.6.1目的与任务需求验证的目的是确保需求规格说明具有良好(例如完整性和正确性)。需求验证的任务就是要求各方人员从不同技术角度对需求规格说明文档作出综合性评价。3.6需求验证3.6.2内容与方法需求分析评审的主要内容:1.一致性:所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。2.完整性:需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。3.现实性:指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。4.有效性:必须证明需求是正确有效的,确实能解决用户所需的问题。3.6需求验证3.6.2内容与方法需求验证的方法:1.验证需求的一致性自然语言书写靠人工技术审查验证软件系统规格说明书的正确性当软件需求规格说明书是用形式化的需求陈述语言书写的时候,可以用软件工具验证需求的一致性。2.完整性:需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。3.现实性:指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。4.有效性:必须证明需求是正确有效的,确实能解决用户所需的问题。3.6需求验证3.6.2内容与方法需求