软件工程:实践者的研究方法(第七版)讲义第四章课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《软件工程:实践者的研究方法(第七版)讲义第四章课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 实践 研究 方法 第七 讲义 第四 课件
- 资源描述:
-
1、软件工程第4章 理解需求主要内容v需求工程需求工程v建立根基建立根基v导出需求导出需求v开发用例开发用例v构建需求模型构建需求模型v协商需求协商需求v确认需求确认需求v小结小结需求工程v需求工程帮助软件工程师更好地理解他们需求工程帮助软件工程师更好地理解他们将要解决的问题。其中所包含的一系列任将要解决的问题。其中所包含的一系列任务有助于理解软件将如何影响业务、客户务有助于理解软件将如何影响业务、客户想要什么以及最终用户将如何和软件交互。想要什么以及最终用户将如何和软件交互。v软件工程师软件工程师和和项目共利益者项目共利益者都将参与需求都将参与需求工程。工程。需求工程v在设计和开发某个一流的计算
2、机软件时,在设计和开发某个一流的计算机软件时,如果软件解决的问题不对,那么即使软件如果软件解决的问题不对,那么即使软件再精巧也满足不了任何人的要求。这就是再精巧也满足不了任何人的要求。这就是在设计和开发一个基于计算机的系统之前,在设计和开发一个基于计算机的系统之前,理解客户需求的重要性。理解客户需求的重要性。需求工程v理解问题的需求是软件工程师所面对的最理解问题的需求是软件工程师所面对的最困难的任务之一。困难的任务之一。v客户难道不知道需要什么?客户难道不知道需要什么?v最终用户难道对给他们带来实际收益的特最终用户难道对给他们带来实际收益的特征和功能没有清楚的认识?征和功能没有清楚的认识?v很
3、多情况下很多情况下的确是这样的的确是这样的。甚至即使用户。甚至即使用户和最终用户清楚地知道他们的要求,这些和最终用户清楚地知道他们的要求,这些要求也会在项目的实施过程中改变。要求也会在项目的实施过程中改变。需求工程v需求工程是指致力于不断理解需求的大量任务和技术。需求工程是指致力于不断理解需求的大量任务和技术。从软件过程的角度来看,需求工程是一个软件工程动作,从软件过程的角度来看,需求工程是一个软件工程动作,开始于沟通并持续至建模。开始于沟通并持续至建模。v需求工程在设计和构造之间建立起联系的桥梁。有人认需求工程在设计和构造之间建立起联系的桥梁。有人认为开始于为开始于项目共利益者项目共利益者,
4、即在那里定义业务需求,刻画,即在那里定义业务需求,刻画用户场景,描述功能和特性,识别项目约束条件。另外用户场景,描述功能和特性,识别项目约束条件。另外一些人可能会建议从宽泛的系统定义开始,此时软件只一些人可能会建议从宽泛的系统定义开始,此时软件只是更大的系统范围中的一个构件。但是不管起始点在哪是更大的系统范围中的一个构件。但是不管起始点在哪里,横跨这个桥梁将把我们带到项目之上更高的层次:里,横跨这个桥梁将把我们带到项目之上更高的层次:由软件团队检查将要进行的软件工作的内容,必须提交由软件团队检查将要进行的软件工作的内容,必须提交设计和构建需要的特定要求,完成指导工作顺序的优先设计和构建需要的特
5、定要求,完成指导工作顺序的优先级定义以及将深切影响随后设计的信息、功能和行为。级定义以及将深切影响随后设计的信息、功能和行为。需求工程任务v需求工程为以下工作提供了良好的机制:需求工程为以下工作提供了良好的机制:理解客户需要什么,分析要求,评估可行理解客户需要什么,分析要求,评估可行性,协商合理的方案,无歧义地详细说明性,协商合理的方案,无歧义地详细说明方案,确认规格说明,管理需求以至将这方案,确认规格说明,管理需求以至将这些需求转化为可运行系统。需求工程过程些需求转化为可运行系统。需求工程过程通过执行七个不同的活动来完成:通过执行七个不同的活动来完成:起始、起始、导出、精化、协商、规格说明、
6、确认和管导出、精化、协商、规格说明、确认和管理。理。起始v通常都是当确定了商业要求或发现了潜在通常都是当确定了商业要求或发现了潜在的新市场、新服务时项目才开始。业务领的新市场、新服务时项目才开始。业务领域的共利益者定义业务用例,确定市场的域的共利益者定义业务用例,确定市场的宽度和深度,进行粗略的可行性分析,并宽度和深度,进行粗略的可行性分析,并确定项目范围的工作说明。确定项目范围的工作说明。v在项目起始阶段,软件工程师会询问一些在项目起始阶段,软件工程师会询问一些似乎与项目无直接关系的问题。目的是对似乎与项目无直接关系的问题。目的是对问题、方案需求方、期望方案的本质、客问题、方案需求方、期望方
7、案的本质、客户和开发人员之间初步的交流和合作的效户和开发人员之间初步的交流和合作的效果建立基本的谅解。果建立基本的谅解。导出v系统或产品的目标是什么?系统或产品的目标是什么?v想要实现什么?想要实现什么?v系统和产品如何满足业务的要求,最终系系统和产品如何满足业务的要求,最终系统或产品如何用于日常工作?统或产品如何用于日常工作?v而实际上导出需求却是异常的困难。而实际上导出需求却是异常的困难。导出v范围问题范围问题:系统的边界不清楚,或客户:系统的边界不清楚,或客户/用户的用户的说明带有多余的技术细节,这些细节可能会混说明带有多余的技术细节,这些细节可能会混淆而不是澄清系统的整体目标。淆而不是
8、澄清系统的整体目标。v理解问题理解问题:客户:客户/用户并不完全确定需要什么,用户并不完全确定需要什么,对其计算环境的能力和限制所知甚少,对问题对其计算环境的能力和限制所知甚少,对问题域没有完整的认识,与系统工程师在沟通上有域没有完整的认识,与系统工程师在沟通上有问题,省略那些他们认为是问题,省略那些他们认为是“明显的明显的”信息,信息,确定的需求和其他客户确定的需求和其他客户/用户的需求相冲突,需用户的需求相冲突,需求说明有歧义或不可测试。求说明有歧义或不可测试。v易变问题易变问题:需求随时间变化。:需求随时间变化。精化v精化是一个精化是一个分析建模分析建模动作,由一系列的建模和动作,由一系
9、列的建模和求精任务构成。当描述最终用户如何与系统交求精任务构成。当描述最终用户如何与系统交互的用户场景创建和求精时,就会发生精化动互的用户场景创建和求精时,就会发生精化动作,每个用户场景被分解为精炼分析类作,每个用户场景被分解为精炼分析类最最终用户可见的业务域实体。应该定义每个分析终用户可见的业务域实体。应该定义每个分析类的类的属性属性,确定每个类所需要的,确定每个类所需要的服务服务,确定类,确定类之间的之间的关联和协作关联和协作关系,并完成各种关系,并完成各种UML图作图作为补充。为补充。v精化的最终结果是形成一个精确的精化的最终结果是形成一个精确的需求模型需求模型,用以说明软件的用以说明软
10、件的功能功能、特征特征和和信息信息的各个方面。的各个方面。协商v需求工程师必须通过协商过程来需求工程师必须通过协商过程来调解调解客户客户提出的过高的目标要求和相互冲突的需求。提出的过高的目标要求和相互冲突的需求。应该让客户、用户和其他共利益者对各自应该让客户、用户和其他共利益者对各自的需求排序,然后按的需求排序,然后按优先级优先级讨论冲突。识讨论冲突。识别和分析与每项需求相关联的别和分析与每项需求相关联的风险风险;粗略;粗略“估算估算”开发工作量,并用于评估需求对开发工作量,并用于评估需求对项目项目成本和交付时间成本和交付时间的影响;的影响;使用迭代的使用迭代的方法、删除、组合或修改需求方法、
11、删除、组合或修改需求,以便相关,以便相关各方均能达到一定的满意度。各方均能达到一定的满意度。规格说明v一个规格说明可以是一份写好的文档、一一个规格说明可以是一份写好的文档、一套图形化的模型、一个形式化的数学模型,套图形化的模型、一个形式化的数学模型,一组使用场景、一个原型或上述各项的任一组使用场景、一个原型或上述各项的任意组合。意组合。v在开发规格说明时保持灵活性有时是必要在开发规格说明时保持灵活性有时是必要的,对大型系统而言,文档最好采用自然的,对大型系统而言,文档最好采用自然语言描述和图形化模型来编写。而对于技语言描述和图形化模型来编写。而对于技术环节明确的较小产品或系统,使用场景术环节明
12、确的较小产品或系统,使用场景可能就足够了。可能就足够了。确认v确认确认将对需求工程的工作产品进行质量评估。将对需求工程的工作产品进行质量评估。需求确认要检查规格说明以保证:所有的系统需求确认要检查规格说明以保证:所有的系统需求已被无歧义地说明;不一致性、疏漏和错需求已被无歧义地说明;不一致性、疏漏和错误已被检测出并被纠正;工作产品符合为过程、误已被检测出并被纠正;工作产品符合为过程、项目和产品建立的标准。项目和产品建立的标准。v正式技术评审正式技术评审是最主要的需求确认机制。确认是最主要的需求确认机制。确认需求的评审小组包括软件工程师、客户、用户需求的评审小组包括软件工程师、客户、用户和其他共
13、利益者,他们检查系统规格说明,查和其他共利益者,他们检查系统规格说明,查找内容或解释上的错误,以及可能需要进一步找内容或解释上的错误,以及可能需要进一步解释澄清的地方、丢失的信息、不一致性、冲解释澄清的地方、丢失的信息、不一致性、冲突的需求或不现实的需求。突的需求或不现实的需求。需求确认检查表v需求说明清晰吗?有没有可能造成误解?需求说明清晰吗?有没有可能造成误解?v需求的来源(如人员、规则、文档)弄清了吗?需求的最终说明是需求的来源(如人员、规则、文档)弄清了吗?需求的最终说明是否已经根据或对照最初来源检查过?否已经根据或对照最初来源检查过?v需求是否用定量的术语界定?需求是否用定量的术语界
14、定?v其他哪些需求与此需求相关?是否已经使用交叉索引或其他机制清其他哪些需求与此需求相关?是否已经使用交叉索引或其他机制清楚地加以说明了?楚地加以说明了?v需求是否违背某个系统领域的约束?需求是否违背某个系统领域的约束?v需求是否可以测试?如果可以,能否说明测试检验了需求?需求是否可以测试?如果可以,能否说明测试检验了需求?v对已经创建的任何系统模型,需求是否可跟踪?对已经创建的任何系统模型,需求是否可跟踪?v对整体系统对整体系统/产品目标,需求是否可跟踪?产品目标,需求是否可跟踪?v规格说明的构造方式是否有助于理解、引用和翻译成更技术性的工规格说明的构造方式是否有助于理解、引用和翻译成更技术
15、性的工作产品?作产品?v对已创建的规格说明是否建立了索引?对已创建的规格说明是否建立了索引?v和系统性能、行为及运行特征相关的需求的说明是否清楚?哪些需和系统性能、行为及运行特征相关的需求的说明是否清楚?哪些需求是隐含出现的?求是隐含出现的?需求管理v基于计算机的系统其需求会变更,而且变基于计算机的系统其需求会变更,而且变更的要求贯穿于系统的整个生存期。更的要求贯穿于系统的整个生存期。v需求管理是用于帮助项目组在项目进展中需求管理是用于帮助项目组在项目进展中标识、控制和跟踪需求以及变更需求的一标识、控制和跟踪需求以及变更需求的一组活动。组活动。v需求管理从标识开始。每个需求被赋予唯需求管理从标
16、识开始。每个需求被赋予唯一的标识符。一旦需求被标识,便开始建一的标识符。一旦需求被标识,便开始建立跟踪表,每个跟踪表将标识的需求与系立跟踪表,每个跟踪表将标识的需求与系统或其环境的一个或多个方面相关联。统或其环境的一个或多个方面相关联。建立根基v在理想情况下,利益相关者和软件工程师在理想情况下,利益相关者和软件工程师在同一个小组中工作。在这种情况下,需在同一个小组中工作。在这种情况下,需求工程就只是和组里熟悉的同事进行有意求工程就只是和组里熟悉的同事进行有意义的交谈。义的交谈。但实际情况往往不是这样。但实际情况往往不是这样。v客户可能正在不同的城市或国家,对于想客户可能正在不同的城市或国家,对
17、于想要什么可能仅有模糊的想法,对于将要构要什么可能仅有模糊的想法,对于将要构建的系统可能存在不同的意见,技术知识建的系统可能存在不同的意见,技术知识可能很有限,可能仅有有限的时间与需求可能很有限,可能仅有有限的时间与需求工程师沟通。工程师沟通。软件开发团队经常被迫在这软件开发团队经常被迫在这种环境的限制下工作。种环境的限制下工作。确认利益相关者v利益相关者可定义为利益相关者可定义为“直接或间接从正在直接或间接从正在开发的系统中获益的人开发的系统中获益的人”。可以确定如下。可以确定如下几个容易理解的利益相关者:几个容易理解的利益相关者:业务操作管业务操作管理人员、产品管理人员、市场营销人员、理人
18、员、产品管理人员、市场营销人员、内部和外部客户、最终用户、顾问、产品内部和外部客户、最终用户、顾问、产品工程师、软件工程师、支持和维护工程师工程师、软件工程师、支持和维护工程师以及其他人员以及其他人员。每个共利益者对系统都有。每个共利益者对系统都有不同的考虑,当系统成功开发后所能获得不同的考虑,当系统成功开发后所能获得的利益也不相同,同样地,当系统开发失的利益也不相同,同样地,当系统开发失败时所面临的风险也不同。败时所面临的风险也不同。确认利益相关者v在开始阶段,需求工程师应该创建一个人在开始阶段,需求工程师应该创建一个人员列表,列出那些有助于诱导出需求的人员列表,列出那些有助于诱导出需求的人
19、员。最初的人员列表将随着接触的共利益员。最初的人员列表将随着接触的共利益者人数增多而增加,因为每个共利益者都者人数增多而增加,因为每个共利益者都将被询问将被询问“你认为我还应该和谁交谈你认为我还应该和谁交谈”。识别多种观点v因为存在很多不同的利益相关者,所以系因为存在很多不同的利益相关者,所以系统需求调研也将从很多不同的视角展开。统需求调研也将从很多不同的视角展开。v这些参与者中的每一个人都将为需求工程这些参与者中的每一个人都将为需求工程贡献信息。当从多个角度收集信息时,所贡献信息。当从多个角度收集信息时,所形成的需求可能存在不一致性或相互矛盾。形成的需求可能存在不一致性或相互矛盾。需求工程师
20、的工作就是需求工程师的工作就是把所有共利益者提把所有共利益者提供的信息分类,供的信息分类,分类的方法应该便于决策分类的方法应该便于决策制定者为系统选择一个制定者为系统选择一个内部一致的需求集内部一致的需求集合合。协同合作v需求工程师的工作是标识需求工程师的工作是标识公共区域公共区域(即所(即所有共利益者都同意的需求)和有共利益者都同意的需求)和矛盾区域矛盾区域或或不一致区域不一致区域(即某个共利益者提出的需求(即某个共利益者提出的需求和其他共利益者的需求相矛盾)。和其他共利益者的需求相矛盾)。v很多情况下,共利益者的协作是很多情况下,共利益者的协作是提供他们提供他们各自关于需求的观点各自关于需
21、求的观点,而一个有力的,而一个有力的“项项目领导者目领导者”可能要对删减哪些需求做出最可能要对删减哪些需求做出最终判断。终判断。基于“优先点”的投票方案v所有的共利益者都会分配到一定数量的优所有的共利益者都会分配到一定数量的优先点,这些优先点可以适用于很多需求。先点,这些优先点可以适用于很多需求。每个共利益者在一个需求列表上,通过向每个共利益者在一个需求列表上,通过向每个需求分配一个或多个优先点来表明该每个需求分配一个或多个优先点来表明该需求的相对重要性(从他或她的个人观需求的相对重要性(从他或她的个人观点)。优先点用过之后就不能再次使用,点)。优先点用过之后就不能再次使用,一旦某个共利益者的
22、优先点用完,他就不一旦某个共利益者的优先点用完,他就不能再对需求实施进一步的操作。所有共利能再对需求实施进一步的操作。所有共利益者在益者在每项需求上的优先点总数每项需求上的优先点总数显示了该显示了该需求的综合重要性。需求的综合重要性。首次提问v第一组与环境无关的问题集中于客户和其第一组与环境无关的问题集中于客户和其他共利益者、整体目标、收益。他共利益者、整体目标、收益。v谁是这项工作的最初提出者?谁是这项工作的最初提出者?v谁将使用该解决方案?谁将使用该解决方案?v成功的解决方案将带来什么样的经济收益?成功的解决方案将带来什么样的经济收益?v对于这个解决方案你还需要其他资源吗?对于这个解决方案
23、你还需要其他资源吗?首次提问v下一组问题有助于软件开发组更好地理解下一组问题有助于软件开发组更好地理解问题,并允许客户表达其对解决方案的看问题,并允许客户表达其对解决方案的看法。法。v如何描述由某成功的解决方案产生的如何描述由某成功的解决方案产生的“良好良好的的”输出?输出?v该解决方案强调了什么问题?该解决方案强调了什么问题?v能向我们展示(或描述)解决方案的使用环能向我们展示(或描述)解决方案的使用环境吗?境吗?v存在影响解决方案的特殊性能问题或约束吗?存在影响解决方案的特殊性能问题或约束吗?首次提问v最后一组问题关注于沟通活动本身的效率。最后一组问题关注于沟通活动本身的效率。v你是回答这
24、些问题的合适人选吗?你的回答你是回答这些问题的合适人选吗?你的回答是是“正式的正式的”吗?吗?v我的提问和你想解决的问题相关吗?我的提问和你想解决的问题相关吗?v我的问题是否太多了?我的问题是否太多了?v还有其他人员可以提供更多的信息吗?还有其他人员可以提供更多的信息吗?v还有我应该问的其他问题吗?还有我应该问的其他问题吗?首次提问v这些问题将有助于这些问题将有助于“打破坚冰打破坚冰”,并有助,并有助于交流的开始,而且这样的交流对需求导于交流的开始,而且这样的交流对需求导出的成功至关重要。但是,会议形式的问出的成功至关重要。但是,会议形式的问与答并非一定是会取得成功的好方法。事与答并非一定是会
25、取得成功的好方法。事实上,实上,Q&A会议会议应该仅仅用于首次接触,应该仅仅用于首次接触,然后就应该用然后就应该用需求诱导需求诱导形式(包括问题求形式(包括问题求解、协商和规格说明)取代。解、协商和规格说明)取代。导出需求v导出需求是与问题求解、精化、谈判和规导出需求是与问题求解、精化、谈判和规格说明等方面的元素结合在一起的。为了格说明等方面的元素结合在一起的。为了鼓励合作,一个包括利益相关者和开发人鼓励合作,一个包括利益相关者和开发人员的团队共同完成如下任务:确认问题,员的团队共同完成如下任务:确认问题,为解决方案的要素提供建议,商讨不同的为解决方案的要素提供建议,商讨不同的方法并描述初步的
展开阅读全文