傑克遜系統開發
傑克遜系統開發(Jackson system development)簡稱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).
- ^ 3.0 3.1 Decision systems Inc. (2002), Jackson System Development (頁面存檔備份,存於網際網路檔案館). Accessed 24 Nov 2008.
- ^ 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
- ^ 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) (頁面存檔備份,存於網際網路檔案館)