第11章 面向数据的设计方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软 件 工 程
BUTTON_2 seq request:=no /* 臵初值 */ read MBD and B1D /* 检查是否有未满足请求和交 通车是否停在站上 */ BUTTON_BODY itr PUSH_GROUP seq EXTRA_AR_BODY itr while (ARRIVAL) /* 交通车已靠站但尚无请求, 或既无请求交通车也未靠站 */ read MBD and B1D EXTRA_AR_BODY end RQ_PUSH seq /* 首次请求到达,臵请求标志 */ request:=yes read MBD and B1D RQ_PUSH end
• JSD和DSSD方法的软件总体结构设计与软件过 程性设计的分界并不明显,都能很快地过渡到 过程性描述。这也是易于理解和易于维护的重 要表现之一。 • JSD和DSSD也是分析与设计一体化的 ,本章侧 重于讨论与设计有关的技术。面向数据的设计 方法,要求信息结构用层次图表示,在软件需 求规格说明中与信息域的描述相对应。
软 件 工 程
SHUTTLE_BODY1 itr STATION seq ARRIVE(i) write arrive to S1D /* 向mcontrol发送数据流, 说明车已到站(i)*/ LON(i) WAIT_BODY itr while Wait(i) read 状态向量 WAIT_BODY end LOFF(i) LEAVE(i) TRANSIT_BODY itr while Transit(i) read 状态向量 TRANSIT_BODY end STATION end SHUTTLE_BODY1 end ARRIVE(1) write arrive to S1D /* 发送数据流,说明车已到站1 */ SHUTTLE_1 end
Button-2 Push group*
软 件 工 程
Extra Arrival body
Request push
Extra push body
Arrival
Extra Arrival*
图10-2-3
Extra push*
button-2的结构图
软 件 工 程
11.2.2 扩充功能性过程 • 功能性过程mcontrol既负责检查BUTTON_2的 状态向量“B2V”,确定是否有未满足的请求, 又负责把从SHUTTLE_1处(S1D)获取的信 息(即交通车已到达发出请求的车站)传递给 BUTTON_2(MBD流)。在此定义了一个交 互型功能。 • BUTTON_2的结构正文描述如下:
Shuttle -1
TRANSit- b ody1
软 件 工 程
wait- body1
Leave(1)
Shuttlebody1
Arrive(1)
Wait(1)*
Transit(1)*
Station(i)*
Arrive(i)
wait- body
Leave(i)
TRANSit body
Wait(i)*
软 件 工 程
11.2.2
扩充功能性过程
过程SHUTTLE_1执行“read状态向量”操作和 过程mcontrol对“S1D”的访问都必须有足够 快的频率,否则交通车将不能及时停下来。 为完成USS实例,还需进一步考虑实体BUTTON 模型。过程BUTTON_1是对按钮动作的精确描述 (即每次压下都对应过程push的一次调用), 实际上系统应把第一次压下按钮招呼交通车的 动作与一次运行未开始之前乘客压下按钮招呼 交通车的请求区分开来。用已有实体无法描述 和区分动作之间的时间约束,常常引入额外的 实体——为此设计过程BUTTON_2,结构图如图 10-2-3所示
软 件 工 程
11.2.2
扩充功能性过程
BD
Button-1
Button-0
Shuttle-0
SV
Shuttle-1
LAMP CMDS
图10-2-2 修改后的SSD LAMPCMDS—Lamp commands
软 件 工 程
SHUTTLE_1 seq LON(1) /* 控制发光板“亮”,说 明交通车正停在站1上 */ read 状态向量 WAIT_BODY1 itr while Wait(1) read 状态向量 WAIT_BODY1 end LOFF(1) /* 交通车即将离站;控 制发光板“暗” */ LEAVE(1) TRANSIT_BODY1 itr while Transit(1) read 状态向量 TRANSIT_BODY1 end
软 件 工 程
11.1
面向数据设计的概念
• 面向数据的设计就是根据数据结构的表示获得 软件表示。 • 本章重点讨论: 1. Jackson系统开发方法 Jackson System Development,简称JSD 2. 基于结构化数据的系统开发方法 Data Structured System Development ,简 称DSSD
图6-2-5 对应于结构正文的结构图
Transit(i)*
软 件 工 程
11.2.2
扩充功能性过程
• 这一步骤以初建系统模型为基础,通过数据流 和状态向量两种方式将新定义的功能性过程与 原有的模型过程联系起来。具体考虑两类功能: 1.信息型功能(information function):从模 型过程产生的数据流和状态向量中提取信息并 生成输出信息。嵌入型功能只需在原有模型过 程的结构正文中插入一些操作; 2.交互型功能(interactive function):监视模 型过程的状态向量,在输出结果的同时产生内 部输入信息,反过来影响模型化过程的动作。
• 用JSD方法开发一个软件的步骤: 1)标识实体与动作:用与面向对象方法类似的 分析技术识别出系统中的实体(包括人、对象、 产生或使用信息的组织)和动作(客观世界中 影响系统实体的那些事件); 2)生成实体结构图:针对每一实体,将影响它 的所有动作按发生的时间顺序用Jackson结构 图(Jackson diagrams)表示出来。为了描述 时间约束,同一动作必须出现在多张结构图中;
软 件 工 程
SHUTTLE_1 seq LON(1) read 状态向量 WAIT_BODY1 itr while Wait(1) read 状态向量 WAIT_BODY1 end LOFF(1) LEAVE(1) TRANSIT_BODY1 itr while Transit(1) read 状态向量 TRANSIT_BODY1 end
软 件 工 程
11.2.1
JSD分析技术回顾
• 我们曾以大学校园内直达交通车系统USS为例进行需求 分析,结果得出“交通车”和“按钮”两实体及其动 作对应的实体结构图如下图所示。
Shuttle Leave(1)
Shuttle* body
Station(i)
Arrive(1)
Button Push*
软 件 工 程
客观世界 外部过程
系统
交互型 功能过程
系统模型
信息型 功能过程
图10-2-1 两类功能性过程与系统模型的关系
软 件 工 程
11.2.2
扩充功能性过程
假设在交通车上有一块发光板,专门显示车到 站的信息,发光板“亮”说明车到站,“暗” 说明车离开。此板或亮或暗受LON(i)、 LOFF(i)两命令的控制。在过程 SHUTTLE_1中可嵌入一个新功能:当交通车 到达站(i)时,发出命令LON(i);离开站 (i)时,发出命令LOFF(i)。交通车在两站 之间往返运行过程中,输出“开关发光板”的 命令数据流,图10-2-2为增加这一功能后的 SSD,结构正文修改为:
DS
Button-1
SV
图7-2-4 USS的系统规格说明图
Shuttle-1
软 件 工 程
11.2.1
JSD分析技术回顾
• 将实体结构图与初建系统模型(系统规格说明 图)综合起来,可导出目标软件系统中每个过 程内部细节的结构正文表示,如6.2.3节过程 BUTTON_1和SHUTTLE_1所描述。 • 上述结构正文也可对应地用Jackson结构图表 示。图6-2-5是与模型过程SHUTTLE_1的结构正 文对应的Jackson结构图。
软 件 工 程
11.2.2
Hale Waihona Puke Baidu
扩充功能性过程
• 第二个功能是产生关于启动(START)和关闭(STOP) 发动机的命令,以此控制交通车的运行。下达STOP命 令的条件是,传感器显示车已到站,而下达START 命 令的条件是乘客压下按钮招呼交通车并恰好交通车在 某个站上等待。为此引入一个功能性过程mcontrol, 它从SHUTTLE_1和BUTTON_2两过程接收数据,适时地发 出START和STOP两种命令。 • 过程SHUTTLE_1与过程mcontrol之间用数据流“S1D” 连接。因此SHUTTLE_1的结构正文进一步修改为:
软 件 工 程
11.1
面向数据设计的概念
• JSD方法是Jackson 于1989年对软件设计中广为使 用的Jackson结构程序设计(Jackson Structured Programming,简称JSP)方法的扩展。 • DSSD方法,也称为Warnier-Orr方法,是对Warnier 程序逻辑构造(Logical Construction of Program,简称LCP)方法的扩充,除了设计能力以 外,还加强了分析能力。
软 件 工 程
11.1
面向数据设计的概念
• 在许多应用领域中,信息有着清晰的层次结构, 输入数据、存储信息(即数据库)及输出数据 都有各自的组织形式。 • 一般说来,顺序出现的数据可以用顺序控制结 构的程序处理;选择出现的数据用分支控制结 构的程序处理;重复出现的数据用循环控制结 构的程序处理。 • 因此可以根据数据的组织形式确定使用和处理 这些数据的程序的组织形式。
软 件 工 程
用JSD方法开发一个软件的步骤:
3)初建系统模型:将实体和动作统一用一个过程模型表示,并 定义该模型中的过程与客观世界中的过程之间的联系。所用 描述工具为系统规格说明图(System Specification Diagram,简称SSD); 4)扩充功能性过程:在过程模型中扩充交互型功能和信息型功 能,分别产生内部输入信息和系统输出信息; 5)系统定时:确定实现必须满足的时间约束; 6)实现:确定系统中所有软硬件成分,形成一个完整设计方案。 • 前三个步骤主要在需求分析阶段完成,后三步是软件设计的 任务。
Arrive(i)° Leave(i)°
软 件 工 程
11.2.1
JSD分析技术回顾
初建系统模型后,得到USS的系统规格说明图(图 7-2-4)。其中后缀为“_0”的过程表示客观世界中的过 程(或外部过程),后缀为“_1”的过程表示系统模型 内的过程(或模型过程)。
数据流联系
Button-0
状态向量联系 Shuttle-0
软 件 工 程
11.1
面向数据设计的概念
面向数据设计方法一般都包括下列任务: 1.确定数据结构特征; 2.用顺序、选择和重复三种基本形式表示 数据; 3.把数据结构表示映射为软件的控制结构; 4.用与具体方法配套的设计指南进一步精 化控制结构; 5.开发软件的过程性描述。
软 件 工 程
11.1
面向数据设计的概念
软 件 工 程 SHUTTLE_BODY1 itr STATION seq ARRIVE(i) LON(i) /* 交通车已停靠站(i) */ WAIT_BODY itr while Wait(i) read 状态向量 WAIT_BODY end LOFF(i) /* 交通车将离开站(i) */ LEAVE(i) TRANSIT_BODY itr while Transit(i) read 状态向量 TRANSIT_BODY end STATION end SHUTTL_BODY1 end ARRIVE(1) SHUTTL_1 end
软 件 工 程
11.1
面向数据设计的概念
• 面向数据的设计方法的适用场合 具有明显的层次信息结构的应用: 企事业的信息管理系统; 系统软件(如操作系统); 科学与工程计算; 计算机辅助教学; 组合问题求解等领域。 例如:CAD/CAE/CIM类应用软件。
软 件 工 程
11.2
Jackson系统开发方法
软 件 工 程
第11章 面向数据的设计方法 面向数据的设计(data structured-oriented design)方法就是根据问题的数据结构定义一 组映射,把问题的数据结构转换为问题解的程 序结构。 面向数据流的设计来源于程序的模块化和功能 分解的概念; 而面向数据结构的设计,则侧重于问题的数据 结构,把程序结构设计成与问题的数据结构一 致,不强调模块定义。模块只是设计过程的副 产品,对于模块独立性原则也未过分强调。这 种程序结构容易理解,也易于修改。