ComputerSchoolofWuhanUniversity软件工程SoftwareEngineering计算机学院软件工程课程组SoftwareEngineering软件生存期维护软件计划需求分析测试软件设计实现(编码)定义时期开发时期使用和维护时期退役SoftwareEngineering第4章软件需求分析需求分析的主要任务是什么?如何识别、获取需求?需要获取哪些需求?何为需求建模?什么是结构化分析方法?什么是面向数据流的分析方法?SoftwareEngineering一、需求分析目标和任务需求获取技术需求内容需求建模方法仍然回答“What”,而不是“How”,但更细致、精确(合同的拟定)SoftwareEngineering1.需求分析的任务问题分析需求描述需求评审SoftwareEngineering2.初步需求获取技术1.调研(个别访谈,小组会议,观察用户工作流程)。2.阅读与行业相关的标准或规则、文档,获取需求。3.通过市场调查和用户问卷调查,了解目前市场上用户对同类产品的意见和建议。4.收集同类产品的用户手册、操作说明、演示版本等,然后对它们进行比较,汲取精华,去其糟粕。SoftwareEngineering举例:某出版社系统需求调查表编号提出问题1您在哪个部门工作?2出版业务流程是什么?3您每日都处理那些文件、数据、报表?4工作中手工处理特别麻烦的事情是什么?5工作中手工处理什么问题解决不了?影响效率的问题有哪些?6您认为提高工作效率,节省工作时间,减轻工作强度可采取哪些办法?SoftwareEngineering举例:某出版社系统需求调查表编号提出问题7您的部门需要成本核算和统计的内容有哪些?8您的部门采用计算机管理工作情况如何?9如何改进业务流程使之更合理?10哪些问题是目前传统手工方法根本无法解决的?11出版社计算机管理信息系统需要解决什么问题?SoftwareEngineering3.需求内容功能性需求定义了系统做什么描述系统必须支持的功能和过程非功能性需求(技术需求)定义了系统工作时的特性描述操作环境和性能目标SoftwareEngineering需求包括的内容(1)功能(2)性能(3)环境(4)界面(5)用户或人的因素(6)文档(7)数据(8)资源(9)安全保密(10)软件成本消耗与开发进度(11)质量保证系统做什么?系统何时做什么?系统何时及如何修改或升级?软件开发的技术性指标存储容量限制执行速度、响应时间吞吐量硬件设备机型、外设、接口、地点、分布、温度、湿度、磁场干扰等软件操作系统、网络、数据库有来自其它系统的输入吗?到自其它系统的输出吗?对数据格式有规定吗?对数据存储介质有规定吗?用户类型?各种用户熟练程度?需受何种训练?用户理解、使用系统的难度?用户错误操作系统的可能性?需哪些文档?文档针对哪些读者?输入、输出数据的格式?接收、发送数据的频率?数据的准确性和精度?数据流量?数据需保持的时间?软件运行时所需的数据、软件、内存空间等资源软件开发、维护所需的人力、支撑软件、开发设备等需对访问系统或系统信息加以控制吗?如何隔离用户之间的数据?用户程序如何与其它程序和操作系统隔离?系统备份要求?开发进度开发有规定的时间表吗?软硬件投资有无限制?系统的可靠性要求?系统必须监测和隔离错误吗?规定系统平均出错时间?出错后,重启系统允许的时间?系统变化如何反映到设计中?维护是否包括对系统的改进?系统的可移植性?SoftwareEngineering需求的任务与可能遇到问题任务:功能需求、性能需求、环境需求(开发环境与运行环境)可能遇到问题1、认识不统一(用户之间、用户与开发者之间),在特定应用系统中称一把手工程2、用户与开发者之间无共同语言,隔行如隔山。开发者应尽可能熟采应用领域3、需求是一个反复过程、别指望一两次调研会就解决问题,每次反复都要有需求分析文档作依据。SoftwareEngineering4.需求建模方法1.面向数据流的分析方法2.面向对象的分析方法3.面向数据结构的分析方法SoftwareEngineering二、数据流分析技术需求建模方法1.结构化方法(StructuredAnalysis,SA)用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。面向数据流的分析技术(DataFlowAnalysis,DFA)SoftwareEngineering1.分析建模实体–关系图状态转换图数据流图数据字典数据对象描述控制规格说明加工规格说明分析模型①数据模型②功能模型③行为模型SoftwareEngineering分析模型模型图形工具描述附加文档核心数据字典使用或产生的所有数据对象①数据建模实体关系图数据对象间关系数据对象描述②功能建模数据流图数据移动怎样被转换变换数据流的功能加工规格说明③行为建模状态转换图系统行为模式(状态)不同状态间转换的方式控制规格说明SoftwareEngineering2.实体—关系图(Entity-RelationshipDiagram,ERD)教师教工号姓名性别职称职务教课程课程号课程名学时学分学学生姓名学号性别系成绩年级教学管理E-R模型1NNMentityattributerelationSoftwareEngineering3.数据流图(DataFlowDiagram,DFD)分层数据流图SoftwareEngineering(1)DFD组成成分Input/outputFunctionDataflowDatastorage外部实体加工数据流数据存储SoftwareEngineering数据流图的作法例1:某工厂仓库的“订货系统”应根据仓库管理员的提货清单、订货单更新库存报表,决定需要再次订货的零件(包括零件编号、名称、订货量、价格、供应商等数据),将订货报表呈交给采购员去采购(每天一次)。当某零件的库存量库存量临界值,就要再次定货。仓库管理员采购员订货系统提货清单进货单订货报表顶层1层1.更新库存信息2.处理订货库存报表库存报表RWSoftwareEngineering2.1定货判断2.2产生定货报表数据流图的作法2层仓库管理员采购员订货系统提货清单进货单订货报表顶层1层1.更新库存信息2.处理订货库存报表库存报表RW订货信息W订货信息R订货信息抽象具体SoftwareEngineering数据的不同形式数据的两种不同形式静态数据与动态数据静止态(需较长时间保存的数据)运动中(应处理的实时数据)数据流数据存储SoftwareEngineering(2)命名数据流(数据存储)表格、单据名称代表性数据名称便于理解的名称错误命名控制流实物加工/处理顶层:软件项目名动宾结构错误命名意义空洞的动词(计算,处理,加工)SoftwareEngineering(3)层次分解法父图—子图平衡123ABCDECFDE3.13.23.33.4父图—子图不平衡SoftwareEngineering(4)加工分解原则a)1加工≤7子加工b)按问题的逻辑特性分解c)尽量少分解层次d)分解均匀SoftwareEngineering4.状态转换图(StateTransitionDiagram,STD)通过描绘系统的状态及引起系统状态转换的事件来表示系统的行为。系统行为模式do:进入该状态时系统的行为引起系统状态转换的控制信息状态do:行为事件SoftwareEngineeringSTD(状态转换图)中使用的主要符号状态1do:行为1状态2do:行为2……初始事件事件1[条件1]事件2[条件2]结束事件SoftwareEngineering【例】电话系统的状态转换图闲置拨号音do:响拨号音拨号接通中do:试接通振铃do:振铃通话断线忙音do:响忙音超时do:响蜂鸣音提示信息do:播放信息挂机数字占线摘机数字有效号码已接通受话人摘机应答受话人挂机超时超时无效号码挂机信息播完SoftwareEngineering5.数据字典(DataDictionary,DD)描述数据的信息的集合,是对系统中使用的所有数据元素的定义的集合。信息名字、别名使用地点与方式内容描述补充信息SoftwareEngineeringDD定义中的符号符号含义举例=+[...,...]或[...|...]{...}或m{...}n(...)“...”..被定义为与或重复可选基本数据元素连结符x=a+bx=[a,b],x=[a|b]x={a},x=3{a}8x=(a)x=“a”x=1..9SoftwareEngineering•数据流名称、编号及别名;•数据流的来源,可能是一个外部实体、处理逻辑、数据存贮;•数据流的去处;(同上)•数据流的组成,一个数据流可能包括若干个数据结构,若只有一个数据结构,就不需要专门定义;•数据流的流通量;•高峰时期的流通量。数据流条目SoftwareEngineering数据存储的名称、编号及别名•描述•流入、流出的数据流•组成•组织方式数据存储(文件)条目SoftwareEngineering处理条目•处理逻辑的名称及编号、别名•简要的描述•激发条件•优先级•输入数据流•输出数据流•处理逻辑:简述加工程序、加工顺序SoftwareEngineering•结构化英语•判定表•判定树用于写处理逻辑说明的工具SoftwareEngineering(1)结构化英语(PDL)语言是一种介于自然语言和形式化语言之间的语言语言的正文用基本控制结构进行分割,加工中的操作用自然语言短语来表示其基本控制结构有三种:简单陈述句结构:避免复合语句;重复结构:WHILE_DO或REPEAT_UNTIL结构。判定结构:IF_THEN_ELSE或CASE_OF结构;SoftwareEngineering判定表/树当数据流图中某个加工的动作需要依赖于多个逻辑条件的取值时,用自然语言或结构化的语言都不易清楚地描述出来。然而,判定表/树却能清晰地表示复杂的条件组合与应做动作之间的对应关系。SoftwareEngineering例:检查发货单SoftwareEngineering一张判定表由四部分组成:(1)左上部列出所有条件;(2)左下部是所有可能做的动作;(3)右上部为条件取值的各种可能组合;(4)右下部的每一列是在各种条件取值的组合下应执行的动作。SoftwareEngineering判定树判定树是判定表的变形。有时侯它比判定表更直观。SoftwareEngineering实例:住房公积金管理系统资金中心公积金管理资金中心开户建帐凭证录入分类与汇总查询开户帐要求凭证汇总要求查询要求属性库记帐凭证流水帐汇总表查询结果SoftwareEngineering第一层开户建帐单位属性录入校验单位属性库SX凭证录入校核支取凭证转移凭证缴交凭证流水帐PZK微机记帐凭证WP核准后的流水帐PZK核准后的微机记帐凭证WPSoftwareEngineering分类汇总操作的分解分户帐缴交归类汇交行归类支存对照部门归类支取归类余额归类分类汇总SXPZKWPDF01DF02DF03DF04DF05DF06DF07SoftwareEngineering查询操作的分解按日期查流水帐按日期查凭证按结算点查流水查欠交单位查单位分户帐查询显示凭证库流水帐库属性库查询结果