1、单元 06 软件需求分析 2单元目标 需求规约与验证 需求管理学习任务任务描述了解什么是需求工程中需求规约,需求规约有哪些格式。什么是需求验证,验证需要注意哪些问题。为什么需要进行需求管理,以及需求管理的过程。知识准备6.1需求规约与验证需求规约是一个软件项/产品/系统所有需求陈述的正式文档, 它表达了一个软件产品/系统的概念模型。需求规约一般要满足以下 4 个基本性质:1)重要性和稳定性程度(Ranked for Importance and Stability):按需求的重要性和稳定性,对需求进行分级,例如:基本需求、可选需求和期望需求。2)可修改(Modifiable):在不过多地影响其
2、他需求的前提下,可以容易地修改一个单一需求。3)完整的(Complete):没有被遗漏的需求。4)一致的(Consistent):不存在互斥的需求。在实际工程中,需求规约的表达主要存在 3 中不同的风格。(1)非形式化的需求规约。非形式化的需求规约即以一种自然语言来表达需求规约,如同使用一种自然语言写了一篇文章。其中,可以不局限于该语言所约定的任何符号或特殊限制(例如,文法和词法),但要为那些在一个特定语境中所使用的术语提供语义定义。一般情况下,该语境与通常使用该术语的语境是有区别的。非形式化的需求规约一般适用于规模比较小的、 复杂程度不太高的小型软件项目,活在获取 SRS(草案)时使用。(2
3、)半形式化的需求规约。半形式化的需求规约即以半形式化符号体系 (包括术语表、 标准化的表达格式等) 来表达需求规约。 因此,半形式化规约的编制应遵循一个标准的表示模板 (一些约定) 。 其中:1)术语表明确地标识了一些词,可以基于某一种自然语言。2)标准化的表达格式(例如,数据流图、状态转换图、实体关系图、数据结构图以及过程结构图等)表示了一些元信息,支持以更清晰的方式系统化地来编制文档。应用中,不论是词还是标准化的表达格式,在表达上均必须遵循一些约定,即应以一种准确和一致的方式使用之。(3)形式化的需求规约形式化的需求规约即以一种基于良构数学概念的符号体系来编制需求规约,一般往往伴有解释性注
4、释的支持。其中:1)以数学概念来定义该符号体系的词法和语义。2)定义了一组支持逻辑推理证明规则,并支持这一符号体系的定义和引用。3)由于形式化语言的表达能力问题,因此在实际工程中,主要针对质量(特别是安全性)要求比较高的软件产品/系统或其中某一部分,采用形式化来表达需求,其目的主要是为了程序的正确性验证。需求规约的作用可概括为以下 4 点:1)需求规约是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。2)对于项目的其余大多数工作,需求规约是一个管理控制点。3)对于产品/系统的设计,需求规约是一个正式的、受控的起始点。4)需求规约是创建产品验收测试计划和用户指南的基础需求
5、规约和项目需求是两个不同的概念。 需求规约是软件开发组织和用户之间一份事实上的技术合同书,即关注产品需求,回答“交付给客户的产品/系统是什么”;而项目需求是客户和开发者之间有关技术合同-产品/系统需求的理解,应记录在工作陈述(Statement ofWork,SOW)中或其他某一项目文档(例如,项目管理计划)中,即关注项目工作与管理,回答“开发组要做什么”。6.2 需求管理需求管理(Requirement management)是完整管理模式中的一环,同其他特性诸如完整性、一致性等不可分割,彼此相关而成一体。一套需求管理应当是已知系统需求的完整体现, 每部分解决方案都是对总体需求一定比例的满足
6、(甚至是充分满足),仅仅解决部分需求是没有意义的。对关键需求的疏忽很可能是灾难性的,试想一架飞机的安全设计不过关将会带来什么样的后果。不同的需求组合起来,构成了一套完整的需求模型。用户需求决定了系统设计所要解决的问题,所要带来的结果。可以说,需求管理指明了系统开发所要做和必须做的每一件事, 指明了所有设计应该提供的功能和必然受到的制约。需求管理的过程,从需求获取开始贯于整个项目生命周期,力图实现最终产品同需求的最佳结合。 通过对需求管理在项目进程中实施的不同任务进行分析,我们可以看出需求管理所起的作用。需求管理是一组用于帮助项目组在项目进展中的任何时候去标识、控制和跟踪需求的活动.需求跟踪有两
7、种方式,正向跟踪与逆向跟踪。正向跟踪:以用户需求为切入点,检查需求规约中的每个需求是否都能在后继工作产品中找到对应点。逆向跟踪:检查设计文档、代码、测试用况等工作产品是否都能在需求规约中找到出处。在需求管理的流程中,需求的捕获手段固然重要,但在需求的捕获和需求最终成型的过程中,我们会面临各种和需求相关的信息和资料(也可以把这些信息笼统地称做需求),如何发现这些信息之间的关系并有效组织,更为关键. 需求类型 在 RUP 中,我们采用一种金字塔方式的管理办法,来组织和管理我们获取的信息乃至最终的需求.为了建立一个真正满足客户需求的系统,项目团队首先必须确定系统要解决的问题.然后,团队必须确定涉众,从中获得业务和用户需要,对其进行描述,并区分它们的优先级.从这一组高层期望或需求出发,对产品或系统特性集达成一致意见.而后,由产品特性来抽取软件需求,在我们的模型中,软件需求是以用例模型的方式来描述.从测试的角度来看,测试项一定来自于软件需求,即软件需求中确定了哪些需求项,测试就要根据这些需求项来制定和实现.需求管理过程任务实训实训目的需求规约与验证需求管理