第7讲软件设计方法
EE
FF
GG
JJ
KK
Put L
Get B
Edit BB
LL
Put M
Get A
AA
T1
T2
T3
Operate 1
… Operate n
Detail 1
…
Detail m
面向数据流的设计过程
精化数据流图 “事物” 流类型 “变换”
优化的前题是:
“Get it to work, then make it fast.”
• CMU Composable Systems Group
– /~Compose/
• CMU Architecture Based Languages and Environments Research Group
– /~able/
• The Acme ADL
面向数据结构的设计
• 结构化开发方法是一种面向数据流、数据 封闭性的开发方法,来源于程序的模块化 和功能分解。面向数据结构的设计是将问 题的数据结构转换为程序结构,着重于问 题的数据结构,不强调模块定义。 • Jackson系统开发方法是JSP的扩展,是一 种面向数据结构的设计方法,其基本思想 是先建立输入输出的数据结构,再将其转 换为软件结构。这种方法适用于数据处理 类问题,特别是企业管理类的软件系统。
SD方法的优点
• SD方法是从以下5个方面来获得质量较好的软件 结构:
– 根据描述用户需求的数据流图导出了实现用户需求的 结构图。 – 为了控制大型软件系统复杂性,运用了下面两个手段:
• 将系统分解成许多个黑盒。 • 将黑盒组织成适合于用计算机实现的一个层次结构。
– 用内聚和耦合作为评价软件结构质量的标准。 – 给出一组设计技巧,如扇入和扇出、模块大小的掌握, 作用范围和控制范围等。 – 用结构图直观地描述软件结构,因此易于理解,并直 接可以用于评价、分析和复查等。
体系结构风格 style
• 体系结构风格包含:
– 一组构件(components)(如,数据库、计算 模块)完成系统所需的某种功能; – 一组连接子(connectors),能使构件间通信协 调和合作; – 约束(constraints),定义构件如何被集成,形 成系统; – 语义模型(semantic model),使得设计者通过 分析构件的已知性质而理解系统的整体性质。
体系结构风格分类
• 数据为中心的体系结构
– 目标:实现数据的可集成性 – 共享数据可以是数据仓库或是黑板。
客户端 客户端 共享数据 客户端
客户端
客户端
客户端
体系结构风格分类
• 调用-返回体系结构
– 目标:系统的可更改性和可扩展性
– 主程序-子程序体系结构
• 将一个程序分层子部分
• 每个子节点都只由父节点控制
– /pub/arch/
面向数据流的设计
• 结构化开发方法(Structured Developing Method) 是现有的软件开发方法中最成熟,应用最广泛的 方法,主要特点是快速、自然和方便。 • 结构化开发方法由结构化分析方法(SA法)、结 构化设计方法(SD法)及结构化程序设计方法 (SP法)构成的。 • 结构化设计方法(SD 法 Structured Design)是 结构化开发方法的核心,与SA法,SD法密切联 系,主要完成软件系统的总体结构设计。
– 自顶向下,逐步细化,设计中下层模块。
• 即上层各个模块的从属模块,顺序一般是从设计输入模块的 下层开始。
变换流设计
C B A 1 输入
C C Make C into 须检查; D and E C
3
D E
4 5 输出
D
F G 6
2 变换中心 System 3
D E E
H
Get C
B B
Put E
第 7 讲 软件设计方法
体系结构设计
• 软件体系结构是软件系统中最本质的东西。 • 良好的体系结构必须是普适、高效和稳定 的。 • [BAS98]:软件的体系结构是系统的一个或 多个结构,包含软件构件、构件对外可见 的性质以及它们之间的关系。 • 体系结构是一种表示。 • 体系结构设计关注构件结构、构件的性质 和交互的关系。
• 如远程过程调用系统
– 面向对象或抽象数据类型系统 Application Systems
Business-specific Components
• 强调对数据的绑定和对数据操纵及访问方式的掌握
• 实现可更改性
– 层次式 Middleware System Software
• 可更改
• 可移植
Web sites of Interest
Make A into B
Make G into H
Put H
变换流设计
B
A
2.1 X
N
M
2.2 Z
P
C
1
2.3 Y
3
D
System 2
B B C
C
Get B
B N M
Make B into C
N C P M
Put C
X
Y
P
Z
面向数据流的设计
变换流分析例:汽车数字仪表板的设计
功能:① 通过模 - 数转换实现传感器和微处理机接口;
区分事务中心和 数据接收通路 映射成事务结构
区分输入和 输出分支 映射成变换结构
用启发式设计规 则精化软件结构 事务分析 导出接口描述和 全程数据结构 复 查 详细设计 变换分析
精化体系结构设计
• • • • • • 为每个模块开发处理说明; 为每个模块提供接口描述; 定义局部和全局数据结构; 给出所有的设计限制或约束; 进行设计评审; 如需要,进行结构设计优化。
结构图 (Structure chart)
A A A A
B a. 基本形式
B
C b. 顺序
D
B c. 选择
C
B d. 重复
面向数据流的设计
1、Data Flow 的分类 ⑴ 变换流(Transform Flow):
External representation Information
Incoming flow
Outgoing flow
事实上所 有信息流 都可归结 为变换流
Transform flow
Internal representation
Time
变换流
输入
变换
输出
面向数据流的设计
⑵ 事务流(Transaction Flow)
Transaction request
T
事务 中心
… Action paths
数据转换 控制
驱动仪表板
一般问题的 一级分解方 法:
I
M P O
面向数据流的设计
第二步:映 I :由边界向回溯,将 射
每个遇到的处理器映 成相应的层模块。 一个下层模块。
O :由边界向外推,方 法与 I 类似
M A B D
C
C D
I B
P :每个处理直接对应
A
面向数据流的设计
数字仪表板 控制
例:
– /~acme/
• Worldwide Institute of Software Architects
–
Web Sites of Interest
• The WRIGHT Language
– /~able/wright/
• 面向数据流的设计方法又称结构化设计。
面向数据流的设计
• 基本思想:将系统设计成由相对独立、单一功能 的模块组成的结构。 • 采用方法: DFD System Hierarchy • 步骤:
– – – – – – 确定数据流类型; 指明数据流的边界; 将DFD映射为程序结构; 根据元素的分解,定义控制的层次; 使用设计测量和启发信息,对结构进行细化和求精; 精化体系结构的描述。
– 进行一级分析,设计上层模块:
• 从DFD中导出具有接收和发送分支的软件结构。对 事务中心设计为“事务控制”、对事务流为“接收 事务”、对事务路径为“发送事务”。
– 细化该事务结构和每条动作路径的结构。
• 对于接收分支,采用变换流设计方法设计中下层; 对于发送分支,在发送模块下设计每条事务路径的
事务流设计
② 在发光二极管面板上显示数据;
③ 指示每小时英里数(mph),行驶的里程,每加仑油 行驶的英里数(mpg)等等; ④ 指示加速或减速; ⑤ 如果车速超过55mph ,则发出警告铃声。
面向数据流的设计
旋转信号 读 旋转 信号 燃料流 传感器信号 确定 加/减 速 SPS 箭头指示 SPS 收集 和求 平均 SPS 转换 成 转/分 rpm 计算 gph gph 计算 燃料 消耗 计算 mph,超 速值
I
事务流
II S
事务中心
M
II
I A …
S
B … C …
A
…
B
…
C
…
事务处理
混合流设计
• 一般采用以变换流为主,事务流为辅的方 法。 • 基本步骤:
– 利用变换设计,将DFD划分为输入、变换和输 出三大部分; – 设计软件结构的上层模块,即主模块,及其下 层输入模块、变换模块和输出模块; – 根据输入、变换和输出DFD的不同特征设计它 们的下层模块。
混合流设计
E C1 GG G F J H JJ K
D
DD
EE
T1
C2 T2
C3
FF
KK
B1
B2 BB B3 T3 System
D D K K
L
B AA A Get D