杰克逊系统开发

杰克逊系统开发（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的狀態向量。簡單來說，資料流連結是訊息傳遞的抽象化，狀態向量是輪詢（由一個程序主動定期讀取其他許多程序的資料）的抽象化，狀態向量也是資料庫查詢的抽象化。 杰克逊结构化编程 邁克爾·安東尼·傑克遜（英语：Michael A. Jackson） 问题框架方法（英语：Problem Frames Approach） 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）.  引文使用过时参数coauthors (帮助) Decision systems Inc. (2002), Jackson System Development （页面存档备份，存于互联网档案馆）. Accessed 24 Nov 2008. "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].  引文使用过时参数coauthors (帮助)[永久失效連結] 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) （页面存档备份，存于互联网档案馆） Jackson Development Methods （页面存档备份，存于互联网档案馆） Tutorial on JSD