4.1 结构化分析方法的概念
4.1.1 软件开发方法学
举例:
- 结构化方法
- 面向对象方法
- 面向数据结构方法
- 敏捷开发方法
- Open source
- …
对比:
- 软件开发方法:软件开发过程中所遵循的办法和步骤。
- 软件开发方法学:指的是规则、方法和工具的集成。
4.1.2 结构化方法的组成
结构化软件开发方法的组成:

4.1.3 结构化分析
分析的目标:
对需求陈述进行分析,解决其中的歧义、不一致等问题,以系统化的形式表达用户的需求,即给出问题的形式化或半形式化的描述(亦称概念模型、系统的需求规约、需求规格说明)。
怎么分析:
- 提供一组术语(符号)
- 给出表达模型的工具
- 给出过程指导
4.2 结构化分析模型
4.2.1 基本术语

4.2.2 模型表达工具
4.2.2.1 数据流(DFD)图:
一种表达系统功能模型的工具,用于描述数据变换。
举例(一个飞机票预定系统的数据流图):

4.2.2.2 数据字典:
定义数据流和数据存储结构,并给出基本数据类型
引入逻辑操作符用于定义数据结构:

举例:

4.2.2.3 加工说明
描述加工逻辑及相关信息,包括执行条件、优先级、执行频率、出错处理等。
判定表基本格式:
条件类别 | 条件组合 |
---|---|
操作 | 操作执行 |
举例1(用结构化自然语言描述,适用于较为简单的加工):

举例2(用判定表描述,适用于较复杂的加工描述):
考试总分 | >=620 | >=620 | <620 |
---|---|---|---|
单科成绩 | 有满分 | 有不及格 | 有满分 |
发升级通知书 | y | y | n |
发留级通知书 | n | n | y |
发重修通知书 | n | y | n |
举例3(用判定树描述,适用于较复杂的加工描述):

4.3 结构化分析过程
4.3.2 分析步骤
① 使用数据流图(DFD)建立系统的功能模型:建立顶层数据流图,确定边界,自顶而下,按照层次逐步分解。
② 使用逻辑操作符建立数据字典:定义数据流、数据存储、数据项等。
③ 使用判定表或树给出加工小说明:集中描述一个加工“做什么”,包含执行条件、优先级、执行频率、出错处理等。
4.3.2 实例
需求陈述:
建立一个简化的商业自动化系统,营业员记录每日销售商品(商品名、编号、单价、数量、销售时间),收款员记录收到的现金额和购物余额,经理统计每日销售额,在必要时查看某商品的销售情况。
【第一步】建立顶层数据流图:

- 数据流:销售的商品、日销售额等
- 数据源:营业员、经理、收款员
- 数据潭:经理收款员
- 加工名:要建立的系统名字
【第二步】分解至0层数据流图:

引入文件,使之形成一个有机整体
【第三步】分解至1层数据流图:

引入加工
【第四步】建立数据字典

【第五步】给出第五层的加工小说明:
模板:
- 加工编号
- 加工名
- 输入流
- 输出流
- 加工逻辑(结构化自然语言、判定表、判定树)
4.3.3 注意的问题
模型平衡问题:
- 父图与子图边界应保持一致。
- DFD中的数据流与数据字典应保持一致。
- DFD中的最底层加工与小说明应保持一致。
- 小说明和数据流图的图形表达应保持一致。
信息组织复杂性控制问题:
- 上层数据可打包。
- 图元个数控制在7±2以内。
- 数据流的数目应适中。
- 确定是否所有输入信息都用于产生输出信息。
- 确定一个加工产生的输出是否都能由该加工的输入信息导出。
4.4 需求规格说明书
模板:



(完)