结构化分析- 维基百科,自由的百科全书
文章推薦指數: 80 %
結構化分析(Structured Analysis,簡稱SA)是軟體工程中的一種方法,結構化分析和結構化設計可以分析商業的需求(英语:requirements),再轉換為規格文件,最後再 ...
結構化分析
語言
監視
編輯
結構化分析(StructuredAnalysis,簡稱SA)是軟體工程中的一種方法,結構化分析和結構化設計可以分析商業的需求(英語:requirements),再轉換為規格檔案,最後再產生電腦軟體、硬體組態及相關的手冊及程式。
一個結構化分析手法的例子[1]
結構化分析及設計技術是系統分析的基礎,是由1960到70年代的系統分析技術發展而成[2]。
目次
1目的
2歷史
3結構化分析主題
3.1抽象化機制
3.2分析方法
3.3系統關係圖
3.4資料字典
3.5資料流程圖
3.6結構圖
3.7結構化設計
3.8結構化查詢語言
4相關條目
5參考資料
6延伸閱讀
7外部連結
目的編輯
結構化分析在1980年代起開始廣為使用。
結構化分析包括將系統概念轉換為用資料及控制的來表示,也就是轉換為資料流程圖。
資料流程圖中的程式以泡泡來表示,因此也稱為「泡泡圖」。
不過完整的資料流程圖中可能有許多的「泡泡」,使得很難去追蹤資料流動的情形。
此時可以先定義外界需要系統回應的事件,每一個事件指定一個泡泡,當系統定義完成後,再將事件的泡泡和回應的程式的泡泡相連接。
也可以將程式對應泡泡加以分組,組合成較高階的程式。
資料字典用來描述資料和指令的流動,而用程式規格來描述交易或資料轉換的相關資訊[3]。
許多著名的分析方式都和結構化分析(SA)及結構化設計(SD)有關,包括結構圖、資料流程圖及資料模型圖等。
許多程式設計方法學也結合了結構化分析及結構化設計,包括結構化系統分析及設計方法(SSADM)及結構化分析及設計技術(英語:StructuredAnalysisandDesignTechnique)(SADT)等。
歷史編輯
結構化分析是許多結構化方法中的一部份。
「結構化分析是系統分析、設計及編程技術的組合,其目的是為了處理1960至1980年代軟體開發所遇到的問題,這段期間多半是用COBOL和Fortran語言開發,後來也使用C語言及BASIC,也沒有將需求及設計檔案化的技術。
隨著系統越來越大也更加複雜,資訊系統的發展也變得越來越困難。
」[4]為了方便管理大而複雜的系統,演進出下列的結構化方法。
自1967年起出現了許多的結構化方法[4]:
結構化編程:由艾茲格·迪傑斯特拉在1967年提出-《GOTO陳述有害論》。
逐步設計(Stepwisedesign):由尼克勞斯·維爾特在1971年提出。
1972年出現的Nassi-Shneiderman圖。
1974年提出的Warnier/Orr圖(英語:Warnier/Orrdiagram)-「LogicalConstructionofPrograms」。
1974年提出的HIPO(英語:HIPO)-IBM的層次化輸入-處理-輸出圖。
結構化設計:由賴瑞·康斯坦丁(英語:LarryConstantine)、愛德華·尤登及韋恩·史帝文斯(英語:WayneStevens)在1975年提出。
傑克遜結構化程式設計:由邁克爾·安東尼·傑克遜(英語:MichaelA.Jackson)在1975年提出。
結構化分析:約在1978年由湯姆·狄馬克(英語:TomDeMarco)及尤登等人提出。
結構化分析及設計技術(英語:StructuredAnalysisandDesignTechnique)(SADT):由道格拉斯·T·羅斯(英語:DouglasT.Ross)發展。
尤登結構化方法:由愛德華·尤登提出。
結構化分析及系統規格(StructuredAnalysisandSystemSpecification):由湯姆·狄馬克(英語:TomDeMarco)在1979年提出。
結構化系統分析及設計方法(SSADM):最早是由英國商務辦公室在1983年提出。
以結構化分析及設計技術為基礎的IDEF0,由道格拉斯·T·羅斯在1985年提出[5]。
Hatley-Pirbhai模型(英語:Hatley-Pirbhaimodeling):在DerekJ.Hatley及ImtiazA.Pirbhai於1988年所著的《StrategiesforReal-TimeSystemSpecification》中定義。
資訊工程:約在1990年代由克萊夫·芬克爾斯坦(英語:CliveFinkelstein)提出,後來因詹姆斯·馬丁(英語:JamesMartin(author))的推廣而廣為人知。
依照Hay在1999年提出的定義:「資訊工程是1970年代提出許多結構化技術的延伸。
先由結構化編程進展到結構化設計,然後進展到結構化系統分析。
這些技術使用的圖也所不同:結構化設計中使用結構圖,而結構化系統分析使用資料流程圖。
二者都可以幫助程式開發者及使用者的溝通,並且提昇程式分析者及設計者的紀律。
1980年起開始有工具可以自動繪製這類的圖面,並追蹤資料字典中的內容。
」[6]在電腦輔助設計及電腦輔助製造(CAD/CAM)名詞廣為使用之後,上述工具的使用也稱為電腦輔助軟體工程(CASE)。
結構化分析主題編輯
抽象化機制編輯
一個結構化分析的例子[7]
結構化分析一般會建立一個使用單一抽象化機制(singleabstractionmechanism)的階層系統。
結構化分析方法可以使用IDEF(如圖),IDEF是一個程式驅動的分析方法,是由目的及觀點開始進行。
此方法一開始會先確認整體機能,再反覆地將機能分割為更小的機能,保留程式最佳化需要的輸入、輸出、控制及機制。
IDEF也被視為是一種功能分解(英語:functionaldecomposition)的分析方法,著重在函式的內聚力及函式之間的耦合力[7]。
功能分解的結構化方法單純描述程式,而不去劃定系統的行為,也不決定需要機能的系統架構。
此方法只確認和活動有關的輸入及輸出。
結構化分析受歡迎的一個原因是其本質適合描述一個高階的程式及概念,即使企業層次的程式也相當適合。
不過對於商業常用的物件導向過程中,物件需要有哪些機能,IDEF提供的資訊很有限。
統一建模語言(UML)和IDEF相反,統一建模語言是介面驅動,並且有多重抽象化機制,適用於描述面向服務的架構(SOA)。
分析方法編輯
結構化分析以資料在不同模組中流動的觀點來看待一個系統,系統的功能可以用轉換資料流的程式來表示。
結構化分析善用了功能拆解(或由上到下設計)的資訊隱藏特性,因此可以關注在重要的細節,而不會被無關的細節干擾。
當細節的層級提高時,資訊的廣度也隨之減少。
結構化分析的結果是一組相關的圖,程式描述以及資料定義,這些資料描述一個程式為符合機能性需求所需要的資料以及需進行的轉換[8]。
以程式物件觀點及資料物件觀點建立的結構化分析[8]
湯姆·狄馬克的分析方法[9]包括以下幾項[8]:
系統關係圖
資料流程圖
程式規格
資料字典資料流程圖是一個有向圖,弧線表示資料,節點(用圓圈或泡泡表示)表示轉換資料的程式。
程式還可以再細分為更細的資料流程圖,描述程式中的子程式,一直到清楚說明及了解程式機能為止。
機能元(functionalprimitive)是指一些不需再細分的程式,一般會用程式規格(或微規格)來說明。
程式規格可以包括虛擬碼、流程圖或結構化英文(英語:StructuredEnglish)。
資料流程圖將系統的架構表示為一個由許多互連的程式形成的網路,而各程式是由機能元所組合而成。
資料字典是一組資料流、資料元素、檔案及資料庫的定義。
資料流程圖或其他資料字典可以參考資料字典中的內容[8]。
系統關係圖編輯
一個系統關係圖的例子[10]
系統關係圖(SystemContextDiagram)是表示系統和外界環境之間的作用[11],系統關係圖可以表示一個系統和外界相關系統的輸入及輸出。
Kossiakoff將系統關係圖定義為「系統關係圖將系統放在整個圖的中心,不描述其內部結構,周圍則是和其有關的系統、活動及環境,環境圖的目的是專注在哪些會影響系統需求及限制的外部因素及事件。
」[11]系統關係圖和資料流程圖有關,有助於了解系統和其他相關系統或事件之間的關係。
資料字典編輯
實體聯繫模式圖在設計資料庫時非常重要[12]
資料字典或是資料庫字典是定義資料庫基本組織的檔案[12]。
資料字典包括資料庫中所有的檔案、每一個檔案的欄位個數、欄位名稱及型態。
為了保護資料字典的內容不被破壞,大部份的資料庫管理系統不允許使用者更改資料字典。
資料字典沒有資料庫中的資料內容,只有一些存取資料庫需要的資訊。
資料庫管理系統一定要配合資料字典才能存取資料庫的內容[12]。
資料流程圖編輯
一個資料流程圖的例子[13]
資料流程圖(DFD)是用圖像方式表示資訊系統中資料的流動方式。
資料流程圖和系統流程圖不同,主要是表示資料在不同程式之間的流動,而不是程式的控制流程。
資料流程圖是由賴瑞·康斯坦丁所提出,是以Martin及Estrin的「資料流圖」(dataflowgraph)為基礎[14]。
一般在繪製資料流程圖前,會先繪製環境圖,描述系統和外界環境的互動作用。
資料流程圖可以將系統分割為幾個較小的部份,並且強調各部份之間的資料流動。
資料流程圖是結構化系統分析及設計方法(SSADM)的三個重要圖表中的一個。
結構圖編輯
一個系統結構圖[15]
結構圖(英語:StructureChart)(SC)是一個將系統拆解為最小可管理程式單位的圖[15]。
在結構化編程中,結構圖可以將程式模組整理為樹狀結構,每一個模組以一個其中有模組名稱的方框表示,樹狀結構可以清楚表示各模組之間的關係[16]。
結構化分析中常用結構圖表示程式的頂層架構。
結構圖有助於程式設計者用個個擊破的方式處理軟體問題,也就是將一直將問題拆解為更小的問題,直到最後問題小到可以被人類理解為止。
此程式稱為由上到下設計(英語:top-downdesign)或是功能分解(英語:functionaldecomposition)。
結構圖的作用類似建築房屋中使用的藍圖。
在設計階段,結構圖是客戶和不同軟體工程師溝通的方式。
在代碼實現的階段,由結構圖可以得知系統的完整架構[17]。
結構化設計編輯
結構化設計(SD)是有關軟體模組的開發,及分析模組之間的「模組層次」(modulehierarchy)[18]。
在結構化設計中,有以下二個主要的概念:
內聚力是指機能相關的程式組合成一模組的程度[8]。
耦合力是指模組及模組之間資訊或參數流動的程度[8]。
當耦合力調整到最佳情形時,會簡化模組之間的介面,也會簡化程式的複雜度[8]。
Page-Jones在1980年提出的研究中有三個主題:結構圖、模組規格及資料字典[18]。
「結構圖的目的是表示模組層次,模組規格可以用虛擬碼或程式設計語言來組成,資料字典類似結構化分析中的資料字典,在軟體開發生命週期中,在已經進行了分析及設計後,就可以自動產生資料型態的宣告[19],以及程式或副程式的模版。
[8]」
結構化查詢語言編輯
主條目:SQL
結構化查詢語言(SQL)是一種查詢資料庫的標準語言。
結構化查詢語言一開始是用在一個商用資料庫系統中,後來成為在迷你電腦及大型電腦運作的資料庫管理系統中,最受歡迎的資料庫查詢語言。
結構化查詢語言也可在一般個人電腦中的資料庫管理系統中使用,並且可配合分散式資料庫使用,因此允許許多使用者在網路上同時存取同一個資料庫的內容[12]。
相關條目編輯
事件分割(英語:Eventpartitioning)
HIPO(英語:HIPO)
傑克遜結構化程式設計
軟體系統方法論(英語:SoftSystemsMethodology)
尤登結構化方法
基於流編程(英語:Flow-basedprogramming)參考資料編輯
^TriciaGilbert(2006)FCSEvaluationcritereafortechnologyassessment網際網路檔案館的存檔,存檔日期2008-09-18.
^EdwardYourdon(1986).ManagingtheStructuredTechniques:StrategiesforSoftwareDevelopmentinthe1990s.YourdonPress.p.35.
^FAA(2000).FAASystemSafetyHandbook,AppendixD網際網路檔案館的存檔,存檔日期2012-03-16..December30,2000.
^4.04.1DaveLevitt(2000):IntroductiontoStructuredAnalysisandDesign網際網路檔案館的存檔,存檔日期2006-09-07..Retrieved21Sep2008.
^GavrielSalvendy(2001).HandbookofIndustrialEngineering:TechnologyandOperationsManagement..p.508.
^DavidC.Hay(1999)AchievingbuzzwordcomplianceinObjectorientation網際網路檔案館的存檔,存檔日期2008-10-20.EssentialStrategies,Inc.
^7.07.1DoDArchitectureFrameworkWorkingGroup(2003).DoDAF1.5Volume2(頁面存檔備份,存於網際網路檔案館),15August2003.
^8.08.18.28.38.48.58.68.7AlanHechtandAndySimmons(1986)IntegratingAutomatedStructuredAnalysisandDesignwithAdaProgrammingSupportEnvironments(頁面存檔備份,存於網際網路檔案館)NASA1986.參照錯誤:帶有name屬性「HeSi86」的標籤用不同內容定義了多次
^TomDeMarco(1978).StructuredAnalysisandSystemSpecification.YourdonPress,NewYork,1978.
^NDEProjectManagement網際網路檔案館的存檔,存檔日期2008-11-07.(NPOESS)DataExploitationwebsite.2008.
^11.011.1AlexanderKossiakoff,WilliamN.Sweet(2003).SystemsEngineering:PrinciplesandPracticesp.413.
^12.012.112.212.3DataIntegrationGlossary網際網路檔案館的存檔,存檔日期2012-02-18.,U.S.DepartmentofTransportation,August2001.
^JohnAzzolini(2000).IntroductiontoSystemsEngineeringPractices(頁面存檔備份,存於網際網路檔案館).July2000.
^W.Stevens,G.Myers,L.Constantine,"StructuredDesign",IBMSystemsJournal,13(2),115-139,1974.
^15.015.1"ConfigurationManagement"網際網路檔案館的存檔,存檔日期2008-10-15.In:IRSResourcesPart2.InformationTechnologyChapter27.ConfigurationManagement.Accessed14Nov2008.
^JamesMartin,CarmaL.McClure(1988).StructuredTechniques:TheBasisforCase.PrenticeHall.p.56.
^DavidWolber"StructureCharts網際網路檔案館的存檔,存檔日期2009-02-19.:SupplementaryNotesStructureChartsandBottom-upImplementation:JavaVersion.
^18.018.1Page-Jones,M.(1980).ThePracticalGuidetoStructuredSystemsDesign.YourdonPress,NewYork,1980.
^Belkhouche,B.,andJ.E.Urban.(1986)."DirectImplementationofAbstractDataTypesfromAbstractSpecifications".In:IEEETransactionsonSoftwareEngineeringpp.549-661,May,1986.
延伸閱讀編輯
LarryConstantineandEdYourdon(1975).StructuredDesign.YourdonPress.
TomDeMarco(1979).StructuredAnalysisandSystemSpecification.PrenticeHall.ISBN0-13-854380-1
KeithEdwards(1993).Real-TimeStructuredMethods,SystemAnalysis.Wiley.ISBN0-471-93415-1
DerekJ.Hatley,ImtiazA.Pirbhai(1988).StrategiesforRealTimeSystemSpecification.JohnWileyandSonsLtd.ISBN0-932633-04-8
StephenJ.MellorandPaulT.Ward(1986).StructuredDevelopmentforReal-TimeSystems:ImplementationModelingTechniques:003.PrenticeHall.ISBN0-13-854803-X
EdwardYourdon(1989).ModernStructuredAnalysis,YourdonPressComputingSeries,1989,ISBN0-13-598624-9外部連結編輯
維基共享資源中相關的多媒體資源:結構化分析StructuredAnalysisWiki
ThreeviewsofstructuredanalysisCRaGSystems,2004.
取自「https://zh.wikipedia.org/w/index.php?title=结构化分析&oldid=61725228」
延伸文章資訊
- 1結構化與非結構化資料| Seagate 台灣
裝置或軟體將移往資料湖的原始格式資訊收集後,原始的輸出資料便是非結構化資料。結構化資料會以數值或文字格式整理妥當,可在預先定義的參數內將資料分門別類、重組分析。
- 2[瞭解資料特徵]Part1-結構化與非結構化資料
- 3淺談資料格式— 結構化與非結構化資料 - Medium
SQL是Structured Query Language的縮寫,意指「結構化查詢語言」,其資料為結構化資料。結構化資料在資料庫裡意指:它擁有固定欄位、固定格式與順序…等。
- 4結構化信息 - MBA智库百科
結構化信息(Structured Information)結構化信息是指信息經過分析後可分解成多個互相關聯的組成部分,各組成部分間有明確的層次結構,其使用和維護通過資料庫進行管理 ...
- 5结构化分析- 维基百科,自由的百科全书
結構化分析(Structured Analysis,簡稱SA)是軟體工程中的一種方法,結構化分析和結構化設計可以分析商業的需求(英语:requirements),再轉換為規格文件,最後再 ...