王瑩
摘要:針對(duì)科研院所軟件研制過程中存在大量重復(fù)開發(fā)問題,分析了軟件復(fù)用方法在軟件研制過程中實(shí)施的難點(diǎn),同時(shí)提出了在GJB5000A框架下對(duì)軟件復(fù)用過程進(jìn)行定義及組織實(shí)施的方法,為拓展科研院所的軟件研制過程管理提出了新的思路。
關(guān)鍵詞:軟件復(fù)用;GJB5000A;軟件質(zhì)量管理
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2015)12-0096-02
On the Methods of Software Reuse Based on GJB5000A Framework
WANG Ying
(China Electronics Technology Group Corporation No.20 Research Institute Xian 710068,China)
Abstract: In view of the existing problems in the process of repeated development of software development in scientific research institute, analyzes the difficulties in the process of implementing software reuse method of military software development process, and puts forward the definition and method of organization and implementation of software reuse process under the framework of GJB5000A, put forward new ideas for the development of software development process management.
Key words: software reuse; GJB5000A; software quality management
隨著以國(guó)際航電系統(tǒng)為代表的軟件規(guī)模突破一千萬行,大規(guī)模軟件研制已經(jīng)迎來了爆炸式增長(zhǎng)的時(shí)代,大規(guī)模的應(yīng)用使得軟件結(jié)構(gòu)越來越復(fù)雜,開發(fā)周期變長(zhǎng)。在科研院所中如果所有的軟件項(xiàng)目都采取傳統(tǒng)的方式研制,就可能出現(xiàn)耗費(fèi)大量的時(shí)間和人力在較低水平重復(fù)上,難于保證如期交付。為了縮短研制周期,開發(fā)人員自發(fā)但無序的使用相類似軟件文檔、部件、代碼等的情況屢屢出現(xiàn),這種做法給軟件研制帶來了極大的質(zhì)量風(fēng)險(xiǎn),未經(jīng)認(rèn)真評(píng)估的應(yīng)用差異和軟件環(huán)境會(huì)給軟件研制帶來難以估量的安全性、可靠性隱患。所以,在GJB5000A過程管理框架下以組織的角度對(duì)軟件復(fù)用進(jìn)行過程定義,科學(xué)有效的利用軟件復(fù)用技術(shù),幫助項(xiàng)目組充分利用已有資源、避免重復(fù)勞動(dòng)、提高生產(chǎn)效率和軟件質(zhì)量就顯得尤為必要。
1 科研院所軟件復(fù)用的現(xiàn)狀與難點(diǎn)
1.1 關(guān)于軟件復(fù)用
軟件復(fù)用是一種以已有工作為基礎(chǔ), 充分利用過去應(yīng)用系統(tǒng)開發(fā)中積累的經(jīng)驗(yàn),將開發(fā)焦點(diǎn)集中在當(dāng)前應(yīng)用系統(tǒng)的特性部分的一種開發(fā)方式,這種開發(fā)方式使軟件開發(fā)過程不再?gòu)牧汩_始,而是在充分評(píng)估新舊軟件需求的基礎(chǔ)上,對(duì)軟件生產(chǎn)過程中所有可用勞動(dòng)成果的復(fù)用,復(fù)用范圍不僅僅局限于軟件代碼,還可以包含軟件開發(fā)計(jì)劃、需求分析、設(shè)計(jì)文檔、測(cè)試用例等。復(fù)用方式包括黑盒復(fù)用(源代碼不可得而不對(duì)軟件進(jìn)行修改)、玻璃盒復(fù)用(源碼可得且不對(duì)軟件進(jìn)行修改)、灰盒復(fù)用(源碼進(jìn)行少量修改)和白盒復(fù)用(在原設(shè)計(jì)基礎(chǔ)上對(duì)軟件進(jìn)行變更)。復(fù)用層次可以分為代碼復(fù)用、設(shè)計(jì)與分析復(fù)用、測(cè)試用例及測(cè)試信息復(fù)用等。復(fù)用關(guān)鍵技術(shù)包括軟件構(gòu)件技術(shù)、軟件架構(gòu)技術(shù)、軟件再工程、領(lǐng)域工程、開發(fā)系統(tǒng)技術(shù)及本文著重關(guān)注的以GJB5000A為框架的軟件過程技術(shù)等。
1.2 軟件復(fù)用技術(shù)應(yīng)用在科研院所軟件研制過程中的現(xiàn)狀與難點(diǎn)
科研院所軟件研制過程一般要比商用軟件研制有更多的約束,自2005年開始在GJB5000系列標(biāo)準(zhǔn)的約束下進(jìn)行軟件研制過程管理在科研院所中被廣泛推行,目前,通過GJB5000A相應(yīng)級(jí)別的能力評(píng)價(jià)是承研相應(yīng)級(jí)別軟件項(xiàng)目的必要條件。
GJB5000A共定義了五個(gè)級(jí)別的22個(gè)過程域,用預(yù)先確定的過程域來定義組織的改進(jìn)路徑。當(dāng)組織滿足了一組過程域中全部目標(biāo)后則可被判定為達(dá)到了某個(gè)特定過程域。目前通過GJB5000A軟件成熟度能力評(píng)價(jià)的科研院所最高級(jí)別到達(dá)三級(jí)(已定義級(jí))水平,大部分單位還停留在二級(jí)(已管理級(jí))水平上,即僅能確保其過程能按照方針進(jìn)行策劃并得到執(zhí)行。這種管理級(jí)別下的軟件復(fù)用缺少組織的參與,沒有足夠及可靠的復(fù)用庫(kù)供項(xiàng)目選擇,所以軟件復(fù)用行為更多的體現(xiàn)的是僅與某個(gè)項(xiàng)目組或者某個(gè)設(shè)計(jì)師相關(guān)的單個(gè)行為,主要表現(xiàn)在設(shè)計(jì)師個(gè)人能復(fù)用自身的設(shè)計(jì)模塊,其他設(shè)計(jì)師無法復(fù)用,或者需求基本上沒有變化的兩個(gè)項(xiàng)目間有可能實(shí)現(xiàn)復(fù)用,有需求變化的軟件無法實(shí)現(xiàn)復(fù)用。
此外,過程管理方法也給復(fù)用帶來了極大的障礙。一方面,在過去的管理習(xí)慣中,復(fù)用的部分很難計(jì)算工作量,甚至不計(jì)算工作量,而且在沒有配套構(gòu)件庫(kù)的情況下,有需求的復(fù)用者只能在已有的項(xiàng)目中尋找自己需要的可用構(gòu)件,這個(gè)識(shí)別和判斷過程的效率可能比重新策劃、編制的還要低,使得設(shè)計(jì)人員不愿意使用復(fù)用方法;另一方面,所有可復(fù)用部分都是無償提供給其他項(xiàng)目使用的,這使得軟件研制人員在設(shè)計(jì)過程中考慮構(gòu)造通用模塊或者可重用構(gòu)件的積極性不高。所以,只有在過程管理上對(duì)復(fù)用建立起過程定義、在政策上鼓勵(lì)復(fù)用方法、在培訓(xùn)方面提升復(fù)用技術(shù)教育、才有可能有效推廣復(fù)用技術(shù)。
2 GJB5000A質(zhì)量管理體系下的軟件復(fù)用
2.1 軟件復(fù)用的過程定義
任何一個(gè)軟件項(xiàng)目,無論是基于系統(tǒng)開發(fā)或者是構(gòu)件開發(fā)都要經(jīng)歷軟件生命周期中的相關(guān)步驟,這些步驟放在GJB5000A質(zhì)量管理體系的框架下觀察,都可以看做是有標(biāo)準(zhǔn)的、可重復(fù)的、可持續(xù)改進(jìn)的過程,組織應(yīng)分級(jí)別定義軟件復(fù)用過程,二級(jí)過程域管理應(yīng)側(cè)重復(fù)用過程的流程定義,三級(jí)過程域管理應(yīng)建立起從構(gòu)建開發(fā)到系統(tǒng)集成全過程的規(guī)程和準(zhǔn)則。在項(xiàng)目執(zhí)行過程中,已納入二級(jí)管理的項(xiàng)目可以在相類似的項(xiàng)目中橫向進(jìn)行需求分析后定義復(fù)用構(gòu)件,已納入三級(jí)管理的項(xiàng)目則可以充分對(duì)組織已定義的標(biāo)準(zhǔn)過程進(jìn)行剪裁后實(shí)施復(fù)用。
2.2 組織級(jí)過程域定義與實(shí)施
2.2.1 組織過程定義(OPD)與組織過程焦點(diǎn)(OPF)
軟件復(fù)用方法在實(shí)現(xiàn)這兩個(gè)過程域的目標(biāo)時(shí)應(yīng)在建立起與復(fù)用相關(guān)的標(biāo)準(zhǔn)過程,同時(shí)定義好對(duì)標(biāo)準(zhǔn)過程的剪裁方法,如復(fù)用時(shí)的估算方法和模板、評(píng)審級(jí)別定義、測(cè)量項(xiàng)與測(cè)量目標(biāo)、標(biāo)準(zhǔn)工作環(huán)境;為項(xiàng)目組定義復(fù)用方法下可選擇的生命周期模型;建立軟件復(fù)用組織資產(chǎn)庫(kù),并為資產(chǎn)庫(kù)提供目錄和檢索方法,制定對(duì)復(fù)用組織資產(chǎn)的維護(hù)、修訂過程,制定項(xiàng)目使用復(fù)用資產(chǎn)庫(kù)的約束和規(guī)則,制定鼓勵(lì)項(xiàng)目組豐富、更改庫(kù)內(nèi)容的相關(guān)條款。
2. 2.2 需求開發(fā)(RD)
需求開發(fā)的目的在于產(chǎn)生并分析顧客、產(chǎn)品和產(chǎn)品部件的需求。為引出顧客需求,組織可以建立《需求調(diào)研單》等相關(guān)工具充分了解相關(guān)需求,尋找可復(fù)用機(jī)會(huì),有復(fù)用可能時(shí)建立《需求比對(duì)表》,內(nèi)容至少包括需求項(xiàng)、功能、性能、接口、約束、環(huán)境等關(guān)鍵內(nèi)容,甄別篩選可復(fù)用構(gòu)件,并將其按優(yōu)先級(jí)排序后,初步確定復(fù)用方案和新研方案,形成《用戶需求列表》和《用戶需求規(guī)格說明書》。其次,建立起產(chǎn)品和產(chǎn)品構(gòu)件需求,著重關(guān)注內(nèi)部接口關(guān)系,構(gòu)件間的跟蹤關(guān)系等,同時(shí)對(duì)需求進(jìn)行最終確認(rèn),這個(gè)步驟基本確定了復(fù)用度和復(fù)用方式。組織級(jí)可以根據(jù)軟件關(guān)鍵性等級(jí)區(qū)分復(fù)用方式,如沒有任何更改的項(xiàng)目可以完全復(fù)用,存在文檔或者接口更改的項(xiàng)目應(yīng)依據(jù)其關(guān)鍵性等級(jí)和軟件更改的程度定義復(fù)用方式等。
2.2.3 其他相關(guān)過程域
軟件開發(fā)組織還應(yīng)定義好與軟件復(fù)用技術(shù)培訓(xùn)相關(guān)的組織培訓(xùn)(OT),將軟件復(fù)用技術(shù)納入技能培訓(xùn)課程計(jì)劃;定義與貢獻(xiàn)復(fù)用組織資產(chǎn)庫(kù)的集成項(xiàng)目管理(IPM);定義復(fù)用方法解決方案和評(píng)價(jià)準(zhǔn)則的技術(shù)解決方案(TS)等系列相關(guān)過程域。
2.3 項(xiàng)目級(jí)軟件復(fù)用實(shí)施
2.3.1 軟件項(xiàng)目復(fù)用可行性評(píng)估
評(píng)估在項(xiàng)目的系統(tǒng)分析與設(shè)計(jì)或早期策劃階段進(jìn)行,主要對(duì)項(xiàng)目的需求和組織資產(chǎn)庫(kù)中的可復(fù)用構(gòu)件的需求進(jìn)行分析,形成《軟件復(fù)用可行性評(píng)估報(bào)告》。主要實(shí)施步驟如下:
1) 分析《軟件研制任務(wù)書》需求,通過和顧客交流進(jìn)行需求確認(rèn),形成需求列表,根據(jù)需求內(nèi)容識(shí)別復(fù)用機(jī)會(huì)。將項(xiàng)目按照CSCI為單位進(jìn)行初步分解,依據(jù)《需求對(duì)比表》確定復(fù)用類型。
2) 黑盒或者玻璃盒復(fù)用被確認(rèn)后直接進(jìn)入下一步的復(fù)用流程?;液谢蛘呤前缀袕?fù)用則應(yīng)進(jìn)一步區(qū)分復(fù)用層次是文檔的修改(不涉及需求和設(shè)計(jì)文檔)或者是代碼更改。形成《復(fù)用構(gòu)件評(píng)估表》,內(nèi)容包含接口類型、算法、模型等內(nèi)容的比對(duì)。結(jié)合軟件關(guān)鍵性等級(jí),評(píng)估產(chǎn)生變更的有效代碼行占復(fù)用軟件的比例。
3) 提交《軟件復(fù)用可行性評(píng)估報(bào)告》進(jìn)行評(píng)審,評(píng)審應(yīng)最終確定項(xiàng)目的哪些CSCI(部分或全部)可采取組織資產(chǎn)庫(kù)中的哪個(gè)構(gòu)件進(jìn)行復(fù)用。
2.3.2. 復(fù)用的開發(fā)過程策劃
通過可行性評(píng)估,經(jīng)評(píng)審?fù)膺M(jìn)行復(fù)用的項(xiàng)目應(yīng)依據(jù)GJB5000A軟件策劃過程域的要求對(duì)復(fù)用部分進(jìn)行策劃,策劃內(nèi)容包括:定義生命周期模型(白盒、玻璃盒復(fù)用不適用)、項(xiàng)目估算、確定項(xiàng)目資源、編制進(jìn)度表、制定數(shù)據(jù)管理計(jì)劃、利益相關(guān)方參與計(jì)劃、風(fēng)險(xiǎn)管理計(jì)劃、測(cè)量分析計(jì)劃等內(nèi)容。
著重要對(duì)配置管理和質(zhì)量保證進(jìn)行詳細(xì)策劃,其中要對(duì)復(fù)用軟件建立單獨(dú)的配置管理庫(kù),重新配置配置標(biāo)識(shí),不得與被復(fù)用項(xiàng)目混淆。建立配置控制機(jī)制,其中包含收集被復(fù)用項(xiàng)目的變更信息,確定當(dāng)前項(xiàng)目是否同步變更,及在調(diào)試過程中發(fā)現(xiàn)被復(fù)用項(xiàng)目缺陷的反饋機(jī)制。建立質(zhì)量審核體系,包括過程審核和產(chǎn)品審核,其中過程審核著重應(yīng)對(duì)配置管理進(jìn)行審核,其他過程視復(fù)用開發(fā)過程定義對(duì)審核進(jìn)行策劃,其中包含對(duì)項(xiàng)目任務(wù)分配、進(jìn)度、測(cè)量、評(píng)審過程等審核;產(chǎn)品審核包括全生命周期中所產(chǎn)生的所有工作產(chǎn)品的審核。
所有策劃內(nèi)容應(yīng)形成《軟件復(fù)用計(jì)劃》,計(jì)劃中除對(duì)以上內(nèi)容進(jìn)行詳細(xì)說明外,同時(shí)還應(yīng)明示因復(fù)用可能帶來的風(fēng)險(xiǎn),同時(shí)提出有效緩解措施。
2.2.3復(fù)用的過程監(jiān)控與集成
復(fù)用過程開始實(shí)施后,所有在被復(fù)用軟件上進(jìn)行的變更都要依據(jù)《變更控制規(guī)程》嚴(yán)格執(zhí)行,質(zhì)量審核應(yīng)隨時(shí)關(guān)注變更的范圍和內(nèi)容,對(duì)測(cè)量分析過程進(jìn)行審核,如對(duì)被復(fù)用軟件的變更超出了原估算范圍,則應(yīng)重新評(píng)估復(fù)用方法和類型。所有部件開發(fā)完成后應(yīng)對(duì)進(jìn)行產(chǎn)品集成準(zhǔn)備,確保復(fù)用軟件的內(nèi)外部接口與當(dāng)前使用環(huán)境的兼容性,對(duì)部件進(jìn)行組裝,對(duì)產(chǎn)品進(jìn)行最終的驗(yàn)證和確認(rèn)。
3 總結(jié)
研究表明,軟件開發(fā)過程中如果復(fù)用程度達(dá)到50%,可以幫助提高40%生產(chǎn)率、降低40%開發(fā)成本、降低50%軟件缺陷,可以從根本上提高軟件生產(chǎn)效率和質(zhì)量。規(guī)范的使用軟件復(fù)用技術(shù)將會(huì)是科研院所軟件研制實(shí)現(xiàn)工業(yè)化生產(chǎn)的必然趨勢(shì)。雖然目前國(guó)內(nèi)尚缺少指導(dǎo)性強(qiáng)的行業(yè)標(biāo)準(zhǔn),且缺乏真正的通用復(fù)用部件。但組織如果能持之以恒的在GJB5000A框架下對(duì)軟件復(fù)用過程的定義進(jìn)行探索和研究,項(xiàng)目組在實(shí)施過程中必能獲益。
參考文獻(xiàn):
[1] GJB 5000A-2008軍用軟件研制能力成熟度模型[S].
[2] 楊芙清, 朱冰, 梅宏. 軟件復(fù)用[J]. 軟件學(xué)報(bào), 1995, 6(9): 525~533.
[3] 石柱. 軍用軟件研制能力成熟度模型及其應(yīng)用[M]. 北京: 中國(guó)標(biāo)準(zhǔn)出版社, 2009.
[4] IEEE Std 1517-1999(R2004)[S]. IEEE Standard for Information Technology——Software Life Cycle Processes——Reuse Porcesses. 2004