軟件設計的最終目標是要取得最佳方案。“最佳”是指在所有候選方案中,就節(jié)省開發(fā)費用,降低資源消耗,縮短開發(fā)時間的條件,選擇能夠贏得較高的生產(chǎn)率、較高的可靠性和可維護性的方案。在整個設計的過程中,各個時期的設計結(jié)果需要經(jīng)過一系列的設計質(zhì)量的評審,以便及時發(fā)現(xiàn)和及時解決在軟件設計中出現(xiàn)的問題,防止把問題遺留到開發(fā)的后期階段,造成后患。
設計監(jiān)理總則
軟件設計監(jiān)理的基本準則包括: 審查提交的文檔是否齊全,審查文檔編制與描述工具是否符合規(guī)范。確定承辦單位提出的軟件總體結(jié)構(gòu)設計是否實現(xiàn)了軟件需求規(guī)格說明的要求,評價軟件設計方案與數(shù)學模型的可行性,評價接口設計方案和運行環(huán)境的適應性,審查軟件集成測試計劃的合理性和完備性,審查數(shù)據(jù)庫設計的完備性和一致性。并確定該階段文檔能否作為詳細設計的依據(jù),決定可否轉(zhuǎn)入詳細設計階段。確認軟件詳細設計文檔的內(nèi)容符合軟件編碼的要求。
設計階段中監(jiān)理單位要盡可能與業(yè)主單位協(xié)調(diào)配合工作,聽取業(yè)主單位從業(yè)務角度出發(fā)提出的對開發(fā)方設計的意見。監(jiān)理單位主要從文檔的規(guī)范性、可實施性出發(fā),以國家相關(guān)標準為依據(jù),從軟件工程學的角度對承建單位提出意見與建議,配合業(yè)主單位工作,敦促承建單位做好工程項目的設計工作。在設計階段,監(jiān)理單位主要針對需求的覆蓋性及可跟蹤性、模塊劃分的合理性、接口的清晰性、技術(shù)適用性、技術(shù)清晰度、可維護性、約束與需求的一致性、可測試性、對軟件設計的質(zhì)量特性的評估、對軟件設計的風險評估、對比情況、文檔格式的規(guī)范性等幾個方面進行評審。在此過程中,業(yè)主單位也需要對設計文檔做檢查,主要在功能設計是否全面準確地反映了需求、輸入項是否完全與正確并符合需求、輸出項是否符合需求、與外界的數(shù)據(jù)接口是否完全與正確并符合需求、各類編碼表是否完全與準確并符合需求、界面設計是否符合需求、維護設計是否符合需求、各類數(shù)據(jù)表格式和內(nèi)容是否符合要求、是否存在其它有疑問的設計等幾個方面進行核查。
設計的評審內(nèi)容
?。?) 可追溯性:即分析該軟件的系統(tǒng)結(jié)構(gòu)、子系統(tǒng)結(jié)構(gòu),確認該軟件設計是否復蓋了所有已確定的軟件需求,軟件每一成分是否可追溯到某一項需求。
(2) 接口:即分析軟件各部分之間的聯(lián)系,確認該軟件的內(nèi)部接口與外部接口是否已經(jīng)明確定義。模塊是否滿足高內(nèi)聚和低耦合的要求。模塊作用范圍是否在其控制范圍之內(nèi)。
?。?) 風險:即確認該軟件設計在現(xiàn)有技術(shù)條件下和預算范圍內(nèi)是否能按時實現(xiàn)。
?。?) 實用性:即確認該軟件設計對于需求的解決方案是否實用。
?。?) 技術(shù)清晰度:即確認該軟件設計是否以一種易于翻譯成代碼的形式表達。
?。?) 可維護性:從軟件維護的角度出發(fā),確認該軟件設計是否考慮了方便未來的維護。
(7) 質(zhì)量:即確認該軟件設計是否表現(xiàn)出良好的質(zhì)量特征。
?。?) 各種選擇方案:看是否考慮過其它方案,比較各種選擇方案的標準是什么。
?。?) 限制:評估對該軟件的限制是否現(xiàn)實,是否與需求一致。
(10) 其它具體問題:對于文檔、可測試性、設計過程,……,等等進行評估。
在這里需要特別注意:軟件系統(tǒng)的一些外部特性的設計,例如軟件的功能、一部分性能、以及用戶的使用特性等,在軟件需求分析階段就已經(jīng)開始。這些問題的解決,多少帶有一些“怎么做”的性質(zhì),因此有人稱之為軟件的外部設計。
McGlanghlin給出在將需求轉(zhuǎn)換為設計時判斷設計好壞的三條特征:
?、?設計必須實現(xiàn)分析模型中描述的所有顯式需求,必須滿足用戶希望的所有隱式需求。
② 設計必須是可讀、可理解的,使得將來易于編程、易于測試、易于維護。
?、?設計應從實現(xiàn)角度出發(fā),給出與數(shù)據(jù)、功能、行為相關(guān)的軟件全貌。
以上三點就是軟件設計過程的目標。為達到這些目標,必須建立衡量設計的技術(shù)標準。
?、?設計出來的結(jié)構(gòu)應是分層結(jié)構(gòu),從而建立軟件成份之間的控制。
?、?設計應當模塊化,從邏輯上將軟件劃分為完成特定功能或子功能的構(gòu)件。
?、?設計應當既包含數(shù)據(jù)抽象,也包含過程抽象。
?、?設計應當建立具有具有獨立功能特征的模塊。
?、?設計應當建立能夠降低模塊與外部環(huán)境之間復雜連接的接口。
⑥ 設計應能根據(jù)軟件需求分析獲取的信息,建立可驅(qū)動可重復的方法。
軟件設計過程根據(jù)基本的設計原則,使用系統(tǒng)化的方法和完全的的設計評審來建立良好的設計。
一、概要設計的評審
軟件概要設計監(jiān)理的目的是對軟件概要設計有關(guān)內(nèi)容(重點是軟件的結(jié)構(gòu)、軟件的功能、軟件的結(jié)構(gòu)、接口設計、接口關(guān)系等)、概要設計過程、概要設計活動、文檔格式進行審查,確定承建單位提出的軟件總體結(jié)構(gòu)設計是否實現(xiàn)了軟件需求規(guī)格說明的要求,確認是否滿足要求;給出是否符合要求的結(jié)論;確定其可否作為軟件詳細設計的前提和依據(jù)。
檢查項 Y/TBD/N/NA
清晰性
是否所設計的架構(gòu),包括數(shù)據(jù)流,控制流和接口,被清楚地表達了?
是否所有的假設、約束、策略及依賴都被記錄在本文檔了?
是否定義了總體設計目標?
完整性
是否所有的以前的TBD(待確定條目)都已經(jīng)被解決了?
是否設計已經(jīng)可以支持本文檔中遺留的TBD有可能帶來的變更?
是否所有的TBD的影響都已經(jīng)被評估了?
是否仍存在可能不可行的設計部分?
是否已記錄設計時的權(quán)衡考慮? 該文件是否包括了權(quán)衡選擇的標準和不選擇其它方案的原因?
依從性
是否遵守了項目的文檔編寫標準?
一致性
數(shù)據(jù)元素、流程和對象的命名和使用在整套系統(tǒng)和外部接口之間是否一致?
該設計是否反映了實際操作環(huán)境(硬件、軟件、支持軟件)?
可行性
從進度、預算和技術(shù)角度上看該設計是否可行?
是否存在錯誤的、缺少的或不完整的邏輯?
數(shù)據(jù)使用
所有復合數(shù)據(jù)元素、參數(shù)以及對象的概念是否都已文檔化?
是否還有任何需要的但還沒有定義的數(shù)據(jù)結(jié)構(gòu),反之亦然?
是否已描述最低級別數(shù)據(jù)元素?是否已詳細說明取值范圍?
功能性
是否對每一下級模塊進行了概要算法說明?
所選擇的設計和算法能否滿足所有的需求?
接口
操作界面的設計是否有為用戶考慮(例如:詞匯、使用信息和進入的簡易)?
是否已描述界面的功能特性?
界面將有利于問題解決嗎?
性能
主要性能參數(shù)是否已被詳細說明(例如:實時、速度要求、磁盤輸入/輸出接口等)?
可靠性
該設計能夠提供錯誤檢測和恢復(例如:輸入輸出檢查)?
是否已考慮非正常情況?
是否所有的錯誤情況都被完整和準確地說明?
該設計是否滿足該系統(tǒng)進行集成時所遵守的約定?
易測性
是否能夠?qū)υ撎紫到y(tǒng)進行測試、演示、分析或檢查來說明它是滿足需求的?
該套系統(tǒng)是否能用增量型的方法來集成和測試?
可追溯性
是否各部分的設計都能追溯到需求說明書的需求?
是否所有的設計決策都能追溯到原來確定的權(quán)衡因素?
所繼承設計的已知風險是否已確定和分析?
二、詳細設計的評審
軟件詳細設計監(jiān)理的目的是對軟件詳細設計有關(guān)內(nèi)容(重點是軟件的算法、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)類型、異常處理、計算效率等)、詳細設計過程、詳細設計活動、文檔格式進行審查,確定承建單位提出的軟件詳細設計內(nèi)容是否實現(xiàn)了軟件概要設計的要求,確認是否滿足要求;給出是否符合要求的結(jié)論;確定其可否作為軟件編碼的前提和依據(jù)。
檢查項 Y/TBD/N/NA
清晰性
所有單元或過程的目的是否都已文檔化?
包括了數(shù)據(jù)流、控制流和接口的單元設計是否已清晰的說明?
完整性
是否已定義和初始化所有的變量、指針和常量?
是否已描述單元的全部功能?
是否已詳細說明用來實現(xiàn)該單元的關(guān)鍵算法(例如:用自然語言或PDL)?
是否已列出該單元的調(diào)用?
依從性
該文檔是否遵循了該項目已文檔化的標準?
是否采用了所要求的方法和工具來進行單元設計?
一致性
數(shù)據(jù)元素的命名和使用在整個單元和單元接口之間是否一致?
所有接口的設計是否互相一致并且和更高級別文檔一致?
正確性
是否處理所有條件 (大于、等于、小于零、switch/case)?是否存在處理“case not found”的條件?
是否正確地規(guī)定了分支(邏輯沒有顛倒)?
數(shù)據(jù)使用
是否所有聲明的數(shù)據(jù)都被實際使用到?
是否所有該單元的數(shù)據(jù)結(jié)構(gòu)都被詳細說明?
是否所有修改共享數(shù)據(jù)(或文件)的程序都考慮到了其它程序?qū)υ摴蚕頂?shù)據(jù)(或文件)的存取權(quán)限?
是否所有邏輯單元、時間標志和同步標志都被定義和初始化?
接口
接口參數(shù)在數(shù)量、類型和順序上是否匹配?
是否所有的輸入和輸出都被正確定義和檢查?
是否傳遞參數(shù)序列都被清晰的描述?
是否所有參數(shù)和控制標志由已描述的單元傳遞或返回?
是否詳細說明了參數(shù)的度量單位、取值范圍、正確度和精度?
共享數(shù)據(jù)區(qū)域及其存取規(guī)定的映射是否一致?
可維護性
單元是否具有高內(nèi)聚度和低耦合度(例如:對該單元的更改不會在該單元有任何無法預料的影響并對其它單元的影響很?。?nbsp;
性能
是否該單元的所有約束例如過程時間和規(guī)模都被詳細說明?
可靠性
初始化是否使用到缺省值,缺省值是否正確?
是否在內(nèi)存訪問的時候執(zhí)行了邊界檢查(例如:數(shù)組、數(shù)據(jù)結(jié)構(gòu)、指針等)來確保只是改變了目標存儲位置?
是否執(zhí)行輸入、輸出、接口和結(jié)果的錯誤檢查?
是否對所有錯誤情況都發(fā)出有意義的信息?
對特殊情況返回的代碼是否和已規(guī)定的全局定義的返回代碼相匹配?
是否考慮到意外事件?
易測性
是否能夠?qū)γ總€單元進行測試、演示、分析或檢查來說明它們是滿足需求的。
該設計是否包含檢查點來幫助測試(例如:有條件的編譯代碼和數(shù)據(jù)聲明測試)?
是否所有的邏輯都能被測試?
是否已描述測試程序、測試數(shù)據(jù)集和測試結(jié)果?
可追溯性
是否設計的每一部分都能追溯到其它項目文檔的需求,也能追溯到更高級別文檔的需求?
是否所有的設計決定都能追溯到權(quán)衡考慮?
單元需求是否都能上溯到更高級別的文檔? 更高級別文檔的需求是否已經(jīng)在單元中體現(xiàn)?
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,信管網(wǎng)網(wǎng)站提供的以上信息僅供參考,如有異議,請以權(quán)威部門公布的內(nèi)容為準!
信管網(wǎng)致力于為廣大信管從業(yè)人員、愛好者、大學生提供專業(yè)、高質(zhì)量的課程和服務,解決其考試證書、技能提升和就業(yè)的需求。
信管網(wǎng)軟考課程由信管網(wǎng)依托10年專業(yè)軟考教研傾力打造,官方教材參編作者和資深講師坐鎮(zhèn),通過深研歷年考試出題規(guī)律與考試大綱,深挖核心知識與高頻考點,為學員考試保駕護航。面授、直播&錄播,多種班型靈活學習,滿足不同學員考證需求,降低課程學習難度,使學習效果事半功倍。
發(fā)表評論 查看完整評論 | |