第三章软件需求分析SoftwareRequirementsAnalysis3.1需求分析概述3.2结构化分析方法3.3需求分析实例3.4软件需求规格说明书SRS3.5需求复审目录3.1软件需求分析概述3.1.1需求分析的任务与步骤3.1.2需求获取的常用方法3.1.3需求说明3.1.4分析建模3.2结构化分析方法分析模型描述工具数据流图DFD数据字典DD加工说明PSPECCFD&CSPECSTDER图3.3需求分析实例3.4软件需求规格说明书SRS3.5需求复审3.1软件需求分析概述3.1.1需求分析的任务和步骤3.1.2需求获取的常用方法3.1.3需求说明3.1.4分析建模模型目录3.1.1需求分析的任务/步骤步骤:1.获取需求2.提炼:建立分析模型3.描述:编写SRS需求规格说明书(SoftwareRequirementSpecification)4.验证让用户和开发者共同明确将要开发的是什么样的系统3.1.2需求获取的常用方法1.收集资料原有系统的数据(帐册、报表。。)借鉴已有的类似软件产品2.联合分析小组用户代表、领域专家和系统分析员3.客户访谈&会议充分准备,寻找共同语言事先准备一些问题交流时循序渐进、逐步逼近每次访谈后及时分析、整理、汇总4.实地考察——观察用户工作流程5.快速原型法上一级3.1.3需求说明是需求分析应获取的内容,写SRS的依据1.功能需求分析用户要求实现的全部功能(分析建模DFD,DD)2.性能需求时间特性时间精确性(响应时间)存储容量及后援存储系统安全性3.外部接口需求1)用户接口(人机界面)2)硬件接口3)软件接口4)通信接口4.属性(可靠性,可用性,可维护性….)5.约束(精度,标准,语言,硬件平台,…)上一级注:性能需求1.时间特性2.时间精确性(响应时间,更新时间,数据转换时间,数据传输时间…3.存储容量及后援存储4.系统安全性例1:“数据采集的频率为每秒采样100次”例2“应力分析程序必须在一分种内生成任何一个梁的应力报告返回注:属性可靠性“机场雷达系统一个月内不能出现2次以上故障”可用性“任何时候,主机或备份机上的银行数据至少有一个可用”可维护性系统出错后可以允许的最大恢复时间系统运行日志是否允许对系统的修改警告出错处理需求返回3.1.4分析建模分析方法的种类:1)传统的分析方法:面向数据流的结构化分析方法(SA)面向数据结构的Jackson方法(JSD)结构化数据系统开发方法(DSSD)2)面向对象的分析方法各种分析模型中均包括:信息(或数据)模型功能模型行为模型目录3.2结构化分析方法(StructuredAnalysis)思想:自顶向下,逐步细化(Top-DownStepwiseRefinement)适于数据处理类型软件的需求分析步骤:自顶向下对系统进行功能分解,画出分层DFD由后相前定义系统的数据编制DD和PSPEC最终写出SRSCFD,STD图DFD图E-R图DD控制说明3.2.1结构化分析模型DD数据词典(DataDictionary)系统所涉及各种数据对象的总和数据流图(DataFlowdiagram)描述系统中数据的流动和变换DFD图中每个功能的描述写在加工说明中具有复杂数据结构的数据模型描述E-R中出现的每个数据对象的属性系统在外部事件的作用下如何动作,各种状态的变迁目录3.2.2结构化分析描述工具功能模型:DFD和PSPEC行为模型:CFD、CSPEC和STD数据模型:DD,E-R图(1)数据流图DFD(2)数据字典DD(3)E-R图(4)加工说明PSPEC(5)CFD和CSPEC(6)STD(1)数据流图(一)什么是数据流图DFD(二)DFD的绘制步骤(三)DFD绘制的一般原则附3.1:需求实例:教材销售系统的DFD(四)数据流图的改进improvingDFD(一)什么是数据流图DFD描述系统逻辑模型:信息在系统中的流动和处理数据源点和终点加工数据流向数据文件或数据库数据流上的数据名称单向:只读双向:读写上一级1审查并开发票2开领书单学生学生购书单发票领书单无效书单学生计划用书表教材存量表文件与加工之间用箭头线连接,单向表示只读或只写,双向表示有读有写每一图形符号都必须标上名字加工框还应加上编号同程序流程图的区别程序流程图表示程序的过程设计——怎么干DFD用是软件需求分析工具,不表示程序的控制结构(选择/循环)——干什么分层:从高层到低层,分解前后的数据流必须一致简单例-学生购书张秘书开购书证明,学生凭证明到教材科王会计开购书发票向李出纳员交纳书款,拿领书单到书库找保管员领书B)去掉模型中非计算机本质的因素后得到的购书逻辑模型人工操作,去掉改进后的学生购买教材的系统模型1审查并开发票2开领书单学生学生购书单发票领书单无效书单上一级学生计划用书表教材存量表附加:数据流图的基本图元素附加符号*表示数据流之间是AND关系(同时存在)+表示数据流之间是OR关系⊕表示数据流之间是XOR关系(互斥关系)ABC*ABC+ABC⊕数据A和B同时输入才能变换成数据C数据A或B只要有一个输入就能变换成数据C数据A或B只能输入一个才能变换成数据CABC*ABC+ABC⊕数据A变换产生数据B和C数据A变换产生数据B或C至少一个数据A变换产生数据B或C(二)DFD的绘制步骤1.找出外部实体,确定系统边界2.从数据源出发,按系统的逻辑需求,逐步画出加工框,直至数据终点3.为了控制系统复杂度,DFD分层,自顶向下,逐步求精4.对DFD进行复审上一级分层DFDS1231.11.31.22.33.42.22.13.13.33.2顶层0层•父图与子图•编号规则•顶层无编号•0层:1,2,3•1层:1.11.22.12.小数点数代表层数1层上页(三)DFD绘制的一般原则1.每个加工必须有输入输出流2.两个加工之间可以有多股数据流3.每个数据流必须有一个合适的名字4.DFD描述的是数据流而不是控制流5.分解中的父子平衡6.局部文件7.注意分解速度“最多不要超过7个上层快些,下层慢些8.当每个加工都已足够简单时,分解就可结束上一级两个加工之间可以有几股数据流,例:日报表和月报表这两个数据流相互间没有任何联系,也不是同时流出的。每个数据流必须有一个合适的名字。除了流向文件或从文件流出的数据流不必命名之外(有文件名足矣),返回数据流图中描述的是数据流而不是控制流。例:“取下一张卡片”是一个控制流而不是数据流,因为并没有任何数据沿着这个箭头流动,这个箭头应该从图中删去。返回父子平衡balance平衡:子图的所有输入(输出)数据流必须是父图中相应加工的输入(输出)例:平衡父图子图4例:特殊平衡例:不平衡返回局部文件例:子图中的文件ALPHA完全局部于加工4根据“抽象”原则,父图只需画出加工和加工之间的联系,而不必画出各个加工内部的细节,所以父图中不必画文件ALPHA,数据流XXX、YYY也不必画出。当文件被用作数据流图中某些加工之间的交界面时,才必须画出来合理运用局部文件进行信息隐蔽返回附3.1实例1-1:教材购销系统——功能描述(1)顶层DFD这个数据流图只是一个高层的系统逻辑模型,它反映了目标系统要实现的功能•首先确定系统的输入和输出•顶层数据流图,反映最主要业务处理流程学生购书单教材购销系统采购员缺书单进书通知领书单发票(2)第一层DFD1销售2采购采购员学生购书单进书通知F1教材存量表F2缺书登记表缺书单进书通知领书单发票•然后从输入端开始,根据业务工作流程,画出数据流流经的各加工框,逐步画到输出端,得到第一层数据流图•经过分析,业务处理的主要功能应当有销售、采购•主要数据流输入的源点和输出终点是学生和书库保管员(3)第二层DFD:1销售子系统(4)第二层DFD-2采购子系统目录采购员(四)数据流图的改进improvingDFD应遵循DFD绘制的原则(见前)数据守恒;文件的使用;父图和子图的平衡a)数据不守恒的情况现象1:防止无根之水!加工用以产生输出的数据并未输入该加工项目=项目名称+时间运动员名单=队名+姓名+项目项目参加者=项目+姓名+运动员号原因:某些数据流被遗漏了返回现象2:出现没有必要的数据例:加工“开发票”根据“订货单”和“价目”文件开出“发票”,如果这些数据的组成如下:订货单=单位名+货名+货号+数量价目=货名+单价发票=单位名+货名+数量+单价+总计处理:货号多余,删之b)局部文件只有流向文件DELTA的数据流而没有从该文件流出的数据流,即只有写文件的加工而没有读文件的加工,这说明一定是某些加工被遗漏了返回C)命名要合适DFD中各成分的命名要“易理解”例:计算总工作量——好写发票——好存储和打印提货单——可以分解为两个加工处理订货单——不具体,如何处理?处理输入——不具体,太空洞好的命名:动词+宾语返回(2)数据字典DD与DFD配合,给出DFD中所有数据的定义和属性DD的用途分析阶段的交流工具包含控制信息数据库设计的基础内容数据项(一个数据元素)数据流(包含多个数据项)数据文件或数据库定义数据的方法:自顶向下分解数据表示方法:表格公式法例:DD发票各班学生用书表数据流名:发票别名:购书发票组成:(学号)+姓名+{书号+单价+数量+总价}+书费合计备注:返回发票=(学号)+姓名+{书号+单价+数量+总价}+书费合计购书发票学号姓名书号单价数量小计书费合计文件名:各班学生用书表(简化版)别名:组成:{系编号+专业+班编号+年级+书号}备注:组织:按系、专业和班编号从小到大排列数据项名:年级别名:取值及含义:F:freshman,一年级M:sophmore,二年级J:junior,三年级S:senior,四年级备注:F、M、J、S可分别用1,2,3,4返回系编号专业班编号年级书号公式法定义DD存折=户名+帐号+性质+(印密)//存折由户名、帐号、性质和可选印密组成户名=2{字母}20//户名为2-24个字母账号=账号码+“*”帐号码=“00000001”..“99999999”//帐号位于1-99999999的区间性质=[普通用户|工资用户|结算用户]帐户性质为普通用户、工资用户中一种印密=“0”//默认无印密=定义为A+B与(顺序)[A|B]或(选择){A}重复X={a}x由多个a组成m{A}n带上下限的重复X=3{a}8a至少出现3次,至多出现8次(A)可选X={a}a可以出现也可以不出现“A”基本数据元素X=”a”x的取值为aa..b取值区间上一级作业:对完整的存折信息进行描述存折=存折头+{存折行}课堂练习:学籍系统中的学籍信息简表的DD描述学号姓名性别出生日期学历学制备注说明:1)除备注可选外,其余为必填2)学号为12位数字,其中4位为入学年份、然后2位为系编号、之后的2位为专业号,1位为班号,最后3位为个人编号XXXXXXXXXXXX入学年份系号专业号班号个人号3)姓名为4~8个字符(即2~4个汉字);4)性别为“男”或“女”5)出生日期为XXXX年XX月XX日6)学制为3年或4年7)学历“本科”或“专科”(3)E-R图:用于对复杂数据数据分析和建模一对一联系(1∶1)一对多联系(1∶N)多对多联系(M∶N)实体属性关系教师学生课程1NNM教工号姓名性别职称职务学号姓名性别系年级课程号课名学时学分成绩例:按照学籍子系统的DFD,绘制E-R图招生办1.1审批待批新生数据待批新生数据正式新生数据1.2分班专业设置班级新生数据表1.3学籍审查学生新生信息学籍档案表1.4变动处理注册申请变更申请学籍变更通知1.5毕业准备成绩表毕业生数据1.6统计查询学生处教务子系统学籍变更记录表学籍档案表招生办1.1审批待批新生数据待批新生数据正式新生数据1.2分班专业设置班级新生数据表1.3学籍审查学生新生信息学籍档案表1.4变动处理注册申请1.5毕业准备成绩表毕业生数据1.6统计查询学生处教务子系统学籍变更记录表学籍档案表(4)加工说明