杰克逊系统开发
杰克逊系统开发()簡稱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).
- 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].
延伸閱讀
- 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) (页面存档备份,存于)