三級(jí)信息管理技術(shù)分章節(jié)考試要點(diǎn):第二章
第二章 軟件工程
自從1968年首次提出軟件工程一詞以來(lái),軟件工程已成為計(jì)算機(jī)軟件的一個(gè)重要分支和研究方向。軟件工程是指應(yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理,以工程化的原則和方法來(lái)解決軟件問(wèn)題的工程。其目的是提高軟件生產(chǎn)率、提高軟件質(zhì)量、降低軟件成本。
一、軟件工程基本概念
早期的軟件主要指程序。程序的開發(fā)采用個(gè)體工作方式,開發(fā)工作主要依賴于開發(fā)人員的個(gè)人技能和程序設(shè)計(jì)技巧。當(dāng)時(shí)的軟件通常缺少與程序有關(guān)的文檔,軟件開發(fā)的實(shí)際成本和進(jìn)度往往與預(yù)計(jì)的相差甚遠(yuǎn),軟件的質(zhì)量得不到保證,開發(fā)出來(lái)的軟件常常不能使用戶滿意。隨著計(jì)算機(jī)應(yīng)用的需求不斷增長(zhǎng),軟件的規(guī)模也越來(lái)越大,然而軟件開發(fā)的生產(chǎn)率遠(yuǎn)遠(yuǎn)跟不上計(jì)算機(jī)應(yīng)用的迅速增長(zhǎng)。此外,由于軟件開發(fā)時(shí)缺少好的方法指導(dǎo)和工具輔助,同時(shí)又缺少有關(guān)的文檔,使得大量已有的軟件難以維護(hù)。上述這些問(wèn)題嚴(yán)重地阻礙了軟件的發(fā)展,20世紀(jì)60年代中期,人們把上述軟件開發(fā)和維護(hù)中的各種問(wèn)題稱為“軟件危機(jī)”。
1968年在德國(guó)召開的NATO會(huì)議上,首次提出了“軟件工程”一詞,希望用工程化的原則和方法來(lái)克服軟件危機(jī)。在此以后,人們開展了軟件開發(fā)模型、開發(fā)方法、工具與環(huán)境的研究,提出了瀑布模型、演化模型、螺旋模型、噴泉模型等開發(fā)模型,出現(xiàn)了面向數(shù)據(jù)流方法、面向數(shù)據(jù)結(jié)構(gòu)的方法、面向?qū)ο蠓椒ǖ乳_發(fā)方法,以及一批CASE(computer aided software engineering)工具和環(huán)境。
(一)軟件生存周期
如同人的一生要經(jīng)歷嬰兒期、少年期、老年期直至死亡這樣一個(gè)全過(guò)程一樣,任何一個(gè)軟件產(chǎn)品或軟件系統(tǒng)也都要經(jīng)歷軟件定義、軟件開發(fā)、軟件維護(hù)直至被淘汰這樣一個(gè)全過(guò)程,我們把軟件的這一全過(guò)程稱為軟件生存周期。
軟件定義、軟件開發(fā)、軟件維護(hù)等階段還可分為若干個(gè)階段,每個(gè)階段相對(duì)獨(dú)立又彼此有聯(lián)系,上一階段的工作結(jié)果是下一階段工作的依據(jù),下一階段是上一階段的進(jìn)化,它更接近于問(wèn)題的解。
1.軟件定義
軟件定義階段主要解決的問(wèn)題是待開發(fā)的軟件要“做什么”,也就是要確定軟件的處理對(duì)象、軟件與外界的接口、軟件的功能和性能、界面以及有關(guān)的約束和限制。軟件定義階段通?煞殖上到y(tǒng)分析、軟件項(xiàng)目計(jì)劃、需求分析等階段。
(1)系統(tǒng)分析
這里講的系統(tǒng)是指計(jì)算機(jī)系統(tǒng),包括計(jì)算機(jī)硬件、軟件和使用計(jì)算機(jī)的人。系統(tǒng)分析的任務(wù)是確定待開發(fā)軟件的總體要求和適用范圍,以及與之有關(guān)的硬件、支撐軟件的要求。系統(tǒng)分析階段的參加人員有用戶、項(xiàng)目負(fù)責(zé)人、系統(tǒng)分析員。該階段產(chǎn)生的文檔可合并在軟件項(xiàng)目計(jì)劃階段的文檔(項(xiàng)目計(jì)劃書)中。
(2)軟件項(xiàng)目計(jì)劃
軟件項(xiàng)目計(jì)劃的任務(wù)是確定待開發(fā)軟件的目標(biāo),對(duì)其進(jìn)行可行性分析,并對(duì)資源分配、進(jìn)度安排等做出合理的計(jì)劃。
軟件項(xiàng)目計(jì)劃階段的參加人員有用戶、項(xiàng)目負(fù)責(zé)人、系統(tǒng)分析員。該階段所產(chǎn)生的文檔有可行性分析報(bào)告、項(xiàng)目計(jì)劃書。
(3)需求分析
需求分析的任務(wù)是確定待開發(fā)軟件的功能、性能、數(shù)據(jù)、界面等要求,從而確定系統(tǒng)的邏輯模型。需求分析階段的參加人員有用戶、項(xiàng)目負(fù)責(zé)人和系統(tǒng)分析員。該階段產(chǎn)生的文檔有需求規(guī)約(requirements specification),習(xí)慣上稱它為需求規(guī)格說(shuō)明書。
2.軟件開發(fā)
軟件開發(fā)階段主要解決的問(wèn)題是該軟件“怎么做”,包括數(shù)據(jù)結(jié)構(gòu)和軟件結(jié)構(gòu)的設(shè)計(jì),算法設(shè)計(jì),編寫程序,測(cè)試,最后得到可交付使用的軟件。軟件開發(fā)階段通常可分成軟件設(shè)計(jì)、編碼、軟件測(cè)試等階段。
(1)軟件設(shè)計(jì)
軟件設(shè)計(jì)通常還可分成概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。概要設(shè)計(jì)的任務(wù)是模塊分解,確定軟件的結(jié)構(gòu)、模塊的功能和模塊間的接口,以及全局?jǐn)?shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)。詳細(xì)設(shè)計(jì)的任務(wù)是設(shè)計(jì)每個(gè)模塊的實(shí)現(xiàn)細(xì)節(jié)和局部數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)。
概要設(shè)計(jì)階段的參加人員有系統(tǒng)分析員和高級(jí)程序員,詳細(xì)設(shè)計(jì)階段的參加人員有高級(jí)程序員和程序員。設(shè)計(jì)階段產(chǎn)生的文檔有設(shè)計(jì)規(guī)約(design specification),也稱為設(shè)計(jì)說(shuō)明書,它也可分為概要設(shè)計(jì)說(shuō)明書和詳細(xì)設(shè)計(jì)說(shuō)明書。根據(jù)需要還可產(chǎn)生數(shù)據(jù)說(shuō)明書和模塊開發(fā)卷宗。
(2)編碼
編碼的任務(wù)是用某種程序語(yǔ)言為每個(gè)模塊編寫程序。
編碼階段的參加人員有高級(jí)程序員和程序員,產(chǎn)生的文檔有程序清單。
(3)軟件測(cè)試
軟件測(cè)試的任務(wù)是發(fā)現(xiàn)軟件中的錯(cuò)誤,并加以糾正。
軟件測(cè)試階段的參加人員通常由另一部門(或單位)的高級(jí)程序員或系統(tǒng)分析員承擔(dān),該階段產(chǎn)生的文檔有軟件測(cè)試計(jì)劃和軟件測(cè)試報(bào)告。
3.軟件維護(hù)
軟件開發(fā)階段結(jié)束后,軟件即可交付使用。軟件的使用通常要持續(xù)幾年甚至幾十年,在整個(gè)使用期間,都可能因?yàn)槟撤N原因而修改軟件,這便是軟件維護(hù)。引起修改軟件的原因主要有三種:一是在軟件運(yùn)行過(guò)程中發(fā)現(xiàn)了軟件中隱藏的錯(cuò)誤而修改軟件;二是為了適應(yīng)變化了的環(huán)境而修改軟件;三是為修改或擴(kuò)充原有軟件的功能而修改軟件。因此軟件維護(hù)的任務(wù)就是為使軟件適應(yīng)外界環(huán)境的變化、實(shí)現(xiàn)功能的擴(kuò)充和質(zhì)量的改善而修改軟件。
軟件維護(hù)階段的參加人員是維護(hù)人員,該階段產(chǎn)生的文檔有維護(hù)計(jì)劃和維護(hù)報(bào)告。
目前,軟件生存周期各階段的劃分尚不統(tǒng)一,有的分得粗些,有的分得細(xì)些。許多場(chǎng)合軟件開發(fā)階段都是從需求分析階段開始的。本書中,我們也將需求分析看作為軟件開發(fā)的開始階段。
(二)軟件開發(fā)模型
為了指導(dǎo)軟件的開發(fā),用不同的方式將軟件生存周期中的所有開發(fā)活動(dòng)組織起來(lái),形成不同的軟件開發(fā)模型。常見(jiàn)的軟件開發(fā)模型有瀑布模型、演化模型、螺旋模型、噴泉模型等。瀑布模型如下圖所示,它是1970年由W.Royce提出的。該模型給出了軟件生存周期各階段的固定順序,上一階段完成后才能進(jìn)入到下一階段,整個(gè)過(guò)程就像流水下瀉,故稱之為瀑布模型。圖中的虛線部分表示在某一階段發(fā)現(xiàn)錯(cuò)誤時(shí),其錯(cuò)誤可能是由上一階段造成的, 因此開發(fā)過(guò)程可能要反饋到上一階段。
(三)軟件開發(fā)方法
軟件開發(fā)過(guò)程模型規(guī)定軟件開發(fā)活動(dòng)的組合應(yīng)用方式,要保證開發(fā)活動(dòng)的高質(zhì)量,還需要有相應(yīng)的軟件開發(fā)方法作為技術(shù)支持。近10年來(lái),軟件工作者研制出了許多工程化的軟件開發(fā)方法,例如70年代初提出的用于編寫程序的結(jié)構(gòu)化程序設(shè)計(jì)方法,確實(shí)起到了提高效率,減少錯(cuò)誤的效果。但是70年代中期,軟件工作者認(rèn)識(shí)到編寫程序僅僅是軟件開發(fā)的一個(gè)環(huán)節(jié),而合理地建立系統(tǒng)結(jié)構(gòu)比編定程序更為重要。所以研究的重點(diǎn)前移到設(shè)計(jì)階段,出現(xiàn)了設(shè)計(jì)階段的結(jié)構(gòu)化設(shè)計(jì)(SD)方法和JACKSON等方法,到了70年代后期,人們又發(fā)現(xiàn)事先對(duì)用戶的要求進(jìn)行分析更為重要,故又把重點(diǎn)前移到分析階段。出現(xiàn)了用于分析階段的結(jié)構(gòu)化分析(SA)方法、結(jié)構(gòu)化分析與設(shè)計(jì)技術(shù)(SADT)等。隨著計(jì)算機(jī)技術(shù)的迅速發(fā)展,在80年代初期的實(shí)時(shí)、并發(fā)和網(wǎng)絡(luò)等軟件的開發(fā)過(guò)程中,特別是在第五代計(jì)算機(jī)研究工作中,又提出了面向?qū)ο蟮脑O(shè)計(jì)方法,F(xiàn)在流行的方法有多種,它們的適用范圍也各不相同。有的適用于一般的數(shù)據(jù)處理系統(tǒng),如SA、SD(兩者統(tǒng)稱為結(jié)構(gòu)化分析與設(shè)計(jì)方法,即Yourdon方法)、JACKSON方法;有的適用于大型的復(fù)雜系統(tǒng),如SADT技術(shù);有的適用于實(shí)時(shí)事務(wù)處理系統(tǒng),如FSM方法;有的適用于并發(fā)軟件系統(tǒng),如PETRI網(wǎng)方法;作為90年代代表作的面向?qū)ο蠓椒,其?yīng)用已幾乎遍布各個(gè)領(lǐng)域。這些方法除了適用范圍不同外,方法形成的基礎(chǔ)、處理規(guī)則和對(duì)所開發(fā)軟件風(fēng)格的要求等都各有側(cè)重。用什么方法來(lái)說(shuō)明用戶的要求、用什么方法來(lái)設(shè)計(jì)軟件以及用什么方法對(duì)軟件進(jìn)行測(cè)試和維護(hù),直接影響所開發(fā)軟件的質(zhì)量。
(四)軟件開發(fā)工具
早期的軟件開發(fā)除了一般的程序設(shè)計(jì)語(yǔ)言外尚缺少工具的支持,致使編程工作量大,質(zhì)量和進(jìn)度卻難以保證,導(dǎo)致人們將很多的精力和時(shí)間花費(fèi)在程序的編制和調(diào)試上;相比之下,在更重要的軟件的需求和設(shè)計(jì)上反而得不到必要的精力和時(shí)間投入。軟件開發(fā)工具的發(fā)展促進(jìn)了軟件開發(fā)的高速度和高質(zhì)量。工具的發(fā)展是從單項(xiàng)工具的開發(fā)逐步走向集成的工具發(fā)展的。同時(shí),軟件開發(fā)方法的有效應(yīng)用也必須得到相應(yīng)工具的支持,否則方法將難以有效的實(shí)施。
工具的完善和發(fā)展將促進(jìn)軟件開發(fā)的進(jìn)步和完善。原型化方法的實(shí)施基礎(chǔ)就是得到了開發(fā)工具的支持。快速原型化之所以能夠?qū)崿F(xiàn)的基礎(chǔ)就是原型化人員在快速建模時(shí)得到了工具的支持,否則原型化方法是無(wú)法實(shí)施的。
(五)軟件開發(fā)環(huán)境
軟件工程環(huán)境或稱軟件開發(fā)環(huán)境是全面支持軟件開發(fā)全過(guò)程的軟件工具集合。這些軟件工具按照一定的方法或模式組合起來(lái),并能支持軟件開發(fā)生命周期的各個(gè)階段和各項(xiàng)任務(wù)的完成。CASE,即計(jì)算機(jī)輔助軟件工程環(huán)境是當(dāng)前軟件開發(fā)環(huán)境中富于特色的研究工作和發(fā)展方向,它的成功將最大限度地降低軟件工程的技術(shù)難度并使軟件開發(fā)的質(zhì)量得到保證。
文章責(zé)編:ak47
看了本文的網(wǎng)友還看了
中國(guó)科學(xué)院研究生院權(quán)威支持(北京) 電 話:010-62168566 傳 真:010-62192699