軟件工程之軟件設(shè)計方法_第1頁
軟件工程之軟件設(shè)計方法_第2頁
軟件工程之軟件設(shè)計方法_第3頁
軟件工程之軟件設(shè)計方法_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

軟件工程之軟件設(shè)計方法簡介您是如何開始一個新工程的?是不是跳到計算機前,打開您喜愛的RAD工具開始輸入代碼?有沒有想過程序會執(zhí)行些什么或者系統(tǒng)是如何操縱數(shù)據(jù)的?有沒有想過要記下些東西來幫助提醒您或闡明您已經(jīng)開發(fā)的代碼的邏輯實現(xiàn)?如果您對第一個問題答'不”,而其他問題答”是”的話,您可以跳過這篇文檔。否則的話,請好好讀讀這篇文章。您應(yīng)該有個計劃、藍(lán)圖,并且在手邊有個對您的問題解決方案的簡明安排?!蹦仨氈滥ツ膬旱玫揭磺校 弊屛覀儊砜纯撮_發(fā)一個能實現(xiàn)您所設(shè)計的功能的程序時,什么最棘手。(軟件)設(shè)計是什么?E.S.Taylor給設(shè)計下的定義是:"???theprocessofapplyingvarioustechniquesandprinciplesforthepurposeofdefiningadevicaprocessorasysteminsufficientdetailtopermititsphysicalrealization."”…應(yīng)用各種各樣的技術(shù)和原理,并用它們足夠詳細(xì)的定義一個設(shè)備、一個程序或系統(tǒng)的物理實現(xiàn)的過程。"對任意的工程產(chǎn)品或系統(tǒng),開發(fā)階段絕對的第一步是確定將來所要構(gòu)建的制造原型或?qū)嶓w表現(xiàn)的目標(biāo)構(gòu)思。這個步驟是由多方面的直覺與判斷力來共同決定的。這些方面包括構(gòu)建類似模型的經(jīng)驗、一組引領(lǐng)模型發(fā)展的原則、一套啟動質(zhì)量評價的標(biāo)準(zhǔn)、以及重復(fù)修改直至設(shè)計最后定型的過程本身。計算機軟件設(shè)計與其他工程學(xué)科相比還處在幼年時期,仍在不斷變化中,例如更新的方法、更好的算法分析、以及理解力的顯著進化。軟件設(shè)計的方法論的出現(xiàn)也只有三十年多一點,仍然缺乏深度、適應(yīng)性和定量性質(zhì),通常更多的與經(jīng)典工程設(shè)計學(xué)科相聯(lián)系。盡管如此,現(xiàn)今的軟件技術(shù)已經(jīng)存在、設(shè)計質(zhì)量的標(biāo)準(zhǔn)也可使用、設(shè)計符號亦可以應(yīng)用。帶著這些意見,我們一起來看看什么有助于程序員們找到他們的軟件涅盤(天堂的意(軟件)設(shè)計過程軟件的設(shè)計是一個將需求轉(zhuǎn)變?yōu)檐浖愂觯ū磉_(dá))的過程。這種陳述給我們一個對軟件的全局觀點。系統(tǒng)通過逐步求精使得設(shè)計陳述逐漸接近源代碼。這里有兩個基本步驟;第一步是初步設(shè)計Preliminarydesign,關(guān)注于如何將需求轉(zhuǎn)換成數(shù)據(jù)和軟件框架。第二步是詳細(xì)設(shè)計Detaildesign,關(guān)注于將框架逐步求精細(xì)化為具體的數(shù)據(jù)結(jié)構(gòu)和軟件的算法表達(dá)。發(fā)生中的設(shè)計行為、數(shù)據(jù)、算法和程序設(shè)計都需要由現(xiàn)代程序所需的界面設(shè)計這一清晰的行為來結(jié)合起來。界面設(shè)計Interfacedesign建立程序布局和人機交互機制。貫穿設(shè)計過程的質(zhì)量由一系列的正式技術(shù)評定formaltechnicalreviews或設(shè)計排演designwalkthroughs來評價。良好的設(shè)計規(guī)范必須建立在對設(shè)計陳述(表達(dá))的評估之上,以下是一些指導(dǎo)方針:設(shè)計應(yīng)該展現(xiàn)層次結(jié)構(gòu)使得軟件各部分之間的控制更明智。設(shè)計應(yīng)當(dāng)模塊化;這就是說,軟件應(yīng)在邏輯上分割為實現(xiàn)特定的功能和子功能的部分。設(shè)計應(yīng)當(dāng)由清晰且可分離的數(shù)據(jù)和過程表達(dá)來構(gòu)成。設(shè)計應(yīng)使得模塊展現(xiàn)獨立的功能特性。設(shè)計應(yīng)使得界面能降低模塊之間及其與外部環(huán)境的連接復(fù)雜性。設(shè)計應(yīng)源自于軟件需求分析期間獲得的信息所定之可重復(fù)方法的使用。要擁有良好的設(shè)計特征不是靠碰運氣,而在設(shè)計過程中通過綜合運用基礎(chǔ)設(shè)計原理、系統(tǒng)方法論、徹底的評定回顧可以有助于良好的設(shè)計。軟件設(shè)計方法每天都在進化,作為已經(jīng)經(jīng)過測試和細(xì)化的方法,良好的設(shè)計應(yīng)具有以下的四種特性,并在所有這些特性之間保持一致。將信息領(lǐng)域的表達(dá)轉(zhuǎn)換為軟件設(shè)計的表達(dá)的機制。表示功能組件及其界面的符號。逐步求精和分割的試探。質(zhì)量評估的指導(dǎo)方針。開發(fā)軟件的時候,不管采用何種設(shè)計方法您必須能夠熟練運用一套關(guān)于數(shù)據(jù)、算法和程序設(shè)計的基本原理。(軟件)設(shè)計基礎(chǔ)軟件設(shè)計方法論的這套基本原理已經(jīng)經(jīng)過了多年的進化。每種概念的影響程度不盡相同,但它們都經(jīng)歷了時間的洗禮?;谶@些基本原理設(shè)計者可以采用更多更成熟的設(shè)計方法。這些基本原理有助于設(shè)計者回答以下的問題:將軟件分割成獨立的組件時會采用何種標(biāo)準(zhǔn)?怎樣將軟件的原則性表示詳細(xì)分割成函數(shù)或數(shù)據(jù)結(jié)構(gòu)?有沒有定義一個軟件設(shè)計的技術(shù)質(zhì)量的統(tǒng)一標(biāo)準(zhǔn)?M.A.Jackson曾經(jīng)說過:”對一個計算機程序員來說,分辨讓程序運行和讓程序正確之間的差異是一個良好的開端。”為了”使程序正確”,基本設(shè)計原理提供了必須的框架。因此讓我們來對這些基本原理作個簡短的檢視。抽象Abstraction在最高層次上指的是使用待解決的問題領(lǐng)域內(nèi)的術(shù)語描述的解決方案。相對較低層次的抽象則更多的面向程序語言,最低層的抽象則是解決方案的可直接實現(xiàn)的方式描述。軟件設(shè)計的每一個步驟都是對相應(yīng)層次解決方案的抽象的逐步求精。求精Refinement又叫做逐步求精指的是通過程序細(xì)節(jié)連續(xù)細(xì)化來開發(fā)程序體系的策略。分步驟的對程序抽象進行分解直至成為編程語言的過程同時造就了程序的層次結(jié)構(gòu)。在這一點上要對細(xì)節(jié)多做考慮,這也展示了求精實際上是個苦心經(jīng)營的過程。模塊化Modularity指的是軟件可被分割為分別命名并可尋址的組件(也叫做模塊),將模塊綜合起來又可以滿足問題的需求的性質(zhì)。”軟件的模塊化是允許智能化管理程序的唯一屬性。”換句話說,當(dāng)您將一個復(fù)雜問題分解為一些小問題時會更容易解決。需要重點解釋的是即使一個系統(tǒng)必須象”單片機”一樣來實現(xiàn),它也可以采用模塊化設(shè)計。軟件體系(架構(gòu))SoftwareArchitecture涉及到程序的兩個重要特性:1)模塊的層次結(jié)構(gòu)。2)數(shù)據(jù)結(jié)構(gòu)。這源自于需求分析時將真實世界問題的含蓄定義與軟件解決方案的要素關(guān)聯(lián)起來的分割過程。當(dāng)問題的每個部分通過一個或多個軟件要素得到解決后,與問題的定義和解決相一致軟件和數(shù)據(jù)結(jié)構(gòu)的進化就開始了。這個過程代表了軟件的需求分析和設(shè)計之間的位置??刂茖蛹塁ontrolHierarchy也稱作程序結(jié)構(gòu),描述程序組件的組織并意味著控制層級。它并不描述軟件的程序方面,比如進程順序、決定的事件/命令、或工作循環(huán)。如下的層級圖表展示了模塊之間的通信流,并顯示哪些模塊是重復(fù)的(右上角變黑的塊)。這個圖表描述了一個能夠讀文件,計算每個記錄的值并書寫報表來顯示記錄的信息和所完成的計算。數(shù)據(jù)結(jié)構(gòu)Datastructure描述了單個數(shù)據(jù)間的邏輯關(guān)系。數(shù)據(jù)結(jié)構(gòu)規(guī)定了數(shù)據(jù)的組織、訪問方法、關(guān)聯(lián)程度、和信息的選擇處理。數(shù)據(jù)結(jié)構(gòu)的組織和復(fù)雜性只受限于設(shè)計者的靈活性。唯一的限制就是經(jīng)典數(shù)據(jù)結(jié)構(gòu)的數(shù)量阻礙了更多的久經(jīng)考驗的結(jié)構(gòu)出現(xiàn)。軟件程序SoftwareProcedure著重于處理每個模塊的細(xì)節(jié)并必須提供一個精確的處理規(guī)范,包括事件順序、準(zhǔn)確的判定點、重復(fù)操作、甚至數(shù)據(jù)結(jié)構(gòu)。軟件的程序表現(xiàn)是分層的,處理方法應(yīng)該包括其所有子模塊的參考。信息隱藏InformationHiding的法則建議由設(shè)計決定所刻劃的模塊特性應(yīng)該對其余的模塊不可見。換句話說,模塊應(yīng)被設(shè)計和指定為包含在模塊內(nèi)部且其他模塊不可訪問的內(nèi)容對其他模塊來說是無需的。隱藏意味著有效的模塊性能夠通過定義一套獨立的模塊來實現(xiàn),這些模塊相互之間的通信僅僅包括實現(xiàn)軟件功能的所必須的信息。將使用信息隱藏作為設(shè)計標(biāo)準(zhǔn)在測試或今后的維護期間需要修改系統(tǒng)時帶來了最大的好處。(軟件)設(shè)計方法論讓我們來遍歷設(shè)計過程中用以促成模塊化設(shè)計的四個區(qū)域:模塊Modular.數(shù)據(jù)Data、體系A(chǔ)rchitectural和程序Procedural設(shè)計。模塊設(shè)計Modulardesign減低了復(fù)雜性、便于修改、且使得支持系統(tǒng)不同部分的并行開發(fā)實現(xiàn)起來更容易。模塊類型提供的操作特性通過結(jié)合時間歷史、激活機制、和控制模式來表現(xiàn)。在程序結(jié)構(gòu)內(nèi)部,模塊可以被分類為:順序sequential模塊,由應(yīng)用程序引用和執(zhí)行,但不能從表觀上中斷。增量incremental模塊,可被應(yīng)用程序先行中斷,而后再從中斷點重新開始。并行parallel模塊,在多處理器環(huán)境下可以與其他模塊同時執(zhí)行。單獨的模塊更容易開發(fā),因為功能可以被劃分出來,而界面只是用來確保功能的獨立。功能的獨立性可以使用兩個定性的標(biāo)準(zhǔn)來衡量:凝聚性cohesion一衡量模塊的功能強度的相關(guān)性,和耦合性coupling一衡量模塊間的相互依賴的相關(guān)性。數(shù)據(jù)設(shè)計Datadesign首先并且有些人也堅信,是最重要的設(shè)計行為。數(shù)據(jù)結(jié)構(gòu)的影響和程序上的復(fù)雜性導(dǎo)致數(shù)據(jù)設(shè)計對軟件質(zhì)量有著深遠(yuǎn)的影響。這種質(zhì)量由以下的原理來實施:適用于功能和行為分析的系統(tǒng)分析原理同樣應(yīng)該適用于數(shù)據(jù)。所有的數(shù)據(jù)結(jié)構(gòu),以及各自所完成的操作都應(yīng)該被確定。創(chuàng)建數(shù)據(jù)詞典并用來詳細(xì)說明數(shù)據(jù)和程序的設(shè)計。底層的數(shù)據(jù)設(shè)計決定應(yīng)該延遲至設(shè)計過程的后期。數(shù)據(jù)結(jié)構(gòu)的陳述(具體說明)應(yīng)該只被那些直接使用包含在此結(jié)構(gòu)內(nèi)的數(shù)據(jù)的模塊所知道。有用的數(shù)據(jù)結(jié)構(gòu)和操作庫可以在適當(dāng)?shù)臅r候使用。軟件設(shè)計和編程語言應(yīng)該支持抽象數(shù)據(jù)類型的規(guī)范和實現(xiàn)。體系設(shè)計ArchitecturalDesign的主要目標(biāo)是開發(fā)模塊化的程序結(jié)構(gòu)并表達(dá)出模塊間的控制相關(guān)性。另外,體系設(shè)計融合了程序結(jié)構(gòu)與數(shù)據(jù)結(jié)構(gòu),以及使得數(shù)據(jù)得以在程序中流動的界面定義。這種方法鼓勵設(shè)計者關(guān)注系統(tǒng)的整體設(shè)計而不是系統(tǒng)中單獨的組件。選用不同的方法會采用不同的途徑來接近體系的原點,但所有這些方法都應(yīng)該認(rèn)識到具有軟件全局觀念的重要性。程序設(shè)計ProceduralDesign在數(shù)據(jù)、程序結(jié)構(gòu)、和陳述詳細(xì)算法的說明都已使用類似英語的自然語言來呈現(xiàn)后,再確定程序設(shè)計。使用自然語言來陳述的原因是當(dāng)開發(fā)小組的絕大多數(shù)成員使用自然語言來交流的話,那么小組外的一個新手在不經(jīng)學(xué)習(xí)的情況下會更容易理解這些說明。這里有個問題:程序設(shè)計必須毫無歧義的來詳細(xì)說明程序,但我們都知道不含糊的自然語言也就不自然了。(軟件)設(shè)計文檔在任何系統(tǒng)中,開發(fā)文檔都是有價值的東西?,F(xiàn)在已經(jīng)有許多不同的經(jīng)過發(fā)展的文檔計劃可供您在創(chuàng)建系統(tǒng)時候進行選擇。其中相當(dāng)不錯的一種模型就是所謂的設(shè)計規(guī)范(譯者注:此處原有的超鏈接已經(jīng)失效,所以無法得到其原始的模板。但CKER還有一套被稱作的APM的文檔模板似乎不錯。以后也許會翻給大家來看看……人_人)。當(dāng)您察看此文檔的大綱的時候,請注意各級別的詳細(xì)內(nèi)容。第一部分展示了源自于系統(tǒng)說明和其他定義文檔的設(shè)計成果的總體范圍。第二部分展示的是涉及支持文檔的詳細(xì)說明。第三部分的內(nèi)容又稱作設(shè)計描述,在初步設(shè)計階段完成。第四、五部分的內(nèi)容將初步設(shè)計階段的內(nèi)容發(fā)展至詳細(xì)設(shè)計階段。第六部分展示了確保以下兩條原則的交叉參考矩陣:用軟件設(shè)計滿足所有的需求。指出實現(xiàn)特定需求的關(guān)鍵模塊。第七部分在開發(fā)測試程序(步驟)的第一步對系統(tǒng)的功能性和正確性進行測試是必要的。如果在開發(fā)設(shè)計規(guī)范的同時已經(jīng)并行開發(fā)了詳細(xì)的測試程序規(guī)范的話,本部分可以刪除。第八部分詳細(xì)說明了將系統(tǒng)打包傳送至用戶站點的考慮和要求。在文檔剩下的第九、十部分中包括了算法描述、選擇程序、列表數(shù)據(jù)、流程圖、偽代碼、數(shù)據(jù)流圖表、以及所有在設(shè)計規(guī)范開發(fā)時所用到的相關(guān)信息都可以放在此處。面向?qū)ο蟮模ㄜ浖┰O(shè)計到目前為止我們所詳細(xì)說明的一切都是如今在IT領(lǐng)域被廣泛使用的設(shè)計方法論的基石。面向?qū)ο蟮脑O(shè)計(OOD)通過模塊化信息及其加工方法而不單單是加工方法來讓數(shù)據(jù)對象和加工操作得以互相連接。這個過程依賴于三個極其重要的設(shè)計概念:抽象、信息隱藏、和模塊化。所有的設(shè)計方法都力爭展現(xiàn)這些特性;但只有OOD的機制才能使設(shè)計者能夠無需增加復(fù)雜性或加以折衷就獲得所有三種特性。在OOD中,我們有objects(對象),operations(操作),和messages(消息)。Objects(對象),又稱作類,可以是人、機器、命令、文件、汽車、房子,等等。operations(操作),包含了私有的數(shù)據(jù)結(jié)構(gòu)和用于變換數(shù)據(jù)結(jié)構(gòu)的加工方法。messages(消息)用于激活調(diào)用操作控制和對象的程序構(gòu)造。這就是說對象的共享部分是其的接口而消息在接口之間移動并指定希望使用對象的何種操作,但并不知道操作是怎樣具體實現(xiàn)的。對象在收到消息之后決定如何來執(zhí)行消息?,F(xiàn)在讓我們來看看在面向?qū)ο蟮南到y(tǒng)中的某些工具是如何使用的:偽代碼一接近計算機編程語言的指令,但使用的是近似英語的語言而不是真正的編程語言以便于查看程序邏輯。下面是一個加工文件中的記錄的范例:Start(開始)Initializeprogram(初始化程序)Readarecord(讀一個記錄)Processrecord(加工記錄)Moverecordtoprintarea(將記錄移至打印區(qū))Writealine(寫一行)Endjob(結(jié)束任務(wù))Stoprun,(停止運行)原型一在開發(fā)軟件包的第一個版本或模型,或者計算機硬件準(zhǔn)備好作生產(chǎn)前測試時的步驟。通常可以使用您所喜愛的RAD工具來創(chuàng)建。TOE圖表一(Task任務(wù),Object對象,Event事件圖表)用來展示需要完成的任務(wù)或工作、執(zhí)行工作的對象、以及完成此過程的事件或動作。請看下面將兩個數(shù)相加的TOE圖表:任務(wù)對象事件啟動程序MainFormOnStartup輸入第一個數(shù)EdtFirstNumberUsertypesin輸入第二個數(shù)EdtSecondNu

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論