第三章 软件需求分析
需求分析:开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。
它有以下几难点:
⑴ 问题的复杂性。由用用户需求涉及的因素繁多引起,如运行环境和系统功能
⑵ 交流障碍。需求分析涉及人员较多,这些人具备不同的背景知识,处于不同角度,扮演不同角色,造成相互之间交流困难。
⑶ 不完备性和不一致性。用户对问题的陈述往往是不完备的,各方面的需求可能还存在矛盾,需求分析要消除矛盾,形成完备及一致的定义。
⑷ 需求易变性。
近几年来已提出多种分析和说明方法,但都必须适用以下原则:
⒈ 必须能够表达和理解问题的数据域和功能域。数据域包括数据流(数据通过一个系统时的变化方式)数据内容和数据结构,功能域反映上述三方面的控制信息。
⒉ 可以把一个复杂问题按功能进行分解并可逐层细化。
⒊ 建模。可更好地理解软件系统的信息,功能,行为。也是软件设计的基础。
需求分析的任务:
⒈ 问题识别:双方确定对问题的综合需求,这些需求包括功能需求,性能需求,环境需求,用户界面需求。
⒉ 分析与综合,导出软件的逻辑模型
⒊ 编写文档:包括编写"需求规格说明书""初步用户使用手册""确认测试计划""修改完善软件开发计划"
结构化分析:简称SA,面向数据流进行数据分析的方法。采用自顶向下逐层分解的分析策略。顶层抽象地描述整个系统,底层具体地画出系统工程的每个细节。中间层则是从抽象到具体的过渡。使用数据流图,数据字典,作为描述工具,使用结构化语言,判定表,判定树描述加工逻辑。
结构化(SA)分析步骤:
⑴了解当前系统的工作流程,获得当前系统的物理模型。
⑵抽象出当前系统的逻辑模型。
⑶建立目标系统的逻辑模型。
⑷作进一步补充和优化。
数据流图(DFD)
以图形的方式描述数据在系统中流动和处理的过程。只反映系统必须完成的逻辑功能,是一种功能模型。
画数据流图的步骤:
⑴首先画系统的输入输出,即先画顶层数据流图。顶层图只包含一个加工,用以表示被开发的系统。
⑵画系统内部,即画下层数据流图。将层号从0号开始编号,采用自顶向下,由外向内的原则。画更下层数据流图时,则分解上层图中的加工,一般沿着输出入流的方向,凡数据流的组成或值发生变化的地方则设置一个加工,一直进行到输出数据流。如果加工的内部还有数据流,则继续分解,直到每个加工足够简单,不能再分解为止。不能分解的加工称为基本加工。
⑶注意事项:
⒈命名。不能使用缺乏具体含义的名字,加工名应能反映出处理的功能。
⒉画数据流而不是控制流。数据流名称只能是名词或名词短语,整个图中不反映加工的执行顺序。
⒊一般不画物质流。
⒋每个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果 。
⒌编号。某个加工分解成加一张数据流图时,上层图为父图,下层图为子图。子图应编号,子图上的所有加工也应编号,子图的编号应与父图的编号相对应。
⒍父图与子图的平衡。子图的输入输出数据流同父图相应加工的输入输出数据流必须一致
⒎局部数据存储。当某数据流图书馆中的数据存储不是父图中相外部接口,而只是本图中某些加工之间的数据接口,则称这些数据存储为局部数据存储。
⒏提高数据流图的易理解性。
为使数据流图便于在计算机上输入和输出,给出了描述数据流图的另一套图形符号表示数据流,只能水平或垂直画
数据字典(DD)用来定义数据库流图中的各个成分的具体含义。有以下四类条目:数据流,数据项,数据存储,基本加工。
⒈数据流条目,内容及举例如下:
数据流名称:订单
别名:无
简述:顾客订货时填写的项目
来源:顾客
去向:加工1"检验订单"
数据流量:1000份/每周(单位时间内的传输次数)
组成:编号+订货日期+顾客编号+地址+电话+银行帐号+货物名称+规格+数量
⒉数据存储条目,内空及举例
数据存储名称:库存记录
别名:无
简述:存放库存所有可供货物的信息
组成:货物名称+编号+生产厂家+单价+库存量
组织方式:索引文件,以货物编号为关键字
查询要求:要求能立即查询
⒊数据条目,内容及举例
数据项名称:货物编号
别名:G-No,G-num,Goods-No
简述:本公司所有货物的编号
类型:字符串
长度:10
取值范围及含义:
第一位:进口/国产
第2-4位:类别
第5-7位:规格
第8-10位:品名编号
⒋加工条目,内容及举例
加工名:查阅库存
编号:1﹒2
激发条件:接收到合格订单时
优先级:普通
输入:合格合格订单
输出:可供货订单,缺货订单
加工逻辑:根据库存记录
IF 订单项目数量<该项目库存量临界值
THEN 可供货处理
ELSE 此订单缺货,登录,待进货后再处理
ENDIF
数据字典的实现:
⑴手工建立:数据字典的内容用卡片形式存放
⑵利用计算机辅助建立并维护
加工逻辑的描述:一般用结构化语言,判定表,判定树
结构化语言是介于自然语言和形式语言之间的一种半形式化语言。它的结构可分里层和内层
⑴外层:用来描述控制结构,采用顺序,选择,重复三种基本结构。
①顺序结构:是一组祈使语句,选择语句,重复语句的顺序排列
②选择结构:一般用IF-THEN-ELASE-ENDIF,CASE-OF-ENDCASE等关键词。
③重复结构:一般用DO-WHILE-ENDDO,REPEAT-UNTIL等关键词。
⑵内层:一般采用祈使语句的自然语言短语,使用数据字典中的名词和有限的自定义词,其
动词含义要具体,尽量不使用形容词和副词来修饰。
判定表由四个部分组成:条件定义 条件取值的组合
动作定义 在各种取值的组合下应执行的动作
例:加工逻辑描述为,如果申请者的年龄在21岁以下,要额外收费;如果申请者是21岁以上并是26岁以下的女性,适用于A类保险;如果申请者是26岁以下的已婚男性,或者是26岁以上的男性,适用于B类保险;如果申请者是21岁以下的女性或是26岁以下的单身C类保险。附此之外的其他申请者都适用于A类保险。
条件取值表
判定表能在什么条件下系统应做什么动作准确无误地表示出来,但不能描述循环的处理特性,循环处理还需结构化语言。
判定树,是判定表的变形,比判定表更直观,更易于理解和使用。
下面的判定树与所举例的判定表等价
【编辑推荐】