結(jié)構(gòu)化分析
目的
結(jié)構(gòu)化分析在1980年代起開始廣為使用。結(jié)構(gòu)化分析包括將系統(tǒng)概念轉(zhuǎn)換為用數(shù)據(jù)及控制的來(lái)表示,也就是轉(zhuǎn)換為數(shù)據(jù)流程圖。數(shù)據(jù)流程圖中的程序以泡泡來(lái)表示,因此也稱為“泡泡圖”。不過完整的數(shù)據(jù)流程圖中可能有許多的“泡泡”,使得很難去追蹤數(shù)據(jù)流動(dòng)的情形。此時(shí)可以先定義外界需要系統(tǒng)回應(yīng)的事件,每一個(gè)事件指定一個(gè)泡泡,當(dāng)系統(tǒng)定義完成后,再將事件的泡泡和回應(yīng)的程序的泡泡相連接。也可以將程序?qū)?yīng)泡泡加以分組,組合成較高級(jí)的程序。數(shù)據(jù)字典用來(lái)描述數(shù)據(jù)和指令的流動(dòng),而用程序規(guī)格來(lái)描述交易或數(shù)據(jù)轉(zhuǎn)換的相關(guān)信息 。
許多著名的分析方式都和結(jié)構(gòu)化分析(SA)及結(jié)構(gòu)化設(shè)計(jì)(SD)有關(guān),包括結(jié)構(gòu)圖、數(shù)據(jù)流程圖及數(shù)據(jù)模型圖等。許多程序設(shè)計(jì)方法學(xué)也結(jié)合了結(jié)構(gòu)化分析及結(jié)構(gòu)化設(shè)計(jì),包括結(jié)構(gòu)化系統(tǒng)分析及設(shè)計(jì)方法(SSADM)及 結(jié)構(gòu)化分析及設(shè)計(jì)技術(shù) ( 英語(yǔ) : Structured Analysis and Design Technique ) (SADT)等。
歷史
結(jié)構(gòu)化分析是許多結(jié)構(gòu)化方法中的一部分?!敖Y(jié)構(gòu)化分析是系統(tǒng)分析、設(shè)計(jì)及編程技術(shù)的組合,其目的是為了處理1960至1980年代軟件開發(fā)所遇到的問題,這段期間多半是用COBOL和Fortran語(yǔ)言開發(fā),后來(lái)也使用C語(yǔ)言及BASIC,也沒有將需求及設(shè)計(jì)文件化的技術(shù)。隨著系統(tǒng)越來(lái)越大也更加復(fù)雜,信息系統(tǒng)的發(fā)展也變得越來(lái)越困難?!?為了方便管理大而復(fù)雜的系統(tǒng),演進(jìn)出下列的結(jié)構(gòu)化方法。
自1967年起出現(xiàn)了許多的結(jié)構(gòu)化方法 :
結(jié)構(gòu)化編程:由艾茲格·迪杰斯特拉在1967年提出-《GOTO陳述有害論》。
逐步設(shè)計(jì)(Stepwise design):由尼克勞斯·維爾特在1971年提出。
1972年出現(xiàn)的Nassi-Shneiderman圖。
1974年提出的 Warnier/Orr圖 ( 英語(yǔ) : Warnier/Orr diagram ) -“Logical Construction of Programs”。
1974年提出的 HIPO ( 英語(yǔ) : HIPO ) -IBM的層次化輸入-處理-輸出圖。
結(jié)構(gòu)化設(shè)計(jì):由 賴瑞·康斯坦丁 ( 英語(yǔ) : Larry Constantine ) 、愛德華·尤登及 韋恩·史帝文斯 ( 英語(yǔ) : Wayne Stevens ) 在1975年提出。
杰克遜結(jié)構(gòu)化程序設(shè)計(jì):由 邁克爾·安東尼·杰克遜 ( 英語(yǔ) : Michael A. Jackson ) 在1975年提出。
結(jié)構(gòu)化分析:約在1978年由 湯姆·狄馬克 ( 英語(yǔ) : Tom DeMarco ) 及尤登等人提出。
結(jié)構(gòu)化分析及設(shè)計(jì)技術(shù) ( 英語(yǔ) : Structured Analysis and Design Technique ) (SADT):由 道格拉斯·T·羅斯 ( 英語(yǔ) : Douglas T. Ross ) 發(fā)展。
尤登結(jié)構(gòu)化方法:由愛德華·尤登提出。
結(jié)構(gòu)化分析及系統(tǒng)規(guī)格(Structured Analysis and System Specification):由 湯姆·狄馬克 ( 英語(yǔ) : Tom DeMarco ) 在1979年提出。
結(jié)構(gòu)化系統(tǒng)分析及設(shè)計(jì)方法(SSADM):最早是由英國(guó)商務(wù)辦公室在1983年提出。
以結(jié)構(gòu)化分析及設(shè)計(jì)技術(shù)為基礎(chǔ)的IDEF0,由道格拉斯·T·羅斯在1985年提出 。
Hatley-Pirbhai模型 ( 英語(yǔ) : Hatley-Pirbhai modeling ) :在 Derek J. Hatley及Imtiaz A. Pirbhai于1988年所著的《Strategies for Real-Time System Specification》中定義。
信息工程:約在1990年代由 克萊夫·芬克爾斯坦 ( 英語(yǔ) : Clive Finkelstein ) 提出,后來(lái)因 詹姆斯·馬丁 ( 英語(yǔ) : James Martin (author) ) 的推廣而廣為人知。
依照Hay在1999年提出的定義:“信息工程是1970年代提出許多結(jié)構(gòu)化技術(shù)的延伸。先由結(jié)構(gòu)化編程進(jìn)展到結(jié)構(gòu)化設(shè)計(jì),然后進(jìn)展到結(jié)構(gòu)化系統(tǒng)分析。這些技術(shù)使用的圖也所不同:結(jié)構(gòu)化設(shè)計(jì)中使用結(jié)構(gòu)圖,而結(jié)構(gòu)化系統(tǒng)分析使用數(shù)據(jù)流程圖。二者都可以幫助程序開發(fā)者及用戶的溝通,并且提升程序分析者及設(shè)計(jì)者的紀(jì)律。1980年起開始有工具可以自動(dòng)繪制這類的圖面,并追蹤數(shù)據(jù)字典中的內(nèi)容。” 在電腦輔助設(shè)計(jì)及電腦輔助制造(CAD/CAM)名詞廣為使用之后,上述工具的使用也稱為電腦輔助軟件工程(CASE)。
結(jié)構(gòu)化分析主題
抽象化機(jī)制
一個(gè)結(jié)構(gòu)化分析的例子
結(jié)構(gòu)化分析一般會(huì)創(chuàng)建一個(gè)使用單一抽象化機(jī)制(single abstraction mechanism)的層次結(jié)構(gòu)系統(tǒng)。結(jié)構(gòu)化分析方法可以使用IDEF(如圖),IDEF是一個(gè)程序驅(qū)動(dòng)的分析方法,是由目的及觀點(diǎn)開始進(jìn)行。此方法一開始會(huì)先確認(rèn)整體機(jī)能,再反復(fù)地將機(jī)能分區(qū)為更小的機(jī)能,保留程序最優(yōu)化需要的輸入、輸出、控制及機(jī)制。IDEF也被視為是一種 功能分解 ( 英語(yǔ) : functional decomposition ) 的分析方法,著重在函數(shù)的內(nèi)聚力及函數(shù)之間的耦合力 。
功能分解的結(jié)構(gòu)化方法單純描述程序,而不去劃定系統(tǒng)的行為,也不決定需要機(jī)能的系統(tǒng)架構(gòu)。此方法只確認(rèn)和活動(dòng)有關(guān)的輸入及輸出。結(jié)構(gòu)化分析受歡迎的一個(gè)原因是其本質(zhì)適合描述一個(gè)高級(jí)的程序及概念,即使企業(yè)層次的程序也相當(dāng)適合。不過對(duì)于商業(yè)常用的面向?qū)ο筮^程中,對(duì)象需要有哪些機(jī)能,IDEF提供的信息很有限。統(tǒng)一建模語(yǔ)言(UML)和IDEF相反,統(tǒng)一建模語(yǔ)言是接口驅(qū)動(dòng),并且有多重抽象化機(jī)制,適用于描述面向服務(wù)的架構(gòu)(SOA)。
分析方法
結(jié)構(gòu)化分析以數(shù)據(jù)在不同模塊中流動(dòng)的觀點(diǎn)來(lái)看待一個(gè)系統(tǒng),系統(tǒng)的功能可以用轉(zhuǎn)換數(shù)據(jù)流的程序來(lái)表示。結(jié)構(gòu)化分析善用了功能拆解(或由上到下設(shè)計(jì))的信息隱藏特性,因此可以關(guān)注在重要的細(xì)節(jié),而不會(huì)被無(wú)關(guān)的細(xì)節(jié)干擾。當(dāng)細(xì)節(jié)的層級(jí)提高時(shí),信息的廣度也隨之減少。結(jié)構(gòu)化分析的結(jié)果是一組相關(guān)的圖,程序描述以及數(shù)據(jù)定義,這些數(shù)據(jù)描述一個(gè)程序?yàn)槠ヅ錂C(jī)能性需求所需要的數(shù)據(jù)以及需進(jìn)行的轉(zhuǎn)換 。
以程序?qū)ο笥^點(diǎn)及數(shù)據(jù)對(duì)象觀點(diǎn)創(chuàng)建的結(jié)構(gòu)化分析
湯姆·狄馬克的分析方法 包括以下幾項(xiàng) :
系統(tǒng)關(guān)系圖
數(shù)據(jù)流程圖
程序規(guī)格
數(shù)據(jù)字典
數(shù)據(jù)流程圖是一個(gè)有向圖,弧線表示數(shù)據(jù),節(jié)點(diǎn)(用圓圈或泡泡表示)表示轉(zhuǎn)換數(shù)據(jù)的程序。程序還可以再細(xì)分為更細(xì)的數(shù)據(jù)流程圖,描述程序中的子程序,一直到清楚說(shuō)明及了解程序機(jī)能為止。機(jī)能元(functional primitive)是指一些不需再細(xì)分的程序,一般會(huì)用程序規(guī)格(或微規(guī)格)來(lái)說(shuō)明。程序規(guī)格可以包括偽代碼、流程圖或 結(jié)構(gòu)化英文 ( 英語(yǔ) : Structured English ) 。數(shù)據(jù)流程圖將系統(tǒng)的架構(gòu)表示為一個(gè)由許多互連的程序形成的網(wǎng)絡(luò),而各程序是由機(jī)能元所組合而成。數(shù)據(jù)字典是一組數(shù)據(jù)流、數(shù)據(jù)元素、文件及數(shù)據(jù)庫(kù)的定義。數(shù)據(jù)流程圖或其他數(shù)據(jù)字典可以參考資料字典中的內(nèi)容 。
系統(tǒng)關(guān)系圖
一個(gè)系統(tǒng)關(guān)系圖的例子
系統(tǒng)關(guān)系圖(System Context Diagram)是表示系統(tǒng)和外界環(huán)境之間的作用 ,系統(tǒng)關(guān)系圖可以表示一個(gè)系統(tǒng)和外界相關(guān)系統(tǒng)的輸入及輸出。
Kossiakoff將系統(tǒng)關(guān)系圖定義為“系統(tǒng)關(guān)系圖將系統(tǒng)放在整個(gè)圖的中心,不描述其內(nèi)部結(jié)構(gòu),周圍則是和其有關(guān)的系統(tǒng)、活動(dòng)及環(huán)境,環(huán)境圖的目的是專注在哪些會(huì)影響系統(tǒng)需求及限制的外部因素及事件?!?系統(tǒng)關(guān)系圖和數(shù)據(jù)流程圖有關(guān),有助于了解系統(tǒng)和其他相關(guān)系統(tǒng)或事件之間的關(guān)系。
數(shù)據(jù)字典
實(shí)體聯(lián)系模式圖在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)非常重要
數(shù)據(jù)字典或是數(shù)據(jù)庫(kù)字典是定義數(shù)據(jù)庫(kù)基本組織的文件 。數(shù)據(jù)字典包括數(shù)據(jù)庫(kù)中所有的文件、每一個(gè)文件的字段個(gè)數(shù)、字段名稱及類型。為了保護(hù)數(shù)據(jù)字典的內(nèi)容不被破壞,大部分的數(shù)據(jù)庫(kù)管理系統(tǒng)不允許用戶更改數(shù)據(jù)字典。數(shù)據(jù)字典沒有數(shù)據(jù)庫(kù)中的數(shù)據(jù)內(nèi)容,只有一些訪問數(shù)據(jù)庫(kù)需要的信息。數(shù)據(jù)庫(kù)管理系統(tǒng)一定要配合數(shù)據(jù)字典才能訪問數(shù)據(jù)庫(kù)的內(nèi)容 。
數(shù)據(jù)流程圖
一個(gè)數(shù)據(jù)流程圖的例子
數(shù)據(jù)流程圖(DFD)是用圖像方式表示信息系統(tǒng)中數(shù)據(jù)的流動(dòng)方式。數(shù)據(jù)流程圖和系統(tǒng)流程圖不同,主要是表示數(shù)據(jù)在不同程序之間的流動(dòng),而不是程序的控制流程。數(shù)據(jù)流程圖是由賴瑞·康斯坦丁所提出,是以Martin及Estrin的“數(shù)據(jù)流圖”(data flow graph)為基礎(chǔ) 。
一般在繪制數(shù)據(jù)流程圖前,會(huì)先繪制環(huán)境圖,描述系統(tǒng)和外界環(huán)境的交互作用。數(shù)據(jù)流程圖可以將系統(tǒng)分區(qū)為幾個(gè)較小的部分,并且強(qiáng)調(diào)各部分之間的數(shù)據(jù)流動(dòng)。數(shù)據(jù)流程圖是結(jié)構(gòu)化系統(tǒng)分析及設(shè)計(jì)方法(SSADM)的三個(gè)重要圖表中的一個(gè)。
結(jié)構(gòu)圖
一個(gè)系統(tǒng)結(jié)構(gòu)圖
結(jié)構(gòu)圖 ( 英語(yǔ) : Structure Chart ) (SC)是一個(gè)將系統(tǒng)拆解為最小可管理程序單位的圖 。在結(jié)構(gòu)化編程中,結(jié)構(gòu)圖可以將程序模塊整理為樹狀結(jié)構(gòu),每一個(gè)模塊以一個(gè)其中有模塊名稱的方框表示,樹狀結(jié)構(gòu)可以清楚表示各模塊之間的關(guān)系 。
結(jié)構(gòu)化分析中常用結(jié)構(gòu)圖表示程序的頂層架構(gòu)。結(jié)構(gòu)圖有助于程序設(shè)計(jì)者用個(gè)個(gè)擊破的方式處理軟件問題,也就是將一直將問題拆解為更小的問題,直到最后問題小到可以被人類理解為止。此程序稱為 由上到下設(shè)計(jì) ( 英語(yǔ) : top-down design ) 或是 功能分解 ( 英語(yǔ) : functional decomposition ) 。結(jié)構(gòu)圖的作用類似建筑房屋中使用的藍(lán)圖。在設(shè)計(jì)階段,結(jié)構(gòu)圖是客戶和不同軟件工程師溝通的方式。在代碼實(shí)現(xiàn)的階段,由結(jié)構(gòu)圖可以得知系統(tǒng)的完整架構(gòu) 。
結(jié)構(gòu)化設(shè)計(jì)
結(jié)構(gòu)化設(shè)計(jì)(SD)是有關(guān)軟件模塊的開發(fā),及分析模塊之間的“模塊層次”(module hierarchy) 。在結(jié)構(gòu)化設(shè)計(jì)中,有以下二個(gè)主要的概念:
內(nèi)聚力是指機(jī)能相關(guān)的程序組合成一模塊的程度 。
耦合力是指模塊及模塊之間信息或參數(shù)流動(dòng)的程度 。
當(dāng)耦合力調(diào)整到最佳情形時(shí),會(huì)簡(jiǎn)化模塊之間的接口,也會(huì)簡(jiǎn)化程序的復(fù)雜度 。
Page-Jones在1980年提出的研究中有三個(gè)主題:結(jié)構(gòu)圖、模塊規(guī)格及數(shù)據(jù)字典 ?!敖Y(jié)構(gòu)圖的目的是表示模塊層次,模塊規(guī)格可以用偽代碼或程序設(shè)計(jì)語(yǔ)言來(lái)組成,數(shù)據(jù)字典類似結(jié)構(gòu)化分析中的數(shù)據(jù)字典,在軟件開發(fā)生命周期中,在已經(jīng)進(jìn)行了分析及設(shè)計(jì)后,就可以自動(dòng)產(chǎn)生數(shù)據(jù)類型的宣告 ,以及程序或副程序的模版。 ”
結(jié)構(gòu)化查詢語(yǔ)言
結(jié)構(gòu)化查詢語(yǔ)言(SQL)是一種查詢數(shù)據(jù)庫(kù)的標(biāo)準(zhǔn)語(yǔ)言。結(jié)構(gòu)化查詢語(yǔ)言一開始是用在一個(gè)商用數(shù)據(jù)庫(kù)系統(tǒng)中,后來(lái)成為在迷你電腦及大型計(jì)算機(jī)運(yùn)作的數(shù)據(jù)庫(kù)管理系統(tǒng)中,最受歡迎的數(shù)據(jù)庫(kù)查詢語(yǔ)言。結(jié)構(gòu)化查詢語(yǔ)言也可在一般個(gè)人電腦中的數(shù)據(jù)庫(kù)管理系統(tǒng)中使用,并且可配合分布式數(shù)據(jù)庫(kù)使用,因此允許許多用戶在網(wǎng)絡(luò)上同時(shí)訪問同一個(gè)數(shù)據(jù)庫(kù)的內(nèi)容 。
相關(guān)條目
事件分區(qū) ( 英語(yǔ) : Event partitioning )
HIPO ( 英語(yǔ) : HIPO )
杰克遜結(jié)構(gòu)化程序設(shè)計(jì)
軟件系統(tǒng)方法論 ( 英語(yǔ) : Soft Systems Methodology )
尤登結(jié)構(gòu)化方法
基于流編程 ( 英語(yǔ) : Flow-based programming )
延伸閱讀
Larry Constantine and Ed Yourdon (1975). Structured Design . Yourdon Press.
Tom DeMarco (1979). Structured Analysis and System Specification . Prentice Hall. ISBN 0-13-854380-1
Keith Edwards (1993). Real-Time Structured Methods, System Analysis . Wiley. ISBN 0-471-93415-1
Derek J. Hatley, Imtiaz A. Pirbhai (1988). Strategies for Real Time System Specification . John Wiley and Sons Ltd. ISBN 0-932633-04-8
Stephen J. Mellor and Paul T. Ward (1986). Structured Development for Real-Time Systems: Implementation Modeling Techniques: 003 . Prentice Hall. ISBN 0-13-854803-X
Edward Yourdon (1989). Modern Structured Analysis , Yourdon Press Computing Series, 1989, ISBN 0-13-598624-9
免責(zé)聲明:以上內(nèi)容版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請(qǐng)告知,我們將盡快刪除相關(guān)內(nèi)容。感謝每一位辛勤著寫的作者,感謝每一位的分享。
相關(guān)資料
- 有價(jià)值
- 一般般
- 沒價(jià)值
{{item.userName}} 舉報(bào)
{{item.time}} {{item.replyListShow ? '收起' : '展開'}}評(píng)論 {{curReplyId == item.id ? '取消回復(fù)' : '回復(fù)'}}
{{_reply.userName}} 舉報(bào)
{{_reply.time}}