《软件工程——理论、方法与实践》课件第4章.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《《软件工程——理论、方法与实践》课件第4章.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程理论、方法与实践 软件工程 理论 方法 实践 课件
- 资源描述:
-
1、1 1第4章 需 求 工 程第4章 需 求 工 程4.1 软件需求4.2 需求工程过程4.3 可行性研究4.4 需求获取和分析4.5 需求定义4.6 需求验证4.7 案例本章小结习题2 2第4章 需 求 工 程4.1 软 件 需 求IEEE给出了如下关于软件需求的定义:(1)用户解决问题或达到目标所需的条件或能力。(2)系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力。(3)一种反映(1)或(2)所描述的条件或能力的说明。3 3第4章 需 求 工 程一般来说,站在不同的角度对需求的理解会有一定的偏差,客户方和开发者对需求概念的范围和定义的要求也会有所不同,Ian So
2、mmerville根据需求文档服务的对象将需求分成两类:用户需求和系统需求。如果从系统应解决的问题和达到的目标来分,软件需求又可分为功能性需求、非功能性需求和业务需求。4 4第4章 需 求 工 程4.1.1 用户需求和系统需求软件开发过程中,需求需要以文档的形式被描述出来,文档化的需求既是开发者与用户之间沟通和达成协议的需要,也是开发人员进行后期软件设计、验证活动的基础。由于用户和开发者角色、知识背景以及期望目标的差别,仅一种需求描述形式难以兼顾各方的需要。因此可以将需求文档分为用户需求(User Requirements)和系统需求(System Requirements)。表4.1是一个示
3、例,反映了用户需求和系统需求的区别。5 5第4章 需 求 工 程6 6第4章 需 求 工 程4.1.2 功能性需求和非功能性需求从软件需求的定义就可以看出,任何软件系统都应具备一定的功能和服务,在提供服务的同时也需要遵守一定的限制,这就是功能性需求和非功能性需求的本质。功能性需求反映了系统应该提供的功能(服务),包括系统对特定输入行为的响应、系统的输出、异常处理等。表4.2是一个采用自然语言描述的银行ATM系统的功能性需求的示例,从该需求描述中,可以看出目标软件系统应具有的功能和行为。7 7第4章 需 求 工 程8 8第4章 需 求 工 程软件需求定义除了要建立软件系统应提供的功能外还应对系统
4、的内在质量、特性、性能等方面作出明确的要求,非功能性需求即是关注软件系统这方面的需求。非功能性需求是定义系统提供功能时所受到的约束和限制,例如响应时间的限制、开发过程的规范、法律法规的约束等。表4.3列出了非功能性需求的类型,主要分为三类:产品需求、过程需求和外部需求。9 9第4章 需 求 工 程1010第4章 需 求 工 程从表4.3可以看出,软件的非功能性需求可理解,但验证却不容易,究竟怎样才是可用性好?效率高?直接度量这些非功能性需求往往较为困难,这会导致系统交付时难以验证,所以通常使用一些度量指标间接描述,以便系统开发和交付时确认系统是否符合相关的要求。表4.4列出了一些非功能性需求的
5、度量指标。1111第4章 需 求 工 程1212第4章 需 求 工 程4.2 需求工程过程需求工程过程活动是对需求的收集、分析、定义和验证的过程,主要包括可行性研究、需求获取和分析、需求定义和需求验证等,见图4.1。需求工程活动将产生有效的需求模型和需求文档,为以后的设计、测试、交付和维护提供支持。1313第4章 需 求 工 程图4.1 需求工程过程1414第4章 需 求 工 程可行性研究活动将评估软件项目的风险,决策其是否可行,最终形成可行性报告;需求获取和分析则是收集、整理需求并建立需求模型的活动;需求定义则要形成正式的用户需求和系统需求文档;需求验证活动对形成需求文档进行评审,通过评审的
6、文档正式成为需求定义文档。1515第4章 需 求 工 程Ian Sommerville则将需求工程过程划分成由三个阶段构成的迭代过程,即需求获取和分析、需求定义和需求验证。过程的早期,主要进行理解高层业务、非功能性需求和用户需求,后期活动则聚焦于系统需求和系统模型的定义。结构化分析方法(SA)和面向对象的分析方法(OOA)是需求工程中常用的需求分析方法,它们各自拥有一套分析系统、构建图形化分析模型的方法和规则,用于描述系统的功能、行为及其他相关特性,如结构化方法中的数据流图、面向对象的Use-case模型和协作图等。本书将在面向对象的分析一章中详细讨论面向对象的分析和建模方法。1616第4章
7、需 求 工 程4.3 可行性研究可行性研究是每个需求工程过程最先开始的活动。一般来说,软件开发过程会受到时间、资金、软硬件、技术、人员等资源的一定限制,因此项目开始前需进行可行性研究,以降低项目的风险,最终将形成的可行性研究报告用于决定是否要开展进一步的需求工程和系统开发过程。可行性研究主要集中在经济可行性、技术可行性、法律可行性和方案决策几个部分。1717第4章 需 求 工 程可行性研究阶段最终应形成可行性研究报告,并提交给项目管理部门进行评审。报告的主要内容包括:(1)项目背景:问题描述、实现环境、限制条件等。(2)管理说明与建议:重要的研究结果、说明、建议和影响。(3)候选方案:候选系统
8、的配置、选择最终方案的原则。(4)系统描述:简略的范围描述、分配元素的可行性。(5)经济可行性:成本-效益分析、经费概算、预期的经济效益。1818第4章 需 求 工 程(6)技术可行性:技术实力、已有工作基础、设备条件。(7)法律可行性:系统开发可能导致的侵权、责任问题。(8)用户使用可行性:用户单位的行政管理、工作制度、用户素质问题。(9)其他与项目有关的问题:其他方案介绍、未来可能的变化。1919第4章 需 求 工 程4.4 需求获取和分析需求获取和分析活动要求软件开发人员和客户及最终用户共同找出应用域问题,包括系统应提供的服务、系统需要的性能、硬件和软件的限制等。软件开发机构的需求分析人
9、员必须具有一定需求获取、需求建模、问题抽象与分解技术,这样方可有效地完成本阶段的任务。2020第4章 需 求 工 程一般来说主要包含以下一些活动:(1)应用问题理解:分析人员必须对系统应用领域进行充分理解。(2)需求收集:与相关人员充分交流以发现需求。(3)分类:对收集到的需求信息进行整理和归类。(4)冲突避免:原始的需求信息之间不可避免地会存在冲突问题,活动致力于发现和解决冲突。(5)优先级确立:分清需求的层次和重要性,据此确定需求的优先级。(6)需求检验:对需求的完整性、一致性以及是否反映用户的真实期望进行检验。2121第4章 需 求 工 程需求获取时可以将需求分成三种类型:(1)必须满足
10、的需求。(2)期望有的需求但不是必须的。(3)可能需要但可以去除的需求。图4.2示意出需求可能的来源,可以以多种方式获得。2222第4章 需 求 工 程图4.2 需求来源2323第4章 需 求 工 程需求获取的目的是通过一系列与用户的交流充分挖掘需求,获取用户对软件系统要求的第一手资料,并理解这些需求,得到什么是用户想要的。与系统需求有直接或间接关系的最终用户、事务管理人员、应用领域专家、系统开发人员都应参与需求获取和分析工作。需求获取可以通过评审当前的工作模式、与用户共同讨论、理解问题、通过已有的相关文档挖掘、制作系统工作的视频、观察相似系统、制作原型系统等方式展开。2424第4章 需 求
11、工 程4.4.1 用户交流需求获取的主要途径是与用户充分地交流以获取需求相关信息,主要包括用户访谈、问卷调查、联合会议、用户业务观察、定期交流等活动。用户访谈是需求获取不可缺少的活动,需求分析人员一般应预先准备一些问题,记录并整理用户对问题的回答,获取用户对目标软件的需求。表4.5列出了访谈应关注的问题和关键部分。2525第4章 需 求 工 程2626第4章 需 求 工 程4.4.2 基于用例的需求获取 1确定参与者 与ATM系统存在交互的参与者包括银行客户、ATM管理者、银行数据库系统。银行客户与ATM之间存在着服务请求和服务结果的反馈;ATM管理者需要借助与ATM的交互完成相应的管理活动,
12、如加入现金、诊断系统等;ATM则在处理与用户的交易时与银行的数据库系统产生交互,包括验证用户、记录交易信息等。确定参与者还应区分主要的和次要的参与者。2727第4章 需 求 工 程2确定用例Jacobson建议通过提出如下的问题确定用例:(1)参与者的目标是什么?(2)系统事件开始前有什么前提条件?(3)参与者完成的主要工作或功能是什么?(4)还需要考虑什么异常?(5)参与者的交互中有什么可能的变化?(6)参与者将获得、产生或改变哪些系统信息?(7)参与者必须通知系统外部环境的改变吗?(8)参与者希望从系统获取什么信息?(9)参与者希望得知意料之外的变更吗?2828第4章 需 求 工 程3构建
13、用例模型将参与者和用例之间的交互关系在用例图上标识出来,并可进一步标识这些元素之间的结构关系,如泛化关系等。图4.3是ATM机的用例模型图。2929第4章 需 求 工 程图4.3 ATM机的用例模型图3030第4章 需 求 工 程4用例描述一种采用脚本形式的ATM取款用例描述:用例任务:允许银行客户通过ATM系统取款;用例启动:当合法银行用户对ATM机发出取款请求后,用例启动;基本事件流:系统请求用户输入取款金额,系统验证金额是否符合一次可存取限额,系统验证用户账户余额是否足够支取,满足支取条件,控制ATM吐出现金,打印交易单,提示进一步取款或退出的操作信息;3131第4章 需 求 工 程 不
14、满足支取条件事件流:系统显示提示不能支取的信息和退出取款流程的信息;结束用例:用户发出取消的请求。基于用例的需求获取方法是建立在UML的基础上的,因此它为面向对象的分析与设计提供了良好的基础,在后面的章节中,我们将介绍基于用例模型的对象分析和设计。3232第4章 需 求 工 程4.4.3 原型化方法在前面已介绍过演化式开发模式,我们也可以将快速原型的的思想用于需求的发现。原型方法的核心思想是:根据用户对需求的概要性描述,快速建立一个目标系统原型,让用户可以尽早接触到软件系统的面貌,对其进行评价,引导用户挖掘更多的需求,通过对用户意见的修改,确定最后的需求目标。例如对于一个有着众多人机交互的办公
15、系统,用户无使用相似系统的经验,项目之初对人机交互的方式并不能提出具体的要求,则可以通过原型化方法,帮助挖掘出令用户满意的需求。原型方法的关键是借助系统原型启发用户发现需求,是一种重要的需求获取手段。3333第4章 需 求 工 程4.4.4 需求分析需求分析要对收集到的需求进行提炼、分析和认真审查,以确保所有的项目相关人员都明白其含义,并找出其中的错误、遗漏或其他不足的地方,形成完整的分析模型。需求分析的核心在于建立分析模型。分析模型应详细、准确地定义系统的需求,通常采用数据流图、实体关系图、状态转换图、用例图、顺序图、协作图、类图等来定义需求。图4.4是ATM系统用户取款的顺序图。3434第
展开阅读全文