text: 杰克逊系统开发
  杰克逊系统开发（Jackson system development）简称JSD，是一种线性的程序设计方法学，由迈克尔·安东尼·杰克逊（英语：Michael A. Jackson）及约翰·卡梅伦（John Cameron）在1980年代提出。可视为是杰克逊结构化编程（JSP）的延伸。
  杰克逊系统开发包括从设计需求到代码的完整软件开发流程，并且着重在即时系统的应用。也适用于数据处理系统的开发。但此方法不易处理偶然及随机性的事件，为其缺点。
  历史
  杰克逊系统开发最早是由杰克逊在1982年在其发表的论文《系统开发方法》（A System Development Method）及1983年的《系统开发》（A System Development）中提出。
  后来杰克逊系统开发继续发展，也加了一些新的特征，在约翰·卡梅伦1989年的论文选集《JSP and JSD》及1992年版的LBMS JSD手册中都有说明。杰克逊系统开发的发展约在1990年初期告一段落，杰克逊后来转向问题框架方法（英语：Problem Frames Approach）的研究。
  基本原则
  杰克逊系统开发有以下三个基本的原则：
  在开发初期需要对现实世界的描述及建模，而不是针对系统需要的机能订定规格或进行结构化。利用杰克逊系统开发产生的系统在尚未处理系统相关机能前，会先模拟现实世界的情形。
  一个有时序真实世界的良好模型应该也是有时间顺序的，其主要目的是将真实世界的演变映射模拟现实世界系统的演变。
  实现系统的方式是基于从规格到一组有效率程序的转换，程序需可以用软件及硬件运行。
  杰克逊系统开发的步骤
  当杰克逊在1982年提出杰克逊系统开发时，此开发方式包括六个步骤
  后来将步骤再加以修改，变成三个阶段：
  建模阶段
  在建模阶段会创建实体结构图（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的状态向量。简单来说，数据流链接是消息传递的抽象化，状态向量是轮询（由一个程序主动定期读取其他许多程序的数据）的抽象化，状态向量也是数据库查询的抽象化。