加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

面向数据结构的设计方法(Jackson方法)

(2015-10-30 15:37:10)
标签:

软件

设计

jackson

分类: 软件过程改进

  面向数据结构的设计方法(Jackson方法)

1975年,M.A.Jackson 提出了一类至今仍广泛使用的软件开发方法。这一方法从目标系统的输入、输出数据入手,导出程序框架结构,在补充其他细节,就可得到完整的程序结构图。这一方法对输入、输出数据结构明确的中小型系统特别有效。该方法也可与其他方法结合,用于模块的详细设计。

JSDJackson System Development)是Jackson面向数据的结构化编程方法(JSP,Jackon Structured Programming)的产物。

JSD的基本概念是在考虑系统的功能之前,设计应先对运行环境的实体行为建模,然后系统的功能被加入这个模型。其核心思想是由数据结构,建立目标系统的模型,并演化为相应的程序结构。

数据结构对软件设计的影响很大,如一个数据结构具有重复性,那就一定会用循环(重复)结构来控制。如果一个数据结构具有选择性质,级为可能出现,也可能不出现的信息,就一定采用条件语句来控制。若一个数据结构是分层次的,软件的结构也必然是分层次。所以,数据结构充分地揭示了软件结构。因此,面向数据的设计方法定义了一组以数据结构为指导的映射过程。

1.   JSD使用的结构表示法

Jackson方法把问题分解为由三种基本结构形式表示的层次结构。三种基本结构形式是顺序、选择和重复。Jacckson 提出了一种与数据结构层次图非常相似的数据结构表示法,以及一种映射和转换的过程。

三种基本结构类型的表示方法如下图所示。                                                                                                    http://s14/mw690/004k5XOCzy6WBOMCCOp9d&690

 1 JSD实体结构图三种基本构件

顺序型指两个以上的事件从左到右顺序执行。选择型指两个以上事件一次只能执行一个(以#的方框表示)。重复型指事件重复输入多次(以带*的方框表示)。由三种基本结构的组合,可以形成更复杂的结构体系,见下图:                                                                                                                                                                http://s16/mw690/004k5XOCzy6WBP3TxEzaf&690

 由基本结构图表示的复杂结构

Jackson的层次结构图不仅可以用来描述数据结构,也可以用来描述客观事物的层次结构。例如下图描述了某大学的组织结构。                                                                                                                                              http://s12/mw690/004k5XOCzy6WBPa8buHdb&690

 3  Jackson结构图表示学校组织结构

 


2.      JSD开发步骤

JSD开发分为四个步骤,以下结合例子说明。

仓库里存放了多种零件(如P1P2P3 ……,每种零件的每次变动(收到或发出)都有卡片做出记录。库存管理系统每月根据这样一叠卡片打印一张月报表,如表1所示,表中每一行列出了某种零件本月库存量的净增减变化。

                                                    1 零件库存变化率月度报表

月报表

零件名

增减数量

P1

+204

P2

-1200

P3

_451

                    

2.1  数据结构化表示

确定输入、输出数据的逻辑结构,并用Jackson数据层次图描述所用结构。这里假定卡片已按零件分组,即将同一零件的卡片放在一起。输入数据是由一叠卡片组成的文件,文件包括许多零件组,每个零件组又有许多张卡片,每张卡片又可能是“收”或“发”。输出是月报表,它由表头和表体两部分组成,表体又由许多“行”组成,例子中的数据结构表示如4种的(b)、(c

2.2  找出输入与输出数据结构的对应关系

找出输入数据结构和输出数据结构中有对应关系的数据单元,所谓有对应关系的数据单元是指由直接因果关系,程序可以同时处理的数据单元。对于重复的数据单元,重复的次序和重复的次数都必须相同才算有对应关系。有对应关系的数据单元名称可以不相同。

这个例子中,输入和输出数据结构之间也是对应的。一个输入文件对应一张月报表,输入文件中的每个零件对应于月报表中的每一行,“零件组”个数与“行”数相同,“零件组”的排列次序与“行”的排列次序也是一致的。对应关系见4种的中的箭头所示。

但是,如果卡片不是按零件分组,而是按“收”或“发”的日期顺序排列(见图4a)),此时图4中的输入(a)和输出(c)之间就找不到对应的数据单元。这种情况称为“结构冲突”。                       http://s5/mw690/004k5XOCzy6WBPjSePO24&690


4 零件库输入文件和月报表文件结构图   

2.3  确定程序结构

以输出数据结构为基础确定程序结构,确定程序结构时有三条规则:1)为每对有对应关系的数据单元,按照它们在数据结构中所在的层次,在程序结构的适当位置画一个程序框;2)在输入数据结构中有,但在输出数据结构中没有对应关系的数据单元,在程序结构中的适当位置画一个程序框;3)在输出数据结构中有,但在输入数据结构中没有对应关系的数据单元,在程序结构中的适当位置画一个程序框。

简单地说,每对有对应关系的数据单元合画一个框,没有对应关系的所有数据单元(包括输入数据结构和输出数据结构)各画一个框。

根据上述原则,画出程序结构图见5。                                                                                                 http://s3/mw690/004k5XOCzy6WBPpjBwS62&690

5 零件库系统程序结构图

 

2.4  列出和分配可执行操作

进一步是列出所有的操作,并把他们分配到程序结构的适当位置,这样就获得了完整的程序结构图,程序员就可以根据这个结构图进行程序的编码。例子中的有关操作见表2,并将操作分配到图5上。 

                                                     2零件库软件相关操作

编号

名称

1.    

读表头数据项

2.    

打印表头符号行

3.    

读零件卡片(收)

4.    

读零件卡片(发)

5.    

处理收发计算

6.    

生成同零件项

7.    

打印按输入数据结构数字行

8.    

打开文件

9.    

关闭文件

3.      JSD方法的总结

      Jackson 方法的软件设计过程是从数据结构入手,由数据结构之间的关系导出程序结构,这使软件系统的开发“有章可循”。尤其这一方法特别适合于以数据为主,“计算”较简单的数据处理系统。因此可成其为“面向数据的方法”。由于这一技术未提供对复杂系统设计过程的技术支持,因而不适合于大型实时系统或非数据处理系统的开发。但该方法比SD方法设计过程简单,所以在SD设计中,通常用Jackson 方法简化数据处理部分的设计。


-------------------------------------
参考文献:

[1] 软件工程原理及应用(武汉大学出版社)  陈世鸿、朱福喜等


---------------END-----------------







0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有