杰克逊系统开发(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),网络图包括以下的内容:
资料流链接和状态向量链接的差异在于主动的程序不同:在资料流链接中,产生资料流的程序A是主动程序,程序A依其选定的时间主动将资料发送给程序B;在状态向量链接中,产生状态向量的程序A是被动程序,接收状态向量的程序B定期去读取程序A的状态向量。简单来说,资料流链接是消息传递的抽象化,状态向量是轮询(由一个程序主动定期读取其他许多程序的资料)的抽象化,状态向量也是数据库查询的抽象化。
