1需求分析Ø需求分析Ø需求分析的过程Ø数据流图Ø数据字典Ø结构化需求分析的若干技术Ø验证软件需求Ø课堂小结2为什么需要需求分析:l开发人员往往急于求成l希望对开发进行指导l希望开发人员理解用户的要求l希望用户理解开发人员l测试部门有理可依需求分析3需求分析的任务需求分析的主要任务就是要通过软件开发人员与用户的交流和讨论,准确地获取用户对系统的具体要求。Ø准确地定义未来系统的目标Ø确定为了满足用户的需求系统必须做什么Ø用《需求规格说明书》规范的形式准确地表达用户的需求。需求分析4什么是用户需求n思考、涉及的几个问题Ø如何识别、获取需求?Ø你能够采取何种手段与用户进行交流沟通?Ø何为需求建模?Ø你如何理解模型与建模?需求分析5n用户对系统的需求通常可分为如下两类:(1)功能性需求:主要说明了待开发系统在功能上实际应做到什么,是用户最主要的需求。通常包括系统的输入、系统能完成的功能、系统的输出及其他反应。(2)非功能性需求:从各个角度对所考虑的可能的解决方案的约束和限制。主要包括:过程需求(如交付需求、实现方法需求等)、产品需求(如可靠性需求、可移植性需求、安全保密性需求等)和外部需求(如法规需求、费用需求等)等。需求分析什么是用户需求6需求分析的步骤问题分析问题评估和方案综合建模规约复审系统分析员的主要焦点是“做什么(what)”,不是“怎样做(how)”需求分析7需求获取面临的挑战Ø客户说不清楚需求Ø需求易变性Ø问题的复杂性和对问题空间理解的不完备性与不一致性需求分析8需求获取的常用方法Ø建立分析小组领域专家:主角系统分析员:导演Ø客户访谈Ø问题分析与确认需求分析9现场提问题的类别第一类:关注客户、整体目标和收益Ø谁是本工作的最初请求者?Ø谁将使用该解决方案?Ø成功的解决方案的经济收益是什么?Ø存在另外一个需要解决的问题吗?需求分析10第二类:便于分析员更好的理解、并使得客户更好的表达观点Ø对正在开发中的系统能够带来的好处有什么看法?Ø该解决方案强调了什么问题?Ø能向我演示或者描述本方案应用的环境吗?Ø存在影响本方案的特殊性能问题或约束吗?需求分析11第三类:所谓的“元问题”Ø你是回答这些问题的合适人员吗?你的回答是“正式的”吗?Ø我的提问和你想解决的问题相关吗?Ø还有其他人员可以提供附加信息吗?Ø还有其他我应该问你的问题吗?需求分析12常用的提问词Ø谁Ø什么Ø哪里Ø何时Ø为什么Ø如何(怎样)需求分析13某出版社系统调查表您认为提高工作效率,节省工作时间,减轻工作强度可采取哪些办法?6工作中手工处理什么问题解决不了?影响效率的问题有哪些?5工作中手工处理特别麻烦的事情是什么?4您每日都处理那些文件、数据、报表?3出版业务流程是什么?2您在哪个部门工作?1提出问题编号需求分析14某出版社系统调查表出版社计算机管理信息系统需要解决什么问题?11哪些问题是目前传统手工方法根本无法解决的?10如何改进业务流程使之更合理?9您的部门采用计算机管理工作情况如何?8您的部门需要成本核算和统计的内容有哪些?7提出问题编号需求分析15客户的需求观谁是客户?Ø客户是指直接或间接从产品中获得利益的个人或组织Ø软件客户包括提出要求、支付款项、选择、具体说明或使用软件产品的项目风险承担者(stakeholder)或是获得产品所产生的结果的人。需求分析16客户与开发人员之间的合作关系Ø高质量的需求来源于客户与开发人员之间有效的交流与合作Ø通常,开发人员与客户或客户代理人成为一种对立关系Ø只有当双方参与者都明白要成功自己需要什么,同时也应知道要成功合作方需要什么时,才能建立起一种合作关系。需求分析17软件客户需求权利书(1)客户有如下权利:1.要求分析人员使用符合客户语言习惯的表达。2.要求分析人员了解客户系统的业务及目标。3.要求分析人员组织需求获取期间所介绍的信息,并编写软件需求规格说明。4.要求开发人员对需求过程中所产生的工作结果进行解释说明。5.要求开发人员在整个交流过程中保持和维护一种合作的职业态度。需求分析18软件客户需求权利书(2)6.要求开发人员对产品的实现及需求都要提供建议,拿出主意。7.描述产品使其具有易用、好用的特性。8.可以调整需求,允许重用已有的软件组件。9.当需要对需求进行变更时,对成本、影响、得失(trade-off)有个真实可信的评估。10.获得满足客户功能和质量要求的系统,并且这些要求是开发人员同意的。需求分析19软件客户需求义务书(1)客户有下列义务:1.给分析人员讲解业务及说明业务方面的术语等专业问题。2.抽出时间清楚地说明需求并不断完善。3.当说明系统需求时,力求准确详细。4.需要时要及时对需求做出决策。5.要尊重开发人员的成本估算和对需求的可行性分析。需求分析20软件客户需求义务书(2)6.对单项需求、系统特性或使用实例划分优先级。7.评审需求文档和原型。8.一旦知道要对项目需求进行变更,要马上与开发人员联系。9.在要求需求变更时,应遵照开发组织确定的工作过程来处理。10.尊重需求工程中开发人员采用的流程(过程)。需求分析21需求分析的原则目前存在着许多需求分析的方法,虽然各种方法都有其独特的描述方法,但不论采用何种方法,需求分析都必须遵循以下基本原则:Ø能够表达和理解问题的数据域和功能域。Ø能够将复杂问题分解化简。Ø能够给出系统的逻辑表示和物理表示。需求分析22高质量的需求过程带来的好处Ø开发后期和整个维护阶段的重做的工作大大减少Ø强调需求质量并不能引起某些人的重视,他们错误地认为在需求上消耗多少时间就会导致产品开发推迟多少时间Ø将选定系统的需求明确地分配到各软件子系统,强调采用产品工程的系统方法。这样能简化硬软件的集成需求分析23优秀需求具有的特性ü1.完整性ü2.正确性ü3.可行性ü4.必要性ü5.划分优先级ü6.无二义性ü7.可验证性需求分析24需求获取的内容用户需求分类(1)功能性需求:定义了系统做什么(描述系统必须支持的功能和过程)(2)非功能性需求(技术需求):定义了系统工作时的特性(描述操作环境和性能目标)需求分析25两类需求包括的内容(1)功能(2)性能(3)环境(4)界面(5)用户或人的因素(6)文档(7)数据(8)资源(9)安全保密(10)软件成本消耗与开发进度(11)质量保证需求分析26(1)(1)功能需求功能需求Ø系统做什么?Ø系统何时做什么?Ø系统何时及如何修改或升级?需求分析(2)(2)性能需求性能需求软件开发的技术性指标例如:Ø存储容量限制Ø执行速度、响应时间Ø吞吐量27(3)(3)环境需求环境需求Ø硬件设备:机型、外设、接口、地点、分布、温度、湿度、磁场干扰等Ø软件:操作系统网络数据库需求分析28(4)(4)界面需求界面需求Ø有来自其它系统的输入吗?Ø到自其它系统的输出吗?Ø对数据格式有规定吗?Ø对数据存储介质有规定吗?需求分析29(5)(5)用户或人的因素用户或人的因素Ø用户类型?Ø各种用户熟练程度?Ø需受何种训练?Ø用户理解、使用系统的难度?Ø用户错误操作系统的可能性?需求分析30(6)(6)文档需求文档需求Ø需哪些文档?Ø文档针对哪些读者?需求分析(7)(7)数据需求数据需求Ø输入、输出数据的格式?Ø接收、发送数据的频率?Ø数据的准确性和精度?Ø数据流量?Ø数据需保持的时间?31(8)(8)资源需求资源需求Ø软件运行时所需的数据、软件、内存空间等资源。Ø软件开发、维护所需的人力、支撑软件、开发设备等。(9)(9)安全保密要求安全保密要求Ø需对访问系统或系统信息加以控制吗?Ø如何隔离用户之间的数据?Ø用户程序如何与其它程序和操作系统隔离?Ø系统备份要求?需求分析32(10)(10)软件成本消耗与开发进度需求软件成本消耗与开发进度需求Ø开发有规定的时间表吗?Ø软硬件投资有无限制?什么限制?(11)(11)质量保证质量保证Ø系统的可靠性要求?Ø系统必须监测和隔离错误吗?Ø规定系统平均出错时间?Ø出错后,重启系统允许的时间?Ø系统变化如何反映到设计中?Ø维护是否包括对系统的改进?Ø系统的可移植性?需求分析33当前系统目标系统物理模型逻辑模型逻辑模型物理模型模型化抽象化具体化实例化怎么做做什么当前系统目标系统需求定义需求分析的过程34逻辑模型和物理模型Ø模型是对对象系统的形式化的特征抽象,概括性或近似地表示Ø构造模型的过程是一个抽象、分析的过程。对象系统模型系统抽象(映射)模型应用模型构造的过程需求分析的过程35逻辑模型物理模型(本质模型、概念模型)(实施模型、技术模型)现行系统目标系统描述重要的业务功能,无论系统是如何实施的。描述现实系统是如何在物理上实现的。描述新系统的主要业务功能和用户新的需求,无论系统应如何实施。描述新系统是如何实施的(包括技术)。需求分析的过程36数据流图在需求分析阶段,数据流(也称信息流)是系统分析的基础。数据流图(DFD,DataFlowDiagram)是描述软件系统中数据处理过程的一种有力的图形工具。数据流图从数据传递和加工的角度出发,刻画数据流从输入到输出的移动和变换过程。外部实体外部实体外部实体外部实体外部实体外部实体外部实体外部实体目标系统目标目标系统系统输入信息输入信息输入信息输入信息输出信息输出信息输出信息输出信息37数据流图中的基本符号或或符号含义数据流的源点和终点数据流文件(数据存储)加工(数据处理)数据流图38数据流与加工之间的关系在数据流图中,可以有两个以上的数据流进入同一个加工,也可以有两个以上的数据流从同一个加工中流出,这样的多个数据流之间往往存在一定的关系。在下表中列出了加工中常见的几种关系的表示方法。数据流图39加工中常见关系的符号表示数据流图40分层数据流模型的建立方法:1.建立顶层数据流图Ø顶层流图仅包含一个加工,它代表被开发系统。它的输入流是该系统的输入数据,输出流是系统所输出数据2.数据流图的分层细化Ø底层流图是指其加工不需再做分解的数据流图,它处在最底层Ø中间层流图则表示对其上层父图的细化。它的每一加工可能继续细化,形成子图。数据流模型的建立方法数据流图41画数据流图Ø规则:由外向里画Ø画系统的输入输出Ø画系统的内部Ø画加工的内部数据流图42结构化分析方法功能建模的步骤结构化分析方法功能建模的步骤商店业务处理系统商店业务处理系统数据流图43nn这个数据流图只是一个高层的系统逻辑这个数据流图只是一个高层的系统逻辑模型,它反映了目标系统要实现的功能模型,它反映了目标系统要实现的功能nn数据流图绘制步骤数据流图绘制步骤uu首先确定系统的输入和输出首先确定系统的输入和输出uu根据商店业务,画出顶层数据流图,根据商店业务,画出顶层数据流图,以反映最主要业务处理流程以反映最主要业务处理流程数据流图44uu经过分析,商店业务处理的主要功能经过分析,商店业务处理的主要功能应当有销售、采购、会计三大项。主应当有销售、采购、会计三大项。主要数据流输入的源点和输出终点是顾要数据流输入的源点和输出终点是顾客和供应商。客和供应商。uu然后从输入端开始,根据商店业务工然后从输入端开始,根据商店业务工作流程,画出数据流流经的各加工作流程,画出数据流流经的各加工框,逐步画到输出端,得到第一层数框,逐步画到输出端,得到第一层数据流图据流图数据流图45工资计算系统的顶层(0层)数据流图人事部门后勤部门出勤表业绩表水电扣款表职工银行工资条工资存款清单工资计算系统数据流图46工资计算系统第一层数据流图人事部门后勤部门出勤表业绩表水电扣款表职工银行工资条1计算工资实发工资表3工资转存2打印工资清单工资存款清单工资清单F323数据流图47人事部门出勤表业绩表1.1计算奖金和缺勤扣款奖金发放表1.2计算应发工资应发工资表1.3计算所得税1.4计算实发工资实发工资表水电扣款表后勤部门所得税扣款缺勤扣款表工资清单F3(a)(b)工资计算实发工资表2.1查找职工银行工资账号实发工资2.2生成工资存款清单工资存款清单银行账号职工个人工资账号清单F4工资计算系统的第二层数据流图“计算工资”子数据流图“工资转存”子数据流图工资档案文件F2奖惩条例文件