版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
項目一軟件工程基礎(chǔ)任務(wù)一理解軟件及軟件工程任務(wù)二熟悉軟件開發(fā)流程任務(wù)三認識軟件質(zhì)量模型與CMMI模型
任務(wù)一理解軟件及軟件工程
自1968年北大西洋公約組織科技委員會在聯(lián)邦德國召開的國際學(xué)術(shù)會議上第一次提出軟件工程一詞以來,軟件工程已成為計算機軟件的一個重要分支和研究方向。軟件工程是指應(yīng)用計算機科學(xué)、數(shù)學(xué)及管理科學(xué)等原理,以工程化的原則和方法來解決軟件問題的工程,其目的是提高軟件生產(chǎn)率和軟件質(zhì)量,降低軟件成本。
操作一軟件
1.軟件定義
國家標準(GB)中對計算機軟件的定義為:與計算機系統(tǒng)的操作相關(guān)的計算機程序、規(guī)程、規(guī)則以及可能有的文件、文檔及數(shù)據(jù)。通常認為軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數(shù)據(jù)以及相關(guān)文檔的完整集合。其中,程序是軟件開發(fā)人員根據(jù)用戶需求開發(fā)的、用程序設(shè)計語言描述的、適合計算機執(zhí)行的指令(語句)序列;數(shù)據(jù)是使程序能夠正常操作信息的數(shù)據(jù)結(jié)構(gòu);文檔是與程序開發(fā)、維護和使用有關(guān)的圖文資料。應(yīng)該注意,程序并不是軟件,程序只是軟件的組成部分。
軟件按照功能可以分為應(yīng)用軟件、系統(tǒng)軟件、支撐軟件(或工具軟件),見表1-1。
表1-1軟?件?分?類?表
2.軟件特點
軟件產(chǎn)品不同于其他硬件產(chǎn)品,有其自身的特點:
(1)軟件是一種邏輯實體,是人類智慧的表現(xiàn)形式。軟件看不見、摸不著,其包裝、載體、印刷的文檔都不是其本身。
(2)軟件產(chǎn)品的生產(chǎn)過程與硬件不同。它沒有明顯的制作過程,不同于傳統(tǒng)意義上的硬件制造,至今尚未完全擺脫手工開發(fā)方式,開發(fā)效率受到很大的限制。
(3)軟件產(chǎn)品的使用與維護同硬件不同。軟件在運行、使用期間不存在磨損、老化問題,但可能存在錯誤,需要進行維護。
(4)軟件的開發(fā)、運行對計算機系統(tǒng)具有依賴性。軟件受計算機系統(tǒng)的限制,這導(dǎo)致了軟件移植的問題。
(5)軟件的復(fù)雜性隨其規(guī)模的增加迅速增大。大規(guī)模的硬件系統(tǒng)可以分解成小的子系統(tǒng)和部件,分別進行獨立的設(shè)計和制造后裝配到一起,只要符合預(yù)先定義的接口要求,就可以保證整個系統(tǒng)的正常運行。軟件系統(tǒng)的各個模塊之間有各種邏輯聯(lián)系,一起運行于同一個系統(tǒng)空間,模塊越多,相互的影響和關(guān)聯(lián)就越復(fù)雜,導(dǎo)致整個軟件的復(fù)雜度隨規(guī)模增大而指數(shù)性地增長。
(6)軟件的成本非常昂貴。
(7)軟件的開發(fā)是一個復(fù)雜的過程,其中包括管理和技術(shù)兩個層面。
操作二軟件危機
1.軟件的發(fā)展歷程
計算機系統(tǒng)總是離不開軟件,然而早期的硬件、軟件是融于一體的,為了使得某臺計算機設(shè)備能夠完成某項工作,不得不給它專門配置程序。隨著計算機技術(shù)的快速發(fā)展和計算機應(yīng)用領(lǐng)域的迅速拓寬,自20世紀60年代中期以來,軟件需求迅速增長,軟件數(shù)量急劇膨脹,于是,軟件從硬件設(shè)備中分離了出來,不僅成為了獨立的產(chǎn)品,并且逐漸發(fā)展成為一個專門的產(chǎn)業(yè)領(lǐng)域。觀察軟件的發(fā)展,可以發(fā)現(xiàn)軟件生產(chǎn)有三個發(fā)展階段,即程序設(shè)計階段、程序系統(tǒng)階段和軟件工程階段。
1)程序設(shè)計階段
20世紀50至60年代中期,隨著硬件的飛速發(fā)展,計算機實現(xiàn)批量生產(chǎn),逐步商業(yè)化,從一定程度上帶動了軟件的發(fā)展,然而軟件生產(chǎn)仍然以個體為主。這一時期的程序通常是針對特定計算機或者特定任務(wù)編制的專用程序,程序規(guī)模小,編寫強調(diào)算法效率和對計算機資源的充分利用,但沒有系統(tǒng)化方法和管理理論指導(dǎo)軟件開發(fā)。
2)程序系統(tǒng)階段
大約在20世紀60年代中期到70年代中期,出現(xiàn)了多道程序、多用戶系統(tǒng)和第一代數(shù)據(jù)庫管理系統(tǒng)等新技術(shù)。以IBM的S/360為代表的通用商業(yè)化大型計算機的出現(xiàn)為起點,一些軟件開發(fā)人員集合起來,專門為特定用戶在大型計算機上開發(fā)大型軟件系統(tǒng),編程語言和程序設(shè)計理論開始成熟,軟件生產(chǎn)以軟件作坊的形式出現(xiàn)。由于缺乏工程管理和系統(tǒng)化方法指導(dǎo)軟件開發(fā)和管理,許多軟件因為各種各樣的原因開發(fā)失敗或是無法維護,從而引發(fā)了軟件危機。為解決軟件危機,軟件工程學(xué)科誕生了。
3)軟件工程階段
在20世紀70年代中期到80年代中后期,結(jié)構(gòu)化的工程方法獲得了廣泛應(yīng)用,并成為一種成熟的軟件工程方法學(xué)。應(yīng)該說,采用工程的原理、技術(shù)和方法實施軟件產(chǎn)品開發(fā),以適應(yīng)軟件產(chǎn)業(yè)化發(fā)展的需要,成為這個時期諸多軟件企業(yè)的追求目標。
當(dāng)今時代是一個軟件產(chǎn)業(yè)高速發(fā)展的時期,以軟件為特征的“智能”產(chǎn)品不斷涌現(xiàn)。尤其是網(wǎng)絡(luò)通信技術(shù)、數(shù)據(jù)庫技術(shù)與多媒體技術(shù)的結(jié)合,徹底改變了軟件系統(tǒng)的體系結(jié)構(gòu),使得計算機的潛能獲得了更大程度的釋放??梢哉f,以計算機軟件為核心的信息技術(shù)的高速發(fā)展,已經(jīng)使得人們的生活方式與生活節(jié)奏發(fā)生了根本性的變化?!败浖こ獭弊援a(chǎn)生以來,人們就寄希望于它去沖破“軟件危機”這朵烏云。但是,軟件危機現(xiàn)象并沒有得到徹底排除,特別是,一些老的危機問題可能解決了,但接著又出現(xiàn)了許多新的危機問題,于是不得不去尋找一些更新的工程方法。應(yīng)該說,正是危機問題的不斷出現(xiàn),推動著軟件工程方法學(xué)的快速發(fā)展。
2.軟件危機
20世紀60年代末70年代初,西方工業(yè)發(fā)達國家經(jīng)歷了一場“軟件危機”。這場軟件危機表現(xiàn)在:一方面軟件十分復(fù)雜,價格昂貴,供需差日益增大;另一方面軟件開發(fā)又常常受挫,質(zhì)量差,制定的進度表和完成日期很少能按時實現(xiàn),研制過程很難管理,即軟件的研制往往失去控制。我們稱軟件開發(fā)和維護過程中所遇到的這一系列嚴重問題為軟件危機。這些問題絕不僅僅是不能正常運行的軟件才具有的,實際上,幾乎所有軟件都不同程度地存在這些問題。具體來說,軟件危機主要有以下一些方面的典型表現(xiàn):
(1)軟件開發(fā)成本、進度的估計很不準確。軟件開發(fā)機構(gòu)制定的項目計劃跟實際情況有很大差距,使得開發(fā)預(yù)算一再被突破。由于對工作量和開發(fā)難度估計不足,進度計劃無法按時完成,開發(fā)時間一再拖延,這種現(xiàn)象嚴重降低了軟件開發(fā)機構(gòu)的信譽。
(2)軟件產(chǎn)品常常與用戶的要求不一致。在開發(fā)過程中,軟件開發(fā)人員和用戶之間缺乏信息交流。開發(fā)人員常常是在對用戶要求只有模糊了解的情況下就倉促上陣,匆忙著手編寫程序。由于這些問題的存在,導(dǎo)致開發(fā)出來的軟件不能滿足用戶的實際應(yīng)用需要。
(3)軟件產(chǎn)品質(zhì)量可靠性差。軟件開發(fā)過程中,沒有建立起確實有效的質(zhì)量保證體系。一些軟件項目為了趕進度或降低軟件開發(fā)成本,甚至不惜降低軟件質(zhì)量標準、偷工減料。
(4)軟件文檔不完整、不一致。計算機軟件不僅僅是程序,在軟件開發(fā)過程中還應(yīng)該產(chǎn)生出一系列的文檔資料。實際上,軟件開發(fā)非常依賴這些文檔資料。在軟件開發(fā)過程中,軟件開發(fā)機構(gòu)的管理人員需要使用這些文檔資料來管理軟件項目;技術(shù)人員則需要利用文檔資料進行信息交流;用戶也需要通過這些文檔資料來認識軟件,對軟件進行驗收,熟悉軟件的安裝、操作等。但是,由于軟件項目管理工作的欠缺,軟件文檔往往不完整,對軟件的描述經(jīng)常不一致,很難通過文檔去跟蹤軟件開發(fā)過程中軟件產(chǎn)品規(guī)格的變更。
(5)軟件產(chǎn)品可維護性差。軟件中的錯誤非常難改正,軟件很難適應(yīng)新的硬件環(huán)境,很難根據(jù)用戶的需要在原有軟件中增加一些新的功能。這樣的軟件是不便于重用的,以前開發(fā)的軟件,一旦過時就不得不完全丟棄。
(6)軟件生產(chǎn)率低。軟件生產(chǎn)率跟不上硬件的發(fā)展速度,不能適應(yīng)計算機應(yīng)用的迅速普及,使得現(xiàn)代計算機硬件提供的巨大潛力不能被充分利用。
軟件危機現(xiàn)象最初出現(xiàn)在軟件發(fā)展的第二個階段——程序系統(tǒng)階段。自那時起,軟件工作者就一直在探尋導(dǎo)致軟件危機的原因,并期望能通過對軟件危機原因的分析,找到一種行之有效的、能夠克服軟件危機的方法、策略。通過對一系列危機現(xiàn)象的研究,人們總結(jié)發(fā)現(xiàn),產(chǎn)生軟件危機的原因主要體現(xiàn)在以下幾個方面:
(1)軟件具有不可見性。軟件不同于硬件,它是計算機系統(tǒng)中的邏輯部件,缺乏“可見性”。硬件錯誤往往可以通過它的物理現(xiàn)象直接反映出來,例如出現(xiàn)不正常的發(fā)熱、噪音現(xiàn)象等,但軟件錯誤沒有這些直觀表現(xiàn),軟件中存在的程序行錯誤,必須等到這行程序執(zhí)行時才有可能被發(fā)現(xiàn)。因此,軟件錯誤比起硬件錯誤來更難被發(fā)現(xiàn)。軟件的不可見特性也使得對軟件項目的量化管理更難實施,對軟件質(zhì)量的量化評價更難操作。
(2)軟件系統(tǒng)規(guī)模龐大。軟件成為產(chǎn)品以后已不同于早期程序,隨著功能的增多,其規(guī)模、復(fù)雜程度越來越大。例如,1968年美國航空公司訂票系統(tǒng)達到30萬條指令,IBM360OS第16版達到100萬條指令,1973年美國阿波羅計劃達到1000萬條指令。這些龐大規(guī)模的軟件系統(tǒng),其復(fù)雜程度已超過了人所能接受的程度,但是,面對更復(fù)雜的軟件系統(tǒng),其開發(fā)卻仍然需要依靠開發(fā)人員的個人創(chuàng)造與手工操作。
(3)軟件生產(chǎn)工程化管理程度低。軟件生產(chǎn)的工程化管理是軟件作為產(chǎn)品所必需的,這意味著軟件也需要像硬件一樣,在軟件分析、設(shè)計完成之后,才能考慮軟件的實現(xiàn)。應(yīng)該說,工程化管理能夠降低解決問題的代價。但是,許多軟件的開發(fā)往往是在分析、設(shè)計沒有完成的情況下,就已經(jīng)進入編碼實現(xiàn)階段。由于前期準備工作不充分,致使軟件項目管理混亂,嚴重影響軟件項目成本、開發(fā)進度和軟件質(zhì)量。
(4)對用戶需求關(guān)心程度不夠。軟件開發(fā)機構(gòu)不熟悉用戶業(yè)務(wù)領(lǐng)域。軟件技術(shù)人員所關(guān)注的僅僅是計算機技術(shù),他們不太愿意和用戶溝通,輕視對用戶的需求調(diào)查,也缺乏有效的用戶調(diào)查策略和手段。這就使得用戶的需求意愿得不到充分反映,甚至被錯誤理解。實際上,軟件是為用戶開發(fā)的,只有用戶才能真正了解他們自己的需要。由于沒有對用戶做大量深入細致的調(diào)查研究,以致軟件需求規(guī)格定義不準確,并最終使得完成后的軟件不能適應(yīng)用戶的應(yīng)用需要。
(5)對軟件維護重視程度不夠。在軟件產(chǎn)品開發(fā)過程中,開發(fā)者很少考慮這個軟件今后還需要提供維護。但是,軟件的使用周期漫長,軟件錯誤具有隱蔽性,許多年之后軟件仍可能需要改錯。另外,軟件的工作環(huán)境也可能會在幾年后發(fā)生改變,用戶也可能在軟件運行幾年以后,要求對它增加新的功能。這些都屬于軟件維護問題。實際上,軟件的可維護性是衡量軟件質(zhì)量的一項重要指標,軟件可維護性高,軟件就便于修正、改版和升級,由此可以使軟件具有更長的使用壽命。
(6)軟件開發(fā)工具自動化程度低。盡管軟件開發(fā)工具比30年前已經(jīng)有了很大的進步,但直到今天,軟件開發(fā)仍然離不開工程人員的個人創(chuàng)造與手工操作,軟件生產(chǎn)仍不可能像硬件設(shè)備的生產(chǎn)那樣,達到高度的自動化。
操作三軟件工程
1.軟件工程定義
軟件工程是指研究軟件生產(chǎn)的一門學(xué)科,也就是將完善的工程原理應(yīng)用于經(jīng)濟地生產(chǎn)既可靠又能在實際機器上有效運行的軟件。
1983年美國《IEEE軟件工程標準術(shù)語》對軟件工程下的定義為:“軟件工程是開發(fā)、運行、維護和修復(fù)軟件的系統(tǒng)方法。”其中“軟件”的定義為:計算機程序、方法、規(guī)則、相關(guān)的文檔資料以及在計算機上運行時所必需的數(shù)據(jù)。軟件工程是指應(yīng)用計算機科學(xué)、數(shù)學(xué)及管理科學(xué)等原理,以工程化的原則和方法來開發(fā)與維護軟件的學(xué)科。其目的是在規(guī)定的時間、規(guī)定的開發(fā)費用內(nèi)開發(fā)出滿足用戶需求的高質(zhì)量的軟件系統(tǒng)(高質(zhì)量是指錯誤率低、好用、易用、可移植、易維護等)。
2.軟件工程目標
軟件工程目標是基于軟件項目目標的成功實現(xiàn)而提出的,主要體現(xiàn)在以下幾個目標上:
(1)軟件開發(fā)成本較低;
(2)軟件功能能夠滿足用戶的需求;
(3)軟件性能較好;
(4)軟件可靠性高;
(5)軟件易于使用、維護與移植;
(6)能按時完成開發(fā)任務(wù),并及時交付使用。
3.軟件工程三要素
軟件工程技術(shù)是指軟件工程所具有的技術(shù)要素。作為軟件開發(fā)與維護的工程方法學(xué),軟件工程具有三個方面的技術(shù)要素,即軟件工程方法、軟件工具和軟件工程過程。
軟件工程方法是指完成軟件開發(fā)與維護任務(wù)時,應(yīng)該“如何做”的技術(shù)方法。它所涉及的任務(wù)貫穿于軟件開發(fā)、維護的整個過程之中,包括軟件需求分析、軟件結(jié)構(gòu)設(shè)計、程序算法設(shè)計等諸多任務(wù)。而其方法則體現(xiàn)在使用圖形或某種特殊語言來表現(xiàn)這些任務(wù)中需要建立的軟件系統(tǒng)模型,如數(shù)據(jù)流模型、軟件結(jié)構(gòu)模型、對象模型、組件模型等。主要的軟件工程方法有結(jié)構(gòu)化方法和面向?qū)ο蠓椒ā?/p>
(1)結(jié)構(gòu)化方法。結(jié)構(gòu)化方法是傳統(tǒng)的基于軟件生命周期的軟件工程方法,自20世紀70年代產(chǎn)生以來,獲得了極有成效的軟件項目應(yīng)用。結(jié)構(gòu)化方法是以軟件功能為目標來進行軟件構(gòu)建的,包括結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計、結(jié)構(gòu)化實現(xiàn)和結(jié)構(gòu)化維護等內(nèi)容,能夠很好地適應(yīng)結(jié)構(gòu)化編程工具,例如C、Pascal語言等。它主要使用數(shù)據(jù)流模型來描述軟件的數(shù)據(jù)加工過程,并可以通過數(shù)據(jù)流模型,由對軟件的分析順利過渡到對軟件的結(jié)構(gòu)設(shè)計。
(2)面向?qū)ο蠓椒āC嫦驅(qū)ο蠓椒ㄊ且攒浖栴}域中的對象為基本依據(jù)來構(gòu)造軟件系統(tǒng)模型的,包括面向?qū)ο蠓治?、面向?qū)ο笤O(shè)計、面向?qū)ο髮崿F(xiàn)和面向?qū)ο缶S護等內(nèi)容。確定問題域中的對象成分及其關(guān)系,建立軟件系統(tǒng)對象模型,是面向?qū)ο蠓治雠c設(shè)計過程中的核心內(nèi)容。自20世紀80年代以來,人們提出了許多有關(guān)面向?qū)ο蟮姆椒?,其中,由Booch、Rumbaugh、Jacobson等人提出的一系列面向?qū)ο蠓椒ǔ蔀榱酥髁鞣椒?,并被結(jié)合為統(tǒng)一建模語言(UML),成為了面向?qū)ο蠓椒ㄖ械墓J標準。面向?qū)ο蠓椒軌蜃钣行У剡m應(yīng)面向?qū)ο缶幊坦ぞ?,例如C++、Java等,并特別適用于面向用戶的交互式系統(tǒng)的開發(fā)。軟件工具是為了方便軟件工程方法的運用而提供的具有自動化特征的軟件支撐環(huán)境。軟件工具通常也稱為CASE,它是計算機輔助軟件工程(Computer-AidedSoftwareEngineering)的英文縮寫。CASE工具覆蓋面很廣,包括分析建模、設(shè)計建模、源代碼編輯生成、軟件測試等。表1-2所列是一些常用的CASE工具類別。表1-2常用的CASE工具類別軟件工程過程是指為了開發(fā)軟件產(chǎn)品,開發(fā)機構(gòu)在軟件工具的支持下,按照一定的軟件工程方法所進行的一系列軟件工程活動。實際上,這一系列的活動也就是軟件開發(fā)中開發(fā)機構(gòu)需要制定的工作步驟,它應(yīng)該是科學(xué)的、合理的,否則將影響軟件開發(fā)成本、進度與產(chǎn)品質(zhì)量。因此,軟件工程過程也就涉及了軟件產(chǎn)品開發(fā)中有哪些工作步驟,各個工作步驟分別具有什么樣的工作特征,以及各個工作步驟分別需要產(chǎn)生一些什么結(jié)果等方面的問題。
4.軟件工程基本原則
軟件工程是關(guān)于軟件項目的工程方法學(xué),其價值只能通過具體的軟件項目才能真正體現(xiàn)出來。為保證在軟件項目中能夠有效地貫徹與正確地使用軟件工程規(guī)程,需要有一定的軟件工程原則來對軟件項目加以約束。一些研究軟件工程的專家學(xué)者分別從不同的角度陸續(xù)提出過許多關(guān)于軟件工程的原則或“信條”,其中,著名的軟件工程專家B.W.Boehm經(jīng)過總結(jié),提出了以下7條基本原則:
(1)采用分階段的生命周期計劃,以實現(xiàn)對項目的嚴格管理。軟件項目的開展,需要計劃在先、實施在后。統(tǒng)計表明,50%以上的失敗項目是由于計劃不周而造成的。在軟件開發(fā)、維護的漫長生命周期中,需要完成許多性質(zhì)各異的工作,假若沒有嚴格有效的計劃對項目工作的開展加以約束,則必將使之后項目中的諸多工作處于一種混亂狀態(tài)。
采用分階段的生命周期計劃,實現(xiàn)對項目的嚴格管理,即意味著:應(yīng)該把軟件項目按照軟件的生命周期分成若干階段,以階段為基本單位制定出切實可行的計劃,并嚴格按照計劃對軟件的開發(fā)、維護實施有效的管理。
(2)堅持階段評審制度,以確保軟件產(chǎn)品質(zhì)量。軟件質(zhì)量是通過軟件產(chǎn)品反映出來的,但是,軟件質(zhì)量的形成貫穿于整個軟件開發(fā)過程之中。大量的軟件開發(fā)事實表明,軟件中的許多錯誤是在開始進行編碼之前就已經(jīng)形成了。根據(jù)有關(guān)統(tǒng)計:軟件設(shè)計錯誤占了軟件錯誤的63%,而編碼錯誤則僅占37%。
采用階段評審制度,也就是要求在軟件產(chǎn)品形成過程中,能夠?qū)ζ滟|(zhì)量實施過程監(jiān)控,以確保軟件在每個階段都能夠具有較高質(zhì)量。
實際上,軟件錯誤發(fā)現(xiàn)得越早,則錯誤越容易修正,為此所需付出的代價也就越少。因此,在每個階段都進行嚴格的評審,也有利于從管理制度上減少為保證質(zhì)量的成本代價。
(3)實行嚴格的產(chǎn)品控制,以適應(yīng)軟件規(guī)格的變更。軟件規(guī)格是軟件開發(fā)與軟件驗收的基本依據(jù),是不能隨意變更的。在軟件開發(fā)過程中若出現(xiàn)了軟件規(guī)格的變更,也就意味著軟件的開發(fā)費用因此增加了。
但是,在軟件開發(fā)過程中,改變軟件規(guī)格有時又是難免的,特別是那些需要較長的開發(fā)周期的軟件項目。例如,那些為專門用戶定制開發(fā)的軟件系統(tǒng),就有可能因為用戶的業(yè)務(wù)領(lǐng)域、服務(wù)方式發(fā)生了改變,而使軟件功能有了新的要求。面對用戶的新要求,顯然不能硬性禁止,而只能依靠科學(xué)的產(chǎn)品控制技術(shù)來適應(yīng)。實際上,許多通用軟件產(chǎn)品也存在規(guī)格變更這個問題,例如,軟件開發(fā)機構(gòu)為了使自己的軟件產(chǎn)品能夠在更多的環(huán)境下工作,而不得不針對所開發(fā)的軟件產(chǎn)品推出諸多不同的版本。實行嚴格的產(chǎn)品控制,就是當(dāng)軟件規(guī)格發(fā)生改變時,能夠?qū)浖?guī)格進行跟蹤記錄,以保證有關(guān)軟件產(chǎn)品的各項配置成分保持一致性,由此能夠適應(yīng)軟件規(guī)格的變更。
(4)采用先進的程序設(shè)計技術(shù)。許多先進的軟件工程方法往往都起源于先進的程序設(shè)計技術(shù)。例如,20世紀70年代初出現(xiàn)的C、Pascal,這些結(jié)構(gòu)化的程序設(shè)計語言,不僅成為了當(dāng)時先進的程序設(shè)計技術(shù),而且由此帶來了結(jié)構(gòu)化的軟件分析、設(shè)計方法。自20世紀80年代以來,隨著C++、Java等程序設(shè)計語言的產(chǎn)生,面向?qū)ο蟪绦蛟O(shè)計技術(shù)成為了更加先進的技術(shù),并由此推動了面向?qū)ο筌浖治?、設(shè)計方法的發(fā)展。自20世紀90年代開始,建立在面向?qū)ο蟪绦蛟O(shè)計技術(shù)基礎(chǔ)上的組件技術(shù)又隨之誕生了,于是,基于組件技術(shù)的軟件工程方法學(xué)也就不斷涌現(xiàn)了出來。采用先進的程序設(shè)計技術(shù)會獲得諸多方面的好處。它不僅會帶來更高的軟件開發(fā)效率,而且所開發(fā)出的軟件會具有更好的質(zhì)量,更加便于維護,并且往往具有更長久的使用壽命。例如,組件技術(shù)通過創(chuàng)建比起“類”來更加抽象、更具有通用性的基本組件,可以使軟件開發(fā)如同可插入的零件一樣裝配。這樣的軟件,不僅開發(fā)容易、維護便利,而且可以根據(jù)特定用戶的需要,更加方便地進行改裝。
(5)軟件成果應(yīng)該能夠清楚地審查。軟件成果是軟件開發(fā)的各個階段產(chǎn)生出來的一系列結(jié)果,是對軟件開發(fā)給出評價的基本依據(jù),包括系統(tǒng)文檔、用戶文檔、源程序、資源數(shù)據(jù)和最終產(chǎn)品等內(nèi)容。
針對軟件開發(fā)給出有效的評價,是軟件工程必須關(guān)注的重要內(nèi)容。但是,軟件產(chǎn)品是無形的邏輯產(chǎn)品,缺乏明確的物理度量標準。比起一般物理產(chǎn)品的開發(fā),軟件開發(fā)工作進展情況可見性差,其開發(fā)更難于管理與評價。因此,為了提高軟件開發(fā)過程的可見性,更好地管理軟件項目和評價軟件成果,應(yīng)該根據(jù)軟件開發(fā)項目的總目標及完成期限,規(guī)定軟件開發(fā)組織的責(zé)任和軟件成果標準,從而使所得到的結(jié)果能夠清楚地被審查。
(6)開發(fā)小組的人員應(yīng)該少而精。這條基本原則具有以下兩點含義:
其一,軟件開發(fā)小組組成人員的素質(zhì)應(yīng)該好。軟件開發(fā)是一種需要高度負責(zé)、高度協(xié)作的高智力勞動,因此,其對人員素質(zhì)的要求也就主要體現(xiàn)在智力水平、協(xié)作能力、團隊意識和責(zé)任意識等幾個方面。實際上,由高素質(zhì)人員組成的開發(fā)隊伍能夠形成一支很強的開發(fā)團隊,具有比由一般人員組成的開發(fā)隊伍高出幾倍、甚至幾十倍的開發(fā)效率,也能夠完成更加復(fù)雜的項目任務(wù)。其二,軟件開發(fā)小組的成員人數(shù)不宜過多。軟件的復(fù)雜性和無形性決定了軟件開發(fā)需要大量的通信。隨著軟件開發(fā)小組人員數(shù)目的增加,人員之間因為交流信息、討論問題而造成的通信開銷會急劇增大,這勢必影響人員之間的相互協(xié)作與工作質(zhì)量。因此,為了保證開發(fā)小組的工作效率,開發(fā)小組成員人數(shù)一般不應(yīng)超過5人。由于這個原因,一些有許多成員參加的大型項目,也就需要分成多個子項目,然后分別交給多個項目小組去完成。
(7)承認不斷改進軟件工程實踐的必要性。軟件工程的意義重在實踐,作為一門工程方法學(xué),它所推出的一系列原則、方法和標準,不僅來源于工程實踐,而且也需要在工程實踐中不斷地改進、完善。實際上,不同的軟件開發(fā)機構(gòu)可以根據(jù)自己的具體情況,建立起具有自己特征的軟件工程規(guī)程體系。應(yīng)該講,前述的六條基本原則,是實現(xiàn)軟件開發(fā)工程化這個目標的必要前提。但是,僅有這六條原則,還不足以保證軟件開發(fā)工程化進程能夠持久地進行下去。因此,Boehm提出了“承認不斷改進軟件工程實踐的必要性”,這表明:軟件工程在實際應(yīng)用中,應(yīng)該積極主動地采納新的軟件技術(shù),并不斷總結(jié)新的工程經(jīng)驗。
軟件技術(shù)在不斷進步,軟件的應(yīng)用領(lǐng)域也在不斷拓寬,軟件工程必須緊緊跟上新時代軟件的發(fā)展,才能獲得更加持久的生命力。
任務(wù)二熟悉軟件開發(fā)流程
操作一軟件生命周期
如任何事物一樣,軟件也有其孕育、誕生、成長、成熟和衰亡的生存過程,一般稱其為“軟件生命周期”。具體來說,軟件生命周期是指軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用并退役的過程。
軟件生命周期一般分為6個階段,即制定計劃、需求分析、設(shè)計、編碼、測試、運行和維護。軟件開發(fā)的各個階段之間的關(guān)系不可能是順序且線性的,而應(yīng)該是帶有反饋的迭代過程。在軟件工程中,這個復(fù)雜的過程用軟件開發(fā)模型來描述和表示。軟件生命周期由軟件定義、軟件開發(fā)和軟件維護三個時期組成,每個時期又可進一步劃分成若干個階段。
1.軟件定義時期
(1)問題定義:這是軟件生存期的第一個階段,主要任務(wù)是弄清用戶要計算機解決的問題是什么。
(2)可行性研究:任務(wù)是為前一階段提出的問題尋求一種至數(shù)種在技術(shù)上可行、在經(jīng)濟上有較高效益的解決方案。
2.軟件開發(fā)時期
(1)需求分析:弄清用戶對軟件系統(tǒng)的全部需求,主要是確定目標系統(tǒng)必須具備哪些功能。
(2)總體設(shè)計:設(shè)計軟件的結(jié)構(gòu),即確定程序由哪些模塊組成以及模塊間的關(guān)系。
(3)詳細設(shè)計:針對單個模塊的設(shè)計。
(4)編碼:按照選定的語言,把模塊的過程性描述翻譯為源程序。
(5)測試:通過各種類型的測試(及相應(yīng)的調(diào)試)使軟件達到預(yù)定的要求。
3.軟件維護時期
這是軟件生存周期的最后一個時期。軟件人員在這一時期的工作,主要是做好軟件維護。維護的目的,是保證軟件在整個生存周期內(nèi)滿足用戶的需求和延長軟件的使用壽命。
操作二常用的軟件開發(fā)模型
為了指導(dǎo)軟件的開發(fā),用不同的方式將軟件生存周期中的所有開發(fā)活動組織起來,形成不同的軟件開發(fā)模型。軟件開發(fā)模型是跨越整個軟件生存周期的系統(tǒng)開發(fā)、運行和維護所實施的全部工作和任務(wù)的結(jié)構(gòu)框架,它給出了軟件開發(fā)活動各階段之間的關(guān)系。常見的軟件開發(fā)模型有瀑布模型、螺旋模型、快速原型模型、噴泉模型等。本節(jié)將簡單地比較并分析瀑布模型、螺旋模型、快速原型模型、噴泉模型等軟件開發(fā)模型。
1.瀑布模型
瀑布模型即生存周期模型,其核心思想是按工序?qū)栴}化簡,將功能的實現(xiàn)與設(shè)計分開,便于分工協(xié)作,即采用結(jié)構(gòu)化的分析與設(shè)計方法將邏輯實現(xiàn)與物理實現(xiàn)分開。瀑布模型將軟件生命周期劃分為軟件計劃、需求分析和定義、軟件設(shè)計、軟件實現(xiàn)、軟件測試、軟件運行和維護這6個階段,規(guī)定了它們自上而下、相互銜接的固定次序,如同瀑布流水逐級下落。采用瀑布模型的軟件過程如圖1-1所示。圖1-1采用瀑布模型的軟件過程瀑布模型是最早出現(xiàn)的軟件開發(fā)模型,在軟件工程中占有重要的地位,它提供了軟件開發(fā)的基本框架。瀑布模型的本質(zhì)是一次通過,即每個活動只執(zhí)行一次,最后得到軟件產(chǎn)品,也稱為“線性順序模型”或者“傳統(tǒng)生命周期”。其過程是從上一項活動接收該項活動的工作對象作為輸入,利用這一輸入實施該項活動應(yīng)完成的內(nèi)容,給出該項活動的工作成果,并作為輸出傳給下一項活動,同時評審該項活動的實施,若確認,則繼續(xù)下一項活動,否則返回前面、甚至更前面的活動。瀑布模型有利于大型軟件開發(fā)過程中人員的組織及管理,有利于軟件開發(fā)方法和工具的研究與使用,從而提高了大型軟件項目開發(fā)的質(zhì)量和效率。然而軟件開發(fā)的實踐表明,上述各項活動之間并非完全是自上而下且呈線性圖式的,因此瀑布模型存在如下嚴重的缺陷:
(1)由于開發(fā)模型呈線性,所以當(dāng)開發(fā)成果尚未經(jīng)過測試時,用戶無法看到軟件的效果。這樣軟件與用戶見面的時間間隔較長,也增加了一定的風(fēng)險。
(2)在軟件開發(fā)前期發(fā)現(xiàn)的錯誤傳到后面的開發(fā)活動中時,可能會擴散,進而可能會造成整個軟件項目開發(fā)失敗。
(3)在軟件需求分析階段,完全確定用戶的所有需求是比較困難的,甚至可以說是不太可能的。
2.螺旋模型
螺旋模型將瀑布模型和演化模型(EvolutionModel)結(jié)合起來,它不僅體現(xiàn)了兩個模型的優(yōu)點,而且還強調(diào)了其他模型均忽略了的風(fēng)險分析。這種模型的每一個周期都包括需求定義、風(fēng)險分析、工程實現(xiàn)和評審4個階段,由這4個階段進行迭代。軟件開發(fā)過程每迭代一次,軟件開發(fā)就前進一個層次。采用螺旋模型的軟件過程如圖1-2所示。
螺旋模型的基本做法是在“瀑布模型”的每一個開發(fā)階段前引入非常嚴格的風(fēng)險識別、風(fēng)險分析和風(fēng)險控制,它把軟件項目分解成一個個小項目,每個小項目都標識一個或多個主要風(fēng)險,直到所有的主要風(fēng)險因素都被確定。圖1-2采用螺旋模型的軟件過程螺旋模型強調(diào)風(fēng)險分析,使得開發(fā)人員和用戶對每個演化層出現(xiàn)的風(fēng)險有所了解,繼而做出應(yīng)有的反應(yīng),因此特別適用于龐大、復(fù)雜并具有高風(fēng)險的系統(tǒng)。對于這些系統(tǒng),風(fēng)險是軟件開發(fā)不可忽視且潛在的不利因素,它可能在不同程度上損害軟件開發(fā)過程,影響軟件產(chǎn)品的質(zhì)量。減小軟件風(fēng)險的目標是在造成危害之前,及時對風(fēng)險進行識別及分析,決定采取何種對策,進而消除或減少風(fēng)險的損害。
與瀑布模型相比,螺旋模型支持用戶需求的動態(tài)變化,為用戶參與軟件開發(fā)的所有關(guān)鍵決策提供了方便,有助于提高目標軟件的適應(yīng)能力,并且為項目管理人員及時調(diào)整管理決策提供了便利,從而降低了軟件開發(fā)風(fēng)險。但是,我們不能說螺旋模型絕對比其他模型優(yōu)越,事實上,這種模型也有其自身的如下缺點:
(1)采用螺旋模型需要具有相當(dāng)豐富的風(fēng)險評估經(jīng)驗和專門知識,在風(fēng)險較大的項目開發(fā)中,如果未能夠及時標識風(fēng)險,勢必造成重大損失。
(2)過多的迭代次數(shù)會增加開發(fā)成本,延遲提交時間。
3.快速原型模型
快速原型又稱原型實現(xiàn)模型,它從需求收集開始,需要開發(fā)者和客戶在一起定義軟件的總體目標,標識出已知的需求,并規(guī)劃出需要進一步定義的區(qū)域;然后進行“快速設(shè)計”,即集中于軟件中那些對用戶/客戶可見的部分的表示,以創(chuàng)建原型,并由用戶/客戶評估并進一步細化待開發(fā)軟件的需求;隨后逐步調(diào)整原型使其滿足客戶的要求,同時也使開發(fā)者對將要做的事情有更好的理解。這個過程是迭代的,其流程從聽取客戶意見開始,隨后是建造及修改原型、客戶測試運行原型,然后往復(fù)循環(huán),直到客戶對原型滿意為止。采用快速原型模型的軟件過程如圖1-3所示。圖1-3采用快速原型模型的軟件過程快速原型模型的最大特點是能夠快速實現(xiàn)一個可實際運行的系統(tǒng)的初步模型,供開發(fā)人員和用戶進行交流和評審,以便較準確地獲得用戶的需求。該模型采用逐步求精的方法使原型逐步完善,即每次經(jīng)用戶評審后修改、運行,不斷重復(fù)直到雙方認可。這個過程是迭代過程,它可以避免在瀑布模型冗長的開發(fā)過程中看不見產(chǎn)品雛形的現(xiàn)象。其優(yōu)點一是開發(fā)工具先進、開發(fā)效率高,使總的開發(fā)費用降低、時間縮短;二是開發(fā)人員與用戶交流直觀,可以澄清模糊需求,調(diào)動用戶積極參與,能及早暴露系統(tǒng)實施后潛在的一些問題;三是原型系統(tǒng)可作為培訓(xùn)環(huán)境,有利于用戶培訓(xùn)和開發(fā)同步,開發(fā)過程也是學(xué)習(xí)過程??焖僭湍P偷娜秉c是產(chǎn)品原型在一定程度上限制了開發(fā)人員的創(chuàng)新,沒有考慮軟件的整體質(zhì)量和長期的可維護性。由于達不到質(zhì)量要求,產(chǎn)品可能被拋棄而采用新的模型重新設(shè)計,因此快速原型模型不適合嵌入式、實時控制及科學(xué)數(shù)值計算等大型軟件系統(tǒng)的開發(fā)。
原型模型和增量模型都是從概要需求出發(fā)開發(fā)的,但二者有明顯不同。增量模型從一些不完整的系統(tǒng)需求出發(fā)開始開發(fā),在開發(fā)過程中逐漸發(fā)現(xiàn)新的需求,然后進一步充實完善該系統(tǒng),使之成為實際可用的系統(tǒng)。原型模型的目的是發(fā)現(xiàn)并建立一個完整并經(jīng)過證實的需求規(guī)格說明,然后以此作為正式系統(tǒng)的開發(fā)基礎(chǔ),因此原型開發(fā)階段的輸出是需求規(guī)格說明,這是為了降低整個軟件生成期的費用而拉大需求分析階段的一種方法,大部分原型是“用完就扔”的類型。
4.噴泉模型
噴泉模型是一種以用戶需求為動力、以對象為驅(qū)動的模型,主要用于描述面向?qū)ο蟮能浖_發(fā)過程。該模型認為軟件自下而上的開發(fā)過程中,各階段是相互重疊和多次反復(fù)的,類似一個噴泉,水噴上去又可以落下來。各個開發(fā)階段沒有特定的次序要求,并且可以交互進行,可以在某個開發(fā)階段中隨時補充其他任何開發(fā)階段中的遺漏。采用噴泉模型的軟件過程如圖1-4所示。圖1-4采用噴泉模型的軟件過程噴泉模型主要用于面向?qū)ο蟮能浖椖?。軟件的某個部分通常被重復(fù)多次,相關(guān)對象在每次迭代中隨之加入漸進的軟件成分,各活動之間無明顯邊界,例如設(shè)計和實現(xiàn)之間沒有明顯的邊界,這也稱為“噴泉模型的無間隙性”。由于對象概念的引入,表達分析、設(shè)計及實現(xiàn)等活動只用對象類和關(guān)系,從而可以較容易地實現(xiàn)活動的迭代和無間隙。噴泉模型不像瀑布模型那樣,需要分析活動結(jié)束后才開始設(shè)計活動,設(shè)計活動結(jié)束后才開始編碼活動,該模型的各個階段沒有明顯的界限,開發(fā)人員可以同步進行開發(fā)。其優(yōu)點是可以提高軟件項目開發(fā)效率,節(jié)省開發(fā)時間,適應(yīng)于面向?qū)ο蟮能浖_發(fā)過程。由于噴泉模型在各個開發(fā)階段是重疊的,因此在開發(fā)過程中需要大量的開發(fā)人員,因此不利于項目的管理。此外這種模型要求嚴格管理文檔,使得審核的難度加大,尤其是面對可能隨時加入各種信息、需求與資料的情況。任務(wù)三認識軟件質(zhì)量模型與CMMI模型
操作一軟件質(zhì)量模型
軟件質(zhì)量是指與軟件產(chǎn)品滿足明確規(guī)定的和隱含的需要的能力有關(guān)的特征或特性的組合。軟件質(zhì)量的特性是多方面的,但必須包括:與明確確定的功能和性能需求的一致性,所有能滿足給定需要的特性;與明確成文的開發(fā)標準的一致性;與所有專業(yè)開發(fā)的軟件所期望的隱含特性的一致性;顧客或用戶認為能滿足其綜合期望的程度,也即軟件的組合特性,它確定軟件在使用中將滿足顧客預(yù)期要求的程度。目前已有很多質(zhì)量模型,它們分別定義了不同的軟件質(zhì)量屬性。比較常見的三個質(zhì)量模型是McCall模型(1977年)、Boehm模型(1978年)和ISO9126模型(1993年)。McCall等認為,特性是軟件質(zhì)量的反映,軟件屬性可用作評價準則,定量地度量軟件屬性可知軟件質(zhì)量的優(yōu)劣。圖1-5給出了McCall模型的組成部分。圖1-5McCall質(zhì)量模型軟件質(zhì)量保證的主要活動內(nèi)容歸納如下:
質(zhì)量方針的制定與展開;
質(zhì)量保證方針和質(zhì)量保證標準的制定;
質(zhì)量保證體系的建立與管理;
各階段的質(zhì)量評審;
確保設(shè)計質(zhì)量;
重要質(zhì)量問題的提出與分析;
總結(jié)實現(xiàn)階段的質(zhì)量保證活動;
整理面向用戶的文檔資料和說明書等;
產(chǎn)品質(zhì)量鑒定、質(zhì)量保證系統(tǒng)鑒定;
質(zhì)量信息的收集、分析和使用。
操作二CMMI模型
CMMI的全稱為CapabilityMaturityModelIntegration,即能力成熟度模型集成。CMMI為改進一個組織的各種過程提供了一個單一的集成化框架,該框架消除了各個模型的不一致性,減少了模型間的重復(fù),增加了透明度和理解,建立了一個自動的、可擴展的框架,因而能夠從總體上改進組織的質(zhì)量和效率。CMMI的主要關(guān)注點包括成本效益、明確重點、過程集中和靈
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 七年級生物下冊 第四單元 第六章 第一節(jié)《人體對外界環(huán)境的感知》教學(xué)實錄 (新版)濟南版
- 七年級歷史下冊 第三單元 明清時期 統(tǒng)一多民族國家的鞏固與發(fā)展 第14課 明朝的統(tǒng)治教學(xué)實錄 新人教版
- 2024年度校園文化活動的廣告推廣合同3篇
- 2024年度國際農(nóng)業(yè)開發(fā)勞務(wù)分包合同3篇
- 鄉(xiāng)鎮(zhèn)門面房租賃協(xié)議
- 2024年中國電容儲能式點焊機市場調(diào)查研究報告
- 2024版北京企業(yè)間信托借款協(xié)議示范文本3篇
- 2024年度特許經(jīng)營合同標的:連鎖加盟業(yè)務(wù)3篇
- 2024至2030年中國五金電器包裝行業(yè)投資前景及策略咨詢研究報告
- 2024年水電站經(jīng)營權(quán)獨家承包協(xié)議3篇
- 四年級語文上冊期末試卷(下載)
- 拼多多營銷總結(jié)報告
- 手術(shù)室護士交接流程
- 中式面點技藝智慧樹知到期末考試答案2024年
- 干槽癥的治療方案
- 危險化學(xué)品安全使用說明書
- 《紙質(zhì)文物修復(fù)與保護》課件-03紙質(zhì)文物病害類型
- 就業(yè)指南針智慧樹知到期末考試答案2024年
- 2024年合肥百姓公共服務(wù)云平臺有限公司招聘筆試沖刺題(帶答案解析)
- 急性十二指腸球部潰瘍并出血個案護理
- 專業(yè)美容院設(shè)計裝修
評論
0/150
提交評論