轉(zhuǎn)自:上觀新聞
生活中,電腦、手機(jī)中的軟件、app伴著我們度過(guò)日出日落。同樣,對(duì)于蒼穹之上的衛(wèi)星,星載軟件也在全天全時(shí)地保障著衛(wèi)星的正常運(yùn)作。隨著科技的飛速發(fā)展,星載軟件的規(guī)模也日益擴(kuò)大,在研制軟件的過(guò)程中,設(shè)計(jì)師們必須要面對(duì)“軟件危機(jī)”帶來(lái)的挑戰(zhàn),不斷探索實(shí)踐工程化開(kāi)展軟件產(chǎn)品研制,從而保證星載軟件產(chǎn)品質(zhì)量。
“軟件危機(jī)”(Software Crisis)是早期計(jì)算機(jī)科學(xué)中的一個(gè)術(shù)語(yǔ),是指在軟件開(kāi)發(fā)及維護(hù)的過(guò)程中所遇到的一系列嚴(yán)重問(wèn)題,這些問(wèn)題都有可能導(dǎo)致軟件產(chǎn)品的壽命縮短、甚至夭折。
隨著技術(shù)的發(fā)展,20世紀(jì)60年代中期計(jì)算機(jī)的應(yīng)用范圍得到了迅速拓展。隨著軟件系統(tǒng)的規(guī)模、復(fù)雜程度不斷增加,計(jì)算機(jī)程序設(shè)計(jì)的復(fù)雜度也隨之提高,軟件開(kāi)發(fā)量激增,軟件可靠性的問(wèn)題也逐漸凸顯。
1968年,北大西洋公約組織(NATO)在聯(lián)邦德國(guó)的國(guó)際學(xué)術(shù)會(huì)議上首次提出了“軟件危機(jī)(Software Crisis)”概念。會(huì)上,科學(xué)家們發(fā)現(xiàn)了中大型軟件系統(tǒng)與小型軟件的本質(zhì)性差距,若仍保持以往個(gè)人設(shè)計(jì)、個(gè)人開(kāi)發(fā)的方式便無(wú)法滿(mǎn)足用戶(hù)需求。他們急需改變軟件的生產(chǎn)方式,提高軟件的生產(chǎn)效率。
1972年,計(jì)算機(jī)學(xué)家艾茲赫爾·戴克斯特拉(Edsger Wybe Dijkstra)更是直言不諱地在計(jì)算機(jī)協(xié)會(huì)圖靈獎(jiǎng)演講上強(qiáng)調(diào)軟件危機(jī)產(chǎn)生的原因:“在沒(méi)有機(jī)器的時(shí)候,編程根本不是問(wèn)題;當(dāng)我們有了計(jì)算機(jī),編程開(kāi)始變成問(wèn)題,而現(xiàn)在我們有了巨大的計(jì)算機(jī),編程就成了一個(gè)同樣巨大的問(wèn)題。”
在他發(fā)表演講后的20余年里,Stand Group機(jī)構(gòu)以美國(guó)境內(nèi)的8000個(gè)軟件項(xiàng)目為對(duì)象開(kāi)展調(diào)查研究,結(jié)果顯示:接受調(diào)查的軟件項(xiàng)目中有84%的計(jì)劃無(wú)法于既定的時(shí)間、經(jīng)費(fèi)中完成,其中超過(guò)30%的項(xiàng)目在運(yùn)行過(guò)程中被取消,項(xiàng)目實(shí)際支出平均超預(yù)算189%。同樣的情況也逐漸蔓延至航天軟件研制領(lǐng)域中,1996年阿里安五號(hào)原型火箭因飛控軟件故障爆炸,1998年波音Delta III火箭因?qū)Ш杰浖ё詺А幌盗熊浖兄瀑|(zhì)量問(wèn)題,讓無(wú)數(shù)航天工作者的心血化為殘燼。
計(jì)算機(jī)科學(xué)家艾茲赫爾·戴克斯特拉
軟件危機(jī)在本質(zhì)上指向了軟件生產(chǎn)的客觀規(guī)律性,在缺少明確的需求輸入、足夠的技術(shù)投入、合理的研制周期、規(guī)范的開(kāi)發(fā)過(guò)程、全面的測(cè)試覆蓋這些條件時(shí),執(zhí)行像星載軟件這類(lèi)復(fù)雜程度高、安全性可靠性要求同樣高的中大型軟件開(kāi)發(fā)工作便成了一項(xiàng)高難度、高風(fēng)險(xiǎn)的生產(chǎn)活動(dòng)。
1968年,計(jì)算機(jī)科學(xué)家們?cè)诙x軟件危機(jī)的同時(shí),也提出了“軟件工程”(Software Engineering)的概念,借鑒工程化思想并重點(diǎn)關(guān)注技術(shù)和管理兩方面研究,期以系統(tǒng)化、規(guī)范化的工程原則、方法和實(shí)踐進(jìn)行軟件開(kāi)發(fā)和維護(hù)。經(jīng)過(guò)50多年的發(fā)展,軟件工程經(jīng)歷了萌芽、成長(zhǎng)、應(yīng)用和發(fā)展階段,對(duì)全球軟件產(chǎn)業(yè)和世界經(jīng)濟(jì)發(fā)展起到了巨大推進(jìn)作用。
我國(guó)于20世紀(jì)80年代啟動(dòng)軟件工程的研究與實(shí)踐,從起初開(kāi)展方法學(xué)研究,逐步大面積部署面向?qū)ο蟮能浖こ汰h(huán)境,到創(chuàng)新發(fā)展中大型軟件構(gòu)件化開(kāi)發(fā),軟件工程已在星載軟件研制工作中從軟件研制標(biāo)準(zhǔn)、過(guò)程管控和測(cè)試覆蓋三個(gè)層次融入軟件生產(chǎn)活動(dòng),為研制高可靠高安全的星載軟件保駕護(hù)航。
從兩彈一星的研制到載人航天、月球探測(cè)、行星探測(cè)等重大工程的實(shí)施,軟件的重要性、復(fù)雜性不斷增加。面對(duì)各種挑戰(zhàn),進(jìn)一步完善型號(hào)軟件工程化工作過(guò)程,是軟件研制的一項(xiàng)重要工作。星載軟件研制標(biāo)準(zhǔn)要求從整星軟件系統(tǒng)角度出發(fā),預(yù)估軟件規(guī)模、識(shí)別軟件關(guān)鍵等級(jí)、分析軟件產(chǎn)品沿用程度。以軟件生命周期模型為依據(jù),按照研制標(biāo)準(zhǔn)規(guī)定的技術(shù)流程開(kāi)發(fā)星載軟件,典型的開(kāi)發(fā)過(guò)程是“V模型”。
星載大型軟件研制V模型
如上圖所示,V模型將開(kāi)發(fā)過(guò)程橫向分為設(shè)計(jì)和與之對(duì)應(yīng)的測(cè)試階段:左邊向下的鏈路代表了需求分析、系統(tǒng)設(shè)計(jì)、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì),到底層的編碼實(shí)現(xiàn),形成軟件開(kāi)發(fā)生命周期;右邊向上的鏈路連接了單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試到驗(yàn)收測(cè)試的流程,稱(chēng)為軟件測(cè)試生命周期,每個(gè)設(shè)計(jì)階段都與一個(gè)測(cè)試階段相對(duì)應(yīng)。
V模型縱向上劃分了研制任務(wù)自頂向下的各個(gè)階段,頂層需求分析、驗(yàn)收測(cè)試過(guò)程主要面向用戶(hù),越往底層技術(shù)工作越深入,從而構(gòu)成了一個(gè)V型的模樣。
敏捷開(kāi)發(fā)作為一種注重快速響應(yīng)、持續(xù)迭代和團(tuán)隊(duì)協(xié)作的開(kāi)發(fā)方法,近年來(lái)在星載軟件研制中也展現(xiàn)了獨(dú)特的價(jià)值和意義。敏捷開(kāi)發(fā)以“快速迭代、小步快跑”的方式,將星載軟件開(kāi)發(fā)過(guò)程劃分為多個(gè)有明確目標(biāo)和交付成果的小階段,面對(duì)技術(shù)風(fēng)險(xiǎn)大、突發(fā)情況多的研制項(xiàng)目,能快速響應(yīng)需求變更,減少開(kāi)發(fā)過(guò)程中的資源耗費(fèi),及時(shí)調(diào)整軟件研制攻堅(jiān)方向,確保項(xiàng)目順利推進(jìn)。
敏捷開(kāi)發(fā)軟件研制模型
早在20世紀(jì)70年代中期,美國(guó)國(guó)防部統(tǒng)計(jì)數(shù)據(jù)表明,在失敗的軟件項(xiàng)目中,70%的項(xiàng)目是由管理不善造成的。美國(guó)國(guó)防部為解決大型軟件采購(gòu)風(fēng)險(xiǎn),委托卡耐基一梅隆大學(xué)軟件工程研究院制定用于軟件過(guò)程改進(jìn)和評(píng)估的模型,提出“軟件能力成熟度模型”(Capability Maturity Model for Software),簡(jiǎn)稱(chēng)CMMI。
CMMI包含了大型軟件從產(chǎn)品需求提出、設(shè)計(jì)、開(kāi)發(fā)、編碼、測(cè)試、交付到產(chǎn)品退役的整個(gè)生命周期里各項(xiàng)基本要素,是過(guò)程改進(jìn)的有機(jī)匯集。經(jīng)過(guò)40多年的發(fā)展,已經(jīng)成為指導(dǎo)大型軟件開(kāi)發(fā)過(guò)程的藍(lán)本,為包括軟件企業(yè)、系統(tǒng)集成企業(yè)等各類(lèi)組織改進(jìn)其過(guò)程和提高其對(duì)產(chǎn)品或服務(wù)的開(kāi)發(fā)、采購(gòu)以及維護(hù)的能力提供指導(dǎo)。
為提高軟件研制質(zhì)量和效率,持續(xù)改進(jìn)軟件產(chǎn)品線(xiàn),大型軟件研制團(tuán)隊(duì)會(huì)基于軟件能力成熟度模型評(píng)估結(jié)果,確定需要改進(jìn)的流程和實(shí)踐,建立持續(xù)改進(jìn)機(jī)制并定期審查和評(píng)估效果。NASA的LMA軟件產(chǎn)品線(xiàn)通過(guò)大幅度地復(fù)用軟件資產(chǎn),使得需求分析周期由4個(gè)月縮短到2周;洛克希德?馬丁公司的CSL軟件產(chǎn)品線(xiàn),近3年節(jié)約成本達(dá)1.66億美元,都離不開(kāi)CMMI模型持續(xù)改進(jìn)的實(shí)踐。
部分借鑒CMMI模型,我國(guó)圍繞軟件研制過(guò)程管理的需要建立了相關(guān)標(biāo)準(zhǔn),對(duì)軟件全過(guò)程的各個(gè)活動(dòng)、角色及其職責(zé)關(guān)系進(jìn)行具體描述,進(jìn)而達(dá)到星載軟件在開(kāi)發(fā)實(shí)踐過(guò)程中不斷改進(jìn)軟件研制能力、提高軟件成熟度的效果。
該標(biāo)準(zhǔn)定義了初始級(jí)(1級(jí))、規(guī)范級(jí)(2級(jí))、全面級(jí)(3級(jí))、量化級(jí)(4級(jí))和卓越級(jí)(5級(jí))5個(gè)從低到高的成熟度等級(jí),為航天軟件工程化提供了一個(gè)清晰的進(jìn)化路徑。遵循該標(biāo)準(zhǔn)意味著星載軟件研制的組織已經(jīng)具備了一套完整的管理體系和技術(shù)能力,能夠保證星載軟件的高質(zhì)量、高安全性和高可靠性。
星載軟件研制標(biāo)準(zhǔn)和軟件研制能力成熟度模型為星載軟件研制提供了理想化的研制流程和流程管控方式,但實(shí)際的產(chǎn)品研制也會(huì)受到各類(lèi)現(xiàn)實(shí)因素的影響,在交付驗(yàn)收前需要進(jìn)行足夠的軟件測(cè)試確保符合使用要求。
軟件的測(cè)試覆蓋率被視為軟件測(cè)試驗(yàn)證的“金指標(biāo)”,表征了測(cè)試用例執(zhí)行的代碼數(shù)量在軟件全部代碼中的占比,以及測(cè)試用例是否真正覆蓋了軟件代碼中的各種可能。根據(jù)測(cè)試的不同階段,可以使用適當(dāng)?shù)臏y(cè)試覆蓋技術(shù)衡量軟件狀態(tài)是否足以進(jìn)入生產(chǎn)過(guò)程下一個(gè)環(huán)節(jié)直到最終驗(yàn)收交付。
常見(jiàn)的星載軟件測(cè)試覆蓋技術(shù)包括語(yǔ)句覆蓋、分支覆蓋、條件覆蓋和需求覆蓋。語(yǔ)句覆蓋確保被測(cè)軟件全部代碼都被運(yùn)行過(guò),分支覆蓋使得軟件中每個(gè)判斷條件取值全部遍歷,條件覆蓋確保軟件運(yùn)行各種結(jié)果都能執(zhí)行,需求覆蓋追溯任務(wù)要求說(shuō)明軟件狀態(tài)和開(kāi)發(fā)目標(biāo)保持一致。幾種策略可以共同組合,在星載軟件單機(jī)級(jí)、分系統(tǒng)級(jí)、系統(tǒng)級(jí)和整星級(jí)不同層次的軟件測(cè)試中充分運(yùn)用,確保軟件產(chǎn)品進(jìn)行了嚴(yán)格、充分、完全的測(cè)試,經(jīng)測(cè)試符合交付驗(yàn)收的要求。
VIP課程推薦
APP專(zhuān)享直播
熱門(mén)推薦
收起24小時(shí)滾動(dòng)播報(bào)最新的財(cái)經(jīng)資訊和視頻,更多粉絲福利掃描二維碼關(guān)注(sinafinance)