4.结构化设计

1. 第四讲 结构化设计方法     软件设计 一般体系结构 结构化设计SD 结构化程序设计SP 结构化设计
2. 软件设计一般概念 结构化设计 Data abstraction(数据抽象)  Procedural abstraction(过程抽象)  Stepwise refinement(逐步求精)  Modular design(模块化设计)  Functional independence(功能独立性) 
3. Data Abstraction(数据抽象) door manufacturer model number type swing direction inserts lights type number weight opening mechanism implemented as a data structure 结构化设计
4. Procedural Abstraction(过程抽象) 结构化设计 open details of enter algorithm implemented with a "knowledge" of the object that is associated with enter
5. Stepwise Refinement(逐步求精) open walk to door; reach for knob; open door; walk through; close door. repeat until door opens turn knob clockwise; if knob doesn't turn, then take key out; find correct key; insert in lock; endif pull/push door move out of way; end repeat 结构化设计
6. Modular Design(模块化设计) 结构化设计 easier to build, easier to change, easier to fix ...
7. Modularity: Trade-offs(折中原则) 结构化设计 What is the "right" number of modules for a specific software design? module development cost cost of software module integration cost optimal number of modules number of modules
8. Sizing Modules: Two Views What's inside?? MODULE 结构化设计 How big is it??
9. Functional Independence 结构化设计 (功能独立性) 聚合 COHESION - the degree to which a module performs one and only one function. 耦合 COUPLING - the degree to which a module is "connected" to other modules in the system.
10. 结构化设计 Cohesion(聚合) 信息聚合 功能聚合 通信聚合 过程聚合 时间聚合 逻辑聚合 偶然聚合
11. Cohesion Example 结构化设计
12. Coupling(耦合) 结构化设计 数据耦合 标记耦合 控制耦合 公共耦合 内容耦合
13. Coupling Example 结构化设计
14. 从模块化设计原则到体系结构 结构化设计 对于大规模的复杂软件系统来说,对总体的系统结构设计和规格 说明比起对计算的算法和数据结构的选择已经变得明显重要得多。 “软件体系结构是一个程序/系统各构件的结构、它们之间的相互 关系以及进行设计的原则和随时间进化的指导方针。” ——David Garlan和Dewne Perry 1995年,IEEE软件工程学报, The architecture is a representation that enables a software engineer to: (1) analyze the effectiveness of the design in meeting its stated requirements, (设计评价) (2) consider architectural alternatives at a stage when making design changes is still relatively easy, (易于修改) (3) reduce the risks associated with the construction of the software.(降低风险)
15. Architectural Styles(体系结构风格) 结构化设计 Each style describes a system category that encompasses: (1) 构件集:a set of components that perform a function required by a system, (2) 关联集:a set of connectors that enable “communication, coordination and cooperation” among components, (3) 约束集:constraints that define how components can be integrated to form the system, (4) 语义模型:semantic models that enable a designer to understand the overall properties of a system by analyzing the known properties of its constituent parts.      Data-centered architectures Data flow architectures Call and return architectures Object-oriented architectures Layered architectures
16. 以数据为中心的体系结构 Data-Centered Architecture 结构化设计
17. 数据流体系结构 Data Flow Architecture 结构化设计
18. 调用/返回 体系结构 Call and Return Architecture 结构化设计
19. 分层体系结构 Layered Architecture 结构化设计
20. 结构化设计方法 结构化设计 基本原则 模块化、先集中再分权、先分解再整合,逐步求精 基本思想 以结构化分析阶段所产生的文档(包括数据流图、数 据字典和软件需求说明书)为基础,自顶向下,逐步 求精和模块化的过程。结构化设计通常可分为概要设 计和详细设计。概要设计的任务是确定软件系统的结 构,进行模块划分,确定每个模块的功能、接口及模 块间的调用关系。详细设计的任务是为每个模块设计 实现的细节。
21. Structured Design(结构化设计SD)结构化设计
22. SASD 结构化设计 Deriving Software Architecture from requirement Analysis and transformation Data flow analysis Transaction analysis software Architecture
23. Data Flow Analysis(数据流分析) 结构化设计 Find the point of highest abstraction for each stream Continue until each module has high cohesion Adjust the coupling if needed
24. Transformation Flows Mapping 结构化设计 变换型DFD转换 a b d e h g f i c j data flow model x1 x2 b x4 x3 c a "Transform" mapping d e f g i h j
25. Case Study : Word Counting 结构化设计 Design a product which takes as input a file name, and returns the number of words in that file (like UNIX wc ) •Figure 13.3
26. Case Study: Word Counting First refinement 结构化设计
27. Case Study: Word Counting Second refinement 结构化设计
28. Detailed Design: PDL Format 结构化设计
29. 结构化设计 Transaction Flow Mapping 事务型DFD转换 e a f d b i t g h k l data flow model j m n x1 Mapping t b a x3 x2 d e f g x4 h x3.1 i j k l m n
30. Case Study for Transaction: Command Control 结构化设计 fixture sets setting commands operator process operator commands report display screen robot control robot control software assembly record in reality, other commands would also be shown
31. 结构化设计 Mapping the Flow Model to Structured Chart(DFDSC) process operator commands command input controller read command validate command determine type produce error message fixture status controller report generation controller send control value each of the action paths must be expanded further
32. 结构化设计 Refining the Structure Chart 求精SC process operator commands command input controller read command validate command read fixture status determine type produce error message determine setting fixture status controller format setting report generation controller read record send control value calculate output values format report
33. Design Evaluation Cycle (设计评价模型) 结构化设计
34. 结构化程序设计 结构化设计 过程设计是最核心的工作是对构件的处理流程的设计,它关注 于每个模块内部的算法实现,确定模块内部的详细执行过程, 包括: 局部数据 控制流程 具体处理 20世纪60年代末,Dijkstra等提出结构化编程 强调对功能域的支持; 程序建立在一组限定好的逻辑构造之上; 逻辑构造从顶端进入,从底端退出,过程流可预测。 结构化编程的核心技术:通过三种基本逻辑构造,来表达程序 的全部处理流程 顺序型:提供任何算法规则说明中的核心处理步骤 条件型:允许根据逻辑情况选择处理的方式 重复型:提供对循环的支持 34
35. 结构化程序设计 结构化设计 基本原则 自外向内、先整体后局部、先抽象后具体,逐步求精 基本思想 在设计一个模块的实现算法时,通过逐步细化,最后 得到详细的实现算法。单入口单出口的控制结构,使 程序的静态结构和动态执行过程一致,具有良好的结 构,增强了程序的可读性。
36. 过程设计技术 结构化设计 图形化工具 利用图形工具把过程的细节用图形描述出来 包括流程图、盒图(N-S图)、问题分析图(PAD)等 各类图形化工具 表格工具 用一张表来描述过程的细节,在这张表中列出了各 种可能的操作和相应的条件 如:决策表 语言工具 用某种高级语言(称之为伪码)来描述过程的细节 如:PDL 36
37. 流程图 结构化设计 控制流 描述程序执行逻辑的图形化工具 方框表示处理步骤 菱形表示逻辑条件 箭头表示控制流 支持结构化编程中的三类逻辑构造 顺序型 条件型(if-then-else, select-case) 重复型(while, repeat-until) 分支 起始、 结束符 处理 过程 预定义 过程 37
38. 基本的控制结构 结构化设计 38
39. 盒图(NS图, Nassi-Shneiderman) 任务1 任务2 任务3 结构化设计 条件 条件 ELSE THEN =1 =2 … =N A1 A2 A3 A4 IF_THEN_ELSE CASE 循环条件 循环体 循环体 循环条件 DO_WHILE DO_UNTIL 39
40. PAD(Problem Analysis Diagram) 结构化设计 A1 A A 条件 B A2 B 条件 WHILE A UNTIL A A3 An 40
41. 结构化设计 决策表 描述程序执行逻辑的表格化工具,表示动作和条件之 间的关系 决策表主要包括四个组成部分 规则号 条 件 行 可能的条件组合 动 作 行 特点条件组合下 采取的动作
42. 设计决策表的步骤 结构化设计 列出该模块相关的所有动作 列出执行该模块是的所有条件(或所做的决策) 将特定的条件组合与特定的动作相关联,消除不可能的条 件组合 定义规则,指出一组条件应对应哪个或哪些动作 42
43. 实例:设计决策表 结构化设计 为了提高客户服务水平和增加利润,以如下的柔性规则确定商 品的销售价格: 上一年度订货总额超过1000万的顾客第二年度享受5%折扣 集团型企业享受10%折扣 一次订货总额超过100万时享受10%折扣 考虑:集团企业的订单为100 万元以上时的折扣率 43
44. 程序设计语言PDL 结构化设计 PDL(Program Design Language,) 采用一种语言的词汇(即英语)和另一种语言的语法(即结构 化编程语言)表达设计思想: if/then/else/endif case_of/when/select/endcase do while/do for/enddo repeat until/endrepeat 区别于现代化编程语言,PDL允许在自身的结构化语句间 嵌入叙述性文字; 通过工具可以将PDL翻译成程序设计语言“骨架”或设计 的图形表示,并生成嵌套图、设计操作索引、交叉引用表 以及其它信息。 44
45. Case Study : Word Counting 结构化设计
46. Detailed Design: PDL Format 结构化设计
47. Case Stusy: 家庭安全系统(SafeHome) 用户原始需求: SafeHome 监控所有和SafeHome相连的传感器。用户可通过 SafeHome控制面板与系统进行交互。 用户细化需求: 用户可通过控制面板对SafeHome进行编程和配置: •设定每个传感器的编号和类型以及急拨号码等信息; •开启SafeHome; •输入用户开关密码。 用户可通过控制面板了解SafeHome状况。 当传感器监测到异常情况, SafeHome激活系统中的可发声警报器。 报警延迟一定时间后, SafeHome拨打监控服务的电话号码,并报告关于 位置和被监测到的事件性质等信息。电话号码将每20秒重拨一次,直至电话 接通。
48. 结构化设计 SafeHome DFD:level 0 用户命令和数据 显示信息 控制面板 显示 控制面板 SafeHome 软件 传感器 警告类型 警告 传感器状态 电话号码拨音 电话线
49. SD CaseStudy——SafeHome Design SafeHome DFD:level 1 控制面板 配置系统 用户数据和命令 配置数据 配置请求 配置信息 与用户交互 开始 停止 密码 激活/不激活 系统 配置数据 信息 检验id信息 密码处理 显示信息 和状态 配置数据 控制面板 显示 显示信息 警铃 传感器 传感器状态 监控传感器 警告类型 电话号码拨音 SC(Structured Chart) 电话线
50. 结构化设计 用户交互 控制 读取用户 命令 启动用户 命令处理 系统配置 控制器 读取系统 数据 创建配置 文件 显示消息 与状态 激活 控制器 密码处理 控制器 读取密码 比较密码 密码输出 控制器 产生 非法消息
51. SafeHome DFD:level 2 传感器信息 显示格式 配置信息 配置数据 警告类型 产生警告 信号 传感器id类型 定位 警告类型 评估设置 电话号码 传感器状态 读传感器 传感器id类型 SC(Structured Chart) 拨号 电话号码拨音
52. 结构化设计 传感器监视 控制 传感器输入 控制器 警报条件 控制器 警报输出 控制器 规范 显示数据 产生 警报信号 显示输出 建立电话线 连接 产生线路 脉冲
53. 传感数据 读取 传感器数据 SafeHome DFD:level 3 显示输出 格式化数据 置传感器标识 获取 相应信息 警报条件码 传感器标志 定时信息 传感器 信息 格式化 显示 传感器标志 建立 警报条件 号码表 警报数据 产生警报 信号 选择 电话号码 电话号码 连通 电话网 电话号码对应的音频 SC(Structured Chart) 警报类型 产生 拨号脉冲
54. 结构化设计 传感器监视 控制 警报条件 控制器 传感器输入 控制器 获取信息 读传感器 建立警报 条件 选择电话 号码 警报输出 控制器 规范 显示数据 显示输出 产生 警报信号 建立电话线 连接 产生线路 脉冲
55. Writing the Design Specification 结构化设计 Everyone knew exactly what had to be done and how to get it.