3.结构化分析

clow

2019/03/16 发布于 技术 分类

文字内容
1. 第三讲 结构化分析与设计方法     传统软件工程方法  以功能为中心  以数据为中心 结构化方法基本概念  抽象(Abstraction)  逐步求精(Refinement)  信息隐藏(Information Hiding) 结构化分析  数据分析:数据建模  功能分析:数据流建模  行为分析:控制流建模 案例分析:家庭安全系统SafeHome 结构化分析
2. 传统软件工程方法 (Classical Software Engineering) 结构化分析 系统性 运用自然科学、管理科学理论对系统进行优化设计。 即用数学模型和逻辑模型来描述系统,通过模拟系统 行为、求得系统的最优组合方案和最优的运行方案。 工程性 运用工程学原理,实施系统开发全过程管理,实现阶 段性过程控制,达到软件开发和软件质量要求。 标准化 开发文档的形式和管理符合通行标准。 结构化 强调开发方法的结构合理性以及所开发软件的结构合 理性,支持信息抽象、逐步求精。
3. 实例分析 结构化分析 传送带分类系统 该系统对零部件进行分类。每一个零部件上有一个条 形码标识号,并在传送带末端分别送到六个箱子中。 零部件以随机的顺序通过,且其间的距离相同。       建模准备 零部件标识号的形式?其间的距离?到达频率? 传送带的速度?末端可扩展空间? 箱子的间距? 错误标识?箱满情况? 状态回传? 出错率?进度和预算约束?
4. 实例分析(续)          建议方案 方案一:人工完成 方案二:条形码阅读器 方案三:机器手 寻求最优 项目考虑:成本、进度 效益分析:回报率、市场前景 技术分析:技术可行性 可用资源:人员、设备 环境接口:内部、外部互联 法律考虑:产权、风险 结构化分析
5. 结构化方法 结构化分析 结构化(Structured)起源于结构化程序设计,具有面向功能、 结构清晰,支持逐步求精,软件易于维护的特点。  结构化分析(SA,Structured Analysis)  结构化设计(SD,Structured Design)  结构化程序设计(SP,Structured Programming) 抽象(Abstraction) 抽象在最高层次上指的是使用待解决的问题领域内的 术语描述的解决方案。 求精(Refinement) 求精又叫做逐步求精,指的是通过连续细化层次结构 的程序细节来开发程序体系的策略。 信息隐藏(Information Hiding) 信息隐藏原则强调,由设计决策所刻划的模块特性应 该对其余的模块不可见 。
6. 结构化分析方法 结构化分析 基本原则 自顶向下,先整体后局部、先抽象后具体,逐步求精 基本思想 把一个大问题分解成若干个小问题,每个小问题再分 解成若干个更小的问题。经过逐层分解,每个最低层 的问题都是足够简单、容易解决的,于是复杂的问题 也就迎刃而解了。
7. 结构化分析 结构化分析过程 build a prototype requirements the problem elicitation 软件需求规格说明 Review create analysis models
8. 需求描述示例 结构化分析 “产品必须在固定的时间间隔内提供状态信息, 并且每次时间间隔不得小于60秒。” “产品必须在显示和隐藏非打印字符之间进行瞬间切换。” “如果可能的话,应当根据学生号列表 在线确认所输入的学号。” “分析程序应该能生成HTML标记出错的报告, 这样就可以使HTML的初学者使用它来迅速排错。”
9. 结构化分析 SRS的编写要求 完整性 正确性 明确性 必要性 优先级 可行性 验证性 每一项需求都必须将所实现的功能描述清楚, 以使开发人员获得设计和实现这些功能所需 的所有必要信息。 每一项需求都必须准确地陈述其要开发的功 能。不能与系统需求相抵触。由用户代表做 出是否正确的结论。 对所有需求说明的读者都只有一个明确统一 的解释。 每一项需求都应把客户真正所需要的和最终 系统所需遵从的标准记录下来。 给每一项需求分配一个实施优先级 每一项需求都必须是在已知系统和环境限制 范围内可以实施的。 检查一下每项需求是否能通过设计测试用例 或其它的验证办法来确定产品是否确实按需 求实现了。 要求需求无二义性地被描述
10. 结构化分析 基于模型的需求分析过程 用户 调查 用户 系统模型 当前系统 物理模型 评审 修改 逻辑 抽象 目标系统 正式模型 行为模型 功能模型 数据模型 Data Model Functional Model Behavioral Model 当前系统 逻辑模型 完善 细节 计算 机化 目标系统 初始模型
11. 结构化分析 需求分析主要活动 建模数据需求 定义数据对象 描述数据属性 建立数据关系 建模功能需求 识别数据变换 标识数据流 表明生产者/消费者 建模行为需求 确定系统状态 标识系统事件 逐步求精每一个模 型以得到低层抽象
12. 数据建模 结构化分析 独立于业务处理,考察数据对象 关注业务数据,而非实现数据 从用户角度创建数据模型 标识数据对象之间的关系 数据建模语言: 数据字典(DD,Data Dictionary) 实体关系图(ERD,Entity Relationship Diagram)
13. 数据字典 结构化分析 ① 数据项:数据流图中数据块的数据结构中的数据项说明 数据项描述={数据项名,数据项含义说明,别名,数据类型, 长度,取值范围,取值含义,与其他数据项的逻辑关系} ② 数据结构:数据流图中数据块的数据结构说明 数据结构描述={数据结构名,含义说明,组成:{数据项或 数据结构}} ③ 数据流:数据流图中流线的说明 数据流描述={数据流名,说明,数据流来源,数据流去向, 组成:{数据结构},平均流量,高峰期流量} ④ 数据存储:数据流图中数据块的存储特性说明 数据存储描述={数据存储名,说明,编号,流入的数据流,流 出的数据流,组成:{数据结构},数据量,存取方式} ⑤ 处理过程:数据流图中功能块的说明 处理过程描述={处理过程名,说明,输入:{数据流},输出: {数据流},处理:{简要说明}}
14. 结构化分析 实体关系图之数据对象 表示数据的某一方面性质,如数量、特征,或者描述等。 数据对象和属性: object: subject attributes: subject ID type credit term object: student attributes: student ID grade sex age address
15. 结构化分析 实体关系图之数据关联 ERD Notation One common form: subject (0, m) Is of (1, 1) dept. attribute
16. 结构化分析 Example:ERD 学号 学生 专业 课名 课号 姓名 m n 选课 年级 学时 课程 学分 (a) 学号 专业 学生 年级 1 课名 课号 姓名 n 选课单 学号 n 课号 (b) 1 课程 学分 学时
17. 功能建模语言:DFD(Data Flow Diagram) input external entity process computer based system 结构化分析 output 外部实体:数据的产生者/消费者 处理(泡泡):数据变换者(将输入变为输出) data flow 数据流:流经系统的数据,或为输入,或为输出 data store 数据存储:非即时使用的数据
18. DFD图构造过程 结构化分析 (1)建模第0层DFD 将软件/系统描述为一个泡泡,将外部实体描述为一个方框, 从方框到泡泡的箭头描述实体产生系统所使用的信息,从泡 泡到方框的箭头描述实体使用系统产生的信息。 (2)将第0层DFD扩展为第1层DFD 将第0层DFD的一个泡泡精化为第1层DFD。在第1层DFD中, 泡泡对应的是软件/系统的主要处理(或功能),箭头对应各 处理间的数据流。 (3)DFD图细化为子DFD 精化过程持续进行,直到每一个泡泡都执行一个简单的操作 ,也就是说,直至每个泡泡所代表的处理都执行一个功能, 并且该功能可以很容易地被实现。 (4)用PSPEC描述最底层的所有处理 PSPEC的内容可以包括叙述性正文、处理算法的程序设计语言 描述、数学方程、表、图或图表。 PSPEC:处理规格说明(Process SPECification)
19. 结构化分析 DFD Example Level 0 of DFD Example(第0层) user processing request digital video processor video source NTSC video signal requested video signal monitor
20. 结构化分析 第1层 第2层
21. DFD 分层结构 x a 结构化分析 a b P c p2 level 1 p4 p3 level 0 f p1 d y e g 5 b
22. PSPEC (Process SPECification ) bubble PSPEC narrative pseudocode (PDL) equations tables diagrams and/or charts 结构化分析
23. PSPEC 用于构成设计的基本元素 PSPEC 结构化分析 one or more “components” in the software design
24. DFD 建模几点强调 DFD始于0层,描述包括外部实体的系统语境 DFD需要分层扩展,直到泡泡功能清晰且单一 随DFD结构层数增加,泡泡扩展比例越来越低 所有箭头必须标以数据字典中包含的数据项 数据处理描述基于业务层面,非实现逻辑 大多数系统数据流图包括3 到 7层的结构 结构化分析
25. 结构化分析 DFD映射到…… analysis model Maps into design model
26. 结构化分析 行为建模语言:CFD或STD events Outside world behavior Application CFD:Control Flow Diagram STD:State Transition Diagram
27. 基于DFD来构造CFD 结构化分析 列出所有被软件感知的事件或控制信号; 通过列表的方式标识出事件的产生体和作用体; 列出所有触发事件的数据条件或中断条件; 在表示产生体和作用体的处理之间标识对应的控制流;
28. DFD VS.CFD 结构化分析 DFD是结构化分析的核心,CFD是在DFD基础上的扩展表示; DFD用实箭头标注数据项,CFD用虚箭头标注数据条件或触 发事件; DFD中的功能逻辑(圆圈)表示为PSPEC,CFD中的行为逻 辑(引入竖条)表示为CSPEC; DFD的实箭头起始端是圆圈(数据处理)或矩形框(数据 源),终止端是圆圈(数据处理)或矩形框(数据潭);CFD的 虚箭头起始端是圆圈(数据处理)或竖条(行为逻辑) ,终止 端是圆圈(数据处理)或竖条(行为逻辑); 进一步,DFD中指向一个圆圈的实箭头表示处理单元的数据 输入,CFD中指向一个圆圈的虚箭头表示对处理单元的控制。
29. Control Specification (CSPEC) The CSPEC 可以表示为: state transition diagram (sequential spec) 状态转移图 state transition table 状态转移表 decision tables 判定表 activation tables 激活表 行为逻辑 结构化分析
30. 结构化分析 data input data output DFD Process Model PSPEC Process activators Data conditions DFD CFD Control Model CSPEC DFD control output control input
31. 基于STD进行行为建模的步骤 结构化分析 列出系统的所有状态(How does the system behave?) 展示系统如何从一个状态转移到另一个状态 (How does the system change state?) indicate event indicate action 画状态转移图 STD
32. STD之关键元素 结构化分析 状态(state—a set of observable circumstances that characterizes the behavior of a system at a given time) 状态转移(state transition—the movement from one state to another) 事件(event—an occurrence that causes the system to exhibit some predictable form of behavior) 活动(action—process that occurs as a consequence of making a transition)
33. Example:STD of duplicating machine full and start invoke manage-copying 结构化分析 Reading Operator commands full invoke read-op-input copies done invoke read-op-input Making copies Reloading empty paper invoke reload paper jammed invoke problem-diagnosis Problem state not jammed invoke read-op-input
34. 数据字典DD(Data Dictionary) 结构化分析 数据字典是关于数据流图中各种成分详细定义的信息集合,可将其 按照说明对象的类型划分为四类条目,分别为:  数据流条目  数据项条目  数据文件条目  数据加工条目 DD 数据字典的任务是: 对于数据流图中出现的所有被 命名的图形元素在字典中作为一个词条加以定义,使得 每一个图形元素的名字都有一个确切的解释。
35. 结构化分析 System model 数据(Data) ERD STD 功能(Function) DD 行为(Behavior) DFD
36. 结构化分析步骤总结 问题描述:要解决的问题是什么? 功能描述:要实现的系统做什么? 建立数据模型:实体-关系图 建立功能模型:数据流图 建立行为模型:控制流图 建立数据字典:管理数据库 逐步求精,直至所有需求都得到清晰描述 结构化分析
37. Requirement Modelling——家庭安全系统(SafeHome) 问题描述: SafeHome 监控所有和SafeHome相连的传感器。用户可通过SafeHome 控制面板与系统进行交互。 功能描述: 用户可通过控制面板对SafeHome进行编程和配置: •设定每个传感器的编号和类型以及急拨号码等信息; •开启SafeHome; •输入用户开关密码。 用户可通过控制面板了解SafeHome状况。 当传感器监测到异常情况, SafeHome激活系统中的可发声警报器。 报警延迟一定时间后, SafeHome拨打监控服务的电话号码,并报告关于 位置和被监测到的事件性质等信息。电话号码将每20秒重拨一次,直至电话 接通。
38. 结构化分析 SafeHome ERD 房主 传感器 SafeHome 软件 警报器 控制面板 监控 SafeHome 软件 1..m 启动 1..m 检测 1..m 设置 传感器 0..m
39. 结构化分析 SafeHome DFD:level 0 控制面板 用户命令和数据 显示信息 SafeHome 软件 传感器 控制面板 显示 警告类型 警告 传感器状态 电话号码拨音 电话线
40. SafeHome DFD:level 1 控制面板 配置系统 用户数据和命令 配置数据 配置请求 配置信息 与用户交互 开始 停止 密码 激活/不激活 系统 配置数据 信息 检验id信息 密码处理 显示信息 和状态 配置数据 控制面板 显示 显示信息 警铃 传感器 传感器状态 监控传感器 警告类型 电话号码拨音 电话线
41. SafeHome DFD:level 2 传感器信息 显示格式 配置信息 配置数据 警告类型 产生警告 信号 传感器id类型 定位 警告类型 评估设置 电话号码 传感器状态 读传感器 传感器id类型 拨号 电话号码拨音
42. SafeHome DFD:level 2 传感器信息 显示格式 配置信息 配置数据 警告类型 产生警告 信号 传感器id类型 定位 警告类型 评估设置 电话号码 读传感器 传感器状态 传感器id类型 拨号 电话号码拨音
43. 传感数据 SafeHome DFD:level 3 显示输出 格式化数据 读取 传感器数据 置传感器标识 获取 相应信息 警报条件码、传感器 标志、定时信息 传感器 信息 格式化 显示 传感器标志 建立 警报条件 BEGIN 获取传感器状态数据; 读取传感器配置数据; 对传感器设备状况进行检查; 将检查结果提交给“格式化显示” ; 若检查结果反映系统异常,则产生 警报数据,提交给“产生警报信号” ; 延迟一定时间; 转去执行“选择电话号码” (准备拨号); END 警报数据 号码表 产生警报 信号 警报类型 选择 电话号码 电话号码 连通 电话网 电话号码对应的音频 产生 拨号脉冲
44. SafeHome 读取 传感器 数据 置传感器标 识 格式化 显示 警报条件码、 传感器标识、 定时信息 传感器标 识 建立 警报条 件 警报信 号 传感器 传感器事 件 传感器 信息 显示输 出 格式化数 据 获取 相应信 息 传感器状 态 CFD 警报数 据 警报数 据 选择 电话号 码 电话号 码 产生 警报 信号 拨号信 号 警报类 型 超时 连通 电话网 电话音 频 产生 拨号脉 冲 警报器
45. SafeHome 结构化分析 STD 命令输入状态 超时信号/ 命令输入 启动信号/ 传感器监控 停信号 无异常事件 监控状态 异常事件/ 信息显示 命令输入/ 信息显示 异常事件/ 激活监控 报警状态 异常事件/ 报警 显示反馈 信息状态 显示完成/ 命令输入
46. 结构化分析 软件需求规格说明(SRS) Software Requirement Specification 还有什么没有考虑吗? 非功能性需求 ——性能 ——可靠性 ——易用性 ——可扩展性 ——可维护性 ——可扩展性 运行需求
47. 结构化分析 软件需求规格说明(SRS) Software Requirement Specification  范围说明  系统概述  文档概述  引用文档  功能需求  数据需求  行为需求  非功能需求  运行需求
48. 推荐开发工具 Microsoft Visio • • • • 实体-关系图 数据流图 状态图 Jackson图 结构化分析
49. 结构化分析
50. 结构化分析
51. 结构化分析
52. 结构化分析
53. 结构化分析
54. 结构化分析
55. 专题讨论:结构化 结构化分析 结构化编程:由艾兹格·迪杰斯特拉在1967年提出-《GOTO陈述有害论》。 逐步设计(Stepwise design):由尼克劳斯·维尔特在1971年提出。 1972年出现的Nassi-Shneiderman图。 1974年提出的Warnier/Orr图 “Logical Construction of Programs”。 1974年提出的HIPO由IBM的层次化输入-处理-输出图。 结构化设计:由赖瑞·康斯坦丁、爱德华·尤登等在1975年提出。 Jackson 结构化程序设计:由迈克尔·安东尼·杰克逊在1975年提出。 结构化分析:由汤姆·狄马克及爱德华·尤登等人在1978年提出。 结构化分析及设计技术(SADT):由道格拉斯·T·罗斯发展。 Yourdon 结构化方法:由爱德华.尤登提出。 结构化分析及系统规格(Structured Analysis and System Specification): 由汤姆·狄马克在1979年提出。 结构化系统分析及设计方法(SSADM):最早是由英国商务办公室在1983年提出。 以结构化分析及设计技术为基础的IDEF0,由道格拉斯·T·罗斯在1985年提出。
56. 专题讨论:结构化 结构化分析 强调开发方法的结构合理性以及所开发软件的结构合理性, 支持信息抽象、逐步求精。 x a a c p2 y p4 p3 level 0 f p1 d level 1 b P e g 5 b analysis model Maps into design model