软件工程第09章

上传人:王**** 文档编号:260546415 上传时间:2022-02-28 格式:PPTX 页数:64 大小:398KB
返回 下载 相关 举报
软件工程第09章_第1页
第1页 / 共64页
软件工程第09章_第2页
第2页 / 共64页
软件工程第09章_第3页
第3页 / 共64页
软件工程第09章_第4页
第4页 / 共64页
软件工程第09章_第5页
第5页 / 共64页
亲,该文档总共64页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《软件工程第09章》由会员分享,可在线阅读,更多相关《软件工程第09章(64页珍藏版)》请在金锄头文库上搜索。

1、第9章 面向数据的设计方法面向数据的设计(data structured-oriented design)方法就是根据问题的数据结构定义一组映射,把问题的数据结构转换为问题解的程序结构。 面向数据流的设计来源于程序的模块化和功能分解的概念; 而面向数据结构的设计,则侧重于问题的数据结构,把程序结构设计成与问题的数据结构一致,不强调模块定义。模块只是设计过程的副产品,对于模块独立性原则也未过分强调。这种程序结构容易理解,也易于修改。9.1 面向数据设计的概念在许多应用领域中,信息有着清晰的层次结构,输入数据、存储信息(即数据库)及输出数据都有各自的组织形式。一般说来,顺序出现的数据可以用顺序控制

2、结构的程序处理;选择出现的数据用分支控制结构的程序处理;重复出现的数据用循环控制结构的程序处理。因此可以根据数据的组织形式确定使用和处理这些数据的程序的组织形式。9.1 面向数据设计的概念面向数据的设计就是根据数据结构的表示获得软件表示。本章重点讨论:1. Jackson系统开发方法 Jackson System Development,简称JSD2. 基于结构化数据的系统开发方法 Data Structured System Development,简称DSSD9.1 面向数据设计的概念JSD方法是Jackson 于1989年对软件设计中广为使用的Jackson结构程序设计(Jackson

3、Structured Programming,简称JSP)方法的扩展。DSSD方法,也称为WarnierOrr方法,是对Warnier程序逻辑构造(Logical Construction of Program,简称LCP)方法的扩充,除了设计能力以外,还加强了分析能力。9.1 面向数据设计的概念面向数据设计方法一般都包括下列任务: 1确定数据结构特征; 2用顺序、选择和重复三种基本形式表示 数据; 3把数据结构表示映射为软件的控制结构; 4用与具体方法配套的设计指南进一步精 化控制结构; 5开发软件的过程性描述。9.1 面向数据设计的概念JSD和DSSD方法的软件总体结构设计与软件过程性设计

4、的分界并不明显,都能很快地过渡到过程性描述。这也是易于理解和易于维护的重要表现之一。 JSD和DSSD也是分析与设计一体化的 ,本章侧重于讨论与设计有关的技术。面向数据的设计方法,要求信息结构用层次图表示,在软件需求规格说明中与信息域的描述相对应。9.1 面向数据设计的概念面向数据的设计方法的适用场合 具有明显的层次信息结构的应用: 企事业的信息管理系统; 系统软件(如操作系统); 科学与工程计算; 计算机辅助教学; 组合问题求解等领域。例如:CAD/CAE/CIM类应用软件。9.2 Jackson系统开发方法用JSD方法开发一个软件的步骤: 1)标识实体与动作:用与面向对象方法类似的分析技术

5、识别出系统中的实体(包括人、对象、产生或使用信息的组织)和动作(客观世界中影响系统实体的那些事件); 2)生成实体结构图:针对每一实体,将影响它的所有动作按发生的时间顺序用Jackson结构图(Jackson diagrams)表示出来。为了描述时间约束,同一动作必须出现在多张结构图中;用JSD方法开发一个软件的步骤: 3)初建系统模型:将实体和动作统一用一个过程模型表示,并定义该模型中的过程与客观世界中的过程之间的联系。所用描述工具为系统规格说明图(System Specification Diagram,简称SSD);4)扩充功能性过程:在过程模型中扩充交互型功能和信息型功能,分别产生内部

6、输入信息和系统输出信息;5)系统定时:确定实现必须满足的时间约束;6)实现:确定系统中所有软硬件成分,形成一个完整设计方案。 前三个步骤主要在需求分析阶段完成,后三步是软件设计的任务。9.2.1 JSD分析技术回顾我们曾以大学校园内直达交通车系统USS为例进行需求分析,结果得出“交通车”和“按钮”两实体及其动作对应的实体结构图如下图所示。ShuttleShuttle* bodyStation(i)Arrive(i)Leave(i)Arrive(1)ButtonPush*Leave(1)9.2.1 JSD分析技术回顾初建系统模型后,得到USS的系统规格说明图(图724)。其中后缀为“_0”的过程

7、表示客观世界中的过程(或外部过程),后缀为“_1”的过程表示系统模型内的过程(或模型过程)。 图7-2-4 USS的系统规格说明图Button1DSShuttle0Shuttle1SV数据流联系Button0状态向量联系9.2.1 JSD分析技术回顾将实体结构图与初建系统模型(系统规格说明图)综合起来,可导出目标软件系统中每个过程内部细节的结构正文表示,如6.2.3节过程BUTTON_1和SHUTTLE_1所描述。上述结构正文也可对应地用Jackson结构图表示。图625是与模型过程SHUTTLE_1的结构正文对应的Jackson结构图。图625 对应于结构正文的结构图Shuttle 1Sta

8、tion(i)*Arrive(1)Leave(1)Shuttle body1TRANSit body1wait body1Transit(i)*Transit(1)*Arrive(i)Leave(i)Wait(1)*TRANSit bodywait bodyWait(i)*9.2.2 扩充功能性过程l这一步骤以初建系统模型为基础,通过数据流和状态向量两种方式将新定义的功能性过程与原有的模型过程联系起来。具体考虑两类功能: 1信息型功能(information function):从模型过程产生的数据流和状态向量中提取信息并生成输出信息。嵌入型功能只需在原有模型过程的结构正文中插入一些操作; 2

9、交互型功能(interactive function):监视模型过程的状态向量,在输出结果的同时产生内部输入信息,反过来影响模型化过程的动作。图1021 两类功能性过程与系统模型的关系外部过程系统模型信息型功能过程交互型功能过程客观世界系统9.2.2 扩充功能性过程假设在交通车上有一块发光板,专门显示车到站的信息,发光板“亮”说明车到站,“暗”说明车离开。此板或亮或暗受LON(i)、LOFF(i)两命令的控制。在过程SHUTTLE_1中可嵌入一个新功能:当交通车到达站(i)时,发出命令LON(i);离开站(i)时,发出命令LOFF(i)。交通车在两站之间往返运行过程中,输出“开关发光板”的命令

10、数据流,图1022为增加这一功能后的SSD,结构正文修改为:9.2.2 扩充功能性过程图1022 修改后的SSDLAMPCMDSLamp commandsButton0BDSVButton1Shuttle0Shuttle1LAMPCMDSSHUTTLE_1 seq LON(1) /* 控制发光板“亮”,说 明交通车正停在站1上 */ read 状态向量 WAIT_BODY1 itr while Wait(1) read 状态向量 WAIT_BODY1 end LOFF(1) /* 交通车即将离站;控 制发光板“暗” */ LEAVE(1) TRANSIT_BODY1 itr while Tra

11、nsit(1) read 状态向量 TRANSIT_BODY1 endSHUTTLE_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 end9.2.

12、2 扩充功能性过程第二个功能是产生关于启动(START)和关闭(STOP)发动机的命令,以此控制交通车的运行。下达STOP命令的条件是,传感器显示车已到站,而下达START 命令的条件是乘客压下按钮招呼交通车并恰好交通车在某个站上等待。为此引入一个功能性过程mcontrol,它从SHUTTLE_1和BUTTON_2两过程接收数据,适时地发出START和STOP两种命令。过程SHUTTLE_1与过程mcontrol之间用数据流“S1D”连接。因此SHUTTLE_1的结构正文进一步修改为:SHUTTLE_1 seq LON(1) read 状态向量 WAIT_BODY1 itr while Wai

13、t(1) read 状态向量 WAIT_BODY1 end LOFF(1) LEAVE(1) TRANSIT_BODY1 itr while Transit(1) read 状态向量 TRANSIT_BODY1 end 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

14、Transit(i) read 状态向量 TRANSIT_BODY end STATION end SHUTTLE_BODY1 end ARRIVE(1) write arrive to S1D /* 发送数据流,说明车已到站1 */ SHUTTLE_1 end9.2.2 扩充功能性过程过程SHUTTLE_1执行“read状态向量”操作和过程mcontrol对“S1D”的访问都必须有足够快的频率,否则交通车将不能及时停下来。 为完成USS实例,还需进一步考虑实体BUTTON模型。过程BUTTON_1是对按钮动作的精确描述(即每次压下都对应过程push的一次调用),实际上系统应把第一次压下按钮招

15、呼交通车的动作与一次运行未开始之前乘客压下按钮招呼交通车的请求区分开来。用已有实体无法描述和区分动作之间的时间约束,常常引入额外的实体为此设计过程BUTTON_2,结构图如图1023所示图1023 button2的结构图Button2Push group*ExtraArrival bodyExtrapush bodyRequestpushArrival Extra Arrival*Extra push*9.2.2 扩充功能性过程功能性过程mcontrol既负责检查BUTTON_2的状态向量“B2V”,确定是否有未满足的请求,又负责把从SHUTTLE_1处(S1D)获取的信息(即交通车已到达发出

16、请求的车站)传递给BUTTON_2(MBD流)。在此定义了一个交互型功能。 BUTTON_2的结构正文描述如下: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 endEXTRA_RQ_PUSH itr while (REQUEST) /* 因交通车尚未靠站,请求 暂不满足,循环等待 */ read MBD and B1D EXTRA_RQ_PUSH end ARRIVAL seq/* 请求满足,清请求标志 */ request:=no read MBD and B1D ARRIVA

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号