杰克逊系统开发

杰克逊系统开发Jackson system development)簡稱JSD,是一種線性的程序设计方法学,由邁克爾·安東尼·傑克遜英语Michael A. Jackson及約翰·卡梅倫(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年初期告一段落,傑克遜後來轉向问题框架方法英语Problem Frames Approach的研究。

基本原則

编辑

杰克逊系统开发有以下三個基本的原則:

  • 在開發初期需要對現實世界的描述及建模,而不是針對系統需要的機能訂定規格或進行結構化。利用杰克逊系统开发產生的系統在尚未處理系統相關機能前,會先模擬現實世界的情形。
  • 一個有時序真實世界的良好模型應該也是有時間順序的,其主要目的是將真實世界的演變對映模擬現實世界系統的演變。
  • 實現系統的方式是基於從規格到一組有效率程序的轉換,程序需可以用軟體及硬體執行。

杰克逊系统开发的步驟

编辑

當杰克逊在1982年提出杰克逊系统开发時[4],此開發方式包括六個步驟

  1. 實體/動作
  2. 基本建模
  3. 互動機能
  4. 資料機能
  5. 系統時序
  6. 系統實現

後來將步驟再加以修改,變成三個階段[3][8]

  1. 建模階段(分析):包括實體/動作及實體結構二個步驟。
  2. 網路階段(設計):包括基本建模、機能及系統時序三個步驟。
  3. 實現階段(實現):只有實現一個步驟。

建模階段

编辑

在建模階段會建立實體結構圖(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的狀態向量。簡單來說,資料流連結是訊息傳遞的抽象化,狀態向量是輪詢(由一個程序主動定期讀取其他許多程序的資料)的抽象化,狀態向量也是資料庫查詢的抽象化。

相關條目

编辑

參考資料

编辑
  1. ^ IEC 61508-7:1997 Functional safety of electrical/electronic/ programmable electronic safety-related systems Part 7 Overview of techniques and measures p59
  2. ^ 陳平; 禇華. 软件设计师教程. 北京: 清华大学出版社有限公司. 2006: 169 [2012-05-25]. ISBN 7302129576. (原始内容存档于2019-12-07). 
  3. ^ 3.0 3.1 Decision systems Inc. (2002), Jackson System Development页面存档备份,存于互联网档案馆). Accessed 24 Nov 2008.
  4. ^ 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
  5. ^ System Development, M. A. Jackson, Prentice Hall, 1983
  6. ^ JSP and JSD: The Jackson Approach to Software Development, ed. John R. Cameron (IEEE Computer Society Press, ISBN 0-8186-8858-0, 1989)
  7. ^ LBMS Jackson system development, Version 2.0 Method manual by LBMS (Learmonth, Burchett Management Systems), John Wiley & Sons, ISBN 0-471-93565-4; 1992
  8. ^ 宋柱梅; 赵振宇,李庆亮. 基于模型的软件开发方法研究 (PDF). 深圳信息职业技术学院学报. 2009年12月, 7 (4): 10–13 [2012-05-25].  [永久失效連結]

延伸閱讀

编辑

外部連結

编辑