国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于結(jié)構(gòu)化方法編寫軟件設計說明

2022-07-07 12:42陳麗于霞李曉利余俊
電子技術與軟件工程 2022年5期
關鍵詞:設計說明體系結(jié)構(gòu)章節(jié)

陳麗 于霞 李曉利 余俊

(1.中國人民解放軍63892部隊 河南省洛陽市 471003 2.中國兵器工業(yè)導航與控制技術研究所 北京市 100000)

1 引言

軟件設計是從軟件需求出發(fā),根據(jù)需求分析階段確定的能力需求設計軟件系統(tǒng)的整體架構(gòu)、功能模塊劃分、接口設計以及模塊實現(xiàn)的算法和數(shù)據(jù)結(jié)構(gòu)要求。如果說軟件需求階段編寫的軟件需求規(guī)格說明文檔記錄了軟件系統(tǒng)要“做什么”,那么在軟件設計階段就要明確軟件系統(tǒng)“如何做”才能滿足需求。軟件設計階段的輸出是軟件設計說明文檔。如果說用戶對你編寫的軟件需求規(guī)格說明文檔還能看懂“你在說什么,說的全不全,對不對”的話,到了編寫軟件設計說明時,部分用戶就已經(jīng)看不懂你編寫的軟件設計說明文檔是否滿足相關要求了。加上很多軟件設計說明是軟件編碼人員負責編寫的,標準如何要求,如何把軟件實現(xiàn)過程文檔化,也是很多軟件設計說明文檔編寫人員比較頭疼的問題。

為了幫助用戶讀懂軟件設計說明,也為了幫助軟件設計說明編寫者更好地落實標準要求,本文針對GJB438B-2009《軍用軟件開發(fā)文檔通用要求》中關于軟件設計說明文檔的要求,詳細闡述如何編寫軟件設計說明文檔中的重要章節(jié)。

2 編寫軟件設計說明

軟件設計說明文檔中的主要章節(jié)和常出現(xiàn)問題的章節(jié)內(nèi)容有設計決策、體系結(jié)構(gòu)設計、執(zhí)行方案、接口設計和詳細設計等。本節(jié)基于結(jié)構(gòu)化方法分別對以上內(nèi)容如何編寫進行詳細闡述。

2.1 CSCI級設計決策

在GJB438B中,要求本章需分條給出軟件的CSCI級設計決策。所謂CSCI設計決策,應是從其行為方面進行設計的決策,或者對其他影響組成該CSCI的軟件單位的選擇并進行設計的決策。如果在需求中已經(jīng)明確了這些決策,或者有些決策需要推遲到軟件單元設計時指出,那么,應在本章節(jié)相應位置明確加以敘述。此外,若是這些決策依賴于系統(tǒng)的狀態(tài)或者方式,則應該指明它們的依賴性。

顧名思義,“決策”就是要寫那些指導軟件設計的頂層思路。也就是說,在進行決策時,應忽略CSCI內(nèi)部的實現(xiàn),站在用戶的角度,詳細描述系統(tǒng)運轉(zhuǎn)時所要采用的方式方法,同時,還要說明影響CSCI軟件單元的選擇、設計的決策。根據(jù)標準要求,通常從以下幾方面進行闡述:

CSCI將接收的輸入和將產(chǎn)生的輸出的設計決策。這個決策主要以CSCI為研究對象,描述外部環(huán)境對CSCI的影響,如其他系統(tǒng)、HWCI、CSCI和用戶的接口等對本CSCI的輸入和輸出。有時,上述信息可能會在接口設計說明中給出全部或者部分的說明,這種情況下,可以直接引用接口設計說明文檔即可。

CSCI對每一個輸入或者條件的行為設計決策作出響應。決策關注的主要是CSCI的內(nèi)部響應行為設計決策,主要包括內(nèi)容有:針對每個輸入或條件CSCI要執(zhí)行的動作、響應的時間,及其他性能特性,選定的方程/算法/規(guī)則,模型化的物理系統(tǒng)的說明,以及CSCI對不允許的輸入或條件需要進行的處理等。

CSCI數(shù)據(jù)顯示的設計決策。這個決策主要關注CSCI的數(shù)據(jù)庫或數(shù)據(jù)文件如何呈現(xiàn)給用戶的,如用文字、圖像、符號、表格、編輯框等。當上述信息在數(shù)據(jù)庫設計說明中給出全部或部分的說明時,此處可以不必贅述,直接引用數(shù)據(jù)庫設計說明文檔即可。

CSCI安全性和保密性設計決策。這個決策主要從軟件為了滿足安全性和保密性要求而考慮將采取哪些措施選擇哪些方法。如對輸入信息進行合法性檢查、防止信息誤刪除、數(shù)據(jù)庫訪問權限控制、數(shù)據(jù)傳輸?shù)募用芴幚淼却胧?/p>

其他CSCI設計決策。這個決策是除了上述分類說明的決策以外可能還有其他決策,應在此處說明。如軟件靈活性設計決策、可用性和可維護性設計決策等。為了確保軟件的靈活性需求,通常采用模塊化的設計決策,易于擴展和使用維護。

該章節(jié)設計決策應與軟件需求規(guī)格說明中明確的相關內(nèi)容相一致。如果在軟件需求規(guī)格說明中明確了保密性和安全性需求,那么在設計說明的本章節(jié)就要考慮如何落實這些需求,首先在設計決策上要進行考慮,然后指導后續(xù)的設計實現(xiàn)。

2.2 CSCI體系結(jié)構(gòu)設計

GJB438B標準規(guī)定該章節(jié)應對CSCI體系結(jié)構(gòu)設計進行分條描述。若是設計的全部或部分與系統(tǒng)的狀態(tài)或方式存在依賴關系,應在文檔中明確說明。而且如果有其他設計約定,在此處應明確說明或進行引用。

體系結(jié)構(gòu)設計也稱“架構(gòu)設計”,是從高層抽象的角度刻畫組成CSCI的部件以及它們之間的邏輯關聯(lián)?;诮Y(jié)構(gòu)化方法設計CSCI的體系結(jié)構(gòu)是采用分層和部件的形式的表示。通常體系結(jié)構(gòu)分層有三層:用戶界面層、業(yè)務邏輯層、底層支撐層(也可稱為“設備驅(qū)動層”),如圖1所示。每一層包含若干CSCI的部件。分小節(jié)描述每個部件的用途、開發(fā)狀態(tài)、分配的需求和設計決策、分配的計算機資源等信息。標識每個部件的軟件放置在哪個程序庫中。

圖1:體系結(jié)構(gòu)示意圖

本節(jié)主要從靜態(tài)角度刻畫CSCI的體系結(jié)構(gòu)和組成部件,下一節(jié)從動態(tài)角度進一步闡述每個部件的運行關系。

2.3 部件設計

本小節(jié)是上一節(jié)體系結(jié)構(gòu)設計中的一個小章節(jié)。之所以將其獨立成小節(jié),是因為該節(jié)在體系結(jié)構(gòu)設計章節(jié)的地位很重要,是CSCI體系結(jié)構(gòu)設計章節(jié)的主體內(nèi)容。

本節(jié)中需要對組成CSCI的所有軟件單元進行明確的描述,并對明確的軟件單位賦予一個項目唯一的標識符。此外,還需要說明軟件單元的靜態(tài)關系,如它們由哪些單元組成的。也要對軟件單元的用途進行逐個說明,并指明與之相關的CSCI需求、CSCI級設計決策。另外,每個軟件單元的開發(fā)狀態(tài)或是類型,比如新研、重用還是改進,也應一并說明。說明CSCI中每個軟件單元計劃使用的計算機硬件資源,如處理機能力、內(nèi)存能力、輸入輸出設備能力、輔助存儲能力等。這些說明應該覆蓋在CSCI的資源使用需求中、軟件開發(fā)計劃的資源使用策劃中、以及影響該CSCI的系統(tǒng)級資源分配中等方面包含的全部的計算機硬件資源。若是在某一部分已經(jīng)給出了針對指定計算機硬件資源所有使用數(shù)據(jù),那么,在本節(jié)就可以直接引用。

在上一小節(jié)中我們重點介紹了體系架構(gòu)設計,本小節(jié)詳細介紹組成體系架構(gòu)的元素,即組件或部件的設計方法。我們都知道部件是由單元組成,單元可以由更小的單元組成。在概要設計過程中,應盡早明確誰是配置項,誰是部件,誰是單元,然后按照這樣的粒度進行后續(xù)的設計。

根據(jù)標準要求對部件進行設計,首先要唯一標識部件,并說明部件的用途。然后根據(jù)前面的設計,如決策設計、資源設計等,將這些設計分配到部件設計中。說明哪些部件應滿足哪些設計決策,所需的計算機資源有哪些。以及這些部件將分配到哪個程序文件中。

在具體實現(xiàn)方式上,我們通常采用結(jié)構(gòu)圖(如圖2所示)加屬性表格的形式對其進行表述。

圖2:CSCI的部件組成示意圖

2.4 執(zhí)行方案

GJB438標準要求在“執(zhí)行方案”小節(jié)中應該對軟件單元間的執(zhí)行方案進行說明,可運用語言描述或者采用圖表來說明軟件單元之間的動態(tài)關系。所謂動態(tài)關系,指的是在CSCI運行期間,軟件單元之間的相互作用的情況。結(jié)構(gòu)化的執(zhí)行方案表示方法通常采用執(zhí)行控制流程、數(shù)據(jù)流,面向?qū)ο蟮谋硎痉椒ㄍǔ2捎脮r序圖、動態(tài)控制序列,用以說明單元間的中斷處理、優(yōu)先關系、時序或排序關系、并發(fā)執(zhí)行、例外處理、對象/進程/任務的動態(tài)創(chuàng)建或者刪除、動態(tài)分配與去除分配,以及動態(tài)行為的其他方面等。

根據(jù)標準要求本節(jié)詳細說明CSCI軟件單元間的執(zhí)行方案。因為軟件單元的粒度是不確定的,一個功能需求可以稱為一個部件也可以稱為一個單元,因此在實際編寫過程中,為了充分說明CSCI的運行過程,通常分為兩個層次來說明執(zhí)行方案:部件間執(zhí)行方案和部件內(nèi)執(zhí)行方案。

為了說明軟件部件間和軟件部件內(nèi)的相互作用,結(jié)構(gòu)化的方法通常采用流程圖(如圖3所示)和數(shù)據(jù)流圖(如圖4所示)的形式加以描述。描述的要素主要有:名稱和標識、功能描述、輸入輸出、行為處理、性能參數(shù)、異常處理、優(yōu)先級順序等。此外如果部件與人機界面有關,還應增加人機界面示意圖。

圖3:流程圖示意圖

圖4:數(shù)據(jù)流圖示意圖

2.5 接口設計

在GJB438B中關于接口的要求都是一樣的,無論是在需求規(guī)格說明文檔還是在設計說明文檔中。唯一區(qū)別是落實標準要求時,在需求規(guī)格說明中應重點闡述外部接口特性,在軟件設計說明中要重點描述內(nèi)部接口特性,因為在軟件設計階段,關注的內(nèi)容就是軟件自身是如何實現(xiàn)的。

本節(jié)中,應對每個接口賦予項目唯一的標識符,可以通過編號、名稱、版本以及文檔引用等要素來標識接口實體。接口標識應該能夠?qū)δ男嶓w具有固定的接口特性進行說明,也就是需要將接口需求分配給接口實體;也應說明哪些實體正在修改或是開發(fā),以此對接口需求分配進行明確。

接口設計分為外部接口和內(nèi)部接口。外部接口在需求規(guī)格說明中已詳細描述,在此處可以將其拷貝過來,或者再簡要描述一下外部接口實體和傳遞的信息。在描述內(nèi)部接口時也應詳細描述以下要素:接口類型、接口通信方法、接口協(xié)議、接口傳遞信息的數(shù)據(jù)和數(shù)據(jù)組合體,明確數(shù)據(jù)傳輸?shù)男旁春托潘蕖?/p>

接口的表示方式有接口圖(如圖5)和接口表(如表1)。

圖5:內(nèi)部接口的示意圖

表1:一種接口詳細信息示例表

原總裝軟件工程規(guī)范中將軟件設計分為概要設計說明和詳細設計說明,而GJB438B中只有軟件設計說明。但是大家通常這么認為,軟件設計說明到此處為止,以上內(nèi)容屬軟件概要設計,如果甲方要求寫軟件概要設計說明,但是沒有提供具體模板時,可以將軟件設計說明中的詳細設計章節(jié)刪除算作軟件概要設計說明。但是從一份文檔的完整性上來講,如果對GJB438B中軟件設計說明文檔進行了裁剪,而且裁剪的是技術內(nèi)容時,就不能說裁剪后的文檔仍然是遵循了GJB438B的標準規(guī)范。

2.6 CSCI詳細設計

在軟件工程領域要求“三分離”:需求、設計、實現(xiàn)三分離,如果將設計人員與實現(xiàn)人員進行分離,那么本節(jié)內(nèi)容就尤為重要了。本節(jié)詳細設計是直接指導軟件編碼實現(xiàn)的重要依據(jù)。

標準中要求本節(jié)應通過項目唯一標識符來標識軟件單元,并對軟件單元進行說明。說明的主要內(nèi)容有:軟件單元設計決策,比如使用的算法;軟件單元設計中的任務約束、有關限定,或是非常規(guī)的特征;若是軟件單元使用的編程語言與之前明確的不一致,需要給出說明,并給出使用的理由;要對軟件軟件單元包含的過程性命令進行說明或是列出組成過程性的命令組;當軟件單元包含、接收或是輸出數(shù)據(jù)時,應需要對其輸入輸出、數(shù)據(jù)元素組合體或是數(shù)據(jù)元素進行說明。軟件單元的輸入數(shù)據(jù)、輸出數(shù)據(jù)應該與局部數(shù)據(jù)分開進行描述。若是軟件單元是一個數(shù)據(jù)庫,則應該引用對應的數(shù)據(jù)庫設計說明;當軟件單元包含邏輯時,需要對該軟件單元所用到的邏輯給出說明。

詳細設計關注的是軟件單元間和單元內(nèi)部的具體實現(xiàn),是對體系結(jié)構(gòu)設計的進一步細化和精化,是軟件設計的最后一個環(huán)節(jié)。在這個章節(jié)中要求關注的要素主要有:軟件單元的名稱和標識、單元功能描述、輸入輸出、內(nèi)部函數(shù)、局部變量、數(shù)據(jù)結(jié)構(gòu)、處理流程、行為參數(shù)、異常處理等。

軟件單元的詳細設計粒度應具體到函數(shù)層級。詳細說明軟件單元由哪些函數(shù)組成,函數(shù)的參數(shù)有哪些,參數(shù)的返回值是什么類型,函數(shù)需要的全局數(shù)據(jù)或局部數(shù)據(jù)有哪些等等。此外,還包括函數(shù)的異常情況,即異常分支也應在此考慮。前面設計的性能指標,尤其是安全性、可靠性、保密性等非功能指標,在軟件單位的詳細設計中應重點考慮。因為如果此時不注意這些指標對設計的影響,那么這些問題都將在最后軟件進行軟件測試時暴露無疑,而且這種軟件問題在軟件編碼完成后再進行修改,影響域是很大的。很多時候還出現(xiàn)越改越亂的情況。

采用結(jié)構(gòu)化方法描述單元的詳細設計時通常采用“一表加兩圖”的形式:用表格描述各個要素,用流程圖和數(shù)據(jù)流圖描述動態(tài)關系。

3 結(jié)束語

本文重點對GJB438B的《軟件設計說明》文檔中重要的和常出現(xiàn)問題的章節(jié)如何編寫進行了詳細分析,筆者結(jié)合多年文檔審核經(jīng)驗和編寫經(jīng)驗,指明了在依據(jù)標準要求進行編寫時應注意的方面,給出了如何落實標準要求的具體的示例。

編寫軟件設計說明可以采用結(jié)構(gòu)化的方法來寫,也可以采用面向?qū)ο蟮姆椒▉韺懀瑢η度胧杰浖虵PGA軟件通常采用結(jié)構(gòu)化的描述方法會多些,其他軟件采用結(jié)構(gòu)化或面向?qū)ο蟮姆椒ǘ急容^多。這兩種方法各有優(yōu)點:結(jié)構(gòu)化方法描述簡單,容易上手,比較好理解,符合逐步細化的設計思路。面向?qū)ο蠓椒ㄒ笥幸欢ǖ腢ML基礎,采用類和對象的描述方式進行設計,易于組件封裝和重用。本文主要闡述了結(jié)構(gòu)化的方法,后續(xù)將闡述如何用面向?qū)ο蟮姆椒ň帉戃浖O計說明。

猜你喜歡
設計說明體系結(jié)構(gòu)章節(jié)
參加2018年江西省圖書館新館館徽(LOGO)設計
Unit6 I’m going to study computer science.Section A 1a—1c
高中數(shù)學章節(jié)易錯點提前干預的策略研究
素養(yǎng)之下,美在引言——《“推理與證明”章節(jié)引言》一節(jié)比賽課的實錄
“次氯酸分解的數(shù)字化實驗”設計說明
Unit 4 Making the newsReading
基于粒計算的武器裝備體系結(jié)構(gòu)超網(wǎng)絡模型
作戰(zhàn)體系結(jié)構(gòu)穩(wěn)定性突變分析
基于DODAF的裝備體系結(jié)構(gòu)設計
黃廖本《現(xiàn)代漢語》詞匯章節(jié)中的幾個問題
绥滨县| 沐川县| 深泽县| 克拉玛依市| 新竹县| 若尔盖县| 洪湖市| 新民市| 罗江县| 东乌珠穆沁旗| 滦南县| 平度市| 油尖旺区| 北安市| 蓬莱市| 济南市| 梅州市| 崇州市| 琼结县| 临漳县| 伽师县| 禄劝| 报价| 乌苏市| 北海市| 竹溪县| 吕梁市| 大姚县| 莱阳市| 汽车| 都匀市| 偏关县| 云安县| 峨山| 琼中| 兴城市| 攀枝花市| 鄂托克旗| 准格尔旗| 任丘市| 眉山市|