版权归原作者所有,如有侵权,请联系我们

[科普中国]-面向数据结构方法

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

面向数据结构方法是一类侧重从数据结构方面去分析和表达软件需求,进行软件设计的开发方法。该方法从数据结构入手,分析信息结构,并用数据结构图(特指该类方法所用的图形描述工具,例如Jackson 结构图和Warnier图)来表示,再在此基础上进行需求分析,进而导出软件的结构。

简介应用领域的信息域一般包括信息流、信息内容和信息结构等部分。在软件需求分析过程中, 根据对信息域分析的侧重点不同就形成了不同的开发方法。面向数据流的开发方法以分析信息流为主,用数据流图来表示信息流;而面向数据结构的开发方法则以分析信息结构为主, 用数据结构图来表示信息结构,并以此为基础进行需求分析,进而导出软件的结构。

面向数据结构的开发方法包括分析和设计两个过程,数据结构在整个过程中起着重要作用。由于很多应用领域的信息都有层次分明的信息结构,系统的输入数据、内部储存数据及输出数据都存在着层次性,并且是相对独立和可区分的,因此,在需求分析过程中可以利用数据结构来分析和表示问题的信息域。在软件设计过程中,不同性质的数据结构往往可以用具有相应的控制结构的程序进行处理。重复性的数据总是用具有循环控制结构的软件来处理,而选择性的数据则由具有条件处理部分的软件来处理, 业已证明 ,仅用三种结构成分即顺序、 选择和循环就可以表示所有具有单出口与单入口的程序,因此,可以将具有层次性的数据结构映射到结构化的程序上。

发展和特点20世纪70 年代初,在关于数据结构基础的论述中已出现了面向数据结构的设计思想。1974年J .D .Warnier发表《程序的逻辑构造》一文,提出了一种表示数据层次结构的图形工具,即Warnier 图。他利用顺序、选择、重复三种结构成分来表示数据的层次结构,进而导出程序的结构。1975 年 Michael Jackson 在《程序设计的原则》一文中将输入数据与输出数据的结构在相应层次上对应 ,并系统地提出了将数据结构映射到程序结构的实用技术。从此 , 面向数据结构的开发方法便发展起来。早期的面向数据结构的开发方法主要是针对程序的过程设计而言的,80 年代初逐步发展为较完善的系统化软件开发方法。Warnier 将程序的逻辑构造(LCP ) 法进一步完 善,提出了系统的逻辑构造(LCS)法,用逻辑和形式化方法严格地表示了数据结构,这样便有利于自动生成伪代码,进行系统的校验及优化。同时, Jackson也将结构化程序设计(JSP)扩充为 Jackson 系统开发(JSD)方法。1981 年和 1983年Ken Orr对 Warnier方法进行了扩充, 分别发表了《结构需求定义与《数据结构化程序设计》两文,形成了一种易于理解,并且文档比较完善的系统化开发方法 ,这就是数据结构化系统开发(DSSD)方法。这一方法涉及到了信息域的所有属性:信息流、信息内容和信息结构。这种方法首先研究应用环境,引入了数据流中的分析方法,以此强化对系统功能特性的分析。同时,也采用了公式化和综合性的设计方法。虽然各种面向数据结构的开发方法都有自己独特的表示方式及开发过程,但他们都具有一些共同特点:①这类方法开始于需求分析,并将分析结果作为设计基础,但各种方法并不明显地区分软件的结构设计与过程设计,它们都较早地进入软件的过程表示;②各种方法都为分析人员提供手段来标识关键信息对象(也称为实体或项)和操作 (也称为动作或过程);③各种方法都假定信息结构具有层次性;④基本上都采用顺序、选择和重复构造成分表示数据结构;⑤各种方法都提供了一组将层次化的数据结构映射到程序结构的步骤。面向数据结构的开发方法适用于具有良好定义的,层次分明的信息结构的领域。典型的例子有:商业信息系统开发,其输入和输出有明显的数据结构 ,并且共同使用同一层次的数据库;操作系统开发, 其数据结构由许多有确定结构的表格、 文件等构成;CAD/ CAM 系统的开发,这方面需要复杂的数据结构用于信息的储存、变换和处理。此外,在工程领域、 计算机辅助教育、 组合问题求解及其它许多领域都可使用面向数据结构的开发方法。

结构图在许多应用领域中,信息都有清楚的层次结构。输入数据、内部存储信息以及输出数据都有一定的结构关系,这些数据结构既影响程序的结构,又影响程序的处理过程。面向数据结构的设计方法就是利用这些结构作为开发软件的基础,从数据的输入结构、输出结构导出问题解的程序结构过程。JDM是Jackson1975年提出的一种而向数据结构的设计方法,在许多国家较为流行,本文试对DJM方法进行分析,并针对其不足给予改进。Jackson结构图解虽然程序中使用的数据结构种类繁多,但是它们的数据元素彼此间的逻辑关系却只有顺序、选择和循环3类。

顺序结构

顺序结构的数据由1个或多个数据元素组成,每个元素按确定次序出现1次,图1即是表示顺序结构的Jackson结构图解。其中A是顺序结构,由元件B,C,D3部分顺序组成,执行的次序是B,C,D。每个元件只执行1次。

选择结构

选择结构包含2个或更多个元件,每进入1次选择结构,只执行其中1个元件,图2是表示2个中选1个结构的Jackson结构图解。

循环结构

循环结构含有1个循环体,每进入循环结构1次,其循环体将执行多次,但也可能执行0次。图3是循环结构的Jackson结构图解,其中D是循环结构,C。是循环体,表示每执行1次D,将执行0次或n次C。

Jackson结构图解有许多优点。但也存在下述缺点:当表示循环和选择时。循环结束条件及选择条件均不能列出,这就影响了图解的表达能力,不易把图解直接翻译成程序。此外,框间连线为斜线,不易在行式打印机上输出1。

本词条内容贡献者为:

王慧维 - 副研究员 - 西南大学