- 軟件工程與測試技術(shù)
- 吳瓊等主編
- 9602字
- 2023-11-23 19:31:57
任務(wù)1.1 軟件危機(jī)與軟件工程
【任務(wù)描述】
軟件工程的思想和方法是為應(yīng)對“軟件危機(jī)”而提出的,那么如何用軟件工程的思想消除“軟件危機(jī)”呢?本任務(wù)的目標(biāo)是,讓大家了解軟件工程的思想及做法,為以后開發(fā)高質(zhì)量的軟件打好基礎(chǔ)。
【知識儲備】
一、軟件概述
1.軟件的定義
軟件是計算機(jī)系統(tǒng)中與硬件相互依存的重要組成部分。軟件是一個宏觀的概念,它包括程序、數(shù)據(jù)及相關(guān)文檔。其中,程序指的是能夠?qū)崿F(xiàn)某種功能的指令集合;數(shù)據(jù)是使程序能正常工作的信息和程序執(zhí)行的數(shù)字化成果;文檔指的是軟件在開發(fā)、使用和維護(hù)過程中產(chǎn)生的說明、解釋、要求或標(biāo)準(zhǔn)等的文件集合。
2.軟件發(fā)展階段
(1)程序設(shè)計階段
程序設(shè)計階段出現(xiàn)于1946年—1955年時期。在此之前,尚無程序設(shè)計或軟件的概念。隨著計算機(jī)的問世,程序設(shè)計隨之出現(xiàn),它最初主要是圍繞硬件的控制而開發(fā)的。這個階段的程序規(guī)模很小、思路直白、工具簡單,這個時期尚無明確的程序開發(fā)者與程序用戶的分工。因為硬件功能及其存儲容量非常有限,所以程序設(shè)計者千方百計地追求節(jié)省空間和編程技巧,在程序設(shè)計和應(yīng)用過程中,也不會生成完整的文檔資料。這時的計算機(jī)及其程序主要用于科學(xué)計算。
(2)軟件設(shè)計階段
軟件設(shè)計階段是指1956年—1970年的時期。這個時期,隨著計算機(jī)應(yīng)用規(guī)模的逐漸擴(kuò)展,出現(xiàn)了“軟件作坊”式的開發(fā)組織,許多重要的軟件由這樣的組織負(fù)責(zé)設(shè)計和開發(fā)。這個時期,軟件系統(tǒng)的規(guī)模越來越龐大,出現(xiàn)了多種高級編程語言,計算機(jī)的應(yīng)用領(lǐng)域逐漸拓展,開發(fā)者和用戶開始有了明確的分工,應(yīng)用領(lǐng)域?qū)浖男阅芤笾饾u提高,對軟件的通用性、易用性、可擴(kuò)展性、可維護(hù)性等均提出了較高的要求。但此時的軟件開發(fā)技術(shù)本身并沒有產(chǎn)生重大突破,軟件產(chǎn)品開發(fā)時間長、功能或性能難以滿足全部需求,軟件可靠性和可維護(hù)性等與開發(fā)者個人的能力及責(zé)任心密切相關(guān),即軟件生產(chǎn)與市場需求產(chǎn)生了極大的不平衡,軟件成了妨礙計算機(jī)發(fā)展的重要“瓶頸”,這便是人們所說的“軟件危機(jī)”。
(3)軟件工程階段
軟件工程階段是指1970年—1990年時期。這個時期,計算機(jī)系統(tǒng)的硬件和軟件均得到了飛速的發(fā)展,計算機(jī)已在全球普及。在一些發(fā)達(dá)國家,計算機(jī)產(chǎn)業(yè)成為最重要的和發(fā)展最快的產(chǎn)業(yè)之一。這個時期,軟件開發(fā)進(jìn)入系統(tǒng)、科學(xué)、有序和受控的“軟件工程”階段。為應(yīng)對“軟件危機(jī)”而做出的各種努力已經(jīng)產(chǎn)生出許多重要成果,對軟件開發(fā)技術(shù)的研究、變革逐漸深入并開始成熟,產(chǎn)生了許多行之有效的軟件工程的理論、技術(shù)手段和管理方法。
(4)現(xiàn)代軟件工程階段
現(xiàn)代軟件工程階段是指從1990年到現(xiàn)在的時期。這個時期,以計算機(jī)技術(shù)、網(wǎng)絡(luò)技術(shù)和通信技術(shù)為代表的信息技術(shù)得到了飛速發(fā)展。這個時期,軟件開發(fā)出現(xiàn)了系統(tǒng)化、規(guī)模化、抽象化、自動化和智能化等多樣化特征,軟件開發(fā)的方法和理論也不斷創(chuàng)新。這個時期,出現(xiàn)了眾多的軟件開發(fā)新技術(shù),例如,面向?qū)ο箝_發(fā)技術(shù)、平臺無關(guān)式開發(fā)技術(shù)、模塊化可伸縮式開發(fā)技術(shù),等等。這個時期,軟件工程方法的領(lǐng)域分布更加精細(xì)化,軟件工程管理體系更加成熟,軟件工程對當(dāng)代信息技術(shù)的發(fā)展起到了至關(guān)重要的作用。可以說,現(xiàn)代軟件工程階段是軟件工程的成熟與飛躍的時期。
二、軟件危機(jī)
“軟件危機(jī)”是指,在計算機(jī)軟件發(fā)展的早期,開發(fā)和維護(hù)過程中所遇到的一系列嚴(yán)重問題。這些問題不僅涉及了當(dāng)時已經(jīng)在正常運(yùn)行的軟件,還不同程度地影響到當(dāng)時開發(fā)過程中或?qū)⒁_發(fā)的軟件。
概括地說,軟件危機(jī)問題主要涉及下述兩方面的問題:其一,面對眾多的開發(fā)軟件需求,軟件開發(fā)難以滿足;其二,已開發(fā)和運(yùn)行的軟件如何進(jìn)行及時和有效的維護(hù),同時控制軟件規(guī)模的不斷膨脹。
1.軟件危機(jī)的典型表現(xiàn)
(1)軟件開發(fā)費(fèi)用難以估算和控制。在早期的軟件開發(fā)活動中,軟件的實際開發(fā)成本常常比估算成本高出許多,甚至高出一個數(shù)量級。
(2)軟件開發(fā)進(jìn)度難以估計,軟件工程難以控制地“被拖期”,即實際軟件開發(fā)進(jìn)度比預(yù)期進(jìn)度要慢幾個月,甚至更長。這種現(xiàn)象既降低了軟件開發(fā)組織的信譽(yù),也影響了用戶的實際應(yīng)用。而為了滿足工期要求或趕進(jìn)度所采取的措施,常常帶來某種意義上的“犧牲”,例如,軟件完整性或嚴(yán)謹(jǐn)性降低,縮減部分功能,或采用一些權(quán)宜之計……其結(jié)果又往往損害了軟件的質(zhì)量,也不可避免地引起用戶的不滿。
(3)軟件需求分析不夠充分,“已經(jīng)完成”的軟件功能無法得到用戶的認(rèn)可。軟件開發(fā)人員常常在對用戶需求只有模糊的了解,甚至對所要解決的問題在缺乏確切的理解的情況下,就匆忙著手編寫程序。軟件需求的調(diào)研及開發(fā)人員與用戶的溝通流程等缺乏科學(xué)和系統(tǒng)的方案,造成軟件開發(fā)人員和用戶之間的信息交流不充分,雙方對軟件的功能和目標(biāo)理解不一致,從而導(dǎo)致最終的軟件產(chǎn)品不符合用戶的實際需要。
(4)軟件產(chǎn)品質(zhì)量難于保證。軟件產(chǎn)品中的錯誤難以提前消除,軟件產(chǎn)品的邏輯性要求非常嚴(yán)格,軟件產(chǎn)品的功能性要求彈性很大,加之軟件質(zhì)量標(biāo)準(zhǔn)難以量化或標(biāo)準(zhǔn)化,因而造成質(zhì)量的檢測方法、質(zhì)量的標(biāo)準(zhǔn)和質(zhì)量的控制方式帶有較強(qiáng)的盲目性。當(dāng)時,軟件測試方法基本處于“空白”狀態(tài),軟件產(chǎn)品有錯誤時難以發(fā)現(xiàn),而隱藏的或未發(fā)現(xiàn)的錯誤往往是造成軟件故障、系統(tǒng)崩潰或重大事故的隱患。
(5)軟件產(chǎn)品難以維護(hù),修改或糾正軟件中的錯誤較為困難。很多軟件中的錯誤是非常難以發(fā)現(xiàn)和改正的,當(dāng)遇到開發(fā)環(huán)境與實際應(yīng)用環(huán)境不同時,軟件難以適應(yīng)用戶的硬件環(huán)境,出現(xiàn)問題時的修改也常常要花費(fèi)很長的時間。還有,許多用戶對計算機(jī)及其軟件開發(fā)不熟悉,造成用戶需求會經(jīng)常發(fā)生變化,這也給軟件開發(fā)、維護(hù)和更新帶來極大的困擾。
(6)軟件缺少必要的文檔資料。計算機(jī)軟件除了要具備完整的程序代碼,還應(yīng)該有一套完整的文檔資料。這些文檔資料應(yīng)該是在軟件開發(fā)過程中產(chǎn)生出來的,而且應(yīng)該是“最新版本的”(即是與最新程序代碼保持一致的)。軟件開發(fā)組織的管理人員可以將這些文檔資料作為控制和評價依據(jù),來管理和評價軟件開發(fā)的質(zhì)量及進(jìn)度;軟件開發(fā)人員可以利用文檔作為交流工具,在軟件開發(fā)過程中準(zhǔn)確地交流信息;對于軟件維護(hù)人員而言,這些文檔資料更是必不可少的。缺乏必要的文檔資料或者文檔資料不合規(guī),必然給軟件開發(fā)和后期維護(hù)帶來許多嚴(yán)重的困難和問題。
(7)開發(fā)成本逐年上升,軟件開發(fā)生產(chǎn)率的提升速度遠(yuǎn)遠(yuǎn)跟不上計算機(jī)應(yīng)用普及與需求升級的速度。軟件產(chǎn)品“供不應(yīng)求”的現(xiàn)象造成了巨大的反差。
以上列舉的僅僅是軟件危機(jī)造成的現(xiàn)象與影響,在軟件開發(fā)和維護(hù)等方面出現(xiàn)的問題遠(yuǎn)遠(yuǎn)不止于此。
2.軟件危機(jī)產(chǎn)生的原因
(1)用戶需求不明確
在軟件開發(fā)過程中,用戶需求不明確是從有軟件開發(fā)工作之始便已存在的“著名問題”,它主要體現(xiàn)在四個方面:在軟件開發(fā)出來之前,用戶自己也不清楚軟件開發(fā)的具體需求;用戶對軟件開發(fā)需求的描述不精確,例如有遺漏、有二義性、甚至有錯誤;在軟件開發(fā)過程中,用戶又有“新發(fā)現(xiàn)”,因而提出修改、擴(kuò)充或變更軟件的功能、界面或環(huán)境等方面的要求;軟件開發(fā)人員對用戶需求的理解與用戶的本質(zhì)需求有差異。
(2)缺乏正確的理論指導(dǎo)
缺乏科學(xué)的方法論指導(dǎo)和可用工具的支持。由于軟件開發(fā)不同于工業(yè)產(chǎn)品生產(chǎn),其開發(fā)過程是復(fù)雜的邏輯思維到程序代碼的“轉(zhuǎn)換”過程,這個過程嚴(yán)重依賴于開發(fā)人員的智力思維、編程能力和個人創(chuàng)造性。正是由于這些依賴性因素的存在,加劇了軟件開發(fā)產(chǎn)品的個性化或獨特性的特點,這也是軟件危機(jī)產(chǎn)生的一個重要原因。
(3)軟件開發(fā)規(guī)模越來越大
隨著軟件開發(fā)應(yīng)用范圍的不斷擴(kuò)展,軟件開發(fā)規(guī)模越來越大。大型軟件開發(fā)項目需要軟件團(tuán)隊共同完成,而多數(shù)管理人員缺乏開發(fā)大型軟件或系統(tǒng)的開發(fā)經(jīng)驗,而軟件開發(fā)人員又缺乏管理方面的經(jīng)驗。管理人員與軟件開發(fā)人員及其用戶之間的信息交流不及時、不準(zhǔn)確、不充分,有時還會產(chǎn)生誤解。軟件開發(fā)人員不能有效地處理大型軟件開發(fā)中的技術(shù)與管理問題,因此容易產(chǎn)生系統(tǒng)性的漏洞、錯誤或問題。
(4)軟件產(chǎn)品的復(fù)雜度也越來越高
軟件開發(fā)不僅僅在規(guī)模上和速度上的要求越來越高,而且其復(fù)雜性也在急劇攀升,但開發(fā)人員的綜合能力無法同步快速提升,至少處理復(fù)雜的軟件開發(fā)問題需要一定的準(zhǔn)備、學(xué)習(xí)和提升時間。所謂“復(fù)雜問題”也是相對的,如果采用先進(jìn)的組織形式、開發(fā)能力的教練體系、先進(jìn)的開發(fā)理念和開發(fā)工具,開發(fā)團(tuán)隊完全有可能依靠團(tuán)隊合作來提升應(yīng)對復(fù)雜軟件或系統(tǒng)的綜合能力,這不但需整體技術(shù)實力的提升,還需要管理能力的強(qiáng)力支撐。
三、軟件工程
1.軟件工程簡介
為了解決軟件危機(jī),既要有技術(shù)方案,又要有必要的組織管理措施,需要從管理和技術(shù)兩個方面著手。軟件工程正是從管理和技術(shù)兩個方面研究如何更好地開發(fā)和維護(hù)計算機(jī)軟件的一門學(xué)科。
許多專家曾經(jīng)給軟件工程下過許多定義,下面給出具有代表性的三個定義。
1968年,在第一屆NATO(北大西洋公約組織)會議上曾經(jīng)給出了軟件工程的一個早期定義:“軟件工程就是為了高效獲得可靠的且能在實際機(jī)器上有效地運(yùn)行的軟件,而建立和使用完善的工程原理。”這個定義不僅指出了軟件工程的目標(biāo)是,以經(jīng)濟(jì)的方式開發(fā)出高質(zhì)量的軟件,而且強(qiáng)調(diào)了軟件工程是一門工程學(xué)科,它應(yīng)該建立并使用完善的工程原理。
1993年,IEEE(電氣與電子工程師協(xié)會)進(jìn)一步給出了一個更全面更具體的定義:“軟件工程是:①把系統(tǒng)的、規(guī)范的、可度量的途徑應(yīng)用于軟件開發(fā)、運(yùn)行和維護(hù)過程,也就是把工程應(yīng)用于軟件;②研究①中提到的途徑。”
《計算機(jī)科學(xué)技術(shù)百科全書》給出的定義:軟件工程是應(yīng)用計算機(jī)科學(xué)、數(shù)學(xué)、工程科學(xué)及管理科學(xué)等原理,開發(fā)軟件的工程。軟件工程借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量、降低成本和改進(jìn)算法。其中,計算機(jī)科學(xué)、數(shù)學(xué)用于構(gòu)建模型與算法,工程科學(xué)用于制定規(guī)范、設(shè)計范型、評估成本及確定權(quán)衡,管理科學(xué)用于計劃、資源、質(zhì)量、成本等管理。
雖然軟件工程的不同定義使用了不同詞句,強(qiáng)調(diào)的重點也有差異,但人們普遍認(rèn)為,軟件工程是指導(dǎo)計算機(jī)軟件開發(fā)和維護(hù)的一門工程學(xué)科。采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護(hù)軟件,把經(jīng)過時間考驗而證明正確的管理技術(shù)和當(dāng)前能夠使用的最好的技術(shù)與方法結(jié)合起來,以開發(fā)出高質(zhì)量的軟件并有效地維護(hù)它。
2.軟件工程所涉及的領(lǐng)域
軟件工程是一門研究用工程化方法構(gòu)建和維護(hù)有效、實用和高質(zhì)量軟件的學(xué)科,它涉及計算機(jī)科學(xué)、數(shù)學(xué)、工程科學(xué)和管理科學(xué)等多個領(lǐng)域。
具體來講,軟件工程涉及程序設(shè)計語言、數(shù)據(jù)庫、軟件開發(fā)工具、系統(tǒng)平臺、行業(yè)標(biāo)準(zhǔn)、嵌入式系統(tǒng)、人機(jī)界面、辦公套件、操作系統(tǒng)、編譯器、數(shù)據(jù)庫、網(wǎng)絡(luò)系統(tǒng)、網(wǎng)絡(luò)應(yīng)用、網(wǎng)絡(luò)游戲等。同時,各個行業(yè)幾乎都是軟件工程涉及的領(lǐng)域,如工業(yè)、農(nóng)業(yè)、銀行、航空、政府部門等。這些應(yīng)用促進(jìn)了經(jīng)濟(jì)和社會的發(fā)展,也提高了工作效率和生活效率。
3.軟件工程的基本原則
自從1968年在的軟件專業(yè)國際會議上正式提出并使用了“軟件工程”這個術(shù)語以來,研究軟件工程的專家學(xué)者們陸續(xù)提出了100多條關(guān)于軟件工程的準(zhǔn)則。著名的軟件工程專家巴利·玻姆(Barry W.Boehm)綜合專家們的意見并總結(jié)了TRW(美國天合公司)多年的開發(fā)軟件的經(jīng)驗,提出了軟件工程的7條基本原則,見下面的簡介。
(1)用分階段的生命周期計劃嚴(yán)格管理
統(tǒng)計表明,在不成功的軟件項目中,有50%左右是由于軟件計劃不合理造成的。在軟件開發(fā)與維護(hù)的生命周期中,需要完成許多性質(zhì)各異的工作。這條基本原理意味著,可以把軟件生命周期劃分成若干個階段,并相應(yīng)地制訂出切實可行的計劃,然后嚴(yán)格按照計劃對軟件的開發(fā)與維護(hù)工作進(jìn)行管理。
(2)堅持進(jìn)行階段評審
軟件工程概念提出之時,人們便已經(jīng)認(rèn)識到,軟件的質(zhì)量保證工作不能等到編碼階段結(jié)束之后再開始。這樣說至少有兩個理由:第一,大部分錯誤是在編碼之前造成的,例如,根據(jù)巴利·玻姆等人的統(tǒng)計,設(shè)計錯誤占軟件錯誤的63%,編碼錯誤僅占37%;第二,錯誤發(fā)現(xiàn)與改正得越晚,所付出的代價便會越高。因此,在軟件工程的每個階段都應(yīng)進(jìn)行嚴(yán)格的評審,以便盡早發(fā)現(xiàn)在軟件開發(fā)過程中所犯的錯誤,這是一條必須遵循的重要原則。
(3)實行嚴(yán)格的產(chǎn)品控制
在軟件開發(fā)過程中不應(yīng)隨意改變需求,因為改變一項需求往往需要付出較高的代價。但是,在軟件開發(fā)過程中改變需求又是難免的,只能依靠科學(xué)的產(chǎn)品控制技術(shù)來順應(yīng)這種要求。也就是說,當(dāng)改變需求時,為了保持軟件各個配置成分的一致性,必須實行嚴(yán)格的產(chǎn)品控制,其中主要是實行基準(zhǔn)配置(又稱為基線配置)管理。所謂基準(zhǔn)配置是經(jīng)過階段評審后的軟件配置成分(各個階段產(chǎn)生的文檔或程序代碼)。基準(zhǔn)配置管理也稱為變動控制:一切有關(guān)修改軟件的建議,特別是涉及對基準(zhǔn)配置的修改建議,都必須按照嚴(yán)格的程序進(jìn)行評審,獲得批準(zhǔn)以后才能實施修改。絕對不能誰想修改軟件(包括尚在開發(fā)過程中的軟件),誰就隨意地修改。
(4)采用現(xiàn)代程序設(shè)計技術(shù)
從提出軟件工程的概念開始,人們一直把主要精力用于研究各種新型程序設(shè)計技術(shù),并進(jìn)一步研究各種先進(jìn)的軟件開發(fā)與維護(hù)技術(shù)。實踐證明,采用先進(jìn)的技術(shù)不僅可以提高軟件開發(fā)和維護(hù)效率,而且可以提高軟件產(chǎn)品的質(zhì)量。
(5)結(jié)果應(yīng)能清楚地審查
軟件產(chǎn)品不同于一般的生活用品,它是看不見摸不著的智力型產(chǎn)品。軟件開發(fā)人員(或開發(fā)團(tuán)隊)的工作進(jìn)展情況可見性差,難以準(zhǔn)確度量,從而使得軟件產(chǎn)品的開發(fā)過程比普通產(chǎn)品的開發(fā)過程更難于評價和管理。為了提高軟件開發(fā)過程的可見性,實現(xiàn)高效管理,應(yīng)該根據(jù)軟件開發(fā)項目的總目標(biāo)及完成期限,規(guī)定開發(fā)組織的責(zé)任和產(chǎn)品標(biāo)準(zhǔn),從而使得所得到的結(jié)果能夠清楚地審查。
(6)開發(fā)團(tuán)隊的人員應(yīng)該少而精
開發(fā)團(tuán)隊人員的能力和數(shù)量是影響軟件產(chǎn)品質(zhì)量和開發(fā)效率的重要因素。能力強(qiáng)的人員的開發(fā)效率比能力平常的人員的開發(fā)效率可能高幾倍至幾十倍,而且素質(zhì)高的人員所開發(fā)的軟件中的錯誤明顯少于素質(zhì)低的人員所開發(fā)的軟件中的錯誤。此外,隨著開發(fā)團(tuán)隊人員數(shù)目的增加,因為交流情況討論問題而造成的溝通成本也急劇增加。因此,開發(fā)團(tuán)隊成員少而精的是軟件工程成功的一條基本原則。
(7)承認(rèn)不斷改進(jìn)軟件工程實踐的必要性
遵循上述6條基本原理,就能夠按照當(dāng)代軟件工程基本原理實現(xiàn)軟件的工程化生產(chǎn),但是,僅有上述6條原理并不能保證軟件開發(fā)與維護(hù)的過程能趕上時代前進(jìn)的步伐,能跟上技術(shù)的不斷進(jìn)步。因此,巴利·玻姆提出,應(yīng)把承認(rèn)不斷改進(jìn)軟件工程實踐的必要性作為軟件工程的第7條基本原理。按照這條原理,不僅要積極主動地采用新的軟件技術(shù),而且要注意不斷總結(jié)經(jīng)驗,例如,收集進(jìn)度和資源耗費(fèi)數(shù)據(jù),收集出錯類型和問題報告數(shù)據(jù)等。這些數(shù)據(jù)不僅可以用來評價新的軟件技術(shù)的效果,而且可以用來指明必須著重開發(fā)的軟件工具或應(yīng)該優(yōu)先研究的技術(shù)。
【案例1】
千年危機(jī)
計算機(jī)“2000年問題”又稱“千年蟲”問題或“千年危機(jī)”,它是指,在較早時期的某些計算機(jī)智能系統(tǒng)中(包括計算機(jī)系統(tǒng)、自動控制系統(tǒng)等),由于其年份只使用兩位十進(jìn)制數(shù)來表示,因此當(dāng)系統(tǒng)進(jìn)行(或涉及)跨世紀(jì)的日期處理運(yùn)算時(如多個日期之間的計算或比較等),就會出現(xiàn)錯誤的結(jié)果,進(jìn)而引發(fā)各種各樣的系統(tǒng)功能紊亂甚至崩潰。因此從根本上說“千年蟲”是一種程序在處理日期時遺留的Bug(程序缺陷),而非病毒。
【案例2】
毫秒誤差
在1991年的“海灣戰(zhàn)爭”中,一枚伊拉克發(fā)射的飛毛腿導(dǎo)彈準(zhǔn)確擊中美國在沙特阿拉伯的宰赫蘭基地,當(dāng)場炸死28個美國士兵,炸傷100多人,造成美軍在海灣戰(zhàn)爭中一次傷亡超過百人的案例。
在后來的調(diào)查中發(fā)現(xiàn),由于一個簡單的計算機(jī)Bug,使該基地的美國“愛國者”反導(dǎo)彈系統(tǒng)失效,未能準(zhǔn)確攔截飛毛腿導(dǎo)彈。當(dāng)時,負(fù)責(zé)防衛(wèi)該基地的愛國者反導(dǎo)彈系統(tǒng)已經(jīng)連續(xù)工作了100個小時。該系統(tǒng)每工作一個小時,系統(tǒng)內(nèi)的時鐘會有一個微小的毫秒級延遲,這就是造成上述功能“失效”的根源。愛國者反導(dǎo)彈系統(tǒng)的時鐘寄存器設(shè)計為24位,因而時間的精度也只限于24位的精度。在經(jīng)過長時間的工作后,這個微小的精度誤差被漸漸積累放大。在工作了100小時后,系統(tǒng)時間的延遲約為0.33秒。
對一般人人來說,0.33秒是微不足道的。但是對一個需要跟蹤并摧毀一枚空中飛彈的雷達(dá)系統(tǒng)來說,便是致命性的了,這個“微不足道的”0.33秒造成的攔截導(dǎo)彈飛行距離誤差約為600米。
【任務(wù)實施】
消除軟件危機(jī)的途徑
(1)在進(jìn)行項目開發(fā)的時候,要徹底消除“軟件就是程序”的錯誤觀念。明確軟件是程序、文檔、數(shù)據(jù)的完整集合。程序是能夠完成預(yù)定功能和性能的可執(zhí)行的指令序列,文檔是開發(fā)、使用和維護(hù)程序所需要的資料;數(shù)據(jù)是指使程序能夠適當(dāng)?shù)靥幚硇畔⒌臄?shù)據(jù)結(jié)構(gòu)及其數(shù)值,是完成實際功能的基礎(chǔ)。
(2)以軟件工程的觀點、方法和技術(shù)來進(jìn)行軟件開發(fā)。充分認(rèn)識到軟件開發(fā)是一種組織良好、管理嚴(yán)密、各類人員協(xié)同配合、共同完成的工程項目,不是個人獨立的勞動。必須充分吸取和借鑒人類長期以來從事各種工程項目所積累的行之有效的原理、概念、技術(shù)、方法和經(jīng)驗,特別要吸取幾十年來人類從事計算機(jī)軟件與硬件研究和開發(fā)的經(jīng)驗教訓(xùn)。
(3)推廣和使用在實踐中總結(jié)出來的軟件開發(fā)的成功技術(shù)和方法,盡快消除一些錯誤概念和做法。
(4)開發(fā)和使用更好的軟件工具。在軟件開發(fā)過程中,人們研制和開發(fā)了各種各樣的軟件工具。這些工具能極大地方便開發(fā)工作,提高開發(fā)效率,提高軟件開發(fā)的管理水平,從而顯著提升軟件開發(fā)的整體效率和效果。此外,還可以把多種軟件開發(fā)工具有機(jī)地集合成為一個整體,形成能夠連續(xù)支持軟件開發(fā)與維護(hù)全過程的集成化軟件開發(fā)環(huán)境。在軟件開發(fā)的每個階段都有許多復(fù)雜、重復(fù)的工作要做,在適當(dāng)?shù)能浖ぞ咻o助下,開發(fā)人員可以明顯提升軟件的生產(chǎn)效率。
(5)當(dāng)前,人工智能與軟件工程的結(jié)合已成為一個熱門話題。基于程序變換、自動生成和可重用軟件等軟件新技術(shù)研究與應(yīng)用已有許多成功的案例,把程序設(shè)計自動化的進(jìn)程向前推進(jìn)了一步。軟件標(biāo)準(zhǔn)化與可重用性也得到了工業(yè)界的高度重視,它們在避免重復(fù)勞動,緩解軟件危機(jī)方面起到了重要的作用。
【任務(wù)拓展】
軟件開發(fā)項目的具體實施
在具體實施軟件開發(fā)項目時,首先,我們要選擇好軟件開發(fā)的環(huán)境,包括操作系統(tǒng)、開發(fā)平臺及開發(fā)語言、開發(fā)工具和數(shù)據(jù)庫等。操作系統(tǒng)常見的有Windows、Linux、Mac OS等;開發(fā)平臺使用的比較多的有.net、Java平臺等;開發(fā)語言常用的有C/C++、C#、Java、Python、PHP等;開發(fā)工具有Visual Studio、Eclipse等;數(shù)據(jù)庫通常使用關(guān)系型數(shù)據(jù)庫,例如MySQL、Oracle、SQL Server等。在具體實施時,應(yīng)根據(jù)項目各方面的綜合要求,科學(xué)合理地選擇開發(fā)環(huán)境。
其次,還要確定開發(fā)模型、開發(fā)模式及軟件文檔的書寫工具。軟件開發(fā)模型是跨越整個生存周期的系統(tǒng)開發(fā)、運(yùn)作和維護(hù)所實施的過程、活動和任務(wù)的開發(fā)流程框架。常見的有瀑布模型、V模型、原型模型、螺旋模型、增量模型、敏捷模型等。
當(dāng)前軟件開發(fā)的模式有C/S與B/S模式,C/S即Client/Server(客戶端/服務(wù)器)模式。B/S即Browser/Server(瀏覽器/服務(wù)器)模式。B/S模式是Web興起后的一種網(wǎng)絡(luò)結(jié)構(gòu)模式,Web瀏覽器是客戶端最主要的應(yīng)用軟件。
軟件文檔是軟件項目開發(fā)過程中不可缺少的一部分,軟件文檔在軟件開發(fā)人員、軟件管理人員、軟件測試人員、軟件維護(hù)人員、用戶以及計算機(jī)之間起著重要的橋梁作用,不僅是軟件開發(fā)的各階段的重要依據(jù),而且也影響軟件的可維護(hù)性。
【知識鏈接】
中國軟件行業(yè)市場現(xiàn)狀與發(fā)展趨勢
從改革開放到現(xiàn)在,中國的軟件產(chǎn)業(yè)從無到有,從弱到強(qiáng),產(chǎn)生了眾多成功的軟件企業(yè),開發(fā)了許多高水平的軟件產(chǎn)品,得到了世界的認(rèn)可。工業(yè)和信息化部發(fā)布數(shù)據(jù)顯示,2019年,我國軟件行業(yè)實現(xiàn)收入約7萬億元,2021年,我國軟件和信息技術(shù)服務(wù)業(yè)運(yùn)行態(tài)勢良好,累計完成軟件業(yè)務(wù)收入約9萬億元,軟件業(yè)利潤總額超過1萬億元,均呈現(xiàn)良好的快速增長態(tài)勢。
1.軟件行業(yè)在國民經(jīng)濟(jì)中的地位逐步上升
隨著近年來科技的發(fā)展,軟件行業(yè)在國民經(jīng)濟(jì)中所占比重逐年上升,工信部公布的數(shù)據(jù)顯示:2013年至2019年,軟件行業(yè)收入占我國GDP的比重從5.14%上升至7.24%,2020前三季度軟件行業(yè)收入占我國GDP的比重為8.08%,分領(lǐng)域看,2021年,軟件產(chǎn)品收入同比增長12.3%,占全行業(yè)收入比重為25.7%。其中,工業(yè)軟件產(chǎn)品實現(xiàn)收入同比增長24.8%。工業(yè)軟件應(yīng)用的快速普及,與制造業(yè)數(shù)字化轉(zhuǎn)型需求不斷釋放緊密相關(guān)。值得一提的是,信息技術(shù)服務(wù)收入增速領(lǐng)先。2021年,信息技術(shù)服務(wù)收入同比增長20.0%,其中,云服務(wù)、大數(shù)據(jù)服務(wù)共實現(xiàn)收入同比增長21.2%,軟件行業(yè)在國民經(jīng)濟(jì)中的地位日益重要。
2.軟件行業(yè)規(guī)模逐年擴(kuò)大
近幾年來,我國軟件和信息技術(shù)服務(wù)業(yè)運(yùn)行態(tài)勢良好,收入和效益保持較快增長,吸納就業(yè)人數(shù)穩(wěn)步增加;產(chǎn)業(yè)向高質(zhì)量方向發(fā)展步伐加快,結(jié)構(gòu)持續(xù)調(diào)整優(yōu)化,新的增長點不斷涌現(xiàn),服務(wù)和支撐兩個強(qiáng)國建設(shè)能力顯著增強(qiáng),正在成為數(shù)字經(jīng)濟(jì)發(fā)展、智慧社會演進(jìn)的重要驅(qū)動力量。“天眼查”App提供的數(shù)據(jù)顯示,我國工業(yè)軟件相關(guān)企業(yè)數(shù)量持續(xù)增長,2017年至2021年,新增注冊企業(yè)數(shù)量平均增速達(dá)27.3%。
3.軟件行業(yè)技術(shù)發(fā)展趨勢
在軟件產(chǎn)業(yè)發(fā)展模式上,和美國等世界發(fā)達(dá)國家相比,我國的軟件設(shè)計能力尚顯薄弱,可以和國外優(yōu)秀軟件公司匹敵的軟件產(chǎn)品尚不豐富,我國的軟件產(chǎn)品在國際市場上的競爭力還不夠強(qiáng)。與印度、愛爾蘭、以色列等國家相比,我國軟件邁向國際市場的政策和策略還不夠清晰明了,相關(guān)的支持措施、激勵方案和重點項目依然不足,軟件產(chǎn)品出口比重較小,這些需要國家主管部門、軟件行業(yè)企業(yè)及其行業(yè)的從業(yè)人員共同努力,使我國成為名副其實的軟件強(qiáng)國。進(jìn)入21世紀(jì),我國政府對軟件行業(yè)的扶持力度不斷加大,隨著技術(shù)的不斷進(jìn)步與創(chuàng)新,未來軟件行業(yè)技術(shù)將呈現(xiàn)網(wǎng)絡(luò)化、服務(wù)化、智能化、平臺化以及融合化的發(fā)展趨勢。
【課后閱讀】
計算機(jī)相關(guān)證書
計算機(jī)專業(yè)的大學(xué)生畢業(yè)后,應(yīng)聘時如果持有一些專業(yè)的技術(shù)證書,很容易從眾多的應(yīng)聘者中脫穎而出。目前,各種計算機(jī)職業(yè)相關(guān)的證書種類較多,現(xiàn)介紹和軟件工程相關(guān)的兩項考試。
一、全國計算機(jī)等級考試
全國計算機(jī)等級考試(National Computer Rank Examination,簡稱NCRE),是國家教育主管部門批準(zhǔn),由教育部考試中心主辦,面向社會,用于考查應(yīng)試人員計算機(jī)應(yīng)用知識與能力的全國性計算機(jī)水平考試。
全國計算機(jī)等級考試共分為四個等級。
一級:操作技能級。考核計算機(jī)基礎(chǔ)知識及計算機(jī)基本操作能力,以及Office辦公軟件、圖形圖像軟件、網(wǎng)絡(luò)安全等軟件和工具的綜合應(yīng)用能力。
二級:程序設(shè)計、辦公軟件高級應(yīng)用級。考核內(nèi)容包括計算機(jī)語言與基礎(chǔ)程序設(shè)計能力,要求參試者至少掌握一門計算機(jī)語言,可選類別有高級語言程序設(shè)計類、數(shù)據(jù)庫程序設(shè)計類、Web程序設(shè)計類等;二級考試還包括辦公軟件高級應(yīng)用能力,要求參試者具有計算機(jī)應(yīng)用知識及辦公軟件的高級應(yīng)用能力,能夠在實際辦公環(huán)境中開展具體應(yīng)用。
三級:工程師預(yù)備級。考核面向應(yīng)用、面向職業(yè)的崗位專業(yè)技能。分為網(wǎng)絡(luò)技術(shù)、數(shù)據(jù)庫技術(shù)、信息安全技術(shù)、嵌入式系統(tǒng)開發(fā)技術(shù)四個類別。
四級:工程師級。四級證書面向已持有三級相關(guān)證書的考生,考核計算機(jī)專業(yè)課程,是面向應(yīng)用、面向職業(yè)的工程師崗位證書。分為網(wǎng)絡(luò)工程師、數(shù)據(jù)庫工程師、軟件測試工程師、信息安全工程師。
二、計算機(jī)技術(shù)與軟件專業(yè)技術(shù)資格(水平)考試
計算機(jī)技術(shù)與軟件專業(yè)技術(shù)資格(水平)考試(簡稱計算機(jī)軟件考試)是原中國計算機(jī)軟件專業(yè)技術(shù)資格和水平考試的完善與發(fā)展。計算機(jī)軟件考試是由國家人力資源和社會保障部、工業(yè)和信息化部批準(zhǔn)的國家級考試。其目的是,科學(xué)、公正地對全國計算機(jī)技術(shù)與軟件專業(yè)技術(shù)人員進(jìn)行職業(yè)資格、專業(yè)技術(shù)資格認(rèn)定和專業(yè)技術(shù)水平測試。
通過考試獲得證書的人員,表明其已具備從事相應(yīng)專業(yè)崗位工作的水平和能力,用人單位可根據(jù)工作需要從獲得證書的人員中擇優(yōu)聘任相應(yīng)專業(yè)技術(shù)職務(wù)。計算機(jī)技術(shù)與軟件專業(yè)實施全國統(tǒng)一考試后,不再進(jìn)行相應(yīng)專業(yè)技術(shù)職務(wù)任職資格的評審工作。因此,這種考試既是職業(yè)資格考試,又是專業(yè)技術(shù)資格考試。同時,這種考試還具有水平考試性質(zhì),報考任何級別不需要學(xué)歷、資歷條件,考生可根據(jù)自己熟悉的專業(yè)情況和水平選擇適當(dāng)?shù)募墑e報考。
計算機(jī)軟件考試分5個專業(yè)類別:計算機(jī)軟件、計算機(jī)網(wǎng)絡(luò)、計算機(jī)應(yīng)用技術(shù)、信息系統(tǒng)、信息服務(wù)。每個專業(yè)類別又分三個層次:高級資格(高級工程師)、中級資格(工程師)、初級資格(助理工程師、技術(shù)員)。對每個專業(yè)、每個層次,設(shè)置了若干個資格(或級別)。
考試合格者將頒發(fā)由中華人民共和國人力資源和社會保障部、工業(yè)和信息化部簽發(fā)的計算機(jī)技術(shù)與軟件專業(yè)技術(shù)資格(水平)證書。該證書在全國范圍內(nèi)有效。
- 國際市場營銷理論與實務(wù)
- 廣告策劃
- 中藥儲存與養(yǎng)護(hù)
- 公關(guān)禮儀與口才
- 染整技術(shù)(染色分冊)
- 物流信息技術(shù)與應(yīng)用
- Flash CS5動畫設(shè)計與制作實例教程(第2版)
- 石油地質(zhì)
- Flash CS5動畫制作
- 咖啡館點心與輕食
- 單片機(jī)應(yīng)用技術(shù)項目式教程:Proteus仿真+實訓(xùn)電路
- 銀行柜員基本技能(第2版)
- 會計綜合實訓(xùn)(附原始憑證)(第3版)
- 汽車發(fā)動機(jī)檢修(第2版)
- 用友ERP-U8 V10.1:財務(wù)管理系統(tǒng)教程(移動學(xué)習(xí)版 第2版)