軟件設(shè)計(jì)的最終目標(biāo)是要取得最佳方案。
“最佳”是指在所有候選方案中,就節(jié)省開(kāi)發(fā)費(fèi)用,降低資源消耗,縮短開(kāi)發(fā)時(shí)間的條件,選擇能夠贏得較高的生產(chǎn)率、較高的可靠性和可維護(hù)性的方案。在整個(gè)設(shè)計(jì)的過(guò)程中,各個(gè)時(shí)期的設(shè)計(jì)結(jié)果需要經(jīng)過(guò)一系列的設(shè)計(jì)質(zhì)量的評(píng)審,以便及時(shí)發(fā)現(xiàn)和及時(shí)解決在軟件設(shè)計(jì)中出現(xiàn)的問(wèn)題,防止把問(wèn)題遺留到開(kāi)發(fā)的后期階段,造成后患。
概要設(shè)計(jì)的評(píng)審
軟件概要設(shè)計(jì)監(jiān)理的目的是對(duì)軟件概要設(shè)計(jì)有關(guān)內(nèi)容(重點(diǎn)是軟件的結(jié)構(gòu)、軟件的功能、軟件的結(jié)構(gòu)、接口設(shè)計(jì)、接口關(guān)系等)、概要設(shè)計(jì)過(guò)程、概要設(shè)計(jì)活動(dòng)、文檔格式進(jìn)行審查,確定承建單位提出的軟件總體結(jié)構(gòu)設(shè)計(jì)是否實(shí)現(xiàn)了軟件需求規(guī)格說(shuō)明的要求,確認(rèn)是否滿足要求;給出是否符合要求的結(jié)論;確定其可否作為軟件詳細(xì)設(shè)計(jì)的前提和依據(jù)。
檢查項(xiàng)
清晰性
1.是否所設(shè)計(jì)的架構(gòu),包括數(shù)據(jù)流,控制流和接口,被清楚地表達(dá)了?
2.是否所有的假設(shè)、約束、策略及依賴都被記錄在本文檔了?
3.是否定義了總體設(shè)計(jì)目標(biāo)?
完整性
4.是否所有的以前的TBD(待確定條目)都已經(jīng)被解決了?
5.是否設(shè)計(jì)已經(jīng)可以支持本文檔中遺留的TBD有可能帶來(lái)的變更?
6.是否所有的TBD的影響都已經(jīng)被評(píng)估了?
7.是否仍存在可能不可行的設(shè)計(jì)部分?
8.是否已記錄設(shè)計(jì)時(shí)的權(quán)衡考慮? 該文件是否包括了權(quán)衡選擇的標(biāo)準(zhǔn)和不選擇其它方案的原因?
依從性
9.是否遵守了項(xiàng)目的文檔編寫標(biāo)準(zhǔn)?
一致性
10.數(shù)據(jù)元素、流程和對(duì)象的命名和使用在整套系統(tǒng)和外部接口之間是否一致?
11.該設(shè)計(jì)是否反映了實(shí)際操作環(huán)境(硬件、軟件、支持軟件)?
可行性
12.從進(jìn)度、預(yù)算和技術(shù)角度上看該設(shè)計(jì)是否可行?
13.是否存在錯(cuò)誤的、缺少的或不完整的邏輯?
數(shù)據(jù)使用
14.所有復(fù)合數(shù)據(jù)元素、參數(shù)以及對(duì)象的概念是否都已文檔化?
15.是否還有任何需要的但還沒(méi)有定義的數(shù)據(jù)結(jié)構(gòu),反之亦然?
16.是否已描述最低級(jí)別數(shù)據(jù)元素?是否已詳細(xì)說(shuō)明取值范圍?
功能性
17.是否對(duì)每一下級(jí)模塊進(jìn)行了概要算法說(shuō)明?
18.所選擇的設(shè)計(jì)和算法能否滿足所有的需求?
接口
19.操作界面的設(shè)計(jì)是否有為用戶考慮(例如:詞匯、使用信息和進(jìn)入的簡(jiǎn)易)?
20.是否已描述界面的功能特性?
21.界面將有利于問(wèn)題解決嗎?
22.是否所有界面都互相一致,與其它模塊一致,以及和更高級(jí)別文檔中的需求一致?
23.是否所有的界面都提供了所要求的信息?
24.是否已說(shuō)明內(nèi)部各界面之間的關(guān)系?
25.界面的數(shù)量和復(fù)雜程度是否已減少到最小?
可維護(hù)性
26.該設(shè)計(jì)是否是模塊化的?
27.這些模塊具有高內(nèi)聚度和低耦合度?
28.是否已經(jīng)對(duì)繼承設(shè)計(jì)、代碼或先前選擇工具的使用進(jìn)行了詳細(xì)說(shuō)明?
性能
29.主要性能參數(shù)是否已被詳細(xì)說(shuō)明(例如:實(shí)時(shí)、速度要求、磁盤輸入/輸出接口等)?
可靠性
30.該設(shè)計(jì)能夠提供錯(cuò)誤檢測(cè)和恢復(fù)(例如:輸入輸出檢查)?
31.是否已考慮非正常情況?
32.是否所有的錯(cuò)誤情況都被完整和準(zhǔn)確地說(shuō)明?
33.該設(shè)計(jì)是否滿足該系統(tǒng)進(jìn)行集成時(shí)所遵守的約定?
易測(cè)性
34.是否能夠?qū)υ撎紫到y(tǒng)進(jìn)行測(cè)試、演示、分析或檢查來(lái)說(shuō)明它是滿足需求的?
該套系統(tǒng)是否能用增量型的方法來(lái)集成和測(cè)試?
可追溯性
35.是否各部分的設(shè)計(jì)都能追溯到需求說(shuō)明書的需求?
36.是否所有的設(shè)計(jì)決策都能追溯到原來(lái)確定的權(quán)衡因素?
37.所繼承設(shè)計(jì)的已知風(fēng)險(xiǎn)是否已確定和分析?
詳細(xì)設(shè)計(jì)的評(píng)審
軟件詳細(xì)設(shè)計(jì)監(jiān)理的目的是對(duì)軟件詳細(xì)設(shè)計(jì)有關(guān)內(nèi)容(重點(diǎn)是軟件的算法、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)類型、異常處理、計(jì)算效率等)、詳細(xì)設(shè)計(jì)過(guò)程、詳細(xì)設(shè)計(jì)活動(dòng)、文檔格式進(jìn)行審查,確定承建單位提出的軟件詳細(xì)設(shè)計(jì)內(nèi)容是否實(shí)現(xiàn)了軟件概要設(shè)計(jì)的要求,確認(rèn)是否滿足要求;給出是否符合要求的結(jié)論;確定其可否作為軟件編碼的前提和依據(jù)。
檢查項(xiàng)
清晰性
1.所有單元或過(guò)程的目的是否都已文檔化?
2.包括了數(shù)據(jù)流、控制流和接口的單元設(shè)計(jì)是否已清晰的說(shuō)明?
完整性
3.是否已定義和初始化所有的變量、指針和常量?
4.是否已描述單元的全部功能?
5.是否已詳細(xì)說(shuō)明用來(lái)實(shí)現(xiàn)該單元的關(guān)鍵算法(例如:用自然語(yǔ)言或PDL)?
6.是否已列出該單元的調(diào)用?
依從性
7.該文檔是否遵循了該項(xiàng)目已文檔化的標(biāo)準(zhǔn)?
8.是否采用了所要求的方法和工具來(lái)進(jìn)行單元設(shè)計(jì)?
一致性
9.數(shù)據(jù)元素的命名和使用在整個(gè)單元和單元接口之間是否一致?
10.所有接口的設(shè)計(jì)是否互相一致并且和更高級(jí)別文檔一致?
正確性
11.是否處理所有條件 (大于、等于、小于零、switch/case)?是否存在處理“case not found”的條件?
12.是否正確地規(guī)定了分支(邏輯沒(méi)有顛倒)?
數(shù)據(jù)使用
13.是否所有聲明的數(shù)據(jù)都被實(shí)際使用到?
14.是否所有該單元的數(shù)據(jù)結(jié)構(gòu)都被詳細(xì)說(shuō)明?
15.是否所有修改共享數(shù)據(jù)(或文件)的程序都考慮到了其它程序?qū)υ摴蚕頂?shù)據(jù)(或文件)的存取權(quán)限?
16.是否所有邏輯單元、時(shí)間標(biāo)志和同步標(biāo)志都被定義和初始化?
接口
17.接口參數(shù)在數(shù)量、類型和順序上是否匹配?
18.是否所有的輸入和輸出都被正確定義和檢查?
19.是否傳遞參數(shù)序列都被清晰的描述?
20.是否所有參數(shù)和控制標(biāo)志由已描述的單元傳遞或返回?
21.是否詳細(xì)說(shuō)明了參數(shù)的度量單位、取值范圍、正確度和精度?
22.共享數(shù)據(jù)區(qū)域及其存取規(guī)定的映射是否一致?
可維護(hù)性
23.單元是否具有高內(nèi)聚度和低耦合度(例如:對(duì)該單元的更改不會(huì)在該單元有任何無(wú)法預(yù)料的影響并對(duì)其它單元的影響很。
性能
24.是否該單元的所有約束例如過(guò)程時(shí)間和規(guī)模都被詳細(xì)說(shuō)明?
可靠性
25.初始化是否使用到缺省值,缺省值是否正確?
26.是否在內(nèi)存訪問(wèn)的時(shí)候執(zhí)行了邊界檢查(例如:數(shù)組、數(shù)據(jù)結(jié)構(gòu)、指針等)來(lái)確保只是改變了目標(biāo)存儲(chǔ)位置?
27.是否執(zhí)行輸入、輸出、接口和結(jié)果的錯(cuò)誤檢查?
28.是否對(duì)所有錯(cuò)誤情況都發(fā)出有意義的信息?
29.對(duì)特殊情況返回的代碼是否和已規(guī)定的全局定義的返回代碼相匹配?
30.是否考慮到意外事件?
易測(cè)性
31.是否能夠?qū)γ總(gè)單元進(jìn)行測(cè)試、演示、分析或檢查來(lái)說(shuō)明它們是滿足需求的。
32.該設(shè)計(jì)是否包含檢查點(diǎn)來(lái)幫助測(cè)試(例如:有條件的編譯代碼和數(shù)據(jù)聲明測(cè)試)?
33.是否所有的邏輯都能被測(cè)試?
34.是否已描述測(cè)試程序、測(cè)試數(shù)據(jù)集和測(cè)試結(jié)果?
可追溯性
35.是否設(shè)計(jì)的每一部分都能追溯到其它項(xiàng)目文檔的需求,也能追溯到更高級(jí)別文檔的需求?
36.是否所有的設(shè)計(jì)決定都能追溯到權(quán)衡考慮?
37.單元需求是否都能上溯到更高級(jí)別的文檔? 更高級(jí)別文檔的需求是否已經(jīng)在單元中體現(xiàn)?
設(shè)計(jì)監(jiān)理總則
軟件設(shè)計(jì)監(jiān)理的基本準(zhǔn)則包括: 審查提交的文檔是否齊全,審查文檔編制與描述工具是否符合規(guī)范。確定承辦單位提出的軟件總體結(jié)構(gòu)設(shè)計(jì)是否實(shí)現(xiàn)了軟件需求規(guī)格說(shuō)明的要求,評(píng)價(jià)軟件設(shè)計(jì)方案與數(shù)學(xué)模型的可行性,評(píng)價(jià)接口設(shè)計(jì)方案和運(yùn)行環(huán)境的適應(yīng)性,審查軟件集成測(cè)試計(jì)劃的合理性和完備性,審查數(shù)據(jù)庫(kù)設(shè)計(jì)的完備性和一致性。并確定該階段文檔能否作為詳細(xì)設(shè)計(jì)的依據(jù),決定可否轉(zhuǎn)入詳細(xì)設(shè)計(jì)階段。確認(rèn)軟件詳細(xì)設(shè)計(jì)文檔的內(nèi)容符合軟件編碼的要求。
設(shè)計(jì)階段中監(jiān)理單位要盡可能與業(yè)主單位協(xié)調(diào)配合工作,聽(tīng)取業(yè)主單位從業(yè)務(wù)角度出發(fā)提出的對(duì)開(kāi)發(fā)方設(shè)計(jì)的意見(jiàn)。監(jiān)理單位主要從文檔的規(guī)范性、可實(shí)施性出發(fā),以國(guó)家相關(guān)標(biāo)準(zhǔn)為依據(jù),從軟件工程學(xué)的角度對(duì)承建單位提出意見(jiàn)與建議,配合業(yè)主單位工作,敦促承建單位做好工程項(xiàng)目的設(shè)計(jì)工作。在設(shè)計(jì)階段,監(jiān)理單位主要針對(duì)需求的覆蓋性及可跟蹤性、模塊劃分的合理性、接口的清晰性、技術(shù)適用性、技術(shù)清晰度、可維護(hù)性、約束與需求的一致性、可測(cè)試性、對(duì)軟件設(shè)計(jì)的質(zhì)量特性的評(píng)估、對(duì)軟件設(shè)計(jì)的風(fēng)險(xiǎn)評(píng)估、對(duì)比情況、文檔格式的規(guī)范性等幾個(gè)方面進(jìn)行評(píng)審。在此過(guò)程中,業(yè)主單位也需要對(duì)設(shè)計(jì)文檔做檢查,主要在功能設(shè)計(jì)是否全面準(zhǔn)確地反映了需求、輸入項(xiàng)是否完全與正確并符合需求、輸出項(xiàng)是否符合需求、與外界的數(shù)據(jù)接口是否完全與正確并符合需求、各類編碼表是否完全與準(zhǔn)確并符合需求、界面設(shè)計(jì)是否符合需求、維護(hù)設(shè)計(jì)是否符合需求、各類數(shù)據(jù)表格式和內(nèi)容是否符合要求、是否存在其它有疑問(wèn)的設(shè)計(jì)等幾個(gè)方面進(jìn)行核查。
設(shè)計(jì)的評(píng)審內(nèi)容
(1) 可追溯性:即分析該軟件的系統(tǒng)結(jié)構(gòu)、子系統(tǒng)結(jié)構(gòu),確認(rèn)該軟件設(shè)計(jì)是否復(fù)蓋了所有已確定的軟件需求,軟件每一成分是否可追溯到某一項(xiàng)需求。
(2) 接口:即分析軟件各部分之間的聯(lián)系,確認(rèn)該軟件的內(nèi)部接口與外部接口是否已經(jīng)明確定義。模塊是否滿足高內(nèi)聚和低耦合的要求。模塊作用范圍是否在其控制范圍之內(nèi)。
(3) 風(fēng)險(xiǎn):即確認(rèn)該軟件設(shè)計(jì)在現(xiàn)有技術(shù)條件下和預(yù)算范圍內(nèi)是否能按時(shí)實(shí)現(xiàn)。
(4) 實(shí)用性:即確認(rèn)該軟件設(shè)計(jì)對(duì)于需求的解決方案是否實(shí)用。
(5) 技術(shù)清晰度:即確認(rèn)該軟件設(shè)計(jì)是否以一種易于翻譯成代碼的形式表達(dá)。
(6) 可維護(hù)性:從軟件維護(hù)的角度出發(fā),確認(rèn)該軟件設(shè)計(jì)是否考慮了方便未來(lái)的維護(hù)。
(7) 質(zhì)量:即確認(rèn)該軟件設(shè)計(jì)是否表現(xiàn)出良好的質(zhì)量特征。
(8) 各種選擇方案:看是否考慮過(guò)其它方案,比較各種選擇方案的標(biāo)準(zhǔn)是什么。
(9) 限制:評(píng)估對(duì)該軟件的限制是否現(xiàn)實(shí),是否與需求一致。
(10) 其它具體問(wèn)題:對(duì)于文檔、可測(cè)試性、設(shè)計(jì)過(guò)程,……,等等進(jìn)行評(píng)估。
在這里需要特別注意:軟件系統(tǒng)的一些外部特性的設(shè)計(jì),例如軟件的功能、一部分性能、以及用戶的使用特性等,在軟件需求分析階段就已經(jīng)開(kāi)始。這些問(wèn)題的解決,多少帶有一些“怎么做”的性質(zhì),因此有人稱之為軟件的外部設(shè)計(jì)。
McGlanghlin給出在將需求轉(zhuǎn)換為設(shè)計(jì)時(shí)判斷設(shè)計(jì)好壞的三條特征:
① 設(shè)計(jì)必須實(shí)現(xiàn)分析模型中描述的所有顯式需求,必須滿足用戶希望的所有隱式需求。
② 設(shè)計(jì)必須是可讀、可理解的,使得將來(lái)易于編程、易于測(cè)試、易于維護(hù)。
③ 設(shè)計(jì)應(yīng)從實(shí)現(xiàn)角度出發(fā),給出與數(shù)據(jù)、功能、行為相關(guān)的軟件全貌。
以上三點(diǎn)就是軟件設(shè)計(jì)過(guò)程的目標(biāo)。為達(dá)到這些目標(biāo),必須建立衡量設(shè)計(jì)的技術(shù)標(biāo)準(zhǔn)。
① 設(shè)計(jì)出來(lái)的結(jié)構(gòu)應(yīng)是分層結(jié)構(gòu),從而建立軟件成份之間的控制。
② 設(shè)計(jì)應(yīng)當(dāng)模塊化,從邏輯上將軟件劃分為完成特定功能或子功能的構(gòu)件。
③ 設(shè)計(jì)應(yīng)當(dāng)既包含數(shù)據(jù)抽象,也包含過(guò)程抽象。
④ 設(shè)計(jì)應(yīng)當(dāng)建立具有具有獨(dú)立功能特征的模塊。
⑤ 設(shè)計(jì)應(yīng)當(dāng)建立能夠降低模塊與外部環(huán)境之間復(fù)雜連接的接口。
⑥ 設(shè)計(jì)應(yīng)能根據(jù)軟件需求分析獲取的信息,建立可驅(qū)動(dòng)可重復(fù)的方法。
軟件設(shè)計(jì)過(guò)程根據(jù)基本的設(shè)計(jì)原則,使用系統(tǒng)化的方法和完全的的設(shè)計(jì)評(píng)審來(lái)建立良好的設(shè)計(jì)。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:概要設(shè)計(jì)詳細(xì)設(shè)計(jì)階段的監(jiān)理