《软件需求工程简介.ppt》由会员分享,可在线阅读,更多相关《软件需求工程简介.ppt(44页珍藏版)》请在三一办公上搜索。
1、1,Software Requirements Engineering软件需求工程,郑州大学软件学院 软件工程专业必修课程,授课对象:本科3年级授课教师:徐强,2,关于本课程,授课对象:计算机科学和软件工程专业的高年级本科生及研究生。授课学时:每周4学时,共9-10周。课程目的:为工业界培养需求工程师,为学术界准备从事相关研究的学者。,3,授课目标:通过这门课达到掌握如下的知识和技能了解需求工程在软件工程和系统工程中的重要地位了解需求工程的性质了解和应用需求工程的概念,方法,过程和工具理解掌握需求开发各阶段的技术理解掌握需求管理的技术学习需求工程领域当前最新研究成果和实践,关于本课程,4,软件
2、需求工程概述软件需求过程需求获取需求分析需求规格说明需求验证需求管理需求开发向设计规划的转化,课程提纲,软件需求工程简介,了解软件需求开发中使用的一些关键名词。警惕在软件项目中可能出现的与需求相关的一些问题。知道优秀的需求规格说明应该具有的特点。明白需求开发与需求管理之间的区别。,5,6,软件开发的目标,软件开发的目标,简单而言,就是满足用户的需求。,软件需求的定义,软件产业存在的一个问题就是缺乏统一定义的名词术语来描述我们的工作。客户所定义的“需求”对开发者似乎是一个较高层次的产品概念。而开发人员所说的“需求”对用户来说又像是详细设计了。实际上,软件需求包含着多个层次,不同层次是从不同角度与
3、不同程度反映着细节问题。,7,软件需求的定义,用户所需要的并能触发一个程序或系统开发工作的说明。从系统外部能发现系统所具有的满足于用户的特点、功能、属性等。指明必须实现什么样的规格说明。它描述了系统的行为、特性或属性,是在开发过程中对系统的约束。,8,软件需求的定义,IEEE软件工程标准词汇表(1997年)中定义需求为:用户解决问题或达到目标所需的条件或权能(Capability)。系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能。一种反映上面或所描述的条件或权能的文档说明。,9,10,需求的层次,软件需求包括三个不同的层次。业务需求 用户需求 功能需求(包括非功能需
4、求),11,需求的层次,业务需求(business requirement)反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明。,12,需求的层次,用户需求(user requirement)用户需求文档描述了用户使用产品必须要完成的任务,这在使用实例文档或方案脚本说明中予以说明。,13,需求的层次,功能需求(functional requirement)定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。,14,需求关系图,软件需求各组成部分之间的关系,15,术语的定义,软件需求规格说明(software requirements
5、 specification简称“SRS”)在软件需求规格说明中说明的功能需求充分描述了软件系统所应具有的外部行为。软件需求规格说明在开发、测试、质量保证、项目管理以及相关项目功能中都起了重要的作用。,16,术语的定义,非功能需求作为功能需求的补充,描述了系统展现给用户的行为和执行的操作等。它包括产品必须遵从的标准、规范和合约;外部界面的具体细节;性能要求;设计或实现的约束条件及质量属性。,17,术语的定义,约束条件指对开发人员在软件产品设计和构造上所具有的选择限制。,质量属性通过多种角度对产品的特点进行描述,从而反映产品功能。多角度描述产品对用户和开发人员都极为重要。,18,用例,字处理程序
6、为例 业务需求:“用户能有效地纠正文档中的拼写错误”。用户需求:“找出文档中的拼写错误并通过一个提供的替换项列表来供选择替换拼错的词”。功能需求:找到并高亮度提示错词的操作。显示提供替换词的对话框实现整个文档范围的替换,19,什么是需求,需求的基本概念 宽泛地讲,需求来源于用户的一些“需要”,这些“需要”被分析、确认后形成完整的文档,该文档详细说明了产品“必须或应当”做什么。需求描述必须给出为什么需要这样一个系统,通常,需求描述系统要做什么,而不是怎么做。“为什么”和“做什么”是指系统的设计目的,是置身系统外部,对应用领域性质的描述。“怎么做”是指系统的内部结构和行为。,20,需求的重要性,在
7、软件工程项目中,所有的利益相关者(stakeholder)都感兴趣的就是需求分析阶段。利益相关者包括客户、用户、业务或需求分析员、开发人员、测试人员、用户文档编写者、项目管理者和客户管理者。需求分析奠定了软件工程和项目管理的基础。,21,需求的重要性,需求的重要性:开发软件系统最困难的部分就是准确说明开发什么。最困难的概念性工作是编写出详细的需求,包括所有面向用户、面向机器和其它软件系统的接口。此工作一旦做错,将会给系统带来极大的损害,并且以后对它修改也极为困难。,22,需求是产品的根源,需求工作的优劣对产品影响最大。就像一条河流,如果源头被污染了,那么整条河流也就被污染了。国内软件业的痼疾:
8、人们并不清楚究竟该做什么,但却一直忙碌不停地开发。,需求的重要性,23,需求错误的代价,在生命周期的不同阶段修复缺陷的相对成本,24,需求缺陷造成的成本增加,重新进行需求规格说明重新设计重新编码重新测试改变订单告诉用户将以一个修正后的版本来替代有缺陷的版本。纠正活动消除由于不准确的特定系统的错误造成的危害,可能涉及到赔偿客户损失。报废包括对于已经完成的代码、设计和测试,当发现它们是根据不正确的需求进行的时候,这些工作成果不得不被丢弃。收回有缺陷的软件产品以及相关的用户手册。产品赔偿或保修的成本。重新安装新版本的成本。重新建档的成本。,25,需求风险,无足够用户参与。用户需求的不断扩展。模棱两可
9、的需求。不必要的特性。过于精简的规格说明。忽略了用户分类。不准确的计划。,26,需求风险,无足够用户参与。客户经常不明白为什么收集需求和确保需求质量需花费那么多功夫。在某些情况下,而且客户也不太明白用户的真正需求。开发人员可能也不重视用户参与。原因:一来因为与用户合作不如编写代码有兴趣;二来因为他们觉得已经明白用户的需求了。应让具有代表性的用户在项目早期直接参与到开发队伍中,并一同经历整个开发过程。,27,需求风险,用户需求的不断扩展。在开发中若不断地补充需求,项目就越变越庞大以致超过其计划安排及预算范围。用户需求的扩展将带来过度的耗费和降低产品的质量。要控制变更范围的不断扩展,必须一开始就对
10、项目视图、范围、目标、约束限制和成功标准给予明确说明,并将此说明作为评价需求变更和新特性的参照框架。,28,需求风险,模棱两可的需求。模棱两可是需求规格说明中最为可怕的问题。它的一层含义是指诸多读者对需求说明产生了不同的理解。另一层含义是指单个读者能用不止一个方式来解释某个需求说明。,29,需求风险,模棱两可的需求。模棱两可的需求会使会使开发人员为错误问题而浪费时间,并且使测试者与开发者所期望的也不一致。模棱两可的需求带来不可避免的后果便是返工。处理模棱两可需求的一种方法是组织好负责从不同角度审查需求的队伍。使用检测模棱两可的技术审查需求。,30,需求风险,不必要的特性。所谓“画蛇添足”,指开
11、发人员力图增加一些“用户欣赏”但需求规格说明中并未涉及的新功能性。但是用户并不认为这些功能性有用,以致在其上耗费的努力“白搭”了。客户有时也可能要求一些看上去很“酷”,但缺乏实用价值的功能,而这些只能徒耗时间和成本。明白为什么要包括这些功能,以及关于这些功能的“来龙去脉”,这样使得需求分析过程始终是注重那些能使用户完成他们业务任务的核心功能。,31,需求风险,过于精简的规格说明。容易导致遗漏某些关键需求。会给开发人员带来挫折,(使他们在不正确的假设前提下和极其有限的指导下工作)。也会给客户带来烦恼(他们无法得到他们所设想的产品)。重视需求分析的重要性,完成尽量详细的需求说明。,32,需求风险,
12、忽略了用户分类。多数产品是由不同的人使用其不同的特性,使用频繁程度也有所差异,使用者受教育程度和经验水平也不尽相同。忽略某一部分用户类的需求将导致众多客户的不满。不在项目早期就针对所有这些主要用户进行分类的话,必然导致有的用户对产品感到失望。,33,需求风险,不准确的计划。对需求分析缺乏理解会导致过分乐观的估计,而当不可避免的超支发生时,会带来颇多麻烦。通常未经准备的估计是作为一种猜测而给出的,听者却认为是一种承诺。我们要尽力给出可达到预期的期望并坚持一贯如此。,34,需求风险,不准确的计划。需求过程中软件成本估计极不准确的原因主要有以下五点:频繁的需求变更;遗漏的需求;与用户交流不够;质量低
13、下的需求规格说明不完善的需求分析,35,高质量的需求过程带来的好处,在开发后期和整个维护阶段的重做的工作大大减少了。让用户积极参与需求收集过程能使产品更富有吸引力,而且能建立起更加忠实的客户关系。用户的参与能弥补用户期望和开发者实际开发之间的“鸿沟”(期望差异)。将确定的系统需求明确地分配到各软件子系统,确保软硬件系统功能匹配适当。有效的变更控制也能降低需求变更带来的负面影响。将需求编写成清晰、无二义性的文档将会极大地有利于系统测试,确保产品质量。,36,优秀需求说明的特征,正确性。完整性。无二义性。必要性。可行性。划分优先级。可验证性。,37,优秀需求说明的特征,正确性。每一项需求都必须准确
14、地陈述其要开发出的功能性。只有用户代表才能确定用户需求的正确性,这就是为何一定要有用户的积极参与的原因。没有用户参与的需求只是是评审者凭空猜测。,38,优秀需求说明的特征,完整性。不能遗漏任何必要的需求信息。遗漏需求将很难查出。每一项需求都必须将所要实现的功能描述清楚。开发人员可以从需求规格说明中获得设计和实现这些功能所需的所有必要信息。,39,优秀需求说明的特征,无二义性。对所有需求说明的读者都只能有一个明确统一的解释。尽量把每项需求用简洁明了的用户性的语言表达出来。避免二义性的有效方法包括对需求文档的正规审查,编写测试用例,开发原型以及设计特定的方案脚本。,40,优秀需求说明的特征,必要性
15、。每一项需求都应把客户真正所需要的和最终系统所需遵从的标准记录下来。“必要性”也可以理解为每项需求都是用来授权你编写文档的“根源”。要使每项需求都能回溯至某项客户的输入,如使用实例或别的来源。,41,优秀需求说明的特征,可行性。每一项需求都必需是在已知系统和环境的权能和限制范围内可以实施的。最好在获取需求过程中始终有一位软件工程小组的组员与需求分析人员或考虑市场的人员在一起工作,由他来负责技术可行性上的检查。,42,优秀需求说明的特征,划分优先级。给每项需求、特性或使用实例分配一个实施优先级以指明它在特定产品中所占的分量。不划分优先级,将导致项目管理者在开发或节省预算或调度中就丧失控制自由度。
16、,43,优秀需求说明的特征,可验证性。检查一下每项需求是否能通过设计测试用例或其它的验证方法,如用演示、检测等来确定产品是否确实按需求实现了。如果需求不可验证,则确定其实施是否正确就成为主观臆断,而非客观分析了。一份前后矛盾,不可行或有二义性的需求也是不可验证的。,44,Textbook/References,需求工程:Requirements Engineering:A Good Practice Guide./(英)Ian Sommerville,Pete Sawyer.赵文耘,叶恩等译。机械工业出版社需求分析与系统设计:Requirments Analysis and System Design:Developing Information System with UML./(澳)Leszek A Maciaszek.金芝 译。机械工业出版社实用软件需求:Practical Software Requirments:A Manual of Content&Style./(美)Benjamin L.Kovitz.胡辉良,张罡 等译。机械工业出版社掌握需求过程(第2版):Mastering the Requirments Process(Second Edition)./(英)Suzanne Robertson,James Robertson.王海鹏译。人民邮电出版社,