|
概要設(shè)計的主要任務(wù)是把需求分析得到的系統(tǒng)擴展用例圖轉(zhuǎn)換為軟件結(jié)構(gòu)和數(shù)據(jù)結(jié)構(gòu)。設(shè)計軟件結(jié)構(gòu)的具體任務(wù)是:將一個復(fù)雜系統(tǒng)按功能進行模塊劃分、建立模塊的層次結(jié)構(gòu)及調(diào)用關(guān)系、確定模塊間的接口及人機界面等。數(shù)據(jù)結(jié)構(gòu)設(shè)計包括數(shù)據(jù)特征的描述、確定數(shù)據(jù)的結(jié)構(gòu)特性、以及數(shù)據(jù)庫的設(shè)計。顯然,概要設(shè)計建立的是目標(biāo)系統(tǒng)的邏輯模型. 詳細設(shè)計是軟件工程中軟件開發(fā)的一個步驟,就是對概要設(shè)計的一個細化,就是詳細設(shè)計每個模塊實現(xiàn)算法,所需的局部結(jié)構(gòu)。在詳細設(shè)計階段,主要是通過需求分析的結(jié)果,設(shè)計出滿足用戶需求的嵌入式系統(tǒng)產(chǎn)品。 在需求明確、準(zhǔn)備開始編碼之前,要做概要設(shè)計,而詳細設(shè)計可能大部分公司沒有做,有做的也大部分是和編碼同步進行,或者在編碼之后。因此,對大部分的公司來說,概要設(shè)計文檔是唯一的設(shè)計文檔,對后面的開發(fā)、測試、實施、維護工作起到關(guān)鍵性的影響。 一、問題的提出 概要設(shè)計寫什么?概要設(shè)計怎么做? 如何判斷設(shè)計的模塊是完整的? 為什么說設(shè)計階段過于重視業(yè)務(wù)流程是個誤區(qū)? 以需求分析文檔還是以概要設(shè)計文檔來評估開發(fā)工作量、指導(dǎo)開發(fā)計劃準(zhǔn)確? 結(jié)構(gòu)化好還是面向?qū)ο蠛? 二、概要設(shè)計的目的 將軟件系統(tǒng)需求轉(zhuǎn)換為未來系統(tǒng)的設(shè)計; 逐步開發(fā)強壯的系統(tǒng)構(gòu)架; 使設(shè)計適合于實施環(huán)境,為提高性能而進行設(shè)計; 結(jié)構(gòu)應(yīng)該被分解為模塊和庫。 三、概要設(shè)計的任務(wù) 制定規(guī)范:代碼體系、接口規(guī)約、命名規(guī)則。這是項目小組今后共同作戰(zhàn)的基礎(chǔ),有了開發(fā)規(guī)范和程序模塊之間和項目成員彼此之間的接口規(guī)則、方式方法,大家就有了共同的工作語言、共同的工作平臺,使整個軟件開發(fā)工作可以協(xié)調(diào)有序地進行。 總體結(jié)構(gòu)設(shè)計: 功能(加工)-模塊:每個功能用那些模塊實現(xiàn),保證每個功能都有相應(yīng)的模塊來實現(xiàn); 模塊層次結(jié)構(gòu):某個角度的軟件框架視圖; 模塊間的調(diào)用關(guān)系:模塊間的接口的總體描述; 模塊間的接口:傳遞的信息及其結(jié)構(gòu); 處理方式設(shè)計:滿足功能和性能的算法 四、概要設(shè)計寫什么 結(jié)構(gòu)化軟件設(shè)計說明書結(jié)構(gòu)(因篇幅有限和過時嫌疑,在此不作過多解釋) 任務(wù):目標(biāo)、環(huán)境、需求、局限; 總體設(shè)計:處理流程、總體結(jié)構(gòu)與模塊、功能與模塊的關(guān)系; 接口設(shè)計:總體說明外部用戶、軟、硬件接口;內(nèi)部模塊間接口(注:接口≈系統(tǒng)界面) 數(shù)據(jù)結(jié)構(gòu):邏輯結(jié)構(gòu)、物理結(jié)構(gòu),與程序結(jié)構(gòu)的關(guān)系; 模塊設(shè)計:每個模塊做什么、簡要說明怎么做(輸入、輸出、處理邏輯、與其它模塊的接口,與其它系統(tǒng)或硬件的接口),處在什么邏輯位置、物理位置; 1概述 系統(tǒng)簡述、軟件設(shè)計目標(biāo)、參考資料、修訂版本記錄 這部分論述整個系統(tǒng)的設(shè)計目標(biāo),明確地說明哪些功能是系統(tǒng)決定實現(xiàn)而哪些時不準(zhǔn)備實現(xiàn)的。同時,對于非功能性的需求例如性能、可用性等,亦需提及。需求規(guī)格說明書對于這部分的內(nèi)容來說是很重要的參考,看看其中明確了的功能性以及非功能性的需求。 這部分必須說清楚設(shè)計的全貌如何,務(wù)必使讀者看后知道將實現(xiàn)的系統(tǒng)有什么特點和功能。在隨后的文檔部分,將解釋設(shè)計是怎么來實現(xiàn)這些的。 2術(shù)語表 對本文檔中所使用的各種術(shù)語進行說明。如果一些術(shù)語在需求規(guī)格說明書中已經(jīng)說明過了 3用例 此處要求系統(tǒng)用用例圖表述(UML),對每個用例(正常處理的情況)要有中文敘述。 4設(shè)計概述 4.1簡述 這部分要求突出整個設(shè)計所采用的方法(是面向?qū)ο笤O(shè)計還是結(jié)構(gòu)化設(shè)計)、系統(tǒng)的體系結(jié)構(gòu)(例如客戶服務(wù)器結(jié)構(gòu))以及使用到的相應(yīng)技術(shù)和工具(例如OMT、Rose) 4.2系統(tǒng)結(jié)構(gòu)設(shè)計 這部分要求提供高層系統(tǒng)結(jié)構(gòu)(頂層系統(tǒng)結(jié)構(gòu)、各子系統(tǒng)結(jié)構(gòu))的描述,使用方框圖來顯示主要的組件及組件間的交互。最好是把邏輯結(jié)構(gòu)同物理結(jié)構(gòu)分離,對前者進行描述。別忘了說明圖中用到的俗語和符號。 4.3系統(tǒng)界面 各種提供給用戶的界面以及外部系統(tǒng)在此處要予以說明。如果在需求規(guī)格說明書中已經(jīng)對用戶界面有了敘述,此處不用再重復(fù),可以指引讀者參考需求說明。如果系統(tǒng)提供了對其它系統(tǒng)的接口,比如說從其它軟件系統(tǒng)導(dǎo)入導(dǎo)出數(shù)據(jù),必須在此說明。 4.4約束和假定 描述系統(tǒng)設(shè)計中最主要的約束,這些是由客戶強制要求并在需求說明書寫明的。說明系統(tǒng)是如何來適應(yīng)這些約束的。 另外如果本系統(tǒng)跟其它外部系統(tǒng)交互或者依賴其它外部系統(tǒng)提供一些功能輔助,那么系統(tǒng)可能還受到其它的約束。這種情況下,要求清楚地描述與本系統(tǒng)有交互的軟件類型以及這樣導(dǎo)致的約束。 實現(xiàn)的語言和平臺也會對系統(tǒng)有約束,同樣在此予以說明。 對于因選擇具體的設(shè)計實現(xiàn)而導(dǎo)致對系統(tǒng)的約束,簡要地描述你的想法思路,經(jīng)過怎么樣的權(quán)衡,為什么要采取這樣的設(shè)計等等。 5對象模型 提供整個系統(tǒng)的對象模型,如果模型過大,按照可行的標(biāo)準(zhǔn)把它劃分成小塊,例如可以把客戶端和服務(wù)器端的對象模型分開成兩個圖表述。在其中應(yīng)該包含所有的系統(tǒng)對象。這些對象都是從理解需求后得到的。要明確哪些應(yīng)該、哪些不應(yīng)該被放進圖中。所有對象之間的關(guān)聯(lián)必須被確定并且必須指明聯(lián)系的基數(shù)。聚合和繼承關(guān)系必須清楚地確定下來。每個圖必須附有簡單的說明。 6對象描述 在這個部分?jǐn)⑹雒總€對象的細節(jié),它的屬性、它的方法。在這之前必須從邏輯上對對象進行組織。你可能需要用結(jié)構(gòu)圖把對象按子系統(tǒng)劃分好。 為每個對象做一個條目。在系統(tǒng)對象模型中簡要的描述它的用途、約束(如只能有一個實例),列出它的屬性和方法。如果對象是存儲在持久的數(shù)據(jù)容器中,標(biāo)明它是持久對象,否則說明它是個臨時對象(transientobject)。 對每個對象的每個屬性詳細說明:名字、類型,如果屬性不是很直觀或者有約束(例如,每個對象的該屬性必須有一個唯一的值或者值域是有限正整數(shù)等)。 對每個對象的每個方法詳細說明:方法名,返回類型,返回值,參數(shù),用途以及使用的算法的簡要說明(如果不是特別簡單的話)。如果對變量或者返回值由什么假定的話,Pre-conditions和Post-conditions必須在此說明。列出它或者被它調(diào)用的方法需要訪問或者修改的屬性。最后,提供可以驗證實現(xiàn)方法的測試案例。 7動態(tài)模型 這部分的作用是描述系統(tǒng)如何響應(yīng)各種事件。一般使用順序圖和狀態(tài)圖。 確定不同的場景(Scenario)是第一步,不需要確定所有可能的場景,但是必須至少要覆蓋典型的系統(tǒng)用例。不要自己去想當(dāng)然地創(chuàng)造場景,通常的策略是描述那些客戶可以感受得到的場景。 7.1場景(Scenarios) 對每個場景做一則條目,包括以下內(nèi)容: 場景名:給它一個可以望文生義的名字 場景描述:簡要敘述場景是干什么的以及發(fā)生的動作的順序。 順序圖:描述各種事件及事件發(fā)生的相對時間順序。 7.2狀態(tài)圖 這部分的內(nèi)容包括系統(tǒng)動態(tài)模型重要的部分的狀態(tài)圖??赡苣阆霝槊總€對象畫一個狀態(tài)圖,但事實上會導(dǎo)致太多不期望的細節(jié)信息,只需要確定系統(tǒng)中一些重要的對象并為之提供狀態(tài)圖即可。 8非功能性需求
信息發(fā)布:廣州名易軟件有限公司 http://m.jetlc.com
|