杰克逊系统开发

杰克逊系统开发Jackson system development)简称JSD,是一种线性的程序设计方法学,由迈克尔·安东尼·杰克逊英语Michael A. Jackson及约翰·卡梅伦(John Cameron)在1980年代提出。可视为是杰克逊结构化编程(JSP)的延伸。

杰克逊系统开发包括从设计需求到程式码的完整软体开发流程,并且著重在即时系统的应用[1]。也适用于资料处理系统的开发[2]。但此方法不易处理偶然及随机性的事件,为其缺点[3]

历史

编辑

杰克逊系统开发最早是由杰克逊在1982年在其发表的论文《系统开发方法》(A System Development Method)[4]及1983年的《系统开发》(A System Development)[5]中提出。

后来杰克逊系统开发继续发展,也加了一些新的特征,在约翰·卡梅伦1989年的论文选集《JSP and JSD》[6]及1992年版的LBMS JSD手册[7]中都有说明。杰克逊系统开发的发展约在1990年初期告一段落,杰克逊后来转向问题框架方法英语Problem Frames Approach的研究。

基本原则

编辑

杰克逊系统开发有以下三个基本的原则:

  • 在开发初期需要对现实世界的描述及建模,而不是针对系统需要的机能订定规格或进行结构化。利用杰克逊系统开发产生的系统在尚未处理系统相关机能前,会先模拟现实世界的情形。
  • 一个有时序真实世界的良好模型应该也是有时间顺序的,其主要目的是将真实世界的演变对映模拟现实世界系统的演变。
  • 实现系统的方式是基于从规格到一组有效率程序的转换,程序需可以用软体及硬体执行。

杰克逊系统开发的步骤

编辑

当杰克逊在1982年提出杰克逊系统开发时[4],此开发方式包括六个步骤

  1. 实体/动作
  2. 基本建模
  3. 互动机能
  4. 资料机能
  5. 系统时序
  6. 系统实现

后来将步骤再加以修改,变成三个阶段[3][8]

  1. 建模阶段(分析):包括实体/动作及实体结构二个步骤。
  2. 网路阶段(设计):包括基本建模、机能及系统时序三个步骤。
  3. 实现阶段(实现):只有实现一个步骤。

建模阶段

编辑

在建模阶段会建立实体结构图(entity structure diagram),并识别系统中的实体、其动作、实体在其生命周期中的动作时序,和实体和其动作的属性 。实体结构图会使用杰克逊结构化编程中的“结构图”来表示,实体结构图的目的是建立系统及组织架构的完整描述,设计者需决定在系统中哪些部份重要,哪些部份不重要,此阶段强调设计者和使用者的沟通。

网路阶段

编辑

在网路阶段会建立整个系统的模型,称为“系统规格图”(system specification diagram)或网路图(network diagram),网路图是呈现程序(以长方形表示)和彼此传递资料的方式,资料传递可能会用“状态向量”(以有菱形的连线表示)或者是用“资料流”(以有圆形的连线表示)表示。此阶段定义系统的机能.每一个实体都会成为网路图中的一个程序或程式。外部程式之后会加入网路图中,其目的是处理输入、计算输出并更新实体处理的资料,因此网路图描述了整个系统,也描述各程序及各程式之间的资料和连接方式。

基本建模步骤处理现实世界的建模,而机能步骤中会加入产生输出所需要的程序,系统时序步骤处理程序中的同步、并导入限制条件。

实现阶段

编辑

实现阶段中抽象的网路模型会转换为实际的系统,以“系统实现图”(system implementation diagram)表示,系统实现图中的系统会呼叫各机能的模组,以实现对应的机能。资料流会以模组之间的呼叫来表示,资料库的符号表示实体状态向量的集合,也有特殊符号表示档案的缓冲区(必需以规划在不同的时段执行的程序来实现)。

实现阶段的主要考量是系统的最佳化,借由转换的方式,可以合并程序,减少实际程序的数量。

相关的图示

编辑
实体结构图

实体结构图表示系统中各实体之间的关系及其动作,包括以下的内容:

  • 实体:实体是系统中的一个物件。
  • 动作:此是指实体进行的动作及那些会影响其他实体的动作。
  • 序列结构:此处的定义和杰克逊结构化编程的定义相同,利用序列结构来表示许多循序执行的动作,由左到右依序执行。
  • 选择结构:表示需由二个或二个以上的动作中选择一个进行,选择结构方块的右上角会标示圆圈。
  • 迭代结构:表示重复执行一个动作,选择结构方块的右上角会标示星号,一般迭代结构中只进行一个动作。
  • 虚无元件:虚无元件表示像类似选择结构中,某些情形下不需进行任何动作。
网路图

网路图(Network Diagram)表示各程序之间的交互关系,有些会称为系统规格图(System Specification Diagram),网路图包括以下的内容:

  • 程序:程序表示系统的机能,一般程序会和外界的实体借由资料流连结建立关系。
  • 资料流连结(datastream connection):在资料流连结中,程序A(产生资料流的程序)程序主动送出资料给程序B。
  • 状态向量连结(state vector cnspection):在状态向量连结中,程序B(读取状态向量的程序)程序读取程序A产生的状态向量资讯。

资料流连结和状态向量连结的差异在于主动的程序不同:在资料流连结中,产生资料流的程序A是主动程序,程序A依其选定的时间主动将资料传送给程序B;在状态向量连结中,产生状态向量的程序A是被动程序,接收状态向量的程序B定期去读取程序A的状态向量。简单来说,资料流连结是讯息传递的抽象化,状态向量是轮询(由一个程序主动定期读取其他许多程序的资料)的抽象化,状态向量也是资料库查询的抽象化。

相关条目

编辑

参考资料

编辑
  1. ^ IEC 61508-7:1997 Functional safety of electrical/electronic/ programmable electronic safety-related systems Part 7 Overview of techniques and measures p59
  2. ^ 陈平; 禇华. 软件设计师教程. 北京: 清华大学出版社有限公司. 2006: 169 [2012-05-25]. ISBN 7302129576. (原始内容存档于2019-12-07). 
  3. ^ 3.0 3.1 Decision systems Inc. (2002), Jackson System Development页面存档备份,存于互联网档案馆). Accessed 24 Nov 2008.
  4. ^ 4.0 4.1 "A System development method 互联网档案馆存档,存档日期2012-02-06." by M. A. Jackson, published in Tools and notions for program construction: An advanced course, Cambridge University Press, 1982
  5. ^ System Development, M. A. Jackson, Prentice Hall, 1983
  6. ^ JSP and JSD: The Jackson Approach to Software Development, ed. John R. Cameron (IEEE Computer Society Press, ISBN 0-8186-8858-0, 1989)
  7. ^ LBMS Jackson system development, Version 2.0 Method manual by LBMS (Learmonth, Burchett Management Systems), John Wiley & Sons, ISBN 0-471-93565-4; 1992
  8. ^ 宋柱梅; 赵振宇,李庆亮. 基于模型的软件开发方法研究 (PDF). 深圳信息职业技术学院学报. 2009年12月, 7 (4): 10–13 [2012-05-25].  [永久失效链接]

延伸阅读

编辑

外部链接

编辑