- 軟件工程原理與實(shí)踐
- 沈備軍 萬(wàn)成城等編著
- 3327字
- 2024-05-11 18:13:27
1.1 什么是軟件
1.1.1 軟件的定義和作用
什么是軟件呢?現(xiàn)在,被普遍接受的軟件的定義是:軟件(software)是在通用計(jì)算機(jī)硬件之上面向特定應(yīng)用目標(biāo)實(shí)現(xiàn)的解決方案。它是計(jì)算機(jī)系統(tǒng)中與硬件(hardware)相互依存的另一部分,包括程序(program)、相關(guān)數(shù)據(jù)(data)及說(shuō)明文檔(document)。為了更好地理解軟件的概念,將軟件和硬件等其他人工產(chǎn)品相區(qū)分是非常重要的。軟件是邏輯的而不是物理的產(chǎn)品。因此,軟件具有與硬件完全不同的特征。
(1)軟件開發(fā)不同于硬件設(shè)計(jì)
與硬件設(shè)計(jì)相比,軟件更依賴于開發(fā)人員的業(yè)務(wù)素質(zhì)、智力,以及人員的組織、合作和管理。對(duì)硬件而言,設(shè)計(jì)成本往往只占整個(gè)產(chǎn)品成本的一小部分,而軟件開發(fā)占整個(gè)產(chǎn)品成本的大部分,這意味著軟件開發(fā)項(xiàng)目不能像硬件設(shè)計(jì)項(xiàng)目那樣來(lái)管理。
(2)軟件生產(chǎn)不同于硬件制造
硬件設(shè)計(jì)完成后就可投入批量制造,制造是一個(gè)復(fù)雜的過程,其間仍可能引入質(zhì)量問題;軟件成為產(chǎn)品之后,其制造只是簡(jiǎn)單的復(fù)制而已,軟件的倉(cāng)儲(chǔ)和運(yùn)輸也非常簡(jiǎn)單。因此,軟件產(chǎn)品必須要成為第一,一旦落后,市場(chǎng)就會(huì)被領(lǐng)先的產(chǎn)品以零成本的復(fù)制所占領(lǐng)。
(3)軟件維護(hù)不同于硬件維修
硬件在運(yùn)行初期有較高的故障率(主要來(lái)源于設(shè)計(jì)或制造的缺陷),在缺陷修正后的一段時(shí)間中,故障率會(huì)降到一個(gè)較低和穩(wěn)定的水平上。隨著時(shí)間的推移,故障率將再次升高,這是因?yàn)橛布?huì)受到磨損,達(dá)到一定程度后就只能報(bào)廢。軟件是邏輯的而不是物理的,雖然不會(huì)磨損和老化,但在使用過程中的維護(hù)卻比硬件復(fù)雜得多,在維護(hù)過程中還可能產(chǎn)生新的錯(cuò)誤。軟件在運(yùn)營(yíng)時(shí)需要持續(xù)的維護(hù)和版本更新,這也正是軟件產(chǎn)業(yè)隸屬于服務(wù)業(yè)而不是制造業(yè)的主要原因。
當(dāng)前,軟件作為信息技術(shù)產(chǎn)業(yè)的核心與靈魂,正發(fā)揮著巨大的使能作用和滲透輻射作用。所有新的信息技術(shù)應(yīng)用、平臺(tái)和服務(wù)模式,均離不開軟件技術(shù)作為基礎(chǔ)支撐。更為重要的是,在數(shù)字經(jīng)濟(jì)時(shí)代,軟件技術(shù)已經(jīng)成為企業(yè)的核心競(jìng)爭(zhēng)力,不僅引領(lǐng)著信息技術(shù)產(chǎn)業(yè)的變革,在汽車、能源、制造、零售等眾多傳統(tǒng)領(lǐng)域中存在的比重和重要性也在不斷加大,在支持這些傳統(tǒng)領(lǐng)域產(chǎn)業(yè)結(jié)構(gòu)升級(jí)換代甚至顛覆式創(chuàng)新的過程中起到核心關(guān)鍵作用,并進(jìn)一步加速重構(gòu)了全球分工體系和競(jìng)爭(zhēng)格局。作為新一輪科技革命和產(chǎn)業(yè)變革的標(biāo)志,德國(guó)的“工業(yè)4.0”和美國(guó)的“工業(yè)互聯(lián)網(wǎng)”,以及我國(guó)的“制造強(qiáng)國(guó)戰(zhàn)略”,均將信息和軟件技術(shù)作為發(fā)展重點(diǎn)。無(wú)所不在的軟件,正在走出信息世界的范疇,開始深度滲透到物理世界,在支撐人類社會(huì)運(yùn)行和人類文明進(jìn)步中發(fā)揮重要的“基礎(chǔ)設(shè)施”作用,甚至開始扮演著重新定義整個(gè)世界圖景的重要角色。
1.1.2 軟件的發(fā)展歷史
從世界上第一臺(tái)計(jì)算機(jī)ENIAC在美國(guó)誕生到現(xiàn)在的70多年時(shí)間里,軟件作為人類智力活動(dòng)的邏輯產(chǎn)品,經(jīng)歷著與其他行業(yè)不同的快速發(fā)展。作為信息技術(shù)的核心,軟件技術(shù)呈現(xiàn)從“工具”和“平臺(tái)”到“引領(lǐng)”的轉(zhuǎn)變。與此同時(shí),軟件的產(chǎn)品形態(tài)和商業(yè)模式也在不斷演進(jìn),先后經(jīng)歷了大型機(jī)和小型機(jī)時(shí)代的硬件附屬階段、PC時(shí)代的獨(dú)立軟件產(chǎn)品階段、“互聯(lián)網(wǎng)+”時(shí)代的“軟件即服務(wù)”階段,以及數(shù)字經(jīng)濟(jì)時(shí)代的“軟件定義”階段[1]。
(1)硬件附屬階段
在計(jì)算機(jī)誕生后的相當(dāng)長(zhǎng)一段時(shí)期內(nèi),實(shí)際上并沒有“軟件”的概念,計(jì)算機(jī)是通過用機(jī)器語(yǔ)言和匯編語(yǔ)言編寫程序直接操作硬件來(lái)運(yùn)行的。到20世紀(jì)60年代初,在高級(jí)程序設(shè)計(jì)語(yǔ)言出現(xiàn)后,軟件才從硬件中分離出來(lái),成為相對(duì)獨(dú)立的制品。但是,在這個(gè)大型機(jī)和小型機(jī)時(shí)代,硬件占據(jù)絕對(duì)主體的地位,軟件僅僅作為計(jì)算機(jī)硬件的附屬物而存在,沒有獨(dú)立的商業(yè)形態(tài),軟件的代碼通常是向使用者開放的,便于用戶自己進(jìn)行修改與優(yōu)化。
(2)獨(dú)立軟件產(chǎn)品階段
進(jìn)入20世紀(jì)70年代的PC時(shí)代后,出現(xiàn)了軟件許可證(license)的概念,賣軟件的許可證成為一種新型的商業(yè)模式,軟件作為一個(gè)獨(dú)立的產(chǎn)品銷售,軟件代碼成為核心競(jìng)爭(zhēng)力而不再對(duì)使用者開放。標(biāo)志性的成功案例就是微軟的Windows操作系統(tǒng)。在這個(gè)時(shí)期,軟件逐漸顛覆了傳統(tǒng)計(jì)算機(jī)產(chǎn)業(yè)“硬件為王”的格局,開始成為IT產(chǎn)業(yè)的主導(dǎo)者。軟件開始正式成為一個(gè)獨(dú)立產(chǎn)業(yè),在各個(gè)行業(yè)、領(lǐng)域不斷普及,催生了人類歷史上信息化的第一波浪潮,即以單機(jī)應(yīng)用為主要特征的數(shù)字化階段(信息化1.0)。
(3)“軟件即服務(wù)”階段
20世紀(jì)90年代中期開始,隨著互聯(lián)網(wǎng)的快速發(fā)展普及,軟件從單機(jī)計(jì)算環(huán)境向網(wǎng)絡(luò)計(jì)算環(huán)境延伸,帶來(lái)了信息化的第二波浪潮,即以網(wǎng)絡(luò)在線應(yīng)用為主要特征的網(wǎng)絡(luò)化階段(信息化2.0)。軟件的形態(tài)發(fā)生了重大的變化,“軟件即服務(wù)”(software as a service)開始成為一種非常重要的網(wǎng)絡(luò)化軟件交付形態(tài)和使用方式。不同于傳統(tǒng)面向單機(jī)的拷貝形態(tài),“軟件即服務(wù)”使得人們不必再擁有軟件產(chǎn)品,而是通過互聯(lián)網(wǎng)在任何時(shí)間、任何地點(diǎn)、任何設(shè)備上,直接與軟件提供者進(jìn)行連接并按需獲取和使用軟件的功能。
(4)“軟件定義”階段
當(dāng)前,軟件正在融入支撐整個(gè)人類經(jīng)濟(jì)社會(huì)運(yùn)行的基礎(chǔ)設(shè)施中,對(duì)傳統(tǒng)物理世界基礎(chǔ)設(shè)施和社會(huì)經(jīng)濟(jì)基礎(chǔ)設(shè)施進(jìn)行重塑與重構(gòu),通過軟件定義的方式賦予其新的能力和靈活性,成為促進(jìn)生產(chǎn)方式升級(jí)、生產(chǎn)關(guān)系變革、產(chǎn)業(yè)升級(jí)、新興產(chǎn)業(yè)和價(jià)值鏈的誕生與發(fā)展的重要引擎。
1.1.3 挑戰(zhàn)與問題
軟件與工業(yè)控制、制造、科學(xué)計(jì)算、數(shù)值計(jì)算、物聯(lián)網(wǎng)等各領(lǐng)域不斷加強(qiáng)融合,正引領(lǐng)并促進(jìn)這些領(lǐng)域的高速發(fā)展。為了滿足各個(gè)領(lǐng)域的相關(guān)要求,軟件對(duì)應(yīng)呈現(xiàn)出許多新的特征,從而導(dǎo)致軟件開發(fā)與維護(hù)面臨新的挑戰(zhàn):
1)軟件復(fù)雜性挑戰(zhàn)。今天的軟件常常是網(wǎng)絡(luò)應(yīng)用,涉及多種硬件、多種操作系統(tǒng)、多種編程語(yǔ)言,邏輯復(fù)雜,同時(shí)面臨層出不窮的新技術(shù)。
2)軟件大規(guī)模挑戰(zhàn)。軟件規(guī)模不斷擴(kuò)大,一個(gè)宇宙飛船的軟件系統(tǒng)源程序代碼可多達(dá)2000萬(wàn)行,鴻蒙操作系統(tǒng)的研發(fā)人數(shù)超過2萬(wàn)。
3)軟件高質(zhì)量挑戰(zhàn)。隨著軟件應(yīng)用在越來(lái)越多的關(guān)鍵領(lǐng)域中,軟件的質(zhì)量要求也越來(lái)越高,例如高安全性、高可靠性、高性能、高易用性、可配制的功能和流程等。
4)不確定性挑戰(zhàn)。烏卡(VUCA)時(shí)代下,軟件項(xiàng)目面臨需求和技術(shù)的易變性、不確定性、復(fù)雜性和模糊性的挑戰(zhàn),應(yīng)用環(huán)境從靜態(tài)、封閉、可控逐步變?yōu)閯?dòng)態(tài)、開放、難控。
5)進(jìn)度和敏捷開發(fā)的挑戰(zhàn)。幾乎所有軟件項(xiàng)目的進(jìn)度要求都很緊,常常需求還沒有確定,交付日期卻已經(jīng)定了,進(jìn)度預(yù)估不足是常態(tài)。這就要求敏捷開發(fā),快速適應(yīng)需求變化。
6)遺留系統(tǒng)(legacy system)的挑戰(zhàn)。隨著軟件的不斷開發(fā)和應(yīng)用,存在著大量的遺留系統(tǒng)需要集成和復(fù)用。這些系統(tǒng)是早年采用舊的技術(shù)開發(fā)而成的,目前一部分仍能有效運(yùn)行,一部分需要升級(jí)改造,還有一部分雖然被淘汰,但仍包含大量可復(fù)用的資產(chǎn)。
7)分散團(tuán)隊(duì)的協(xié)同挑戰(zhàn)。全球軟件開發(fā)由于能充分利用各地的資源,被越來(lái)越多的組織所接受,特別是跨國(guó)組織和集團(tuán)。地理位置分散的開發(fā)團(tuán)隊(duì),協(xié)同合作需要克服時(shí)間、文化等差異造成的溝通障礙。
我們所面臨的新挑戰(zhàn)不止上述這些。這些挑戰(zhàn)導(dǎo)致了軟件項(xiàng)目的成功率和質(zhì)量一直偏低。根據(jù)Standish Group發(fā)布的chaos報(bào)告[2],軟件項(xiàng)目的成功率低于40%,超過60%的項(xiàng)目由于進(jìn)度延期、超出預(yù)算、不符合客戶的需求、質(zhì)量低劣等原因而在不同程度上失敗。由于軟件質(zhì)量低劣導(dǎo)致的故障,也給我們的生活和工作帶來(lái)了巨大的損失。例如,2018年印尼獅航一架波音737 MAX 8客機(jī)途中墜落,189人罹難,失事原因?yàn)檐浖O(shè)計(jì)缺陷,飛機(jī)的迎角傳感器“數(shù)據(jù)錯(cuò)誤”觸發(fā)“防失速”自動(dòng)操作,導(dǎo)致機(jī)頭不斷下壓,最終墜海。
為什么軟件開發(fā)表現(xiàn)得如此不成熟呢?分析其根源,主要有兩個(gè)方面的原因:
● 與軟件本身的特點(diǎn)有關(guān)。軟件是無(wú)形的邏輯實(shí)體,具有高度的復(fù)雜性,不僅難以理解和描述,而且難以開發(fā)、度量和控制,使得軟件開發(fā)過程中處處充滿著風(fēng)險(xiǎn)。
● 與軟件開發(fā)和維護(hù)的方法、過程、管理、規(guī)范和工具不正確有關(guān)。Parnas教授曾說(shuō)過,雖然我們已經(jīng)提出了不少好的技術(shù)和方法,例如迭代式交付(1988)、測(cè)量(1977)、風(fēng)險(xiǎn)管理計(jì)劃(1981)、變更控制委員會(huì)(1979),等等,“它們?cè)缇驮谶@里多年了,但是沒有被適當(dāng)使用”。當(dāng)前軟件實(shí)踐常常是,面對(duì)進(jìn)度壓力,軟件工程師沒有計(jì)劃他們的工作,匆匆地走過需求、設(shè)計(jì)和編碼,軟件開發(fā)直到測(cè)試前僅僅是忽略質(zhì)量的技術(shù)。這些實(shí)踐引入了大量的缺陷,即使是有經(jīng)驗(yàn)的工程師也會(huì)每7~10行代碼就引入一個(gè)缺陷,中等規(guī)模的系統(tǒng)平均存在著上千個(gè)缺陷。大多數(shù)缺陷必須靠測(cè)試發(fā)現(xiàn),這通常要花去開發(fā)時(shí)間的一倍時(shí)間。目前大多數(shù)的工作方式還像30年前一樣。
如何才能解決這些問題,提高軟件開發(fā)和維護(hù)的效率與質(zhì)量?這正是軟件工程所研究和實(shí)踐的。
- 武漢科技大學(xué)616分子生物學(xué)歷年考研真題及詳解
- 材料科學(xué)基礎(chǔ)
- 吳于廑《世界史·現(xiàn)代史編(下卷)》筆記和典型題(含考研真題)詳解
- 高光譜遙感圖像特征提取與分類
- 大學(xué)生心理健康十五講
- 《財(cái)富管理:理論與實(shí)踐》學(xué)習(xí)指南與習(xí)題集
- 服裝零售學(xué)(第3版)
- 組織行為學(xué)
- 北京外國(guó)語(yǔ)大學(xué)高級(jí)翻譯學(xué)院813英漢互譯(同聲傳譯)歷年考研真題及詳解
- Premiere Pro CC視頻剪輯基礎(chǔ)教程(移動(dòng)學(xué)習(xí)版)
- 2019年江西省選聘高校畢業(yè)生到村任職考試《行政職業(yè)能力測(cè)驗(yàn)》題庫(kù)【真題精選+章節(jié)題庫(kù)+模擬試題】
- 2020年西藏自治區(qū)選聘大學(xué)生村官考試《行政職業(yè)能力測(cè)驗(yàn)》考點(diǎn)精講及典型題(含歷年真題)詳解
- 偏微分與變分技術(shù)在圖像分割中的應(yīng)用研究
- 圖解脈診入門到精通
- 服裝表演策劃與編導(dǎo)(第3版)