複製鏈接
請複製以下鏈接發送給好友

結構化分析

鎖定
結構化分析Structured Analysis,簡稱SA)是軟件工程中的一種方法,結構化分析和結構化設計可以分析商業的需求,再轉換為規格文件,最後再產生電腦軟件、硬件配置及相關的手冊及程序。
結構化分析及設計技術是系統分析的基礎,是由1960到70年代的系統分析技術發展而成 [1] 
中文名
結構化分析
外文名
structured analysis
縮    寫
SA
提出時間
70年代末

結構化分析目的

結構化分析在1980年代起開始廣為使用。結構化分析包括將系統概念轉換為用數據及控制的來表示,也就是轉換為數據流程圖。數據流程圖中的程序以泡泡來表示,因此也稱為“泡泡圖”。不過完整的數據流程圖中可能有許多的“泡泡”,使得很難去追蹤數據移動的情形。此時可以先定義外界需要系統迴應的事件,每一個事件指定一個泡泡,當系統定義完成後,再將事件的泡泡和迴應的程序的泡泡相連接。也可以將程序對應泡泡加以分組,組合成較高級的程序。數據字典用來描述數據和指令的移動,而用程序規格來描述交易或數據轉換的相關信息。
許多著名的分析方式都和結構化分析(SA)及結構化設計(SD)有關,包括結構圖數據流程圖及數據模型圖等。許多程序設計方法學也結合了結構化分析及結構化設計,包括結構化系統分析及設計方法(SSADM)及結構化分析及設計技術(SADT)等。 [2] 

結構化分析歷史

結構化分析是許多結構化方法中的一部份。“結構化分析是系統分析、設計及編程技術的組合,其目的是為了處理1960至1980年代軟件開發所遇到的問題,這段期間多半是用COBOLFortran語言開發,後來也使用C語言BASIC,也沒有將需求及設計文件化的技術。隨着系統越來越大也更加複雜,信息系統的發展也變得越來越困難。”為了方便管理大而複雜的系統,演進出下列的結構化方法。 [3] 
自1967年起出現了許多的結構化方法: [3] 
  • 結構化編程:由艾茲格·迪傑斯特拉在1967年提出-《GOTO陳述有害論》。
  • 逐步設計(Stepwise design):由尼克勞斯·維爾特在1971年提出。
  • 1972年出現的Nassi-Shneiderman圖。
  • 1974年提出的Warnier/Orr圖-“Logical Construction of Programs”。
  • 1974年提出的HIPO-IBM的層次化輸入-處理-輸出圖。
  • 結構化設計:由賴瑞·康斯坦丁、愛德華·尤登及韋恩·史帝文斯在1975年提出。
  • 傑克遜結構化程序設計:由邁克爾·安東尼·傑克遜在1975年提出。
  • 結構化分析:約在1978年由湯姆·狄馬克及尤登等人提出。
  • 結構化分析及設計技術(SADT):由道格拉斯·T·羅斯發展。
  • 尤登結構化方法:由愛德華·尤登提出。
  • 結構化分析及系統規格(Structured Analysis and System Specification):由湯姆·狄馬克在1979年提出。
  • 結構化系統分析及設計方法 (SSADM):最早是由英國商務辦公室在1983年提出。
  • 以結構化分析及設計技術為基礎的IDEF0,由道格拉斯·T·羅斯在1985年提出。 [4] 
  • Hatley-Pirbhai模型:在 Derek J. Hatley及Imtiaz A. Pirbhai於1988年所著的《Strategies for Real-Time System Specification》中定義。
  • 信息工程:約在1990年代由克萊夫·芬克爾斯坦提出,後來因詹姆斯·馬丁的推廣而廣為人知。
依照Hay在1999年提出的定義:“信息工程是1970年代提出許多結構化技術的延伸。先由結構化編程進展到結構化設計,然後進展到結構化系統分析。這些技術使用的圖也所不同:結構化設計中使用結構圖,而結構化系統分析使用數據流程圖。二者都可以幫助程序開發者及用户的溝通,並且提升程序分析者及設計者的紀律。1980年起開始有工具可以自動繪製這類的圖面,並追蹤數據字典中的內容。”在電腦輔助設計及電腦輔助製造(CAD/CAM)名詞廣為使用之後,上述工具的使用也稱為電腦輔助軟件工程(CASE)。

結構化分析結構化分析主題

結構化分析抽象化機制

結構化分析一般會創建一個使用單一抽象化機制(single abstraction mechanism)的層次結構系統。結構化分析方法可以使用IDEF(如圖),IDEF是一個程序驅動的分析方法,是由目的及觀點開始進行。此方法一開始會先確認整體機能,再反覆地將機能分區為更小的機能,保留程序優化需要的輸入、輸出、控制及機制。IDEF也被視為是一種功能分解的分析方法,着重在函數的內聚力及函數之間的耦合力。 [5] 
功能分解的結構化方法單純描述程序,而不去劃定系統的行為,也不決定需要機能的系統架構。此方法只確認和活動有關的輸入及輸出。結構化分析受歡迎的一個原因是其本質適合描述一個高級的程序及概念,即使企業層次的程序也相當適合。不過對於商業常用的面向對象過程中,對象需要有哪些機能,IDEF提供的信息很有限。統一建模語言(UML)和IDEF相反,統一建模語言是接口驅動,並且有多重抽象化機制,適用於描述面向服務的架構(SOA)。

結構化分析分析方法

結構化分析以數據在不同模塊中移動的觀點來看待一個系統,系統的功能可以用轉換數據流的程序來表示。結構化分析善用了功能拆解(或由上到下設計)的信息隱藏特性,因此可以關注在重要的細節,而不會被無關的細節干擾。當細節的層級提高時,信息的廣度也隨之減少。結構化分析的結果是一組相關的圖,程序描述以及數據定義,這些數據描述一個程序為符合機能性需求所需要的數據以及需進行的轉換。 [6] 
湯姆·狄馬克的分析方法包括以下幾項 : [7] 
數據流程圖是一個有向圖,弧線表示數據,節點(用圓圈或泡泡表示)表示轉換數據的程序。程序還可以再細分為更細的數據流程圖,描述程序中的子程序,一直到清楚説明及瞭解程序機能為止。機能元(functional primitive)是指一些不需再細分的程序,一般會用程序規格(或微規格)來説明。程序規格可以包括偽代碼、流程圖或結構化英文。數據流程圖將系統的架構表示為一個由許多互連的程序形成的網絡,而各程序是由機能元所組合而成。數據字典是一組數據流、數據元素、文件及數據庫的定義。數據流程圖或其他數據字典可以參考資料字典中的內容。

結構化分析系統關係圖

系統關係圖(System Context Diagram)是表示系統和外界環境之間的作用,系統關係圖可以表示一個系統和外界相關係統的輸入及輸出。
Kossiakoff將系統關係圖定義為“系統關係圖將系統放在整個圖的中心,不描述其內部結構,周圍則是和其有關的系統、活動及環境,環境圖的目的是專注在哪些會影響系統需求及限制的外部因素及事件。”系統關係圖和數據流程圖 [8]  有關,有助於瞭解系統和其他相關係統或事件之間的關係。

結構化分析數據字典

實體聯繫模式圖在設計數據庫時非常重要
數據字典或是數據庫字典是定義數據庫基本組織的文件。數據字典包括數據庫中所有的文件、每一個文件的字段個數、字段名稱及型態。為了保護數據字典的內容不被破壞,大部份的數據庫管理系統 [9]  不允許用户更改數據字典。數據字典沒有數據庫中的數據內容,只有一些訪問數據庫需要的信息。數據庫管理系統一定要配合數據字典才能訪問數據庫的內容。

結構化分析數據流程圖

數據流程圖(DFD)是用圖像方式表示信息系統中數據的移動方式。數據流程圖和系統流程圖不同,主要是表示數據在不同程序之間的移動,而不是程序的控制流程。數據流程圖是由賴瑞·康斯坦丁所提出,是以Martin及Estrin的“數據流圖”(data flow graph)為基礎。 [10] 
一般在繪製數據流程圖前,會先繪製環境圖,描述系統和外界環境的交互作用。數據流程圖可以將系統分區為幾個較小的部份,並且強調各部份之間的數據移動。數據流程圖是結構化系統分析及設計方法(SSADM)的三個重要圖表中的一個。

結構化分析結構圖

結構圖(SC)是一個將系統拆解為最小可管理程序單位的圖。 [11] 結構化編程中,結構圖可以將程序模塊整理為樹狀結構,每一個模塊以一個其中有模塊名稱的方框表示,樹狀結構可以清楚表示各模塊之間的關係。
結構化分析中常用結構圖表示程序的頂層架構。結構圖有助於程序設計者用個個擊破的方式處理軟件問題,也就是將一直將問題拆解為更小的問題,直到最後問題小到可以被人類理解為止。此程序稱為由上到下設計或是功能分解。結構圖的作用類似建築房屋中使用的藍圖。在設計階段,結構圖是客户和不同軟件工程師溝通的方式。在代碼實現的階段,由結構圖可以得知系統的完整架構。

結構化分析結構化設計

結構化設計(SD)是有關軟件模塊的開發,及分析模塊之間的“模塊層次”(module hierarchy)。在結構化設計中,有以下二個主要的概念:
  • 內聚力是指機能相關的程序組合成一模塊的程度。
  • 耦合力是指模塊及模塊之間信息或參數移動的程度。
當耦合力調整到最佳情形時,會簡化模塊之間的接口,也會簡化程序的複雜度。
Page-Jones在1980年提出的研究中有三個主題: [12]  結構圖、模塊規格及數據字典。“結構圖的目的是表示模塊層次,模塊規格可以用偽代碼或程序設計語言來組成,數據字典類似結構化分析中的數據字典,在軟件開發生命週期中,在已經進行了分析及設計後,就可以自動產生數據型態的聲明,以及程序或副程序的模版。”

結構化分析結構化查詢語言

結構化查詢語言(SQL)是一種查詢數據庫的標準語言。結構化查詢語言一開始是用在一個商用數據庫系統中,後來成為在迷你電腦大型計算機運作的數據庫管理系統中,最受歡迎的數據庫查詢語言。結構化查詢語言也可在一般個人電腦中的數據庫管理系統中使用,並且可配合分散式數據庫使用,因此允許許多用户在網絡上同時訪問同一個數據庫的內容。 [4] 
參考資料
  • 1.    Edward Yourdon.Managing the Structured Techniques: Strategies for Software Development in the 1990s:Yourdon Press.,1986
  • 2.    Appendix D.FAA System Safety Handbook:FAA,December 30, 2000.
  • 3.    Dave Levitt.Introduction to Structured Analysis and Design.:Retrieved,21 Sep 2008.
  • 4.    Gavriel Salvendy (2001). Handbook of Industrial Engineering: Technology and Operations Management.. p.508.
  • 5.    DoD Architecture Framework Working Group (2003). DoDAF 1.5 Volume 2, 15 August 2003.
  • 6.    Alan Hecht and Andy Simmons (1986) Integrating Automated Structured Analysis and Design with Ada Programming Support Environments NASA 1986.
  • 7.    Tom DeMarco (1978). Structured Analysis and System Specification. Yourdon Press, New York, 1978.
  • 8.    Alexander Kossiakoff, William N. Sweet (2003). Systems Engineering: Principles and Practices p. 413.
  • 9.    Data Integration Glossary, U.S. Department of Transportation, August 2001.
  • 10.    W. Stevens, G. Myers, L. Constantine, "Structured Design", IBM Systems Journal, 13 (2), 115-139, 1974.
  • 11.    "Configuration Management" In: IRS Resources Part 2. Information Technology Chapter 27. Configuration Management. Accessed 14 Nov 2008.
  • 12.    Page-Jones, M.(1980). The Practical Guide to Structured Systems Design. Yourdon Press, New York, 1980.
展開全部 收起