杰克逊系统开发
杰克逊系统开发(Jackson system development)简称JSD,是一种线性的程序设计方法学,由迈克尔·安东尼·杰克逊及约翰·卡梅伦(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年初期告一段落,杰克逊后来转向问题框架方法的研究。
基本原则
编辑杰克逊系统开发有以下三个基本的原则:
- 在开发初期需要对现实世界的描述及建模,而不是针对系统需要的机能订定规格或进行结构化。利用杰克逊系统开发产生的系统在尚未处理系统相关机能前,会先模拟现实世界的情形。
- 一个有时序真实世界的良好模型应该也是有时间顺序的,其主要目的是将真实世界的演变对映模拟现实世界系统的演变。
- 实现系统的方式是基于从规格到一组有效率程序的转换,程序需可以用软体及硬体执行。
杰克逊系统开发的步骤
编辑当杰克逊在1982年提出杰克逊系统开发时[4],此开发方式包括六个步骤
- 实体/动作
- 基本建模
- 互动机能
- 资料机能
- 系统时序
- 系统实现
- 建模阶段(分析):包括实体/动作及实体结构二个步骤。
- 网路阶段(设计):包括基本建模、机能及系统时序三个步骤。
- 实现阶段(实现):只有实现一个步骤。
建模阶段
编辑在建模阶段会建立实体结构图(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的状态向量。简单来说,资料流连结是讯息传递的抽象化,状态向量是轮询(由一个程序主动定期读取其他许多程序的资料)的抽象化,状态向量也是资料库查询的抽象化。
相关条目
编辑参考资料
编辑- ^ IEC 61508-7:1997 Functional safety of electrical/electronic/ programmable electronic safety-related systems Part 7 Overview of techniques and measures p59
- ^ 陈平; 禇华. 软件设计师教程. 北京: 清华大学出版社有限公司. 2006: 169 [2012-05-25]. ISBN 7302129576. (原始内容存档于2019-12-07).
- ^ 3.0 3.1 Decision systems Inc. (2002), Jackson System Development (页面存档备份,存于互联网档案馆). Accessed 24 Nov 2008.
- ^ 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
- ^ System Development, M. A. Jackson, Prentice Hall, 1983
- ^ JSP and JSD: The Jackson Approach to Software Development, ed. John R. Cameron (IEEE Computer Society Press, ISBN 0-8186-8858-0, 1989)
- ^ LBMS Jackson system development, Version 2.0 Method manual by LBMS (Learmonth, Burchett Management Systems), John Wiley & Sons, ISBN 0-471-93565-4; 1992
- ^ 宋柱梅; 赵振宇,李庆亮. 基于模型的软件开发方法研究 (PDF). 深圳信息职业技术学院学报. 2009年12月, 7 (4): 10–13 [2012-05-25]. [永久失效链接]
延伸阅读
编辑- John R. Cameron (1989).The Jackson Approach to Software Development, IEEE Computer Society Press, Silver Spring.
- Jackson Software Development Methods (页面存档备份,存于互联网档案馆) web page
- Michael A. Jackson (1982). A systems development method
- Michael A. Jackson (1983). System development, Prentice Hall, Englewood Cliffs, New Jersey, 1983. (In het Nederlands gepubliceerd in 1989 bij Academec Service onder de titel: Systeemontwikkeling volgens JSD.)
- SmartDraw (2005). How to draw Jackson System Development (JSD) Diagrams) (页面存档备份,存于互联网档案馆)