第3章需求工程与需求分析.ppt
《第3章需求工程与需求分析.ppt》由会员分享,可在线阅读,更多相关《第3章需求工程与需求分析.ppt(115页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3章章需求工程与需求分析1第3章 需求工程与需求分析3.1 基本的软件需求基本的软件需求2第3章 需求工程与需求分析基本的软件需求基本的软件需求软件项目中百分之四十至百分之六十的软件项目中百分之四十至百分之六十的问题都是在需求分析阶段埋下的问题都是在需求分析阶段埋下的“祸根祸根”。可许多组织仍在那些基本的项目功。可许多组织仍在那些基本的项目功能上采用一些不合规范的方法,这样导能上采用一些不合规范的方法,这样导致的后果便是一条鸿沟(期望差异)致的后果便是一条鸿沟(期望差异)开发者开发的与用户所想得到的软件存开发者开发的与用户所想得到的软件存在着巨大期望差异。在着巨大期望差异。3第3章 需求工
2、程与需求分析基本的软件需求基本的软件需求在软件工程中,所有的风险承担者在软件工程中,所有的风险承担者(stakeholder)都感兴趣的就是需求分析阶段。都感兴趣的就是需求分析阶段。这些风险承担者包括客户、用户、业务或需求这些风险承担者包括客户、用户、业务或需求分析员分析员(负责收集客户需求并编写文档,以及负责收集客户需求并编写文档,以及负责客户与开发机构之间联系沟通的人负责客户与开发机构之间联系沟通的人)、开、开发人员、测试人员、用户文档编写者、项目管发人员、测试人员、用户文档编写者、项目管理者和客户管理者。这部分工作若处理好了,理者和客户管理者。这部分工作若处理好了,能开发出很出色的产品,
3、同时会使客户感到满能开发出很出色的产品,同时会使客户感到满意,开发者也倍感满足、充实。若处理不好,意,开发者也倍感满足、充实。若处理不好,则会导致误解、挫折、障碍以及潜在质量和业则会导致误解、挫折、障碍以及潜在质量和业务价值上的威胁。因为需求分析奠定了软件工务价值上的威胁。因为需求分析奠定了软件工程和项目管理的基础。程和项目管理的基础。4第3章 需求工程与需求分析3.1.1软件需求的定义软件需求的定义用用户户解解决决问问题题或或达达到到目目标标所所需需的的条条件件或权能(或权能(CapabilityCapability)。)。系统或系统部件要满足合同、标准、系统或系统部件要满足合同、标准、规范
4、或其它正式规定文档所需具有的条规范或其它正式规定文档所需具有的条件或权能。件或权能。一种反映上面一种反映上面或或所描述的条件或所描述的条件或权能的文档说明。权能的文档说明。5第3章 需求工程与需求分析3.1.1软件需求的定义软件需求的定义1.一些关于一些关于“需求需求”的解释的解释需求的关键的问题是一定要编写需求文档。需求的关键的问题是一定要编写需求文档。如果只有一堆邮件、贴条、会谈过几次或一些零碎的如果只有一堆邮件、贴条、会谈过几次或一些零碎的对话,你就确信你已明白用户的需求,那完全是自欺对话,你就确信你已明白用户的需求,那完全是自欺欺人。欺人。许多的需求分析专家给出了不同形式的需求定义,但
5、许多的需求分析专家给出了不同形式的需求定义,但从这些不同形式的定义不难发现:并没有一个清晰、从这些不同形式的定义不难发现:并没有一个清晰、毫无二义性的毫无二义性的“需求需求”术语存在,真正的术语存在,真正的“需求需求”实实际上在人们的脑海中。任何文档形式的需求(例如:际上在人们的脑海中。任何文档形式的需求(例如:需求规格说明)仅是一个模型,一种叙述(需求规格说明)仅是一个模型,一种叙述(Lawrence1998)。我们需要确保所有项目风险承担者在描述需)。我们需要确保所有项目风险承担者在描述需求的那些名词的理解上务必达成共识。求的那些名词的理解上务必达成共识。6第3章 需求工程与需求分析3.1
6、.1软件需求的定义软件需求的定义2需求的层次需求的层次下面这些定义是需求工程领域中常见术语的定义说明。下面这些定义是需求工程领域中常见术语的定义说明。软件需求包括三个不同的层次软件需求包括三个不同的层次业务需求、用户需求和功能需业务需求、用户需求和功能需求(包括非功能需求)。求(包括非功能需求)。业务需求(业务需求(businessrequirement)反映了组织机构或客户对系)反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明。说明。用户需求(用户需求(userrequirement)文档描述了用户使
7、用产品必须要)文档描述了用户使用产品必须要完成的任务,这在使用实例(完成的任务,这在使用实例(usecase)文档或方案脚本)文档或方案脚本(scenario)说明中予以说明。)说明中予以说明。功能需求功能需求(functionalrequirement)定义了开发人员必须实现的定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。软件功能,使得用户能完成他们的任务,从而满足了业务需求。所谓特性(所谓特性(feature)是指逻辑上相关的功能需求的集合,给用户)是指逻辑上相关的功能需求的集合,给用户提供处理能力并满足业务需求。提供处理能力并满足业务需求。7第3章 需求
8、工程与需求分析3.1.1软件需求的定义软件需求的定义8第3章 需求工程与需求分析3.1.2需求的开发和管理需求的开发和管理需求中名词术语的混淆将导致对科目(规范,需求中名词术语的混淆将导致对科目(规范,discipline)叫法的不一致。一些作者把整个需)叫法的不一致。一些作者把整个需求范围称之为求范围称之为“需求工程需求工程”,另一些则称之为,另一些则称之为“需求管理需求管理”。软件专家认为可把整个软件需求工程研究领域软件专家认为可把整个软件需求工程研究领域划分为需求开发和需求管理两部分更合适:划分为需求开发和需求管理两部分更合适:9第3章 需求工程与需求分析3.1.2需求的开发和管理需求的
9、开发和管理需求开发可进一步分为:需求获取需求开发可进一步分为:需求获取(elicitation)、分析、分析(analysis)、编写规格、编写规格说明说明(specification)和验证和验证(verification)四个阶段。四个阶段。需求开发活动包括以下几个方面:需求开发活动包括以下几个方面:确定产品所期望的用户类。确定产品所期望的用户类。获取每个用户类的需求。获取每个用户类的需求。了解实际用户任务和目标以及这些任务所支了解实际用户任务和目标以及这些任务所支持的业务需求。持的业务需求。分析源于用户的信息以区别用户任务需求、分析源于用户的信息以区别用户任务需求、功能需求、业务规则、质
10、量属性、建议解决方功能需求、业务规则、质量属性、建议解决方法和附加信息。法和附加信息。10第3章 需求工程与需求分析3.1.2需求的开发和管理需求的开发和管理将系统级的需求分为几个子系统,并将系统级的需求分为几个子系统,并将需求中的一部份分配给软件组件。将需求中的一部份分配给软件组件。了解相关质量属性的重要性。了解相关质量属性的重要性。商讨实施优先级的划分。商讨实施优先级的划分。将所收集的用户需求编写成规格说明将所收集的用户需求编写成规格说明和模型。和模型。评审需求规格说明,确保对用户需求评审需求规格说明,确保对用户需求达到共同的理解与认识,并在整个开发达到共同的理解与认识,并在整个开发小组接
11、受说明之前将问题都弄清楚。小组接受说明之前将问题都弄清楚。11第3章 需求工程与需求分析3.1.2需求的开发和管理需求的开发和管理需求管理需要需求管理需要“建立并维护在软件工程中同客户达成的契约建立并维护在软件工程中同客户达成的契约”(CMU/SEI1995)。这种契约都包含在编写的需求规格说明与模。这种契约都包含在编写的需求规格说明与模型中。型中。通常的需求管理活动包括:通常的需求管理活动包括:定义需求基线(迅速制定需求文档的主体)。定义需求基线(迅速制定需求文档的主体)。评审提出的需求变更、评估每项变更的可能影响从而决定是否评审提出的需求变更、评估每项变更的可能影响从而决定是否实施它。实施
12、它。以一种可控制的方式将需求变更融入到项目中。以一种可控制的方式将需求变更融入到项目中。使当前的项目计划与需求一致。使当前的项目计划与需求一致。估计变更需求所产生影响并在此基础上协商新的承诺估计变更需求所产生影响并在此基础上协商新的承诺(约定约定)。让每项需求都能与其对应的设计、源代码和测试用例联系起来让每项需求都能与其对应的设计、源代码和测试用例联系起来以实现跟踪。以实现跟踪。在整个项目过程中跟踪需求状态及其变更情况。在整个项目过程中跟踪需求状态及其变更情况。12第3章 需求工程与需求分析3.1.2需求的开发和管理需求的开发和管理l需求开发和需求管理之间的区别需求开发和需求管理之间的区别13
13、第3章 需求工程与需求分析3.1.3需求工程的作用需求工程的作用1支持项目的开发。支持项目的开发。需求工程过程是软件开发阶段的前提和基础。需求工程过程是软件开发阶段的前提和基础。2支持测试和验证支持测试和验证需求规格说明书将为项目测试和验证提供基准,可以用来检查设计和验需求规格说明书将为项目测试和验证提供基准,可以用来检查设计和验证系统。证系统。3支持维护支持维护维护阶段的工作同以下几个方面紧密联系:维护阶段的工作同以下几个方面紧密联系:修改在测试阶段中尚未检查出来的少量残留编码错误。修改在测试阶段中尚未检查出来的少量残留编码错误。软件运行一段时间后,因环境因素的改变而产生的软件的适应性维护。
14、软件运行一段时间后,因环境因素的改变而产生的软件的适应性维护。用户在软件交付使用后又重新提出扩充功能的需求时的软件维护。用户在软件交付使用后又重新提出扩充功能的需求时的软件维护。4支持项目承包商支持项目承包商需求的证实过程为拟构造系统的正确性提供了进一步的根据。需求的证实过程为拟构造系统的正确性提供了进一步的根据。5支持管理支持管理为了保证项目的顺利进行,项目管理者必须有一个完备的项目计划,包为了保证项目的顺利进行,项目管理者必须有一个完备的项目计划,包括开销、交付日期、可用资源、交付条件等等。括开销、交付日期、可用资源、交付条件等等。14第3章 需求工程与需求分析3.2 需求获取需求获取15
15、第3章 需求工程与需求分析3.2.1需求获取过程需求获取过程需求获取时期的主要工作:需求获取时期的主要工作:归纳和整理用户提出的各种问题和要归纳和整理用户提出的各种问题和要求;求;弄清用户企图通过软件达到的目的;弄清用户企图通过软件达到的目的;借助各种工具和方法,陈述用户提出借助各种工具和方法,陈述用户提出的实际需求,并标定软件的作用范围。的实际需求,并标定软件的作用范围。16第3章 需求工程与需求分析3.2.2需求获取方法需求获取方法需求获取方法包括两个方面:需求获取方法包括两个方面:指导开发小组获取用户需求的方法框架。指导开发小组获取用户需求的方法框架。支持控制此项活动进展的过程控制机制。
16、支持控制此项活动进展的过程控制机制。17第3章 需求工程与需求分析3.2.3当前状况当前状况误解:由于分析员并非该应用领域的专家,使得在需求获取时,误解了误解:由于分析员并非该应用领域的专家,使得在需求获取时,误解了用户潜在的隐含假设。用户潜在的隐含假设。交流障碍:领域专家同一个新手交谈时的用词往往并不足以解决问题。交流障碍:领域专家同一个新手交谈时的用词往往并不足以解决问题。缺乏共同语言:由于需求分析员和系统用户的经历和教育背景不同,他缺乏共同语言:由于需求分析员和系统用户的经历和教育背景不同,他们之间通常缺乏足够的沟通。们之间通常缺乏足够的沟通。“完整性完整性”问题:软件工程师希望提出系统
17、需求的用户领域专家能清晰、问题:软件工程师希望提出系统需求的用户领域专家能清晰、简明和完备地描述出确实可行的系统需求,然而,所要的需求知识在其简明和完备地描述出确实可行的系统需求,然而,所要的需求知识在其最初阶段可能是模糊、不完备甚至是不正确的。最初阶段可能是模糊、不完备甚至是不正确的。需求永远不会稳定:用户对软件的需求常常会发生变化,并且是不可预需求永远不会稳定:用户对软件的需求常常会发生变化,并且是不可预测的。测的。用户意见不统一:大系统往往有各种不同的用户,他们往往有互相冲突用户意见不统一:大系统往往有各种不同的用户,他们往往有互相冲突的需求和不同的需求优先次序,寻求折衷是不容易的。的需
18、求和不同的需求优先次序,寻求折衷是不容易的。错误的要求:系统的定购者(付钱的人)和系统的使用者经常不是一个错误的要求:系统的定购者(付钱的人)和系统的使用者经常不是一个人,定购者由于受到组织或经费的限制,提出的需求会与最终用户的需人,定购者由于受到组织或经费的限制,提出的需求会与最终用户的需求相冲突。求相冲突。认识混淆:有时系统的目标和系统的需求会发生混淆。目标是系统应达认识混淆:有时系统的目标和系统的需求会发生混淆。目标是系统应达到的更为一般的特征,而需求应是可测试的。到的更为一般的特征,而需求应是可测试的。18第3章 需求工程与需求分析解决问题的建议解决问题的建议1.了解系统需求了解系统需
19、求2.市场调查市场调查3.访问用户和用户领域专家访问用户和用户领域专家4.考察现场考察现场19第3章 需求工程与需求分析调查的方式调查的方式1.调查提纲或调查表调查提纲或调查表2.小型调查会议小型调查会议3.个别访问个别访问4.现场调查现场调查5.资料资料6.调查工具调查工具20第3章 需求工程与需求分析调查中应注意的事项调查中应注意的事项1.不要用计算机专业术语与用户或用户领不要用计算机专业术语与用户或用户领域专家交谈域专家交谈2.不要使用不要使用“你应该你应该”这样的字眼这样的字眼3.始终记住自己最近一段工作中要达到的始终记住自己最近一段工作中要达到的目标,引导用户说出你需要的信息目标,引
20、导用户说出你需要的信息4.要善于把用户中职位高的人和职位低的要善于把用户中职位高的人和职位低的人的谈话结合起来分析人的谈话结合起来分析21第3章 需求工程与需求分析3.3 需求分析任务需求分析任务22第3章 需求工程与需求分析3.3需求分析任务需求分析任务需求分析所要做的工作是深入描述软件的需求分析所要做的工作是深入描述软件的功能和性能,确定软件设计的限制和软件同功能和性能,确定软件设计的限制和软件同其它系统元素的接口细节,定义软件的其它其它系统元素的接口细节,定义软件的其它有效性需求。有效性需求。分析员通过需求分析,逐步细化对软件的分析员通过需求分析,逐步细化对软件的要求,描述软件要处理的数
21、据域,并给软件要求,描述软件要处理的数据域,并给软件开发提供一种可转化为数据设计、结构设计开发提供一种可转化为数据设计、结构设计和过程设计的数据和功能表示。在软件完成和过程设计的数据和功能表示。在软件完成后,制定的软件规格说明还要为评价软件质后,制定的软件规格说明还要为评价软件质量提供依据。量提供依据。23第3章 需求工程与需求分析3.3需求分析任务需求分析任务正确地确定对系统综合要求,充分理解和表达用户的需求。正确地确定对系统综合要求,充分理解和表达用户的需求。也就是详细定义开发软件的功能、性能、外部接口、设计限制、也就是详细定义开发软件的功能、性能、外部接口、设计限制、数据库需求、确定硬件
22、和软件支持环境、辅助软件以及将来可能数据库需求、确定硬件和软件支持环境、辅助软件以及将来可能提出的要求。提出的要求。通过结构分析的方法对系统进行分解,以确定软件系统的主要通过结构分析的方法对系统进行分解,以确定软件系统的主要成分或软件系统的构成。成分或软件系统的构成。24第3章 需求工程与需求分析3.3需求分析任务需求分析任务是对以上已进行的两项工作进行描述,以形是对以上已进行的两项工作进行描述,以形成需求文档,也就是编制成需求文档,也就是编制“需求规格说明书需求规格说明书”。它应明确地定义要开发软件的需求;系统的构它应明确地定义要开发软件的需求;系统的构成及有关接口。成及有关接口。需求规格说
23、明书的作用在于:需求规格说明书的作用在于:提供一个用户和开发者对开发软件的共同的提供一个用户和开发者对开发软件的共同的理解;理解;相当于用户和开发单位之间的一份技术合同;相当于用户和开发单位之间的一份技术合同;是今后各阶段设计的基本依据;是今后各阶段设计的基本依据;是今后验收测试阶段对软件进行确认和验收是今后验收测试阶段对软件进行确认和验收的基准。的基准。25第3章 需求工程与需求分析3.3需求分析任务需求分析任务编写用户手册概要,迫使分析员从用户的角度看待编写用户手册概要,迫使分析员从用户的角度看待软件,及早考虑用户界面工作,此时编写的重点在系软件,及早考虑用户界面工作,此时编写的重点在系统
24、输入和输出。统输入和输出。把整个软件系统分解为若干个子系统或软件成分把整个软件系统分解为若干个子系统或软件成分(如软如软件包件包),把整个软件的外部功能分配给软件系统的各功,把整个软件的外部功能分配给软件系统的各功能成分,并详细地定义每个软件成分的外部功能以及能成分,并详细地定义每个软件成分的外部功能以及它们间的接口。它们间的接口。编写验收计划,作为今后验收测试的依据。编写验收计划,作为今后验收测试的依据。修正可行性研究阶段所制订的软件项目开发计划。修正可行性研究阶段所制订的软件项目开发计划。由于在需求分析过程中对将要开发的系统有了更深入由于在需求分析过程中对将要开发的系统有了更深入的了解,所
25、以可以更准确地估计开发成本、进度和资的了解,所以可以更准确地估计开发成本、进度和资源需求。有必要对原计划作出适当修正。源需求。有必要对原计划作出适当修正。26第3章 需求工程与需求分析3.4 需求分析过程需求分析过程27第3章 需求工程与需求分析3.4.1功能性需求功能性需求功能性需求包括:功能性需求包括:1功能需求功能需求例举出开发软件在职能上应做什么,这是最主要的需例举出开发软件在职能上应做什么,这是最主要的需求。求。2性能需求性能需求给出所开发软件的技术性能指标,包括存储容量限制、给出所开发软件的技术性能指标,包括存储容量限制、运行时间限制、安全保密性等。运行时间限制、安全保密性等。3环
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3章 需求工程与需求分析 需求 工程 分析
限制150内