软件工程2章需求法分析33lin.ppt
《软件工程2章需求法分析33lin.ppt》由会员分享,可在线阅读,更多相关《软件工程2章需求法分析33lin.ppt(113页珍藏版)》请在三一办公上搜索。
1、第三章 需求分析,软件需求分析 需求分析是软件定义时期的最后一个阶段,它的基本任务不是确定系统怎样完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。并在在需求分析阶段结束之前,由系统分析员写出软件需求规格说明书,以书面形式准确地描述软件需求。即:-准确地回答“系统必须做什么?”。意义:软件需求的深入理解是软件开发工作获得成功的前提条件,不论我们把设计和编码做得如何出色,不能真正满足用户需求的程序只会令用户失望,给开发带来烦恼。,软件需求工程的活动(内容),软件需求工程,需求开发,需求管理,需求建模,需求获取,需求规格说明,需求验证,建立基线,变更控制
2、,需求跟踪,综合了几种观点,可以把需求工程的活动划分为以下5个独立的阶段:(1)需求获取:深入实际,确定待开发的软件系统的用户类,通过与用户的交流,对现有系统的观察及对任务进行分析,从而开发、捕获和修订用户的需求;(2)需求分析及建模:主要对收集到的需求进行提炼、分析和认真审查,确保所有参加人员取得一致共识。找出错误、遗漏和不足,为最终用户所看到的系统建立模型,根据软件需求信息建立软件系统的逻辑模型或需求模型。需求模型作为对需求的抽象描述,尽可能多的捕获现实世界的语义,并确定非功能性需求和约束条件和限制。(3)形成需求规格:根据收集的需求信息和逻辑模型生成需求模型构件的精确的形式化的描述,作为
3、用户和开发者之间的一个协约编写需求规格说明及其文档。(4)需求验证:以需求规格说明为输入,通过符号执行、模拟或快速原型等途径,分析需求规格的正确性和可行性;(5)需求管理:支持系统的需求演进,如需求变化和可跟踪性问题。当需求发生变更时,对需求规格说明及需求变更实施进行管理。需求工程也是一个项目工程,因此也包括了项目的管理。,软件需求工程的活动(内容),3.1需求获取,需求获取是需求工程的主体内容之一。获取需求是一个确定和理解不同涉众的需要和约束的过程。涉众团体(所有能够影响软件系统的实现,或者被实现后的软件系统所影响的个人和团体)之间的相互沟通,识别需要的过程。涉众团体通过这个过程提取、定义需
4、求。需求获取既涉及技术问题,也涉及社会交往问题。难点:缺乏领域知识,应用领域的问题常常是模糊的、不精确的;存在默认的知识,如难以描述的常识问题;存在多个知识源,且多知识源之间可能有冲突;客户可能的偏见,如不能提供或不想告知你所需要了解的事情。,在分析软件需求和书写软件需求规格说明书的过程中,分析员和用户都起着关键的、必不可少的作用。只有用户才真正知道自己需要什么,但是他们并不知道怎样用软件实现自己的需求,用户必须把他们对软件的需求尽量准确、具体地描述出来;分析员知道怎样用软件实现人们的需求,但是在需求分析开始时他们对用户的需求并不十分清楚,必须与用户沟通获取用户对软件的需求,3.1需求获取,业
5、务需求,项目范围文档,用户需求,文档,功能需求,质量属性,其他非功能需求,设计约束,需求规约(specification),非功能需求,系统需求,需求组成的全景图,软件需求的层次,业务需求:反映组织机构和客户对系统、产品高层次的目标要求。用户需求:从用户使用的角度给出需求的描述。如一个小型超市需要一个商品的查询系统。业务需求:进货人员需要查询商品库存以便保证及时进货;收款员需要查询商品的销售价格以便结账;经理需要查询商品的销售及盈利情况。用户需求:这三类用户怎样去查询系统,查询哪些信息,还需要哪些操作。,软件需求的层次,系统需求:从系统的角度描述要提供的服务以及所受到的约束。功能性需求:描述系
6、统应该做什么,即为用户和其它系统完成的功能、提供的服务。非功能性需求:产品必须具备的属性或品质。设计约束:设计与实现必须遵循的标准、约束条件。如运行平台、协议、选择的技术、编程语言和工具等。,软件需求的组成,需求获取的过程:,确定需求开发计划,建立项目前景与范围,确定调查对象,实地收集用户需求信息,确定非功能需求和约束条件,1.确定需求开发计划,确定需求开发计划的基本任务是确定需求开发的实施步骤,给出收集需求活动的人员、具体安排和进度。需要重点注意的是:针对不同层次的调查对象,安排的调查人员在阅历和经验上的对等原则。调查人员的沟通和业务理解能力必须适当。用户的时间延误、文档确认的时间要在计划进
7、度中预留。,2.确定产品前景与项目范围,本阶段的任务是帮助投资管理人、产品经理弄清楚“为什么要作这个项目?”,组织的业务目标以及系统最终版本具备哪些功能的长远规划。产品前景(product vision)描述了产品用来干什么,它最终会是什么样子。项目范围(project scope)确定当前的项目要解决产品长远规划中的哪一部分。项目范围的细节体现于项目定义的需求基线。产生文档:前景与范围文档。,前景与范围的关系,前景关系到整个产品。当产品的战略定位或业务目标随时间发生改变时,前景也会变化。范围则只与一个特定项目,或实现产品功能下一增量的某次迭代相关。产品前景包括了每一个计划产品版本的范围,前景
8、和范围文档的模板,1.业务需求1.1 背景1.2 业务机遇1.3 业务目标与成功标准1.4 客户和市场需要1.5 业务风险2.解决方案的前景2.1 前景陈述2.2 主要的系统特征2.3 假设和依赖条件,3.项目范围与限制 3.1 第一个版本的范围 3.2 各后续版本的范围 3.3 限制和排除条件4.业务背景 4.1 涉众档案 4.2 项目优先级 4.3 运行环境,3.确定调查对象,本阶段的基本任务是明确地确定来自不同层次的需求来源和用户,并将其分类。(前景与范围文档可以帮助区分用户分类)由于软件需求分为三个层次,业务需求、用户需求、功能需求,故应根据需求的层次来区分不同的用户。用户分类:可分为
9、三种不同类别 用户方的领导者、项目规划者、项目出资人(目标)软件的直接使用、操作人员(功能,易用性)未来软件系统的技术管理、运行维护人员(性能,安装,维护),4.实地收集用户需求信息,实地收集需求信息面临的困难1)能提出软件需求的用户没有时间2)有时用户希望通过简单的说明和问答3)用户和开发人员只考虑自己的利益4)用户本身不能提出明确的需求5)开发人员缺乏用户的业务知识,而用户缺乏计算机方面的知识,引起交流困难。,实地调查的步骤,1)向掌握“全局”的负责人调查:概貌,规划,目标,范围2)向部门负责人调查:业务和业务流程,部门间相互关系。功能需求和非功能需求,与其他部门间的接口。3)向业务人员调
10、查:自身工作处理细节、具体数据或表格的作用来源和去向、类型、精度、处理要求和输入/输出格式。具体的功能和性能需求。,2023/7/5,17,实地收集需求信息的方式,需求获取可能是软件开发中最需要交流的一项工作。获取涉众的需求是需求工作的重要环节。需求获取只有通过客户与开发者的有效合作才能成功。分析者必须为客户建立一个对问题进行彻底探讨的环境,而这些问题与将要开发的产品有关。另外要让用户明确了解,对于某些功能的讨论并不意味着即将在产品中实现它。对于想到的需求必须集中处理并设定优先级,消除不必要的需求,以避免项目范围无意义地膨胀。目前主要有以下的需求获取方法。,面谈法 重要而直接,简单的需求获取技
11、术。面谈的对象主要有用户和领域专家:1)面谈前的准备要充分;2)面谈后注意认真分析总结;3)注意掌握面谈的人际交流技能。提问题:a.你所在部门的业务流程是怎样的?b.你所在部门与其它部门的关系是怎样的?c.本部门产生哪些表格及其输入/输出形式?d.在业务中使用什么计算方法?关于如何解决问题的提问:a.当某问题发生时,应该如何解决?b.你现在工作中存在什么问题?如何解决?c.除了正常情况,还会发生什么异常情况?该如何应对?,实地收集需求信息的方式,交谈形式举例,正向模拟:选择典型业务情景(初始情况),请用户说明工作过程;陈述过程中不断提炼并提问新情况案例分析:请用户选择有代表性的业务情景(初始情
12、况),并说明工作过程;陈述过程中不断提炼并提问新情况局外评论:存在现有系统,请用户对正在进行的过程进行评论知识反教:在获取一些信息后,按照自己的理解表述给用户,请用户判断正确与否,问卷法调查法 是对面谈法的补充。是从多个用户中收集需求信息的有效方式,一般问卷设 计形式:1)多项选择问题;2)评分问题;3)排序问题。,实地收集需求信息的方式,需求专题讨论会 最有力的需求获取技术。有利于培养高效团队。由开发方和用户方共同召开,操作步骤:开发方根据双方制定的需求调研计划召开相关需求主题沟通会;会后开发方整理出需求调研记录提交给用户方确认;如果此主题还有未明确的问题则再次沟通,否则开始下一主题;所有需
13、求都沟通清楚后,开发方根据历次需求调研记录整理出用户需求说明书,提交给用户方确认签字。会前发议题,控制参会人员规模、时间、讨论范围,会中有记录,会后整理。掌握方向不跑题。,实地收集需求信息的方式,需求信息的分类,如图列出9种需求类别:,业务规则(领域需求),当客户说只有特定的人在特定的条件下才能执行某一动作时,他也许是在描述一条业务规则。业务规则举例:产品必须符合某项国际(或国家)标准。必须根据(某个公式)计算。如果(满足某一条件),则(进行某事)。功能性需求 功能性需求描述了系统在特定条件下表现的可观察的行为,以及系统允许用户执行的操作。如:所有的用户界面操作都属于功能性需求。功能性需求占据
14、了软件需求规格说明的大部分篇幅。,质量属性,产品的易用性、可靠性、运行速度、出错频率、异常处理能力等等特性合称为质量属性,它是系统非功能性需求的一部分。非功能需求是衡量软件能否良好运行的定性指标。举例:可靠性:规定条件下系统完成所要求功能的概率。定量指标如平均无故障时间和平均修复时间。可扩充性:系统能方便和容易地增加新功能,可用增加新功能所需工作量大小来衡量。安全性:如防止非法访问,防止数据丢失,防止病毒入侵等。例如:身份验证、用户权限、访问控制等。,互操作性:指系统与其他系统交换数据和服务的难易程度。健壮性:指系统或组成部分遇到非法输入数据以及在异常情况和非法操作下能继续运行的程度。易用性:
15、指用户学习和使用软件系统功能的简易程度,也包括对系统输出结果的易于理解的程度。可维护性:指系统中发现并纠正一个故障或进行一次更改的简易程度。可移植性:指把一个软件系统从一种运行环境移植到另一个运行环境所花费的工作量的度量。可重用性:指组成软件系统中的某个部件还可以在其他应用系统中使用的程度。,质量属性,外部接口需求描述了系统与外部世界的联系。软件需求规格说明中专门有一章描述系统与用户、硬件、其它软件系统之间接口的说明。,约束,对设计和实现的约束合理地限制了开发人员可用的选择。如:通过电子邮件传送的文件大小不能超过10MB。进行安全交易时,必须使用128位的加密算法。产品数据库必须支持Oracl
16、e 11g,期末大作业之一:假设让你开发一个在线交易平台网站,分别从功能需求,质量特性,约束3种需求类别进行描述。,3.2 需求分析,需求分析和需求获取是密切相关的两个过程。需求分析的任务就是分析和综合通过需求获取阶段收集到的需求信息,提炼出真正的需求,确保所有参加人员取得一致共识。找出错误、遗漏和不足,建立系统完整的逻辑模型。需求分析是一种提炼与整合活动:需将用户的原始需求合并到业务活动中去。需求分析是一种规格化活动:要找到冲突、矛盾,并通过访谈手段解决问题。,划分需求优先级的用处:可帮助判断系统的核心需求,可用于风险分析。优先级之间的关联可以帮助决定软件体系结构、解决设计冲突。帮助权衡项目
17、范围、进度安排、预算、人力资源及质量目标要求。使用方法:接受一个高优先级的需求时,删除低优先级的需求,或将其推迟到下一版去实现。,3.2 需求分析,3.3 需求建模,目的:需求建模的工作就是导出目标系统的逻辑模型,以明确目标系统“做什么”的问题。定义:所谓模型就是为了理解事务而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。组成:通常模型可由图形符号或数字符号以及组织这些符号的规则组成。注意:建立需求模型的目的是为了增强对用自然语言描述的需求规格说明的理解,而不是替换它。,软件工程中常用模型分类开发过程模型:瀑布、增量、螺旋模型等(规约性)信息流模型:DFD、SADT等(描述性)设计模型
18、:类图、功能层次图等交互作用模型:实例图、交互作用图、时序图等状态迁移模型:状态图、Statecharts、Petri网等用于构造细节的原理模型:设计模式、实体关联图等,3.3 需求建模,3.4 需求文档,规格说明(SRS)通常用自然语言+模型,完整、准确、具体地描述系统的数据要求、功能需求、性能需求、可靠性和可用性要求、出错处理需求、接口需求、约束、逆向需求以及将来可能提出的要求。软件需求规格说明书,是需求分析阶段得出的最主要的文档。需求规格说明书的作用在于:提供一个用户和开发者对开发软件的共同的理解;相当于用户和开发单位之间的一份技术合同;是今后各阶段设计的基本依据,起到控制系统演进的作用
19、;是今后验收测试阶段对软件进行确认和验收的基准。,3.4需求文档,需求规格说明书主要内容:概述。从系统的角度描述软件的目标和任务。数据描述 数据流图 数据字典 系统接口说明 内部接口说明 功能描述 功能 处理 设计的限制,3.4 需求文档,性能描述 性能指标 测试种类 预期的软件响应性能 其它 参考文献目录 附录,1 引言 1.1 编写目的 1.2 背景 1.3 定义 1.4 参考资料,2 任务概述 2.1 目标 2.2 用户的特点 2.3 假定和约束,软件需求说明书的编写提示(GB856T88),软件需求说明书的编写提示(GB856T88),3 需求规定 3.1 对功能的规定 3.2 对性能
20、的规定 3.2.1 精度 3.2.2 时间特性要求 3.2.3 灵活性 3.3 输人输出要求 3.4 数据管理能力要求 3.5 故障处理要求 3.6 其他专门要求,4 运行环境规定 4.1 设备 4.2 支持软件 4.3 接口 4.4 控制,(一)需求验证的重要性需求审查和管理复审是需求开发的最后一个环节,通过了这一环节,就等于暂时为需求分析阶段画上了一个“句号”。尽管后期可能还会有些对需求分析的反复,但有了这个“句号”,就可以进入设计阶段了。经过审批之后的文档,在整个项目范围内,相当于用户与开发人员双方对需求达成共识后作出承诺形成了一份合约,后期的系统设计和系统测试,都将以这份“规约”为准。
21、任何对合约的修改,都将影响到整个项目的工期和开发成本,都需要经过严格的审批和签约。,3.5 需求的有效性验证,(二)需求验证的内容1.有效性检查指功能需求是否符合用户所提出的需求2.一致性检查需求文档中各个需求之间不会发生矛盾。矛盾常常潜伏在需求文档的上下文中。3.完备性检查是指需求规约中没有遗漏一些必要的需求。人们往往倾向于关注系统的特色功能,而忽视了其他一些不起眼的但却是必需的功能。不完备的文档将导致产生功能不完整的产品,用户在使用该软件时可能无法完成预期的任务。4.可检验性检查文档中的各项需求对用户方而言都应当是可验证的。如果需求是不可验证的,那么用户就无法验收软件,可能会发生商业纠纷。
22、例如,摩天大楼的一项需求是“抗十二级台风”,这个需求看起来堂而皇之,但是如何验证呢?当摩天大楼完工后验收时,用户又不是巫师,他怎能造个十二级台风来试验?如果双方都认可“采用计算机模拟十二级台风”等效于实际测试,那么这项需求就是“可验证”的。,3.5 需求的有效性验证,(二)需求验证的内容5.必要性检查需求规格说明书中的各项需求对用户而言应当都是必要的。可以把必要比喻为“雪中送炭”。“必要”往前一步,要么是“画蛇添足”要么是“锦上添花”。“画蛇添足”显然是坏事,会导致开发人员多干一些吃力不讨好的工作。所以要尽量剔除需求规格说明书中“画蛇添足”的那些需求。“锦上添花”是好事,可能会让用户获得比期望
23、更多的喜悦,但是眼前用户不会为此多付钱。开发者应当集中精力先完成必要的需求,如果条件允许则再做“锦上添花”的需求。为了避免主次颠倒,应当在需求规约中将那些“锦上添花”的需求设置为较底的优先级。,3.5 需求的有效性验证,用户的需求分类,基本的需求:用户明确提出的系统应达到的目标,如果产品实现了这些需求,用户会感到满意。例如,用户所要求的图形界面的类型,特定的系统功能,以及指定的性能。期望的需求:这些需求隐含于产品或系统中,用户没有明确的陈述。但如果没有实现这些需求,用户会感到失望。例如产品的易于安装,超负载时的正确性和可靠性等。感兴趣的需求:这些需求在用户的期望之外,但如果被实现了,用户会感到
24、非常满意。例如字处理软件除了标准的特性之外,提供了许多页面的排列功能。,3.6需求管理,需求管理需要“建立并维护在软件工程中同客户达成的契约”(CMU/SEI 1995)。这种契约都包含在编写的需求规格说明与模型中,需求管理贯穿需求分析全过程 通常的需求管理活动包括:定义需求基线(迅速制定需求文档的主体)。所谓的基线是配置演化过程中的状态标识,是配置在某一时刻的快照,反映了它所描述的系统或者其组成部分在某一时刻的状态;可以将配置的基线理解为配置的版本,是配置演化的里程碑,即软件生命周期内的阶段里程碑。所谓需求基线就是项目组成员一经承诺将在某一特定产品版本中实现的功能性和非功能性需求的集合。需求
25、基线的确定可以保证项目的涉众各方可以对发布的产品中希望具有的功能和属性有一个一致的理解。,3.6需求管理,评审提出的需求变更、评估每项变更的可能影响从而决定是否实施它。以一种可控制的方式将需求变更融入到项目中。1)随着项目的进展,人们(包括开发方和客户方)对需求的了解越来越深入。原先的需求文档可能存在这样那样的错误或不足,因此要变更需求。2)市场发生了变化,原先的需求文档可能跟不上当前的市场需求,因此要变更需求。,(3)让每项需求都能与其对应的设计、源代码和测试用例联系起来以实现跟踪。需求跟踪的目的是建立与维护“需求设计编程测试”之间的一致性,确保所有的工作成果符合用户需求。需求跟踪有两种方式
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 需求 分析 33 lin
链接地址:https://www.31ppt.com/p-5414064.html