軟件工程中幾種常用軟件設(shè)計方法(doc 6頁).doc_第1頁
軟件工程中幾種常用軟件設(shè)計方法(doc 6頁).doc_第2頁
軟件工程中幾種常用軟件設(shè)計方法(doc 6頁).doc_第3頁
軟件工程中幾種常用軟件設(shè)計方法(doc 6頁).doc_第4頁
軟件工程中幾種常用軟件設(shè)計方法(doc 6頁).doc_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

軟件工程中幾種常用軟件設(shè)計方法的概述研究【摘要】在軟件開發(fā)時期中,設(shè)計階段是最富有活力、最需要發(fā)揮創(chuàng)造精神的階段。本文通過對常用幾種軟件設(shè)計方法的研究,對軟件的開發(fā)有進一步的認識。同時,也能通過對比得出哪些設(shè)計方法對某一軟件的開發(fā)有更大的優(yōu)勢,可以更好的指導(dǎo)我們實踐。【關(guān)鍵字】軟件開發(fā)、常用設(shè)計方法一、引言在軟件開發(fā)時期中,設(shè)計階段是最富有活力、最需要發(fā)揮創(chuàng)造精神的階段,軟件設(shè)計方法對軟件的開發(fā)以及投放市場有著重要的作用。在日常生活中,常用的軟件工程設(shè)計方法有Parnas方法、Jackson (JSP/JSD) 方法、問題分析方法(PAM)、面向?qū)ο蟮能浖_發(fā)方法(OO)、形式化方法、可視化方法、軟件重用。下面對這幾種方法進行分析研究。二、Parnas方法最早軟件開發(fā)方法是由D.Parnas在1972年提出。由于當(dāng)時軟件在可維護性和可靠性方面存在著嚴(yán)重問題,因此Parnas提出的方法是針對這兩個問題的。首先,Parnas提出了信息隱蔽原則:在概要設(shè)計時列出將來可能發(fā)生變化的因素,并在模塊劃分時將這些因素放到個別模塊的內(nèi)部。這樣,在將來由于這些因素變化而需修改軟件時,只需修改個別的模塊,其它模塊不受影響。信息隱蔽技術(shù)不僅提高了軟件的可維護性,而且也避免了錯誤的蔓延,改善了軟件的可靠性?,F(xiàn)在信息隱蔽原則已成為軟件工程學(xué)中的一條重要原則。Parnas提出第二條原則是在軟件設(shè)計時應(yīng)對可能發(fā)生的種種意外故障采取措施。軟件是很脆弱的,很可能因為一個微小的錯誤而引發(fā)嚴(yán)重的事故,所以必須加強防范。如在分配使用設(shè)備前,應(yīng)該取設(shè)備狀態(tài)字,檢查設(shè)備是否正常。此外,模塊之間也要加強檢查,防止錯誤蔓延。Parnas對軟件開發(fā)提出了深刻的見解。遺憾的是,他沒有給出明確的工作流程。所以這一方法不能獨立使用,只能作為其它方法的補充。 三、Jackson (JSP/JSD) 方法1975年,MAJackson提出了一類至今仍廣泛使用的軟件開發(fā)方法。這一方法從目標(biāo)系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)入手,導(dǎo)出程序框架結(jié)構(gòu),再補充其它細節(jié),就可得到完整的程序結(jié)構(gòu)圖。這一方法對輸入、輸出數(shù)據(jù)結(jié)構(gòu)明確的中小型系統(tǒng)特別有效,如商業(yè)應(yīng)用中的文件表格處理。該方法也可與其它方法結(jié)合,用于模塊的詳細設(shè)計。Jackson方法有時也稱為面向數(shù)據(jù)結(jié)構(gòu)的軟件設(shè)計方法。一般通過以下五個步驟來完成設(shè)計:1分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson結(jié)構(gòu)圖來表示這些數(shù)據(jù)結(jié)構(gòu)。2找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的數(shù)據(jù)單元。3按以下的規(guī)則由輸入、輸出的數(shù)據(jù)結(jié)構(gòu)導(dǎo)出程序結(jié)構(gòu)。1)為每一對在輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的單元畫一個處理框。2)為輸入和輸出數(shù)據(jù)結(jié)構(gòu)中剩余的數(shù)據(jù)單元畫一個處理框。3)所有處理框在程序結(jié)構(gòu)圖上的位置,應(yīng)與由它處理的數(shù)據(jù)單元在數(shù)據(jù)結(jié)構(gòu)Jackson圖上的位置一致。4)必要時,可以對映射導(dǎo)出的程序結(jié)構(gòu)圖進行進一步的細化。4列出基本操作與條件,并把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。5用偽碼寫出程序。3.1 JSP方法JSP方法是杰克遜結(jié)構(gòu)程序設(shè)計方法,是一種典型的面向數(shù)據(jù)結(jié)構(gòu)的分析和設(shè)計的方法。其主要設(shè)計思想是按輸入、輸出和內(nèi)部信息的數(shù)據(jù)結(jié)構(gòu)進行軟件設(shè)計的,把數(shù)據(jù)結(jié)構(gòu)的描述變換成程序結(jié)構(gòu)的描述,設(shè)計出反映數(shù)據(jù)結(jié)構(gòu)的程序結(jié)構(gòu)。JSP 方法將問題分解為順序、選擇和重復(fù)三種基本結(jié)構(gòu)形式表示的層次結(jié)構(gòu)如圖1 所示。這樣對一個要解決的問題,總是要把解的結(jié)構(gòu)設(shè)計成同問題的結(jié)構(gòu)一樣,使程序既容易理解,又容易修改以滿足將來問題的變化。JSP方法首先考察問題的環(huán)境,分析所要處理的數(shù)據(jù),作出數(shù)據(jù)結(jié)構(gòu)圖及圖示邏輯;再以數(shù)據(jù)結(jié)構(gòu)為基本點形成程序結(jié)構(gòu);最后列出進行處理所需要的基本操作,并把這些操作分配給程序結(jié)構(gòu)中的適當(dāng)部分。JSP 方法的優(yōu)點是客觀,不依賴于設(shè)計者自己的創(chuàng)造和經(jīng)驗,不同的設(shè)計者可以設(shè)計出同樣的解。簡單易學(xué),用JSP 圖示邏輯可以很容易地導(dǎo)出Cobol程序,目前已研制出從JSP方法設(shè)計的結(jié)構(gòu)自動導(dǎo)出Cobol 程序的工具。雖然JSP方法簡單易學(xué),步驟規(guī)范,但也存在著一些局限性,最大的不足是當(dāng)軟件系統(tǒng)的規(guī)模龐大時,輸入和輸出之間就會出現(xiàn)大量復(fù)雜的信息,JSP 方法難于對付的結(jié)構(gòu)沖突問題??梢岳弥虚g文件解決沖突,但它明顯降低了功效,而且從概念上說中間文件也是不必要的;隨著軟件系統(tǒng)規(guī)模的增大,且結(jié)構(gòu)沖突的可能性及解決沖突的算法復(fù)雜性亦隨之增大。因此JSP 方法只適用于小型程序的開發(fā),只是一種程序設(shè)計方法,并不適用于解決大型軟件的開發(fā)問題。3.2 JSD方法JSD方法是杰克遜系統(tǒng)開發(fā)方法,它以活動(即事件)為中心,一連串活動的順序組合構(gòu)成進程,系統(tǒng)模型抽象為一組以通信方式互相聯(lián)系的進程。JSD方法的基本思想是仿真并描述客觀世界,然后添加輸出功能,最后實現(xiàn)系統(tǒng)的轉(zhuǎn)換。它的基本步驟可分為六步,一是實體動作分析,從問題的描述中,提取軟件系統(tǒng)要產(chǎn)生和運用的實體(人、物或組織) ,以及現(xiàn)實世界作用于實體上的動作(事件);二是實體結(jié)構(gòu)分析,把作用于實體的動作或由實體執(zhí)行的動作,按時間發(fā)生的先后次序排序,構(gòu)成進程,并用一個層次的Jackson結(jié)構(gòu)圖表示;三是定義初始模型步,把實體和動作表示成一個進程模型,定義模型與現(xiàn)實世界的聯(lián)系。模型系統(tǒng)的規(guī)格說明可用系統(tǒng)規(guī)格說明圖來表示;四是功能描述,說明與已定義的動作相對應(yīng)的功能,為已定義的動作加入功能函數(shù);五是決定系統(tǒng)時間特性,對進程加入時間因素,對進程調(diào)度特性進行評價和說明;六是實現(xiàn),設(shè)計組成系統(tǒng)的硬件和軟件,實現(xiàn)系統(tǒng)的原型。前三步屬于需求分析階段,后三步屬于設(shè)計階段。JSD方法開創(chuàng)性地進行了客觀世界及其同軟件間關(guān)系的研究;明確了軟件系統(tǒng)說明決策同軟件系統(tǒng)實現(xiàn)決策的界限;做出容易的決策應(yīng)該先于困難的決策;應(yīng)當(dāng)盡可能推遲最容易導(dǎo)致錯誤的決策;含蓄的決策應(yīng)當(dāng)避免,不應(yīng)有隱含的約定存在;如果一個決策易于出錯,應(yīng)當(dāng)盡早證實它的正確性;應(yīng)當(dāng)盡可能使決策之間沒有依賴關(guān)系,使它們互不相關(guān)。其局限性是客觀世界及其同軟件間關(guān)系的認識不完整;軟件系統(tǒng)實現(xiàn)結(jié)構(gòu)過于復(fù)雜;軟件說明結(jié)構(gòu)的描述技術(shù)不恰當(dāng);JSD 中并不包含諸如選題,計劃管理,代價P收益分析等內(nèi)容,也不包含實施環(huán)境問題的研究內(nèi)容,這在一定程度上影響了它的推廣應(yīng)用;JSD 在實現(xiàn)階段所做的變換十分費勁,以致利用人的智力進行變換難以保證其有效性和可靠性,且變換的選擇又過于復(fù)雜,目前仍無法用計算機自動實現(xiàn)。35四、問題分析法(PAM)PAM(Problem Analysis Method)是80年代末由日立公司提出的一種軟件開發(fā)方法。PAM方法希望能兼顧Yourdon方法、Jackson方法和自底向上的軟件開發(fā)方法的優(yōu)點,而避免它們的缺陷。它的基本思想是:考慮到輸入、輸出數(shù)據(jù)結(jié)構(gòu),指導(dǎo)系統(tǒng)的分解,在系統(tǒng)分析指導(dǎo)下逐步綜合。這一方法的具體步驟是:從輸入、輸出數(shù)據(jù)結(jié)構(gòu)導(dǎo)出基本處理框;分析這些處理框之間的先后關(guān)系;按先后關(guān)系逐步綜合處理框,直到畫出整個系統(tǒng)的PAD圖。從上述步驟中可以看出,這一方法本質(zhì)上是綜合的自底向上的方法,但在逐步綜合之前已進行了有目的的分解,這個目的就是充分考慮系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)。PAM方法的另一個優(yōu)點是使用PAD圖。這是一種二維樹形結(jié)構(gòu)圖,是到目前為止最好的詳細設(shè)計表示方法之一,遠遠優(yōu)于NS圖和PDL語言。這一方法在日本較為流行,軟件開發(fā)的成功率也很高。由于在輸入、輸出數(shù)據(jù)結(jié)構(gòu)與整個系統(tǒng)之間同樣存在著鴻溝,這一方法仍只適用于中小型問題。五、面向?qū)ο蟮能浖_發(fā)方法(OO)面向?qū)ο蠓椒?Object-Oriented Method)是一種把面向?qū)ο蟮乃枷霊?yīng)用于軟件開發(fā)過程中,指導(dǎo)開發(fā)活動的系統(tǒng)方法,簡稱OO(Object-Oriented)方法,是建立在“對象”概念基礎(chǔ)上的方法學(xué)。對象是由數(shù)據(jù)和容許的操作組成的封裝體,與客觀實體有直接對應(yīng)關(guān)系,一個對象類定義了具有相似性質(zhì)的一組對象。而每繼承性是對具有層次關(guān)系的類的屬性和操作進行共享的一種方式。所謂面向?qū)ο缶褪腔趯ο蟾拍?,以對象為中心,以類和繼承為構(gòu)造機制,來認識、理解、刻畫客觀世界和設(shè)計、構(gòu)建相應(yīng)的軟件系統(tǒng)。面向?qū)ο蠓椒ǖ木唧w實施步驟如下:1面向?qū)ο蠓治觯∣OA(Object - Oriented Analysis)):從問題陳述入手,分析和構(gòu)造所關(guān)心的顯示世界問題域的模型,并用相應(yīng)的符號系統(tǒng)表示。模型必須是簡潔、明確地抽象目標(biāo)系統(tǒng)必須做的事,而不是如何做。分析步驟為:1)確定問題域,包括定義論域,選擇論域,根據(jù)需要細化和增加論域;2)區(qū)分類和對象,包括定義對象,定義類、命名;3)區(qū)分整體對象以及組成部分,確定類的關(guān)系以及結(jié)構(gòu);4)定義屬性,包括確定屬性,安排屬性;5)定義服務(wù),包括確定對象狀態(tài),確定所需服務(wù),確定消息聯(lián)結(jié);6)確定附加的系統(tǒng)約束。2面向?qū)ο笤O(shè)計(OOD(Object - oriented Design)):面向?qū)ο蟮脑O(shè)計與傳統(tǒng)的以功能分解為主的設(shè)計有所不同。具體設(shè)計步驟為:1)應(yīng)用面向?qū)ο蠓治?,對用其他方法得到的系統(tǒng)分析的結(jié)果進行改進和完善;2)設(shè)計交互過程和用戶接口;設(shè)計任務(wù)管理,根據(jù)前一步驟確定是否需要多重任務(wù),確定并發(fā)性,確定以何種方式驅(qū)動任務(wù),設(shè)計子系統(tǒng)以及任務(wù)之間的協(xié)調(diào)與通信方式,確定優(yōu)先級;4)設(shè)計全局資源,確定邊界條件,確定任務(wù)或子系統(tǒng)的軟、硬件分配;5)對象設(shè)計。3面向?qū)ο髮崿F(xiàn):使用面向?qū)ο笳Z言實現(xiàn)面向?qū)ο蟮脑O(shè)計相對比較容易。如果用非面向?qū)ο笳Z言實現(xiàn)面向?qū)ο蟮脑O(shè)計時,特別需要注意和規(guī)定保留程序的面向?qū)ο蠼Y(jié)構(gòu)。傳統(tǒng)的面向功能的方法學(xué)中,強調(diào)的是確定和分解系統(tǒng)功能,這種做法雖然是目標(biāo)的最直接的實現(xiàn)方式,但是由于功能是軟件系統(tǒng)中最不穩(wěn)定、最容易變化的方面,因而使系統(tǒng)難以維護和擴展。面向?qū)ο笤O(shè)計首先強調(diào)來自域的對象,然后圍繞對象設(shè)置屬性和操作。用面向?qū)ο笤O(shè)計,其結(jié)構(gòu)源于客觀世界穩(wěn)定的對象結(jié)構(gòu)。因而與傳統(tǒng)軟件設(shè)計方法相比,明顯提高了軟件的生產(chǎn)率,可靠性,易重用性、易維護性等方面的效果。OO方法的主要優(yōu)點是,歸納和演繹思想的綜合體現(xiàn);問題空間和解空間的同構(gòu);繼承機制的引入,很好的支持了重用性;對象機制有力地支持了信息隱藏的概念;多態(tài)性、持久性和動態(tài)聯(lián)編對程序設(shè)計起到了很好的作用。OO方法從計算機角度看有它巨大的優(yōu)勢,但OO 方法在建立客觀系統(tǒng)模型方面有不足之處。OOA一開始就有很多計算機方面的術(shù)語和概念不容易被一般用戶或參與應(yīng)用軟件開發(fā)的業(yè)務(wù)人員所了解,即使了解了,也很難正確使用,為真正掌握這些概念需要有一定的計算機背景知識,所以O(shè)OA 在應(yīng)用軟件開發(fā)中,建立客戶系統(tǒng)的描述方面不能被普遍接受和推廣使用。6六、形式化方法形式化方法(formal methods) 是保證計算機系統(tǒng)正確性的一種重要手段。這類方法用抽象的數(shù)學(xué)手段刻畫計算機軟硬件的結(jié)構(gòu)及其性質(zhì),并通過形式證明等途徑來提高系統(tǒng)的可靠性。在使用形式化方法時,形式化規(guī)格說明(formal specification) 起著重要的作用。它的基本思想是,對系統(tǒng)建立一個數(shù)學(xué)模型,研究提供一種基于數(shù)學(xué)的形式語義學(xué)的軟件規(guī)格說明語言,用這種語言嚴(yán)格的描述所開發(fā)的軟件功能,并由計算機完全機械地將它轉(zhuǎn)換成可執(zhí)行代碼。其基本步驟:定義形式化的規(guī)格說明語言;對形式化的規(guī)格說明語言進行實現(xiàn)轉(zhuǎn)換,即形式化語言可由計算機自動處理,可利用相應(yīng)的軟件工具對規(guī)格說明進行分析、查錯和驗證。形式化方法是以一定的數(shù)學(xué)概念和理論作基礎(chǔ)來指導(dǎo)軟件的開發(fā)的,所以具有嚴(yán)格、規(guī)范的優(yōu)點。同時也因為要有較強的數(shù)學(xué)基礎(chǔ),不能被普遍接受,形式化規(guī)格說明的理論和技術(shù)尚處于研究階段,未成熟到工程應(yīng)用的程度,因此該方法不太實用。3七、可視化方法可視化開發(fā)90年代軟件界最大的兩個熱點之一。隨著圖形用戶界面的興起,用戶界面在軟件系統(tǒng)中所占的比例也越來越大,有的高達6070。產(chǎn)生這一問題的原因是圖形界面元素的生成很不方便。為此Windows提供了應(yīng)用程序設(shè)計接口API(Application Programming Interface),它包含了600多個函數(shù),極大地方便了圖形用戶界面的開發(fā)。但是在這批函數(shù)中,大量的函數(shù)參數(shù)和使用數(shù)量更多的有關(guān)常量,使基于Windows API的開發(fā)變得相當(dāng)困難。為此Borland C+推出了ObjectWindows編程。它將API的各部分用對象類進行封裝,提供了大量預(yù)定義的類,并為這些定義了許多成員函數(shù)。利用子類對父類的繼承性,以及實例對類的函數(shù)的引用,應(yīng)用程序的開發(fā)可以省卻大量類的定義,省卻大量成員函數(shù)的定義或只需作少量修改以定義子類。Object Windows還提供了許多標(biāo)準(zhǔn)的缺省處理,大大減少了應(yīng)用程序開發(fā)的工作量。但要掌握它們,對非專業(yè)人員來說仍是一個沉重的負擔(dān)。為此人們利用Windows API或Borland C+的Object Windows開發(fā)了一批可視開發(fā)工具??梢暬_發(fā)就是在可視開發(fā)工具提供的圖形用戶界面上,通過操作界面元素,諸如菜單、按鈕、對話框、編輯框、單選框、復(fù)選框、列表框和滾動條等,由可視開發(fā)工具自動生成應(yīng)用軟件。這類應(yīng)用軟件的工作方式是事件驅(qū)動。對每一事件,由系統(tǒng)產(chǎn)生相應(yīng)的消息,再傳遞給相應(yīng)的消息響應(yīng)函數(shù)。這些消息響應(yīng)函數(shù)是由可視開發(fā)工具在生成軟件時自動裝入的。八、軟件重用方法軟件重用(Software Reuse,又稱軟件復(fù)用或軟件再用)的概念對于大家并不陌生。早在1968年的NATO軟件工程會議上就已經(jīng)提出可復(fù)用庫的思想。軟件重用的定義也很多,比較權(quán)威和通用的一種是:軟件重用是利用事先建立好的軟部品創(chuàng)建新軟件系統(tǒng)的過程。這個定義蘊含著軟件重用所必須包含的兩個方面:1)系統(tǒng)地開發(fā)可重用的軟部品。這些軟部品可以是代碼,但不應(yīng)該僅僅局限在代碼。我們必須從更廣泛和更高層次來理解,這樣才會帶來更大的重用收益。比如軟部品還可以是:分析,設(shè)計,測試數(shù)據(jù),原型,計劃,文檔,模板,框架等等。2)系統(tǒng)地使用這些軟部品作為構(gòu)筑模塊,來建立新的系統(tǒng)。軟件重用的好處 能提高軟件生成率:縮短開發(fā)周期 。降低軟件開發(fā)和維護費用。生產(chǎn)更加標(biāo)準(zhǔn)化的軟件。 提高軟件開發(fā)質(zhì)量。 增強軟件系統(tǒng)的互操作性。減少軟件開發(fā)人員數(shù)量。使開發(fā)人員能比較容易的適應(yīng)不同性質(zhì)的項目開發(fā)。隨著OO方法理論體系的完善,軟件復(fù)用的研究已經(jīng)逐漸集中到了軟件構(gòu)件技術(shù)上。構(gòu)件技術(shù)是一種更高層次的對象技術(shù),它是獨立于語言和面向應(yīng)用程序,它只規(guī)定構(gòu)件的外在表現(xiàn)形式,而不關(guān)心其內(nèi)部實現(xiàn)方法,它即可用OO 編程語言實現(xiàn),也可用非OO 的過程語言實現(xiàn)。只要遵循構(gòu)件技術(shù)的規(guī)范,各個軟件開發(fā)商就可以用自己方便的語言去實現(xiàn)可被重用的構(gòu)件。構(gòu)件技術(shù)改變了軟件生產(chǎn)方式,將軟件生產(chǎn)劃分為構(gòu)件生產(chǎn)和構(gòu)件集成兩個方面。開發(fā)者專心于構(gòu)件的生產(chǎn),集成者充

溫馨提示

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

評論

0/150

提交評論