英语原文共 8 页,剩余内容已隐藏,支付完成后下载完整资料
使用JSP设计Codasyl数据库程序
摘 要
杰克逊结构化程序设计(JSP)方法的基础是程序的设计,以该程序处理的数据的分层视图为基础。 在简要介绍JSP方法和Codasyl数据库模型的相关方面之后,本文将描述JSP如何应用于处理由Codasyl数据库管理系统支持的数据库的程序的设计。 它还描述了,尽管Codasyl数据库在物理上被组织为一个数据网络,但程序对这种数据库的逻辑视图主要由其数据库导航结构决定,该数据库导航结构实际上是分层的。 本文最后描述了数据库条件对JSP设计的影响。
关键词:数据处理,数据库,结构化方法。
杰克逊结构化编程(JSP)是一种正式的程序设计方法,主要用于数据处理程序。它起源于杰克逊1,并已被许多组织采用,特别是在英国,作为其结构化程序设计方法。 JSP的根源在于“自上而下”的设计方法和结构化编程的一般原则。它主要面向按层次结构定义的数据的序列视图,以产生类似定义的程序结构。通过对数据结构对问题环境进行建模来推导程序结构的过程是JSP的基础。
第1章 JSP方法
JSP方法的基本步骤如下。首先,考虑问题环境并通过为程序处理的每个数据流定义分层结构来记录对问题的理解。数据结构以数据结构图的形式指定,数据结构图按照顺序描述数据的组成部分及其相互关系。数据组件之间可以存在三种关系类型:
bull;序列
bull;选择
bull;迭代
对应于三种结构化编程的公知结构。图1以一个程序的数据结构为例说明了这三种类型的组件,该程序输入员工记录的连续人事档案并选择指定部门中的员工进行打印的所有记录。
其次,根据数据结构形成一个程序结构。数据结构通过识别数据结构之间相同类型的相应组件来合并以形成一个程序结构。如果未能确定两个数据结构之间的适当对应关系,则需要使用称为“反演”的JSP技术。这引入了一个通用兼容的中间数据结构,并导致形成两个程序,一个是另一个的子程序。
图1 一个JSP数据结构图
第三,根据可用的基本操作和条件来定义要执行的任务的细节,并将这些操作和条件中的每一个分配给程序结构的适当组件。在这个阶段,可能需要重新组织程序结构,使用称为“回溯”的JSP技术。这涉及与条件相关的识别困难。
第四,将程序结构设计转换为逻辑示意图,即JSP的伪码。图2给出了一个JSP逻辑示意图的例子,用于从图的数据结构中产生的程序设计。它清楚地表明了最终方案设计的结构与数据结构之间的关系。
图2 JSP逻辑示意图程序图
第2章 Codasyl数据库
1971年,来自数据系统语言会议(Codasyl)的数据库任务组(DBTG)发布了一份包含数据库管理系统规范的报告。这些规范一直是许多辩论和修订的主题。基于这些建议的系统被称为Codasyl系统,并且有许多众所周知的实现方式,例如,来自Cullinet的IDMS。
Codasyl报告包含对数据库模型规范的语言描述。它有两个主要级别的数据定义,模式和子模式。该模式定义了数据库的所有数据及其关系。 subschema定义了与特定应用程序或程序相关的数据库模式视图的子集。
基于Codasyl语言的数据视图可被视为网络视图。该网络模型基于两个基本的数据结构概念:集合类型和记录类型。数据库中的每个记录类型表示一个唯一的命名实体,每个集合类型是一个所有者记录类型与一个或多个“成员”记录类型之间的命名关系。图3显示了一个具有单个成员记录类型(表示为Bachman5图)的集合类型的示例。
巴赫曼图是对数据库的物理结构的描述,其中记录类型的“部门和员工”被描述为命名矩形框。集合由连接记录框的命名箭头线表示。箭头显示了所有者记录类型的一次出现如何与成员记录类型的零次或多次出现相关。因此,对于每个“部门”而言,可能存在许多“员工”,而对于每个“员工”而言,只有一个“部门”。
特定记录类型可以属于的集合类型的数量没有限制。相同的记录类型可以是一个集合中的所有者,另一个集合中的成员。记录类型可以是多个集合类型的所有者,也可以是多个集合类型的成员。所有这些特征,其中显示了人事系统数据和关系的巴赫曼图。对用于描述集合发生的巴赫曼图的扩展是中所示的发生图,其中“部门内雇员”集合的发生的示例。圆圈用于表示记录发生并且在记录发生之间绘制的线指示记录连接到集合中,箭头指示记录之间的访问路径。指向所有者记录的单独箭头表示它可以直接访问。然后可以扩展该图表以显示所示的“参加课程”集合的出现。
当设计一个程序来处理Codasyl数据库中的数据时,程序员必须决定通过数据库的最有效的路径,以满足程序的处理需求。该访问路径有时称为程序的“数据库导航结构”,它将包含对数据库中记录的一系列访问。 Codasyl模型提供了各种记录访问路径,其中包括:
bull;通过密钥直接访问,
bull;从所有者访问一组成员,
bull;从任何成员访问集合的所有者,
bull;顺向访问一个组的成员在前向和可选方向。
集合的另一个重要特征是集合内成员的顺序,在Codasyl术语中称为“集合顺序”。当涉及在一个集合中插入新的成员事件时,这是特别重要的。在Codasyl中有许多不同的设置顺序,包括按指定键排序。
信息,员工可以提交或取消用车申请,管理员对员工、司机、车辆以及申请用车审核等信息能进行修改,这些信息是可实时变化的,归为动态数据。
第3章 分层与网络数据
如前所述,应用JSP方法的出发点是用一个或多个分层数据结构来描述问题环境。这些代表程序对数据的逻辑视图。
当绝大多数数据处理活动都基于传统文件时,JSP获得了普及,其中许多文件目前仍在使用。所有关于JSP的主要出版物都基于传统文件或数据流的例子,这些文件或数据流与常规文件相似,例如查找表。 JSP方法在处理传统文件的程序中的应用相对简单,因为传统文件在物理上被组织为数据层次结构。因此,程序处理的传统文件的JSP数据结构图与该文件的物理结构之间始终存在明确的关系。 Lngevaldsson 指出,使用JSP结构符号描述数据的物理结构应该是生成JSP数据结构的先决条件。他将前者定义为“物理”数据结构,后者定义为“逻辑”数据结构,即区分数据的物理特征和对特定程序处理重要数据的特征。这种关系最好通过图1给出的简单例子来说明。从这个例子中可以看出,数据结构图的第一层和第二层表示文件的物理结构特征,即文件结束记录的存在和数据记录的迭代。这会影响文件中数据的处理,并且必须反映在JSP数据结构图中。当JSP方法应用于处理传统文件的程序时,数据的物理结构和相应的JSP数据结构之间总是有明确的关系。
如前所述,Codasyl数据库物理结构为数据网络而不是数据层次结构。因此,JSP分层结构符号是描述Codasyl数据库物理结构的不恰当方法。一个合适的方法是已经确定的巴赫曼图。问题是JSP是否适合设计处理这样的数据库的程序?这是鉴于传统文件的物理结构和JSP数据结构之间的密切关系,以及JSP数据结构符号不适用于表示Codasyl数据库的物理结构。答案是使用JSP适合设计处理Codasyl数据库的程序。这是因为程序在数据库中具有数据的逻辑视图可以描述为JSP数据结构图。该视图主要由程序的数据库导航结构决定。
第4章 Codasyl数据库的JSP数据结构
设计程序访问Codasyl数据库的程序员将通过数据库子模式及其关联的Bachman图提供数据库物理特性的描述。 JSP设计的起点是为程序标识数据并将其逻辑视图描述为一个或多个JSP数据结构。当程序从Codasyl数据库访问数据时,其中一个数据结构将描述该程序的数据库逻辑视图。这主要由数据库导航结构决定。程序员的第一项任务是使用Bachman图识别出最合适的数据库导航结构,以满足程序的功能处理。然后使用JSP数据结构符号进行描述。
这可以通过基于中Bachman图形式中描述的人事制度的示例来说明。如果需要程序来生成指定部门中所有员工的姓名,则要从数据库访问的数据是“员工”成员记录所有者“部门”记录针对特定部门的“部门内雇员”记录。该程序的合适的数据库导航结构在图3中给出的“员工在部门”集合中标识,如下所示:
bull;通过密钥访问所需的“部门”记录,
bull;依次访问所有出现的“员工”记录,这些记录是“部门”记录为所有者的员工 - 部门组成员。
图3 “部门内雇员”集合的产生
这个数据库导航结构在图4中被描述为一个JSP数据结构图。该计划对“人事数据库”的看法被细化为特定所有者“部门记录”,然后是成员记录的“员工组”。然后,“员工组”被细化为成员“员工记录”的迭代。描述的数据库导航结构描述了该程序完整的数据库逻辑视图。这并非总是如此,例如,增强型JSP数据结构图中显示了该程序的增强版本,该程序只生成特定部门中40岁以上的员工姓名。第三级包括选择#39;雇员·记录#39;作为#39;超过40条记录#39;或#39;40条记录或不满记录#39;。由于除了数据库导航结构定义的数据库访问之外,还需要额外的数据处理,因此这种增强是必需的。
图4 “员工进入部门”计划的数据库导航结构
基于相同人事制度的另一个例子是一个程序,该程序为具有特定职位的每个雇员列出该工作所需的课程,这些课程仍然需要参加。这个程序的数据库导航结构更加复杂,可以通过查看相关事件的相关示例来识别。导航结构如下。首先,按键访问所需的“职位”记录;该记录是发生“课程要求”集和发生“同工同酬”集的所有者。
其次,依次访问每个“员工”记录中发生的“员工同工”事件的成员;每个“员工”记录也是“课程设置”集合发生的所有者。
对于每个“员工”记录,依次访问每次发生的“培训课程”记录,该培训记录是其所有者出现的“培训课程”记录集的成员。
对于每个“培训课程”记录,顺序访问每个发生的“培训课程”记录,该记录是“职位”记录是所有者的“所需课程”集合的发生成员。如果两个记录不匹配,那么该计划将希望在“课程要求的培训课程”记录上进一步处理,然后转到下一个记录。
该数据库导航结构表示该程序对#39;人员数据库#39;的完整视图。它作为JSP数据结构图。
一旦程序数据库视图的JSP数据结构已经与用于与该程序关联的任何其他数据的数据结构一起定义,就可以遵循JSP的其余步骤。
第5章 数据库条件和JSP
每当执行数据库命令时,Codasyl数据库系统都会设置一个名为“DB状态”的寄存器。如果执行成功,则将其设置为零,否则将其设置为非零值以指示出现异常情况;具体的价值取决于为什么执行不成功。出现异常情况的原因可能是两个基本原因之一,即“异常”错误情况或“正常”异常情况。
由于硬件和软件错误而频繁出现异常错误情况,并且如果没有陷入,可能会导致程序放弃。正常的异常条件是程序员期望在数据库处理过程中出现的异常情况,例子包括“集合结束?”,“集合未找到?”。 #39;找不到记录?#39;。
程序员应该考虑到程序设计中出现数据库异常情况的可能性。可以决定程序中任何地方发生的特定异常情况都可以用相同的方式处理,并且可以使用“声明性程序”来实现,例如,在发生特定事件时声明要执行的程序,进行程序的执行。但是,如果程序员希望以特定的方式处理异常条件的每一个事件,那么异常条件的测试将需要明确地构建到程序设计中。
在数据库处理过程中可能存在异常情况的显式测试是该程序逻辑数据库视图的一部分。它必须反映在相关的JSP数据结构中。 #39;结束了吗?#39;在前面所述的例子中已经考虑到了正常情况,因为这个情况被要求检测集合成员迭代的结束。识别正常异常情况的可能性的另一个例子可以用图4的数据库导航结构来说明,该数据库导航结构没有考虑缺少“部门”记录并因此缺少“雇员-部门”组的缺失的可能性。可以详细说明这种结构,以显示图中给出的这种可能性。
参考文献
[1] Jackson, M Principles of Program Design Academic Press, London, UK (1975)
[2] Cameron, J R JSP and JSD: The Jackson Approach to Software Development IEEE Computer Society Press (1983)
[3] Burgess, R S An Introduction to Program Design using JSP Hutchinson amp; Co. London, UK (1984)
[4] #39;Codasyl Data Description Language Committee#39; J. of Development (June 1973)
[5] Bachman, CW #39;Data structure diagrams#39; Data BaseVo! 1 No 2 (1969)
[6] Ingevaldsson, L #39;JSP A Practical Method
全文共5376字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[14277],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。