軟件工程-結構化方法_第1頁
軟件工程-結構化方法_第2頁
軟件工程-結構化方法_第3頁
軟件工程-結構化方法_第4頁
軟件工程-結構化方法_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

精選優(yōu)質文檔-----傾情為你奉上精選優(yōu)質文檔-----傾情為你奉上專心---專注---專業(yè)專心---專注---專業(yè)精選優(yōu)質文檔-----傾情為你奉上專心---專注---專業(yè)軟件工程——結構化方法上世紀60年代,由于計算機計算能力和處理的問題復雜度的急速增長,爆發(fā)了眾所周知的軟件危機。為了應對軟件危機帶來的危害,解決管理大型復雜軟件的難題,學術界與工業(yè)界共同研究并提出了許多有效的軟件開發(fā)方法。而其中影響最為深遠的,分支最為龐大的方法就是結構化方法。自1967年起就涌現(xiàn)出了許多軟件工程領域有關結構化的相關概念與方法。如結構化程序設計,結構化分析技術,結構化設計。本文將針對它們進行介紹以及其應用。結構化編程結構化編程(Structuredprogramming)是上世紀60年代迪杰斯特拉,科拉多·伯姆及朱塞佩·賈可皮尼等計算機科學家所提出的。圖靈獎得主迪杰斯特拉(EdsgerWybeDijkstra)在1968年的一篇名稱為《GOTO陳述有害論》的論文寫到:最近我發(fā)現(xiàn)為什么使用goto語句具有災難性的影響,而且我認為goto語句應該從所有的高級語言中廢除,因為它使分析和驗證程序正確性(特別是涉及循環(huán))的任務變得復雜?!狦oToStatementConsideredHarmfulEdsgerW.Dijkstra科拉多·伯姆于1966年5月在《CommunicationsoftheACM》期刊發(fā)表論文,說明任何一個有goto指令的程序,可以改為完全不使用goto指令的程序。下面來看一個例子,用于展示goto帶來的差可讀性。voidfoo{A:...if(c==1)gotoB;elsegotoC;B:...if(c==2)gotoA;elsegotoC;C:...if(c==3)gotoB;elsegotoA;}因此為了應對這些弊端,迪杰斯特拉提出了結構化程序設計。首先他證明了任何程序都可以用以下三種流程架構所組成。可分為循序(sequence)、選擇(selection)及重復(repetition),循序是指程序正常的運行方式,運行完一個指令后,運行后面的指令。選擇是依程序的狀態(tài),選擇數段程序中的一個來運行,一般會使用if..then..else..endif或switch、case等關系字來識別。重復是指一直運行某一段程序,直到滿足特定條件,或是一集合體中的所有元素均已處理過,一般會使用while、repeat、for或do..until等關鍵字識別。劃分出三種結構以后,程序可以變成一個個基本塊,每個基本塊之間互不影響(有的時候存在跨基本塊的變量),使得程序可讀性變強。結構化程序設計一經提出,在當時受到廣泛的關注,大多數人贊同該設計方法。一個很顯著的影響就是,后期幾乎所有的高級程序設計語言都受其影響,強調結構化設計,雖然Java,Python,C++等語句以面向對象為主要設計思想,但其對象內部實現(xiàn)依舊以結構化思想為主。當然也有人提出了一些反對意見,著名計算機科學家高德納(計算機程序設計藝術作者)也提出了使用goto指令可以使得程序更清楚而有效率,也不會犧牲程序的可讀性。高德納提出了一個較松的結構限制要求:將程序以流程圖表示,前進的分支在流程圖的左側,倒退的分支在流程圖的右側,所有分支均不得交叉。無可爭議的是,結構化編程思想統(tǒng)治了上個世紀的軟件開發(fā)界。結構化分析技術結構化分析技術(StructuredAnalysis,簡稱SA),80年代起廣為使用的軟件開發(fā)方法。強調面向應用,分解需求。該技術通過將需求分解,使用抽象化機制,建立一個個小Unit,通過數據的流通構建單元之間的輸入輸出。結構化分析還使用諸如數據流圖(DFD),數據字典,系統(tǒng)關系圖(SystemContextDiagram)等建模方式來形象表達系統(tǒng)的功能與設計。1抽象化機制結構化分析會利用抽象化機制的層次結構系統(tǒng)。該抽象機制由需求開始進行。機制一開始會先確認整體需求,再反復地將需求分區(qū)為更小的需求,保留程序最優(yōu)化需要的輸入、輸出、控制及機制。功能分解的結構化方法單純描述程序,而不去劃定系統(tǒng)的行為,也不決定系統(tǒng)架構。此方法只確認和模塊有關的輸入及輸出。結構化分析受歡迎的一個原因是其本質適合描述一個高級的程序及概念,使得一個大型復雜系統(tǒng)的層次劃分切割的十分適合。2分析方法結構化分析以數據在不同模塊中流動(Flow)的觀點來看待一個系統(tǒng),系統(tǒng)的功能可以用轉換數據流的移動來表示。結構化分析巧妙的利用功能拆解(或由上到下設計)的信息隱藏特性,因此可以關注在重要的細節(jié),而不會被無關的細節(jié)干擾。而且分析方法可以確定具體的層次,當細節(jié)的層級提高時,信息的廣度也隨之減少。常見分析方法包括以下幾項:2.1系統(tǒng)關系圖系統(tǒng)關系圖(SystemContextDiagram)用以表示系統(tǒng)的邊界,以及系統(tǒng)外實體(使用者)和系統(tǒng)之間的交互關系。從抽象層次來看,它是系統(tǒng)的最高層次視圖。上圖是移動蜂窩網絡使用的系統(tǒng)關系圖,行為者(右側小人)通過一個蜂窩接口與各個系統(tǒng)模塊進行交互。從圖中不難看出系統(tǒng)關系圖一般是用在項目的初期,它的目的是為了開發(fā)初期能夠大致確定系統(tǒng)的架構。項目的所有相關人都需查閱系統(tǒng)關系圖,因此系統(tǒng)關系圖需用通俗易懂的語言書寫,利害相關人才能了解其中的內容。2.2數據流程圖數據流程圖(DataFlowDiagram)是由賴瑞·康斯坦丁所提出。它是用圖像方式表示信息系統(tǒng)中數據的流動方式。數據流程圖和系統(tǒng)流程圖不同,主要是表示數據在不同程序之間的流動,而不是程序的控制流程。一般在繪制數據流程圖前,會需要上文所說SCD圖,描述系統(tǒng)和外界環(huán)境的交互作用。因此來說,它的抽象層次要低于SCD圖,是將SCD中的大模塊分解成一個個的小模塊。一般在具體實現(xiàn)中,如果系統(tǒng)的規(guī)模較大,僅用一個DFD難以描述,會使得系統(tǒng)變得復雜、龐大而又難以理解。為了降低系統(tǒng)的復雜性,一般采取“逐層分解”的方法,繪制分層的DFD。如下圖所示是一個學生管理系統(tǒng)的分層DFD圖??梢钥吹降?層DFD圖粗略的描述了行為者與系統(tǒng)和數據庫交互的方法,第1層中的模塊對應的是軟件/系統(tǒng)的主要處理(或功能),箭頭對應各處理間的數據流。這樣每個模塊所代表的處理都執(zhí)行一個功能,并且該功能可以很容易地被實現(xiàn)。使得實現(xiàn)的過程變得簡潔明了。繪制分層DFD的原則一般是:先全局后局部,先整體后細節(jié),先抽象后具體。2.3數據字典數據字典是定義數據庫基本組織的文件。數據字典包括數據庫中所有數據項、數據結構,數據流,數據存儲以及處理過程。為了保護數據字典的內容不被破壞,大部分的數據庫管理系統(tǒng)不允許用戶更改數據字典。數據字典沒有數據庫中的數據內容,只有一些訪問數據庫需要的信息。數據庫管理系統(tǒng)一定要配合數據字典才能訪問數據庫的內容。一個很好的能說明結構化設計流行的實例就是數據庫的SQL語言。結構化查詢語言(SQL)是一種查詢數據庫的標準語言。結構化查詢語言一開始是用在一個商用數據庫系統(tǒng)中,后來成為在迷你電腦及大型計算機運作的數據庫管理系統(tǒng)中,最受歡迎的數據庫查詢語言。結構化查詢語言也可在一般個人電腦中的數據庫管理系統(tǒng)中使用,并且可配合分布式數據庫使用,因此允許許多用戶在網絡上同時訪問同一個數據庫的內容。在軟件工程課程的實踐過程中,我接觸到了數據流程圖和數據字典。利用兩者可以很好的構建大型系統(tǒng)的具體框架,使用結構化分析的方法,將需求切分成小塊從而達到分解的目的。結構化設計一開始聽到結構化設計這個名詞,沒有理解它與結構化分析的區(qū)別在哪,看了它的定義才明白幾分。結構化設計(SD)是有關軟件模塊的開發(fā),及分析模塊之間的“模塊層次”(modulehierarchy)。兩者的區(qū)別在哪呢,簡單來說,結構化分析是結構化設計的基礎。結構化分析對應于系統(tǒng)需求說明書,強調的是通過DFD,DD等建模方法,將系統(tǒng)的整體框架和設計理念搭建好。而結構化設計是在具體實現(xiàn),也就是系統(tǒng)設計說明書。強調如何將分析結果實現(xiàn)。結構化設計是一種面向數據流的設計方法,目的在于確定軟件的結構。采用自頂向下、逐層分解的方法,建立系統(tǒng)的處理流程。結構化設計的步驟如下:①評審和細化數據流圖;②確定數據流圖的類型;③把數據流圖映射到軟件模塊結構,設計出模塊結構的上層;④基于數據流圖逐步分解高層模塊,設計中下層模塊;⑤對模塊結構進行優(yōu)化,得到更為合理的軟件結構;⑥描述模塊接口。在結構化設計中,有以下兩個主要的概念:1,內聚力,是指機能相關的程序組合成一模塊的程度。2,耦合力,是指模塊及模塊之間信息或參數流動的程度。當耦合力調整到最佳情形時,會簡化模塊之間的接口,也會簡化程序的復雜度。通過上述結構化設計的方法流程,將模塊打散,使得模塊之間的聯(lián)系越松散越好,而模塊內各成分之間的聯(lián)系越緊湊越好。使程序的結構盡可能反映要解決的問題的結構。在一步步的細化中使整個系統(tǒng)變得清晰,明確,實現(xiàn)更加輕松??偨Y從以上三種結構化方法的簡述和分析過程中可以提取出來結構化方法的主要思想如下:1、強調軟件是有組織、有結構的邏輯實體,其結構為自頂向下的形式,軟件由程序和數據組成,其結構呈現(xiàn)三層組織形式,即系統(tǒng)、子系統(tǒng)、功能模塊/數據體。軟件結構中的各部分既獨立又關聯(lián)。2、特點:抽象性:抽象描述系統(tǒng)的本質內容,結構化、模塊化、層次化:分而治之,由分到合,分析與設計線索:面向過程(處理)–過程驅動面向數據–數據驅動3、總體規(guī)劃:為所規(guī)劃的軟件系統(tǒng)作出一個戰(zhàn)略的、宏觀的、全局的技術方案,構建宏觀結構模型,為后期的分析與設計奠定基礎三個工作內容:(1)需求調查(2)結構模型建立(3)總體規(guī)劃文檔撰寫在計

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論