第3章需求工程.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第3章需求工程.pptx》由会员分享,可在线阅读,更多相关《第3章需求工程.pptx(104页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023/4/51第3章 需求工程 内容提要内容提要n3.1 软件需求n3.2 需求工程过程n3.3 需求的获取n3.4 需求分析n3.5 需求定义n3.6 需求验证n3.7 需求管理n3.8 案例:小型教学管理系统n3.9 小结2023/4/52引言n软件需求是决定软件开发是否成功的一个关键因素n整个软件工程活动中,只有需求阶段可以称为需求工程。这体现了需求在整个软件工程过程中非同一般的重要性。n需求工程的所有过程包括:n需求获取需求获取n需求分析需求分析n需求定义需求定义n需求验证需求验证n需求管理需求管理2023/4/533.1 软件需求n关于软件需求定义:在IEEE软件工程标准词汇表(
2、1997年)中给出如下描述:(1)用户解决问题或达到目标所需的条件或能力。(2)系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力。(3)一种反映上面(1)或(2)所描述的条件或能力的文档说明。2023/4/543.1 软件需求n 从这个标准定义中可以看出需求的概念涵盖了两个方面:n用户角度(系统的外部行为)n开发人员角度(系统的内部特性)n通常,软件需求可以分为不同的层次:n业务需求n用户需求n功能需求n非功能需求2023/4/553.1 软件需求图图3.1 3.1 不同层次的软件需求及其关系不同层次的软件需求及其关系2023/4/563.1 软件需求n 业务需求反映
3、了组织机构或客户对系统和产品高层次的目标要求,它们在项目视图与范围文档中予以说明。n用户需求描述了用户使用产品必须要完成的任务,这在使用实例文档或方案脚本说明中予以说明。n功能需求和非功能需求定义了开发人员必须实现的软件功能,这些需求则体现在需求文档中。2023/4/573.1.1 业务需求 n业务需求说明了提供给客户和产品开发商的新系统的最初利益,它们在项目视图与范围文档中予以说明。n 项目视图和范围文档应该包括高层的产品业务目标,所有的使用实例和功能需求都必须能达到业务需求的需要。项目视图说明使所有项目参与者对项目的目标能达成共识。而范围则是作为评估需求或潜在特性的参考。2023/4/58
4、3.1.2 用户需求 n用户需求是从用户角度描述的系统功能需求和非功能需求,通常只涉及系统的外部行为,而不涉及系统的内部特性。用户需求文档描述了用户使用软件产品要完成的任务,用户需求描述的原则是:应该易于用户的理解,一般不采用技术性很强的语言,而是采用自然语言和直观图形相结合的方式进行描述。2023/4/593.1.3 功能需求 n功能需求描述系统所预期提供的功能或服务。即定义系统应该做什么,系统要求输入什么信息,输出什么信息,以及如何将输入变换为输出。它由开发的软件类型、软件未来的用户以及开发的系统类型决定。2023/4/5103.1.4 非功能需求 n 除了关心软件的功能和行为外,用户会将
5、更多注意力集中于诸如产品的易用性、运行速度、可靠性、如何进行异常处理等特性。因此,一个好的软件还必须满足一系列非功能需求。非功能需求是指那些不直接与系统具体工作相关的一类需求。主要涉及系统的总体特性,如可靠性、反映时间和储存空间等。2023/4/5113.1.4 非功能需求n 非功能需求涉及的面非常广,包括系统的性能,目标系统所受的限制条件和开发和维护软件的限制,还包括如安全规章、隐私权保护的立法等外部因素。n具体内容可由三个方面构成n产品需求n机构需求n外部需求2023/4/5123.1.4 非功能需求性能需求隐私需求安全需求道德需求立法需求互操作需求交付需求实现需求标准需求非 功 能 需
6、求机 构 需 求外 部 需 求产 品 需 求可用性需求可靠性需求效率需求移植性需求空间需求2023/4/5133.1.4 非功能需求n对于非功能需求的表述要求尽可能的量化且可验证。表3.1给出了一些可能用来指定非功能性系统特性的度量,据此可以检验系统是否满足了相应的需求。2023/4/5143.1.4 非功能需求特特 性性 度度 量量 指指 标标速 度每秒处理的事务 用户/事件响应时间 屏幕刷新时间规 模K字节 RAM芯片数易用性培训时间 帮助画面数可靠性失败平均时间 无效的概率 失败发生率有效性鲁棒性失败之后的重启次数 事件引起失败的百分比失败中数据崩溃的可能性可移植性依赖于目标的语句百分比
7、 目标系统数2023/4/5153.2 需求工程过程n软件需求工程是一门应用有效的技术和方法、合适的工具和符号,来确定、管理和描述目标系统及其外部行为特征的学科。n需求工程过程中,开发人员需要:n收集和分析各方面的需求n编写规格说明文档n并采用评审和商议等有效手段对其进行验证,最终形成一个需求基线n由于软件开发过程中经常发生需求变更的情况,因此必须有效地管理和控制这些变更。2023/4/5163.2 需求工程过程 n需求工程过程包括:1.需求获取 确定和收集与待开发的软件系统相关的用户需求信息。2.需求分析 对获得的用户需求信息进行分析和综合,找出错误和冲突及遗漏的地方,获得用户的准确需求,进
8、而建立软件系统的逻辑模型或需求模型。2023/4/5173.2 需求工程过程3.需求定义利用描述语言、标准格式书写软件系统的需求规格说明。4.需求验证审查和验证软件系统需求规格说明,进而确定需求规格说明是否正确描述了用户对软件系统的需求。5.需求管理需求管理的任务是:管理软件系统的需求规格说明,评估需求变更带来的影响及成本费用,跟踪软件需求的状态,管理需求规格说明的版本等。下面分别叙述需求工程的每一部分。2023/4/5183.3 需求的获取 n 需求获取是在问题及其最终解决方案之间架设桥梁的第一步。需求获取的关键在于通过与用户的沟通和交流,收集和理解用户的各项要求。2023/4/5193.3
9、.1 需求获取的过程n 需求获取的主要任务是与客户或用户沟通,了解系统或产品的目标是什么,客户或用户想要实现什么?n对于不同规模及不同类型的项目,需求获取的过程不会完全一样。下面给出需求获取过程的参考步骤。2023/4/5203.3.1 需求获取的过程1.开发高层的业务模型 所谓应用领域,即目标系统的应用环境,如银行、电信公司等。如果系统分析员对该领域有了充分了解,就可以建立一个业务模型,描述用户的业务过程,确定用户的初始需求。然后通过迭代,更深入地了解应用领域,之后再对业务模型进行改进。2.定义项目范围和高层需求在项目开始之前,应当在所有利益相关方中建立一个共同的愿景,即定义项目范围和高层需
10、求。项目范围描述系统的边界以及与外部事物(包括组织、人、硬件设备、其他软件等)的关系。高层需求不涉及过多的细节,主要表示系统需求的概貌。2023/4/5213.3.1 需求获取的过程 3.识别用户类和用户代表 需求获取的主要目标是理解用户需求,因而客户的参与是生产出优质软件的关键因素。因此,首先确定目标系统的不同用户类型;然后挑选出每一类用户和其他利益相关方的代表,并与他们一起工作;最后确定谁是项目需求的决策者。用户类可以是人,也可以是与系统打交道的其他应用程序或硬件部件。如果是其他应用程序或硬件部件,则需要以熟悉这些系统或硬件的人员作为用户代表。4.获取具体的需求 确定了项目范围和高层需求,
11、并确定了用户类及用户代表后,就需要获取更具体、完整和详细的需求。具体需求的获取方法下节详细介绍。2023/4/5223.3.1 需求获取的过程5.确定目标系统的业务工作流 具体到当前待开发的应用系统,确定系统的业务工作流和主要的业务规则,采取需求调研的方法获取所需的信息。例如,针对信息系统的需求调研方法如下:(1)调研用户的组织结构、岗位设置、职责定义,从功能上区分有多少个子系统,划分系统的大致范围,明确系统的目标。2023/4/5233.3.1 需求获取的过程 (2)调研每个子系统的工作流程、功能与处理规则,收集原始信息资料,用数据流来表示物流、资金流、信息流三者的关系。(3)对调研内容事先
12、准备,针对不同管理层次的用户询问不同的问题,列出问题清单。将操作层、管理层、决策层的需求既联系又区分开来,形成一个需求的层次。2023/4/5243.3.1 需求获取的过程 6.需求整理与总结 必须对上面步骤取得的需求资料进行整理和总结,确定对软件系统的综合要求,即软件的需求。并提出这些需求实现条件,以及需求应达到的标准。这些需求包括功能需求、性能需求、环境需求、可靠性需求、安全保密要求、用户界面需求、资源使用需求、软件成本消耗与开发进度需求等。2023/4/5253.3.2 需求获取的常用方法需求获取的常用方法:1.用户面谈它是一种理解商业功能和商业规则的最有效方法。面谈过程需要认真的计划和
13、准备,其基本要点:(1)面谈之前:确立面谈目的;确定要包括的相关用户;确定参加会议的项目小组成员;建立要讨论的问题和要点列表;复查有关文档和资料;确立时间和地点;通知所有参加者有关会议的目的、时间和地点。2023/4/526(2)进行面谈时:衣着得体;准时到达、寻找异常和错误情况;深入调查细节;详细记录;指出和记录下未回答条目和未解决问题。(3)面谈之后:复查笔记的准确性、完整性和可理解性;把所收集的信息转化为适当的模型和文档;确定需要进一步澄清的问题域;适当的时候向参加会议的每一个人发一封感谢信。3.3.2 需求获取的常用方法2023/4/5273.3.2 需求获取的常用方法2.需求专题讨论
14、会需求专题讨论会也许是需求获取的一种最有力的技术。项目主要风险承担人在短暂而紧凑的时间段内集中在一起,一般为1 至2 天,与会者可以在应用需求上达成共识、对操作过程尽快取得统一意见。参加会议人员包括:主持人、用户、技术人员、项目组人员。2023/4/5283.3.2 需求获取的常用方法专题讨论会具有以下优点:(1)协助建立一支高效的团队,围绕项目成功的目标;(2)所有的风险承担人都畅所欲言;(3)促进风险承担人和开发团队之间达成共识;(4)揭露和解决那些妨碍项目成功的行政问题;(5)能够很快地产生初步的系统定义。2023/4/5293.3.2 需求获取的常用方法3.问卷调查可用于确认假设和收集
15、统计倾向数据,问卷需要快速回答,允许匿名方式。存在问题的是:相关的问题不能事先决定;问题背后的假设对答案造成偏颇,如这符合你的期望吗;难以探索一些新领域;难以继续用户的模糊响应。在完成最初的面谈和分析后,问卷调查可作为一项协作技术可以收到良好的效果。2023/4/5303.3.2 需求获取的常用方法4.现场观察掌握用户如何实际使用一个系统以及到底用户需要哪些信息,最好的办法是亲自观察用户是如何完成实际工作的。一般方法是:(1)对办公室进行快速浏览,了解布局、设备要求和使用、工作流总体情况;(2)安排几个小时观察用户是如何实际完成他们的工作,理解用户实际使用计算机系统和处理事务的细节;(3)像用
16、户一样接受训练和做实际工作,发现关键问题和瓶颈。2023/4/5313.3.2 需求获取的常用方法5.原型化方法n一个软件原型是所提出的新产品的部分实现n 建立原型可以解决在产品开发的早期阶段需求不确定的问题。如建立基于WEB 的应用系统原型,使用HTML 进行界面设计。2023/4/5323.3.2 需求获取的常用方法6.基于用例的方法n随着面向对象技术的发展,基于用例的方法在需求获取和建模方面应用越来越普遍。n用例建模是以任务和用户为中心的,开发和描述用户需要系统做什么。n用例有助于开发人员理解用户的业务和应用领域,并可以运用面向对象分析和设计方法将用例转化为对象模型。2023/4/533
17、3.3.2 需求获取的常用方法 用例建模的基本步骤:用例建模的基本步骤:(1 1)确确定定系系统统的的参参与与者者:参参与与者者是是与与系系统统交交互互的的外外部部实实体体,它它既既可可以以是是人人员员也也可可以以是是外部系统或硬件设备。外部系统或硬件设备。(2 2)确确定定场场景景:场场景景是是对对人人们们利利用用计计算算机机系系统统过过程程做做了了什什么么和和体体验验了了什什么么的的叙叙述述性性描描述述。它它从从单单个个参参与与者者的的角角度度观观察察系系统统特特性性的的具体化和非正式的描述。具体化和非正式的描述。(3 3)确确定定系系统统用用例例:用用例例描描述述了了一一个个完完整整的的
18、系系统统事事件件流流程程,其其重重点点在在于于参参与与者者与与系系统统之之间间的的交交互互而而不不是是内内在在的的系系统统活活动动,并并对对参参与者产生有价值的可观测结果。与者产生有价值的可观测结果。2023/4/5343.3.2 需求获取的常用方法(4)确定用例之间的关系:在确定出每一个参与者的用例之后,需要将参与者和特定的用例联系起来,最终绘制出系统的用例图。(5)编写用例描述文档:单纯使用用例图并不能提供用例所具有的全部信息,因此需要使用文字描述那些不能反映在图形上的信息。用例描述是关于角色与系统如何交互的规格说明,要求清晰明确,没有二义性。在描述用例时,应该只注重外部能力,不涉及内部细
19、节。2023/4/5353.4 需求分析 需求分析是指开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约(需求规格说明)的过程。2023/4/5363.4.1 需求分析的特点需求分析的难点体现在:(1)问题的复杂性。这是由用户需求所涉及的因素繁多引起的,如运行环境和系统功能等。(2)交流障碍。需求分析涉及人员较多,如软件系统用户、问题领域专家、需求工程师和项目管理员等,这些人具备不同的背景知识,处于不同的角度,扮演不同角色,造成了相互之间交流的困难。2023/4/537 3.4.1 需求分析的特点 (3)不完备性和
20、不一致性:由于各种原因,用户对问题的陈述往往是不完备的,其各方面的需求还可能存在着矛盾,需求分析要消除其矛盾,形成完备及一致的定义。(4)需求易变性。用户需求的变动是一个极为普遍的问题,即使是部分变动,也往往会影响到需求分析的全部,导致不一致性和不完备性。为了克服上述困难,人们主要围绕着需求分析的方法及自动化工具(如CASE技术)等方面进行研究。2023/4/5383.4.2 需求分析的原则 目前存在着许多需求分析的方法,虽然各种方法都有其独特的描述方法,但不论采用何种方法,需求分析都必须遵循以下基本原则:2023/4/5393.4.2 需求分析的原则(1)能够表达和理解问题的数据域和功能域。
21、所有软件开发的最终目的都是为了解决数据处理的问题,数据处理的本质就是将一种形式的数据转换成另一种形式的数据,即通过进行一系列加工将输入的原始数据转换为所需的结果数据。需求分析阶段必须明确系统中应具备的每一个加工、加工的处理对象和由加工所引起的数据形式的变化。2023/4/5403.4.2 需求分析的原则(2)能够将复杂问题分解化简。为了便于问题的解决和实现,在需求分析过程中需要对于原本复杂的问题按照某种合适的方式进行分解(对功能域和数据域均可)。分解可以是同一层次上的横向分解,也可以是多层上的纵向分解。每一步分解都是在原有基础上对系统的细化,使系统的理解和实现变得较为容易。2023/4/541
22、3.4.2 需求分析的原则(3)能够给出系统的逻辑表示和物理表示。系统需求的逻辑表示用于指明系统所要达到的功能要求和需要处理的数据,不涉及实现的细节。系统需求的物理表示用于指明处理功能和数据结构的实际表现形式,通常由系统中的设备决定。如处理数据的来源,某些软件可能由终端输入,另一些软件可能由特定设备提供。给出系统的逻辑表示和物理表示对满足系统处理需求所提出的逻辑限制条件和系统中其他成分提出的物理限制是必不可少的。结构化分析方法和面向对象分析方法都遵循以上原则。2023/4/5423.4.3 需求分析的任务 n需求分析的基本任务是准确地回答“系统必须做什么?”这个问题。n需求分析的任务不是确定系
23、统怎样完成它的工作,而是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。需求分析阶段的具体任务:2023/4/5433.4.3 需求分析的任务1.确定对系统的综合需求有下述四个方面:(1)系统功能需求:应该划分出系统必须完成的所有功能。(2)系统性能需求:指待开发的软件的技术性能指标,如存储容量、运行时间等限制。(3)环境的需求。指软件运行时所需要的软、硬件(如机型、外设、操作系统和数据库管理系统等)的要求。2023/4/5443.4.3 需求分析的任务(4)将来可能提出的需求:应该明确地列出那些虽然不属于当前系统开发范畴,但是据分析将来很可能会提出来的要求。这样做
24、的目的是在设计过程中对系统将来可能的扩充和修改预做准备,以便一旦需要时能比较容易地进行这种扩充和修改。2023/4/5453.4.3 需求分析的任务2.分析系统的数据要求n建立概念模型:分析系统的数据要求,通常采用建立概念模型的方法。n数据字典:复杂的数据由许多基本的数据元素组成,利用数据字典可以全面准确地定义数据。n有层次方框图和Warnier图:数据字典不够形象直观,为了提高可理解性,常常利用图形工具辅助描绘数据结构。常用的图形工具有层次方框图和Warnier图。2023/4/5463.4.3 需求分析的任务 3.导出系统的逻辑模型 综合上述两项分析的结果可以导出系统的详细的逻辑模型,通常
25、用数据流图、数据字典和主要的处理算法描述这个逻辑模型。2023/4/5473.4.3 需求分析的任务4.编写文档编写文档的步骤如下:(1)编写“需求说明书”,把双方共同的理解与分析结果用规范的方式描述出来,作为今后各项工作的基础。(2)编写初步用户使用手册,着重反映被开发软件的用户功能界面和用户使用的具体要求,用户手册能强制分析人员从用户使用的观点考虑软件。(3)编写确认测试计划,作为今后确认和验收的依据。(4)修改完善项目开发计划。在需求分析阶段对开发的系统有了更进一步的了解,所以能更准确地估计开发成本、进度及资源要求,因此对原计划要进行适当修正。2023/4/5483.4.4 需求分析的方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 需求 工程
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内