版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章需求分析
需求开发过程
系统需求过程
需求获取来源
需求收集方法
需求UML建模
需求原型开发
需求规格说明【学习目标】4.1需求开发过程一、需求的定义软件需求是一个软件系统所需具有的功能与性能要求,它描述了待开发软件系统的行为、特性、属性及其约束条件。需求是指系统应达到的目标、功能、性能、环境等要求。二、需求工程需求开发需求工程需求管理系统分析编写规格说明问题获取需求验证需求工程任务的层次分解需求工程是指为了获取需求和描述需求,进行系统的需求调查、需求分析、需求描述、系统需求规格说明活动及其管理的过程。三、需求开发过程需求开发过程需求导出与分析过程4.2需求类型与范围一、需求类型1.需求纵向分类业务需求是反映组织机构或客户对系统或产品的业务目标要求。它们在项目视图与范围文档中进行说明。用户需求是反映用户对系统或产品使用中的具体处理要求。它们在用例文档或方案文档进行说明。系统需求是反映开发人员必须实现的系统功能,用户使用系统或产品能完成特定工作任务,从而达到系统业务目标要求。需求分析业务需求用户需求系统需求例用户需求与系统需求用户需求:
提供霍乱发生病例统计分析系统需求:
1.系统需具有霍乱发生病例的基本数据2.根据条件(如地区、时间段、年龄段等)对霍乱发生病例数量进行统计3.给出统计数据表格输出或图形曲线输出功能需求它指系统应该提供什么样的服务、如何对输入做出反应以及系统在特定条件下的行为等描述。非功能需求它指对系统提供的服务或功能遵循的约束。包括时间约束、开发约束、标准约束、法规约束等。2.需求横向分类系统将做什么?系统什么时候做?有多种操作模式吗?必须执行什么种类的计算或数据转换?输入/输出数据格式是什么?在什么时间必须保存数据?1.功能需求二、需求范围2.非功能需求问题:什么是功能需求?什么是非功能需求?并举例说明。4.3需求的来源需求开发第一步:确定需求来源,最基本的需求来源就是用户需求。它反映了用户对系统的功能与性能等方面的要求。一、需求的来源几个典型来源:
客户的期望或愿景
市场产品的广告资料
当前系统的问题报告和增强要求
现有系统的文档
领域模型二、用户类别区分为什么要区分用户类型?用户在系统中扮演了不同角色,如业务人员、部门经理、公司主管等,他们对系统有各自的需求。每一用户类都将有自己的一系列功能和非功能要求。比如:一个没有经验或偶尔使用电脑的用户关心系统是否简单易用,因此,菜单、提示符和向导是很重要的。然而,对于那些一天使用几小时产品的用户,他们更关心产品的易用性和高效性,所以他们喜欢使用快捷键、宏以及脚本功能。还有一些并不一定是系统的直接使用者,而是通过报表或其它应用程序访问产品的数据和服务。这些非直接的或次级的用户也有他们的需求。4.4需求获取方法需求开发第二步:需求获取,它是需求工程的主体。对于所建议的软件产品,获取需求是一个确定和理解不同用户类的需要和限制的过程。一、需求获取的主要方法1、访谈设定好访谈的范围提出问题,听取回答,然后反馈你的理解画出模型,鼓励用户改正尽可能使用用户的术语描述系统2、业务示范要求用户示范如何处理特定业务的过程提出问题,听取回答,然后反馈你的理解画出该业务处理模型图,并让用户确认3、问卷调查适合从许多人那里收集信息设计问题,收集某项假设的统计依据收集意见、建议4、用户表格和报表的收集了解用户数据处理量、处理频率了解用户数据的呈现形式画出该业务数据模型图,并让用户确认了解用户表格与报表的来源与去向5、专题讨论会由产品代表或用户介绍业务的处理过程、业务规则、处理信息系统分析员记录业务目标、场景、业务规则及处理描述,并提出相关问题画出该业务流程模型图,并让用户确认了解用户对系统的要求与期望6、快速原型建立了解用户对原型系统的反馈信息了解用户的潜在需求了解用户的真实需求二、如何处理收集到的用户需求?用户提出“需要”的特性并不总是用户真正所需的功能要求。当收集到用户的意见后,必须分析、整理这些需求意见,直到理解它为止。将对需求的理解写成文档,然后与用户一起探讨,这是一个反复的过程,并且需要花费时间。[实例]“煤气管网GIS系统”用户提出需求:“在城市地图上进行管网浏览时,需有一个小的窗口显示当前浏览的区域在总图的位置”
系统功能:“管网浏览时,具有鹰眼功能,即有一个小的窗口显示当前浏览在鸟瞰图的大致位置”
三、对需求信息进行分类客户提供的需求通常是零碎的、没有条理的,需求分析者必须把代表客户需求的许多信息分类整理,并把他们合理地编写信息文档中。下图描述了需求信息的主要类型。四、对需求进行审查需求是正确吗?需求是一致吗?需求是无二义性吗?需求是完备吗?需求是可行吗?需求是可测试吗?需求是可追踪吗?五、需求获取的注意事项项目范围的定义应恰当需求获取应解决系统做什么,而不是怎么做需求获取参与者不能太多需求获取应尽可能详细地收集用户提供的信息六、何时完成需求的获取用户不能想出更多的功能要求。用户提出新的功能要求,可以从其它相关功能需求中获得。用户提出对将来产品的要求,而不是现在我们讨论的特定产品。4.5需求建模分析需求开发的第三步——对收集到的用户需求进行建模分析确定系统功能需求确定系统数据需求确定系统非功能性需求描述系统需求一、需求分析为什么需要建模?从用户收集到的需求信息通常是一大堆杂乱的文字信息,即使你对它们进行了分类,这些组织好的信息还不足够使开发人员对需求的完全理解。采用文本表示和用图形表示结合起来绘制出对预期系统的完整描述。这些图形化的表示或者分析模型可以增强你对系统需求的理解。模型可帮助检测不一致性、模糊性、错误和遗漏的需求。当前系统目标系统当前系统逻辑模型目标系统逻辑模型抽象化具体化导出理解需求表达需求需求建模分析二、需求建模的主要方法在需求分析阶段,主要采用结构化分析方法或面向对象的用例驱动分析方法对系统的功能和目标需求进行建模分析,并通过快速开发工具建立原型,提交用户使用原型,进一步明确需求。1、结构化分析方法建模方法模型表示数据流分析方法数据流图层次数据流数据字典IDEF0分析方法活动数据图结构化建模方法与模型表示数据流图DFD数据流图(DataFlowDiagram)是一种刻画业务及其数据流程处理的建模技术,它用简单的图形记号表示数据流、处理、数据存储、数据源以及外部实体,从而描述系统功能作用。外部实体加工数据流数据存储外部实体名加工名案例:学籍管理系统数据流程图学籍管理系统顶层数据流图招生办学籍管理系统用人单位教育部新生名单
报表毕业生登记表D1学籍表学籍管理系统第1层数据流图招生办异动管理用人单位教育部新生名单
报表D1学籍表教师系成绩管理奖惩管理毕业生登记表留级名单学生注册奖惩报告奖惩结论成绩成绩单获奖名单数据流图泡泡图类型外部实体名外部实体加工名加工数据流数据存储案例:“订单处理——数据流图”不提供对非功能性系统需求的有效理解和建模。不提供对用户选择的合适方法的指导,也没有对方法适用的特殊环境的忠告。往往产生大量文档,系统需求的要素被隐藏在一大堆具体细节的描述中。产生的模型太注重细节以致用户觉得难以理解,因而很难去验证这些模型的真实性。结构化分析方法的不足:2、面向对象分析方法建模方法模型表示UML用例图顺序图交互图OMT-2文本化的用例用例图对象交互图场景图Booch文本化的用例用例图对象交互图场景图Coad/Yourdon文本化的用例用例图对象交互图案例:“课程注册系统——用例图”案例:“课程注册系统——顺序图”四、数据建模的主要方法数据建模也是需求分析的一个重要环节,主要有如下两种方法。建模方法模型表示语义数据模型方法实体-关系图(ER图)IDEF1X模型方法IDEF1X图例数据建模方法与模型表示案例:“酒店管理系统——ER图”结构化方法与面向对象方法的需求分析模型比较事件事物实体-关系图类图结构化方法面向对象方法数据流程图数据字典小说明用例图活动图顺序图4.6统一建模语言(UML)概述
统一建模语言(UML)是一个用于描述系统模型的面向对象建模语言。它统一了GradyBooch、JimRumbangh、和IvarJacobson三位大师的面向对象建模描述语言(Booch、OMT、OOSE),并对其做了进一步的发展,最终成为广泛接受的面向对象建模语言。UML已被OMG所采用,现成为业界的建模语言标准。UML的演化一、UML的特点
统一了面向对象模型元素的定义和表示法,以及对模型表示的规定,使得对系统的建模有章可循。又因有标准的语言工具可用,有利于保正系统的建模质量。
提供了简洁的表达面向对象中的各种概念和模型元素。
可视化、表示能力强。系统的逻辑模型或实现模型均可用UML
模型图形清晰表示,并提供用户的扩展支持。独立开发过程。可支持其他面向对象开发和传统的软件开发过程。二、UML在软件开发中的应用UML是一个完整的建模语言,支持系统开发的不同阶段:在需求描述阶段,可以用用例来捕获用户需求。通过用例建模,描述系统感兴趣的外部角色及其对系统的功能要求。在系统分析阶段主要关心问题域中的主体(如类和对象等)和机制,以及它们相互间的关系。为实现用例,类之间需要协作,这可以用UML动态模型来描述。在系统设计阶段,使用(类图、对象图、活动图、状态图、序列图、协作图、包图、组件图、部署图),定义软件系统体系结构和组件技术细节。在系统实现阶段,应用面向对象编程语言将来自设计阶段的类转换成实际的代码。在系统测试阶段,集成测试使用组件图和协作图;系统测试用例图来验证系统的行为;验收测试由用户进行,以验证系统测试的结果是否满足在分析阶段确定的需求。1.RationalRose介绍RationalRose是美国Rational软件公司在软件工程专家Booch、Jacobson、Rumbaugh等人主持下研制的面向对象CASE的可视化工具,它支持面向对象系统建模、模型集成、源代码生成、系统测试、文档生成、反向工程、项目管理、团队开发,以及InternetWEB发布等功能,形成一个强大的软件开发集成环境。目前RationalRose工具的有三种版本:RoseModeler,可对系统创建模型,但不支持代码的产生和逆向
转出工程代码。RoseProfessional,可产生一种语言代码。RoseEnterprise,可产生多种语言代码,如C++、Java、Ada、CORBA、COM、VisualBasic、XML、Oracle等。三、UML建模工具2.其它建模工具1)MicrosoftVisioVisio是美国Microsoft软件公司绘图工具产品,它可以用来绘制建筑结构、电气结构、网络结构、软件结构、数据库结构、网站结构、组织机构、业务模型等图形。同样它也可用绘制UML模型图。2)VisibleAnalystVisibleAnalyst是可视系统公司的CASE工具产品,它不但可以用来设计传统的软件模型(如数据流图、ER实体关系图),也可用来设计UML模型。3)TogetherTogether是Borland公司的CASE工具产品,它不但可以用来设计UML模型,还可支持几种面向对象语言的往返工程。4.7UML用例图模型
在早期的面向对象开发方法中,都是以自然语言来描述系统的功能需求。这样的做法没有一个统一的格式,缺乏描述的形式化,随意性较大,容易产生理解上的含混和不准确性。当UML用例图(Usecasediagram)模型提出后,这些问题得到了很好地解决。
一、什么是用例图模型UML的用例模型一种描述系统功能性需求的方法。详细描述系统与外界环境的交互场景。二、用例图的组成用例图由如下元素组成:角色(Actor):也称为参与者,它代表系统的用户。系统边界(Systemscope):它确定系统的范围。用例(Usecase):它代表系统提供的服务。关联(Association):它表示角色与用例间的关系。UML的用例图1、用例图中的关联1)角色与用例的关联角色与用例的关联表示角色与用例相关性。在UML中是使用一条实线连接角色与用例,如下图所示。选课系统的用例关联2)角色与角色的关联角色与角色的关联用来表示一般角色与特殊角色的泛化关系。在UML图中,使用带空心三角箭头的实线表示。如下图所示:3)用例与用例的关联用例与用例的泛化关联用来表示一般用例与特殊用例的继承关系。在UML图中,使用带空心三角箭头的实线表示。如下图所示:
用例之间也可存在关联。这些关联包括:泛化关联包含关联扩展关联此外,系统分析员也可以利用UML的扩充机制自定义用例的关联。用例之间的泛化关系用例与用例的包含关联用来表示一个用例的行为包含了另一个用例中的行为。在UML图中,使用带虚线箭头表示,并在线上标有构造型<<include>>。如下图所示:成绩管理用例与用例的扩展关联用来表示一个用例的行为扩展了另一个用例的行为。在UML图中,使用带虚线箭头表示,并在线上标有构造型<<extend>>。如下图所示:包含关联与扩展关联的区别:包含关联中关系是必须的,扩展关联中的关系是可选择的。图书管理系统用例细化商品订购用例图2、用例图示例三、如何建立用例图模型创建用例图模型有3项任务:找出系统中的角色和用例。细化描述每个用例。建立用例图模型结构。1)从系统中识别出角色1、找出系统中的角色和用例如何从系统中识别出角色?1)谁使用系统的主要功能?2)谁需要系统的支持以完成其日常工作任务?3)谁负责维护、管理并保持系统正常运行?4)系统需要应付(或处理)哪些硬设备?5)系统需要和哪些外部系统交互?6)谁(或什么)对系统运行产生的结果感兴趣?在识别出了角色之后,就需要从系统识别用例:2)从系统中识别用例通过回答下述问题来帮助识别用例:角色的任务是什么?角色为系统提供什么信息?角色需要通知系统外部有突然变化吗?系统需要通知角色正在发生的事情吗?2、细化描述用例规约成绩管理案例:成绩管理功能需求用例图模型例超市进销存系统需求分析——用例图建模1、超市进销存系统的需求描述如下:
(1)销售①售货员接收顾客的商品订购,输入顾客购买的商品,计算总价;②顾客付款并接收购物打印清单;③售货员保存顾客购买商品的记录数据到系统。
(2)库存①库存管理员每天进行盘点一次;清点商品数目及状况。②库存管理员当发现库存商品有损坏时,及时向相关部门报损;③在供应商的商品到货时,库存管理员首先检查商品是否合格,并将合格的商品入库处理;当商品进入卖场时,进行商品出库处理。(3)订货①订货员用新商品供应商信息更新供应商数据库的信息;②订货员统计库存商品是否低于库存下限,然后制作订货单。
(4)统计①经理能够使用系统的统计功能,了解商品销售情况、库存情况、供应商情况,以便进行合理的营销策略。②经理按市场情况适时变动商品价格。3、超市进销存系统的用例图建模
1)系统角色
超市服务的对象是顾客,超市系统内部员工可以按人员的职能来分类。下图是超市进销存管理系统角色分析的用例图。2)超市进销存管理系统的顶层用例图3)销售管理子系统的用例图销售管理子系统的部分用例描述:4)订货管理子系统的用例图订货管理子系统的部分用例描述:5)库存管理子系统的用例图库存管理子系统的部分用例描述:库存管理子系统的部分用例描述:6)统计分析子系统的用例图统计分析子系统的部分用例描述:7)身份验证子系统的用例图身份验证子系统的部分用例描述:采用UML用例图,描述银行ATM机系统的需求模型练习:一、什么是活动图
活动图是一种用于描述系统行为的模型视图,它可用来描述过程(业务过程、工作流、事件流等)中的活动及其迁移。简单地讲,活动图是“OO流程图”。4.7UML活动图二、活动图的主要应用1.描述用例的行为
活动图对用例描述尤其有用,它可建模用例的工作流,显示用例内部和用例之间的路径;它也可以向读者说明需要满足什么条件用例才会有效,以及用例完成后系统保留的条件或者状态。2.理解工作流程
活动图对理解业务处理过程十分有用。可以画出描述业务工作流的活动图与领域专家进行交流,明确业务处理操作是如何进行的,将会有怎样的变化。3.描述复杂过程的算法
在这种情况下使用的活动图不过是UML版的程序流程图,常规的顺序、分支过程在活动图中都能得到充分的表现。三、活动图的基本元素活动图示意活动操作状态转移对象流分岔决策联结活动图保留了许多传统的流程图的特征,它包含如下元素。活动
活动在活动图中,用来指示要完成某项工作的动作或表示工作流的步骤。其UML标记符是一个带有圆角的矩形,如下图所示。2.操作
可以用操作在活动中增加更多详细的步骤。操作是活动中执行的小步骤。3.状态
状态的标记符与活动类似,也是带圆角的矩形,但状态的圆角比较小,如下图所示。4.转移
转移用来指示一种状态到另一个状态的控制流。5、决策
决策是基于判断条件选择控制流继续的方向。决策的UML符号是一个小菱形标记符,然后从这里再按条件控制分支转移到满足条件的活动,如下图所示。例描述教师记录学生成绩用例的活动图1.泳道
泳道可以使活动图非常整洁,因为它们在很大程度上增强了活动图的可读性。泳道使用几个大矩形框表示,如下图所示。四、学习活动图中的其他标记符
案例:CDC疾病监测直报流程
活动图中可以输入和输出对象,并可以修改对象状态。在活动图上用对象流表示这些。如下图所示。2.对象流1.采用UML活动图,建模描述图书借阅流程2.采用UML活动图,建模研究生选课流程练习:4.8需求原型验证一、为什么需要原型开发需要原型开发的理由:系统开发周期长,需要较长时间才能使用户看到产品的雏形,用户的需求变更反馈会使系统开发增加较大工作量与开支。开发方与用户在开发初期对系统的需求均不完全清楚。系统规模大,且可分块实现。实例
“城市煤气管网GIS系统”二、选择原型方法与实现技术抛弃式原型实现方法是在原型达到预期目的以后将它抛弃,所以可以花最小的代价尽快地建立该原型。抛弃式原型方法适合解决需求中的不确定性、二义性、不完整性或含糊性问题,以减少在继续开发时存在的风险。抛弃式原型可帮助用户和开发者想象如何实现需求和可以发现需求中的漏洞。抛弃式原型还可以使用户判断出这些需求是否可以完成必要的业务过程。进化式原型实现方法是将原型系统逐渐地演化为产品系统。与抛弃型原型的快速、粗略的特点相比,演化型原型一开始就必须具有健壮性和产品质量级的代码。因此,对于描述相同的功能,建立进化型原型比建立抛弃型原型所花的时间要多。一个演化型原型必须设计为易于升级和优化的,因此,必须重视软件系统性和完整性的设计原则。原型开发实现技术:第四代技术可复用软件构件技术形式化规约和原型实现环境讨论:下列哪些系统适合抛弃型原型开发实现?哪些系统适合演化型原型开发实现?全自动洗衣机控制系统
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年专利实施许可及代理合同
- 二零二四年度数据中心弱电系统改造施工合同2篇
- 2024年化工厂场地租赁合同:维修责任、续租及优先购买权
- 二零二四年度云计算服务分租租赁合同
- 2024年合作合同书:联合建设XX工程项目版B版
- 二零二四年度砂石质量检测服务合同3篇
- 2024年专业食用菌菌种交易合同
- 2024年度电力设施搬迁及安装合同2篇
- 2024小面积店铺租赁合同范本
- 2024年国际货物买卖运输合同
- 人教版(2024)七年级上册数学第5章单元测试卷(含答案)
- 2024年建筑安全员C证考试题库及答案
- DBJ15 31-2016建筑地基基础设计规范(广东省标准)
- MOOC 电子线路设计、测试与实验(一)-华中科技大学 中国大学慕课答案
- 体育守门员站立式下手接地滚球教学设计
- 第四章差分方程方法
- 数字电子技术教学改革及实践
- 铝合金门窗安装技术交底(完整版)
- SFA-5.1手工电弧焊用碳钢焊条标准
- 农村通用对联
- 肾性高血压的超声诊断
评论
0/150
提交评论