官术网_书友最值得收藏!

1.3 軍用軟件工程的概念和基本原理

1.3.1 軟件工程的概念

1.軟件工程概念的提出

為了克服軟件危機,1968年在北大西洋公約組織(NATO)召開的計算機科學會議上,Fritz Bauer首先提出“軟件工程”的概念,試圖用工程的方法和管理手段,將軟件開發納入工程化的軌道,以便開發出成本低、功能強、可靠性高的軟件產品。幾十年來,人們一直在努力探索克服軟件危機的途徑。

許多計算機和軟件科學家嘗試,把其他工程領域中行之有效的工程學知識運用到軟件開發工作中來,主要思想都是強調在軟件開發過程中需要應用工程化原則的重要性。經過不斷實踐和總結,最后得出一個結論:按工程化的原則和方法組織軟件開發工作是有效的,也是擺脫軟件危機的一個主要出路。

Fritz Bauer 曾經為軟件工程下了定義:“軟件工程是為了經濟地獲得能夠在實際機器上有效運行的可靠軟件而建立和使用的一系列完善的工程化原則。”

1983年IEEE給出的定義為:“軟件工程是開發、運行、維護和修復軟件的系統方法。”其中,“軟件”的定義為:計算機程序、方法、規則、相關的文檔資料及其在計算機上運行時所必需的數據。

GB/T 11457—2006《信息技術 軟件工程術語》中將“軟件工程”定義為“軟件開發、運行、維護和引退的系統方法”,目的就是為軟件全生存周期活動提供工程化的手段,從而提高軟件質量、降低成本和縮短開發周期等。

軟件工程是一門綜合性的交叉學科,它涉及計算機科學、工程科學、管理科學和數學等。計算機科學中的研究成果都可以用于軟件工程,但計算機科學著眼于原理和理論,軟件工程著眼于如何建造一個軟件系統。此外,軟件工程要用工程科學中的技術來進行成本估算、安排進度及制訂計劃和方案;軟件工程還要利用管理科學中的方法原理來實現軟件生產的管理;并用數學的方法建立軟件開發中的各種模型和算法,如可靠性模型、形式化模型等。

由于軍用軟件本身所固有的高復雜性、研制的高風險性及管理的高難度,使軍用軟件的發展一直在曲折中前進,軍用軟件質量和生產率無法滿足軍事要求、預算嚴重超支、項目延期或中途下馬等事件屢見不鮮。

軍用軟件工程就是研究軍用軟件開發、運行、維護和管理的系統方法,是軟件工程理論和方法在軍事領域中的應用。軍用軟件工程由于其在有效提高軍用軟件質量方面發揮了重要作用而迅速發展起來。

2.軟件工程的要素

針對軍用軟件的特殊應用和特點,軍用軟件工程主要包括4個要素:方法與技術、工具與環境、管理與控制、標準與規范。

軟件工程方法與技術提供關于軟件開發的一般原則、工作框架、開發策略和若干實用技術。其中包括軟件生存周期模型、自頂向下方法、結構化開發方法、面向對象的方法、需求工程和測試技術等。

軟件工程工具與環境為軟件工程方法提供自動或半自動的軟件支撐環境。它可用于提高軟件的生產率,保證軟件質量,便于軟件測試和集成,提高軟件開發過程的可見性和可控性。

軟件工程管理與控制是將軟件工程的方法和工具綜合起來,以達到合理、及時地進行計算機軟件開發的目的。軟件工程管理主要包括項目、配置、文檔、質量、經費、人員與進度等方面的內容。

軟件工程標準與規范是為軟件開發和管理的過程及軟件產品規定的共同準則,它通常包括術語和符號標準、產品標準、方法和技術標準及管理標準等。

1.3.2 軟件工程的基本原理

軟件工程運用工程學的基本原理和方法來組織和實施軟件生產,其后又發展了與軟件有關的心理學、生理學和經濟學等方面的學科。在此期間,研究軟件工程學的科學家們陸續提出了 100 多條有關軟件工程的準則,1983年美國TRW公司B.W.Boehm將它們概括為著名的軟件工程7條原則。

(1)按軟件生存周期分階段制訂計劃并認真實施。一個軟件從定義、開發、運行和維護,直到最終被廢棄,要經歷很長的時間,通常稱這樣一個時期為軟件生存周期。在軟件生存周期中需要完成許多不同性質的工作,所以應把軟件生存周期劃分為若干階段,并制訂出相應的可行計劃,且按照計劃對軟件的開發和維護活動進行管理。不同層次的管理人員都必須嚴格按照計劃各盡其職地管理軟件的開發和維護工作,不應受客戶或上級人員的影響而擅自背離預定計劃。

(2)堅持進行階段評審。軟件的質量保證工作不能等到編碼階段結束之后再進行。因為大部分錯誤是在編碼之前造成的,而且錯誤發現得越晚,為改正它付出的代價就越大。因此,在每個階段都要進行嚴格的評審,以盡早發現在軟件開發過程中產生的錯誤。根據統計,設計錯誤占軟件錯誤的63%,編碼錯誤僅占37%。

(3)堅持嚴格的產品控制。在軟件開發過程中不應隨意改變需求,因為改變一項需求往往需要付出較高的代價。但是,由于外界環境的變化或軟件工作范圍的變化,在軟件開發過程中改變需求又是難免的,不能硬性規定禁止客戶改變需求,只能依靠科學的產品變更控制技術來適應需求變更。就是說,當變更需求時,為了保持軟件各個配置成分的一致性,必須實施嚴格的產品控制,其中主要是實施基線配置管理。所謂基線配置,是經過評審后的軟件配置成分,包括各個階段產生的文檔或源代碼。一切有關軟件修改的建議,特別是涉及對基線配置的修改建議,都必須按照嚴格的規程進行審查,獲得批準之后才能實施修改。

(4)使用現代程序設計技術。自從提出軟件工程的概念以來,人們一直致力于研究各種新的程序設計技術。1960 年代末提出的結構化程序設計(Structural Programming,SP)技術,已經成為大多數人公認的能夠產生高質量程序的程序設計技術。隨著軟件建模技術的興起,繼而出現了結構化設計技術,接著又出現了結構化分析技術。實踐表明,采用先進的技術可提高軟件開發的生產率,還可提高軟件的可維護性。

(5)結果應能清楚地審查。軟件產品不同于一般的物理產品,它是看不見摸不著的邏輯產品。軟件開發人員或開發小組的工作進展情況可見性差,難以準確度量,使得軟件產品的開發過程比一般產品的開發過程更難于評價和管理。為了提高軟件開發過程的可見性,有效地進行管理,應當根據軟件開發項目的總目標及完成期限,規定開發組織的責任和產品標準,使得工作結果能夠得到清楚的審查。

(6)開發人員少而精。合理安排軟件開發小組人員的原則是參與人員應當少而精,即小組的成員應當具有較高的素質,且人數不應過多。人員素質高能大大提高軟件開發的生產率,明顯減少軟件中的錯誤。此外,隨著開發小組人數的增加,因交流開發進展情況和討論遇到的問題而造成的通信開銷也急劇增加。因此,應當保證軟件開發小組人員少而精。

(7)不斷改進開發過程。為保證軟件開發的過程能夠跟上技術的進步,必須不斷地靈活地改進軟件工程過程。為了達到這個要求,應當積極主動地采用新的軟件技術,注意不斷總結經驗。此外,需要注意收集和積累出錯類型、問題報告等數據,用以評估軟件技術的效果和軟件人員的能力,確定必須著重開發的軟件工具和應當優先研究的技術。

主站蜘蛛池模板: 大石桥市| 宜宾县| 榕江县| 龙游县| 临夏市| 上虞市| 呼和浩特市| 汾西县| 龙里县| 五常市| 信宜市| 睢宁县| 岢岚县| 高雄县| 治多县| 宜州市| 湘西| 阿勒泰市| 广西| 阿坝县| 石泉县| 日土县| 岳普湖县| 克拉玛依市| 恩平市| 饶河县| 义乌市| 明溪县| 丹东市| 新兴县| 手机| 永定县| 东丽区| 蒙山县| 安徽省| 罗源县| 营口市| 宁国市| 涿州市| 子洲县| 海林市|