軟件工程教學(xué)課件第1章概述_第1頁
軟件工程教學(xué)課件第1章概述_第2頁
軟件工程教學(xué)課件第1章概述_第3頁
軟件工程教學(xué)課件第1章概述_第4頁
軟件工程教學(xué)課件第1章概述_第5頁
已閱讀5頁,還剩105頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第1章概述軟件工程第1章概述軟件工程1

軟件及軟件危機(jī)1.1軟件工程

1.2本章小結(jié)1.3軟件及軟件危機(jī)1.1軟件工程1.2本章小結(jié)1.321.1軟件及軟件危機(jī)1.1.1軟件的含義、特點(diǎn)與分類1.1.2軟件的發(fā)展1.1.3軟件危機(jī)1.1軟件及軟件危機(jī)1.1.1軟件的含義、特點(diǎn)與分類31.1.1軟件的含義、特點(diǎn)與分類

1.軟件軟件是指計(jì)算機(jī)系統(tǒng)中與硬件相互依存的程序,數(shù)據(jù)及其相關(guān)文檔的集合。這三類集合中,程序是指按事先編制的功能和性能要求執(zhí)行的指令序列,數(shù)據(jù)是指能讓程序正常使用信息的數(shù)據(jù)結(jié)構(gòu),文檔是指與程序開發(fā),維護(hù)及其相關(guān)的圖文材料。因此,在計(jì)算機(jī)上運(yùn)行的程序?qū)儆谲浖?,與這些程序相關(guān)的文檔和數(shù)據(jù)也屬于軟件。1.1.1軟件的含義、特點(diǎn)與分類1.軟件42.特點(diǎn)

(1)從形態(tài)角度來說,軟件是邏輯實(shí)體,而不是具體的物理實(shí)體。軟件沒有大小、沒有物理和化學(xué)特性。

(2)從智能角度來說,軟件具有一定的智能性。對(duì)于事先編制好的程序,可以幫助我們解決復(fù)雜的計(jì)算、分析、判斷和決策問題。

(3)從開發(fā)角度來說,盡管已經(jīng)有了很多輔助軟件幫助程序員進(jìn)行開發(fā)工作,但到還是不能滿足所有開發(fā)任務(wù),軟件開發(fā)仍然需要大量高水平的程序員。

2.特點(diǎn)(1)從形態(tài)角度來說,軟件是邏輯實(shí)體,而不52.特點(diǎn)

(4)從生產(chǎn)角度來說,軟件一旦設(shè)計(jì)開發(fā)出來,具有較強(qiáng)的復(fù)制性,低成本等特點(diǎn),這是硬件或傳統(tǒng)的制造業(yè)產(chǎn)品的生產(chǎn)所不能比擬的。

(5)從質(zhì)量角度來說,目前的軟件產(chǎn)品還無法得到完全沒有缺陷的軟件產(chǎn)品。

(6)從管理角度來說,由于上述的幾個(gè)特點(diǎn),使得軟件的開發(fā)管理顯得更為重要,更為獨(dú)特。

(7)從環(huán)境角度來說,軟件對(duì)于計(jì)算機(jī)系統(tǒng)的環(huán)境有著不同程度的依賴性。軟件的開發(fā)和運(yùn)行都離不開相關(guān)的計(jì)算機(jī)系統(tǒng)環(huán)境,包括支持它的開發(fā)和運(yùn)行的相關(guān)硬件和軟件。

2.特點(diǎn)(4)從生產(chǎn)角度來說,軟件一旦設(shè)計(jì)開發(fā)出來62.特點(diǎn)

(8)從維護(hù)角度來說,軟件一旦投入使用以后需要進(jìn)行必要的維護(hù),但這種維護(hù)比硬件維護(hù)更復(fù)雜。

(9)從廢棄角度來說,軟件的功能不能滿足用戶的需求,就可能被廢棄,這與硬件被“用壞”而被廢棄是不同的。

(10)從應(yīng)用角度來說,軟件的廣泛應(yīng)用已滲入到社會(huì)生活、國民經(jīng)濟(jì)和科研等各個(gè)領(lǐng)域,已成為現(xiàn)代信息社會(huì)不可缺少的一部分,具有不無可取代的地位。

2.特點(diǎn)(8)從維護(hù)角度來說,軟件一旦投入使用以后73.分類軟件是用戶與硬件之間的接口界面。用戶主要是通過軟件與計(jì)算機(jī)進(jìn)行交流。(1)系統(tǒng)軟件(2)應(yīng)用軟件(3)中間件隨著計(jì)算機(jī)技術(shù)與互聯(lián)網(wǎng)的不斷發(fā)展和普及,出現(xiàn)了一種支持跨平臺(tái)開發(fā)應(yīng)用軟件的新型軟件,即中間件。3.分類軟件是用戶與硬件之間的接口界面。用戶8

中間件是一種位于系統(tǒng)軟件和應(yīng)用程序之間的通用服務(wù),應(yīng)用軟件通過它在不同的技術(shù)之間共享資源。中間件位于客戶機(jī)/服務(wù)器的操作系統(tǒng)之上,通過它的標(biāo)準(zhǔn)接口和協(xié)議,可以實(shí)現(xiàn)系統(tǒng)軟件或應(yīng)用程序之間的資源共享和信息交換。通過中間件,應(yīng)用程序可以實(shí)現(xiàn)跨平臺(tái)工作,減少重復(fù)性工作。

例如,微軟公司的ODBC,SUN公司的JDBC等都屬于中間件。中間件是一種位于系統(tǒng)軟件和應(yīng)用程序之間的通用91.1.2軟件的發(fā)展(三個(gè)階段)1.程序設(shè)計(jì)階段軟件發(fā)開主要是個(gè)體手工方式。時(shí)間:1945年~1960年硬件:計(jì)算機(jī)采用電子管軟件:機(jī)器語言和匯編語言應(yīng)用:主要用于科學(xué)計(jì)算1.1.2軟件的發(fā)展(三個(gè)階段)1.程序設(shè)計(jì)階段10這一時(shí)期還沒有軟件的概念,程序設(shè)計(jì)就等于現(xiàn)在的軟件開發(fā),但沒有任何其他的文檔資料,程序主要采用批處理技術(shù)。軟件開發(fā)屬于個(gè)人設(shè)計(jì)、個(gè)人使用、個(gè)人操作的個(gè)體手工方式,軟件無法維護(hù)。1.程序設(shè)計(jì)階段1.程序設(shè)計(jì)階段112.軟件設(shè)計(jì)階段軟件開發(fā)主要是軟件作坊方式。時(shí)間:20世紀(jì)60年代到70年代硬件:計(jì)算機(jī)先后采用晶體管、集成電路軟件:操作系統(tǒng)、高級(jí)語言應(yīng)用:主要用于科學(xué)計(jì)算、數(shù)據(jù)處理和事務(wù)處理等各個(gè)領(lǐng)域2.軟件設(shè)計(jì)階段軟件開發(fā)主要是軟件作坊方式。122.軟件設(shè)計(jì)階段此時(shí)人們開始購買軟件產(chǎn)品,軟件概念由此誕生。隨著計(jì)算機(jī)的廣泛應(yīng)用,軟件系統(tǒng)的規(guī)模越來越大,復(fù)雜程度越來越高,原來的個(gè)體手工方式已經(jīng)不能滿足軟件開發(fā)的需求,需要通過多人的分工協(xié)作,以提高軟件生產(chǎn)率,這樣就出現(xiàn)了“軟件作坊”式的開發(fā)方式。2.軟件設(shè)計(jì)階段此時(shí)人們開始購買軟件產(chǎn)品,軟132.軟件設(shè)計(jì)階段但這種方式基本上還是沿用軟件發(fā)展早期所形成的個(gè)體化的開發(fā)方式,軟件的可靠性無法得到保障,許多程序的個(gè)體化特性導(dǎo)致軟件產(chǎn)品根本無法維護(hù),最終導(dǎo)致了嚴(yán)重的“軟件危機(jī)”大爆發(fā)。2.軟件設(shè)計(jì)階段但這種方式基本上還是沿用軟件143.軟件工程階段軟件開發(fā)主要是工業(yè)化生產(chǎn)方式。時(shí)間:20世紀(jì)70年代至今硬件:計(jì)算機(jī)采用大規(guī)模、超大規(guī)模集成電路軟件:軟件層出不窮應(yīng)用:網(wǎng)絡(luò)時(shí)代,應(yīng)用于各個(gè)領(lǐng)域3.軟件工程階段軟件開發(fā)主要是工業(yè)化生產(chǎn)方式。153.軟件工程階段為了使軟件生產(chǎn)率更高,維護(hù)更方便,軟件的開發(fā)必須以工程化為指導(dǎo)思想,采用工程化的原則、方法和標(biāo)準(zhǔn)來開發(fā)和維護(hù)軟件產(chǎn)品。至此,軟件開發(fā)進(jìn)入軟件工程時(shí)代。3.軟件工程階段為了使軟件生產(chǎn)率更高,維護(hù)更方便161.1.3軟件危機(jī)軟件危機(jī)爆發(fā)于上個(gè)世紀(jì)60年代末。要解決這一危機(jī),就要搞清楚軟件危機(jī)的含義,產(chǎn)生的原因,才能有效地找到消除軟件危機(jī)的途徑。1.1.3軟件危機(jī)軟件危機(jī)爆發(fā)于上個(gè)世紀(jì)17軟件危機(jī)是指由于落后的軟件生產(chǎn)方式不能滿足日益增長(zhǎng)的計(jì)算機(jī)軟件需求,從而在軟件開發(fā)與維護(hù)過程中出現(xiàn)的一系列嚴(yán)重問題。具體來說,

(1)現(xiàn)在軟件開發(fā)的生產(chǎn)率不能滿足人們對(duì)軟件日益增長(zhǎng)的需求(2)大量已有的軟件得不到很好的維護(hù)1.含義1.含義18(1)對(duì)軟件開發(fā)進(jìn)度和成本預(yù)測(cè)不準(zhǔn)確(2)用戶對(duì)交付使用的軟件產(chǎn)品功能不滿(3)軟件產(chǎn)品的質(zhì)量得不到保障(4)軟件產(chǎn)品難以維護(hù)(5)軟件產(chǎn)品缺少適當(dāng)?shù)奈臋n資料軟件危機(jī)的主要表現(xiàn)(1)對(duì)軟件開發(fā)進(jìn)度和成本預(yù)測(cè)不準(zhǔn)確軟件危機(jī)的主要表現(xiàn)19軟件危機(jī)還表現(xiàn)為隨著硬件成本的大幅下降,軟件成本占計(jì)算機(jī)系統(tǒng)總成本的比例越來越高;隨著計(jì)算機(jī)技術(shù)的迅猛發(fā)展和網(wǎng)絡(luò)的日益普及,軟件開發(fā)生產(chǎn)率提高的速度,仍然滿足不了軟件產(chǎn)品的供需要求。軟件危機(jī)的主要表現(xiàn)軟件危機(jī)還表現(xiàn)為隨著硬件成本的大幅下降,軟件成本20

北大西洋公約在上世紀(jì)60年代后期多次組織討論了“軟件危機(jī)”問題,并對(duì)軟件在開發(fā)過程中以及維護(hù)過程中的主要表現(xiàn)進(jìn)行了分析,發(fā)現(xiàn)軟件危機(jī)產(chǎn)生的主要原因有兩點(diǎn),

(1)由于軟件自身特點(diǎn)引起的(2)由于軟件在開發(fā)和維護(hù)過程中方法不當(dāng)造成的2.產(chǎn)生軟件危機(jī)的原因2.產(chǎn)生軟件危機(jī)的原因21與其說軟件危機(jī)是軟件在開發(fā)和維護(hù)過程中方法不當(dāng)造成的,不如說是開發(fā)人員自身的缺點(diǎn)造成的。具體表現(xiàn)為:(1)部分軟件開發(fā)人員缺乏軟件開發(fā)的經(jīng)驗(yàn)和有關(guān)軟件開發(fā)數(shù)據(jù)的積累,使得開發(fā)工作的計(jì)劃很難制定。(2)軟件開發(fā)人員與用戶的溝通不夠充分,使得需求分析不充分或存在錯(cuò)誤。與其說軟件危機(jī)是軟件在開發(fā)和維護(hù)過程中方法不當(dāng)造成22(3)軟件開發(fā)人員在軟件開發(fā)過程有不規(guī)范操作。(4)軟件開發(fā)人員中的組織者缺乏管理經(jīng)驗(yàn)。(5)缺少有效的軟件評(píng)測(cè)手段,提交用戶的軟件質(zhì)量不能完全保證。此外,硬件生產(chǎn)率大幅度提高,而軟件生產(chǎn)規(guī)模和復(fù)雜度雖然增大,但軟件生產(chǎn)率卻低下,導(dǎo)致硬軟件供需失衡,也是造成軟件危機(jī)的重要因素。(3)軟件開發(fā)人員在軟件開發(fā)過程有不規(guī)范操作。23為了消除軟件危機(jī),就要徹底消除“軟件就是程序”的錯(cuò)誤觀念,并正確認(rèn)識(shí)到軟件是程序,數(shù)據(jù)及其相關(guān)文檔的集合。消除軟件為還有做到,充分吸收和借鑒以往從事各種工程項(xiàng)目中積累下來的有效原理、概念、技術(shù)與方法,特別是吸取計(jì)算機(jī)硬件研究和開發(fā)中的經(jīng)驗(yàn)教訓(xùn)。3.消除軟件危機(jī)的途徑3.消除軟件危機(jī)的途徑24按工程化的原則和方法組織軟件開發(fā)工作。為了解決軟件危機(jī),既要有技術(shù)措施(方法和工具),又要有必要的組織管理措施。

軟件工程作為研究如何克服軟件危機(jī)的新興工程學(xué)科誕生了。3.消除軟件危機(jī)的途徑3.消除軟件危機(jī)的途徑251.2軟件工程

1.2.1軟件工程的定義1.2.2軟件工程的基本原理1.2.3軟件工程知識(shí)體系1.2.4軟件工程方法學(xué)1.2軟件工程

1.2.1軟件工程的定義261.2.1軟件工程的定義很多專家學(xué)者和組織機(jī)構(gòu)都對(duì)軟件工程作出了定義:1968年在北大西洋公約組織會(huì)議上,計(jì)算機(jī)科學(xué)家為了應(yīng)對(duì)“軟件危機(jī)”,提出了軟件工程的概念,Baue認(rèn)為軟件工程就是,“建立并使用完善的工程化原則,以較經(jīng)濟(jì)的手段獲得能在實(shí)際機(jī)器上有效運(yùn)行的可靠軟件的一系列方法”。這個(gè)定義強(qiáng)調(diào)軟件工程是一門工程學(xué)課。

1.2.1軟件工程的定義很多專家學(xué)者和組271.2.1軟件工程的定義IEEE在1983年對(duì)軟件工程進(jìn)行定義,“軟件工程是開發(fā)、運(yùn)行、維護(hù)和修復(fù)軟件的系統(tǒng)方法”。十年后,IEEE又對(duì)軟件工程給出一個(gè)更加綜合的定義:“1)將系統(tǒng)化的,規(guī)范的,可度量的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù)的過程,即將工程化應(yīng)用于軟件中;2)對(duì)上述方法的研究”。1.2.1軟件工程的定義IEEE在198281.2.1軟件工程的定義計(jì)算機(jī)科學(xué)技術(shù)百科全書》給出的定義是,軟件工程是應(yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)、邏輯學(xué)及管理科學(xué)等原理,開發(fā)軟件的工程。軟件工程借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量、降低成本和改進(jìn)算法。其中,計(jì)算機(jī)科學(xué)、數(shù)學(xué)用于構(gòu)建模型與算法,工程科學(xué)用于制定規(guī)范、設(shè)計(jì)范型(paradigm)、評(píng)估成本及確定權(quán)衡,管理科學(xué)用于計(jì)劃、資源、質(zhì)量、成本等管理。1.2.1軟件工程的定義計(jì)算機(jī)科學(xué)技術(shù)百科全書291.2.1軟件工程的定義比較被認(rèn)可的一個(gè)定義認(rèn)為:

軟件工程是一門指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的工程學(xué)科。它采用工程的概念、原理、技術(shù)和方法來開發(fā)和維護(hù)軟件,并將經(jīng)過時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好技術(shù)相結(jié)合,開發(fā)出質(zhì)量較高又經(jīng)濟(jì)的軟件,并對(duì)其進(jìn)行有效地維護(hù)。1.2.1軟件工程的定義比較被認(rèn)可的一個(gè)定義認(rèn)為:301.軟件工程的目標(biāo)軟件工程的目標(biāo)就是要運(yùn)用先進(jìn)的軟件開發(fā)技術(shù)和管理方法來提高軟件的質(zhì)量和生產(chǎn)率,也就是要生產(chǎn)出短周期、低成本且高質(zhì)量的軟件產(chǎn)品,并最終實(shí)現(xiàn)軟件的工業(yè)化生產(chǎn)。1.軟件工程的目標(biāo)軟件工程的目標(biāo)就是要運(yùn)用先312.軟件產(chǎn)品應(yīng)具有以下質(zhì)量特性

(1)功能性:軟件所實(shí)現(xiàn)的功能達(dá)到它的設(shè)計(jì)要求和滿足用戶需求的程度;(2)效率:在規(guī)定的條件下使用軟件實(shí)現(xiàn)某種功能所需要的計(jì)算機(jī)資源的有效性;(3)可使用性,為了使用該軟件所需要具有的知識(shí)和能力;(4)可靠性:在規(guī)定的時(shí)間和條件下,軟件能夠正常運(yùn)行;能防止因概念、設(shè)計(jì)和結(jié)構(gòu)等方面的不完善造成的軟件系統(tǒng)失效,具有挽回因操作不當(dāng)造成軟件系統(tǒng)失效的能力。2.軟件產(chǎn)品應(yīng)具有以下質(zhì)量特性(1)功能322.軟件產(chǎn)品應(yīng)具有以下質(zhì)量特性

(5)可維護(hù)性;當(dāng)軟件交付使用后,由于環(huán)境改變或軟件運(yùn)行發(fā)生故障時(shí),能夠?qū)浖M(jìn)行相應(yīng)的修改,使其恢復(fù)正常運(yùn)行??删S護(hù)性是軟件工程中一項(xiàng)十分重要的目標(biāo),軟件維護(hù)所需要的費(fèi)用獨(dú)立于軟件開發(fā)的費(fèi)用且比后者更高。(6)可移植性:軟件在不同計(jì)算機(jī)系統(tǒng)或環(huán)境之間進(jìn)行轉(zhuǎn)移時(shí)仍能正常運(yùn)行和工作所做努力的程度。

2.軟件產(chǎn)品應(yīng)具有以下質(zhì)量特性(5)可維33軟件產(chǎn)品質(zhì)量和軟件工程目標(biāo)的關(guān)系

軟件產(chǎn)品質(zhì)量和軟件工程目標(biāo)的關(guān)系341.2.2軟件工程的基本原理為了確保軟件產(chǎn)品質(zhì)量和開發(fā)效率原理的最小集合,美國著名的軟件工程專家巴利·玻姆(BarryBoehm)綜合大量專家學(xué)者的意見,并總結(jié)了美國天合公司(TRW)多年的開發(fā)軟件的經(jīng)驗(yàn),于1983年提出了軟件工程的七條基本原理。

這七天基本原理相互獨(dú)立,且相當(dāng)完備,是在此之前已經(jīng)提出的100多條軟件工程準(zhǔn)則的任意組合蘊(yùn)含或派生。

1.2.2軟件工程的基本原理為了確保軟件351.2.2軟件工程的基本原理1.用分階段的生命周期計(jì)劃嚴(yán)格管理2.堅(jiān)持進(jìn)行階段評(píng)審3.實(shí)行嚴(yán)格的產(chǎn)品控制4.采納現(xiàn)代程序設(shè)計(jì)技術(shù)5.結(jié)果應(yīng)能清楚地審查6.開發(fā)組織的人員應(yīng)少而精7.承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性1.2.2軟件工程的基本原理1.用分階段的生命周期計(jì)劃361.2.3軟件工程知識(shí)體系確立軟件工程專業(yè)最重要的就是要建立軟件工程本體知識(shí)的結(jié)構(gòu)。因此,1999年5月,ISO和IEC的第一聯(lián)合技術(shù)委員會(huì)為順應(yīng)這種需求,立即啟動(dòng)了標(biāo)準(zhǔn)化項(xiàng)目一一“軟件工程知識(shí)體系指南”。1.2.3軟件工程知識(shí)體系確立軟件工程專371.2.3軟件工程知識(shí)體系軟件工程知識(shí)體系指南的目標(biāo)是:(1)促使軟件工程本體知識(shí)在世界范圍內(nèi)被認(rèn)可;(2)確定軟件工程學(xué)科的范圍,闡明軟件工程與其他相關(guān)學(xué)科之間的關(guān)系;(3)體現(xiàn)軟件工程學(xué)科內(nèi)容的特征;(4)確定軟件工程本體知識(shí)的各個(gè)專題;(5)為編寫相應(yīng)的課程和職業(yè)資格認(rèn)證材料的提供依據(jù)。

1.2.3軟件工程知識(shí)體系軟件工程知識(shí)體系指南的目標(biāo)是381.2.3軟件工程知識(shí)體系經(jīng)過幾十個(gè)國家的幾百名軟件工程專家對(duì)軟件工程知識(shí)體系指南多次的修改和編制,由IEEE主持的2004版軟件工程知識(shí)體系指南(SWEBOK:GuidetoSoftwareEngineeringBodyofKnowledge2004Version)終于誕生了。1.2.3軟件工程知識(shí)體系經(jīng)過幾十個(gè)國家391.2.4軟件工程方法學(xué)通常將軟件開發(fā)全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué)(methedology),也稱為范型(paradigm)。軟件工程方法學(xué)包含3個(gè)要素:方法、工具和過程。1.2.4軟件工程方法學(xué)通常將軟件開發(fā)全401.2.4軟件工程方法學(xué)方法:完成軟件開發(fā)的各項(xiàng)任務(wù)的技術(shù)方法,解決“怎樣做”的問題,是軟件工程學(xué)科的核心內(nèi)容;工具:為運(yùn)用方法而提供的自動(dòng)的或半自動(dòng)的軟件工程支撐環(huán)境;過程:為了獲得高質(zhì)量的軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。1.2.4軟件工程方法學(xué)方法:完成軟件開發(fā)的各項(xiàng)任務(wù)的技411.2.4軟件工程方法學(xué)從上世紀(jì)60年代后期開始,出現(xiàn)了許多軟件工程方法,其中最具影響的是結(jié)構(gòu)化方法、面向?qū)ο蠓椒?、形式化方法?.2.4軟件工程方法學(xué)42也稱為生命周期方法學(xué)或結(jié)構(gòu)化范型。這種方法學(xué)把軟件生命周期的全過程依次劃分為若干個(gè)階段,然后采用結(jié)構(gòu)化技術(shù)來完成每個(gè)階段的任務(wù)。1.結(jié)構(gòu)化方法1.結(jié)構(gòu)化方法43(1)結(jié)構(gòu)化方法的優(yōu)點(diǎn)

每個(gè)階段的任務(wù)相對(duì)獨(dú)立且簡(jiǎn)單,便于不同人員分工協(xié)作,從而降低了整個(gè)軟件開發(fā)工程的困難程度;每個(gè)階段都采用科學(xué)的管理技術(shù)和良好的技術(shù)方法,而且在每個(gè)階段結(jié)之前都從技術(shù)和管理兩個(gè)角度進(jìn)行嚴(yán)格的審查,合格之后才開始下一階段的工作。不僅大大提高了軟件開發(fā)的成功率,而且也提高了軟件開發(fā)的生產(chǎn)率。1.結(jié)構(gòu)化方法1.結(jié)構(gòu)化方法44

(2)結(jié)構(gòu)化方法的缺點(diǎn)

由于結(jié)構(gòu)化方法要么面向行為,要么面向數(shù)據(jù),缺乏使兩者有機(jī)結(jié)合的機(jī)制,對(duì)于軟件規(guī)模較大,或者對(duì)軟件的需求不明確或用戶提出新要求時(shí),使用結(jié)構(gòu)化方法開發(fā)軟件成功率較低。此外,采用這種方法開發(fā)的軟件可重用程度低,造成軟件很難維護(hù),這是一個(gè)嚴(yán)重的弊端。1.結(jié)構(gòu)化方法1.結(jié)構(gòu)化方法45面向?qū)ο蠓椒ㄊ且环N以數(shù)據(jù)為主線,把數(shù)據(jù)和對(duì)數(shù)據(jù)的操作緊密地結(jié)合起來的方法。它把數(shù)據(jù)和行為看成同等重要。面向?qū)ο蠓椒▽W(xué)是以面向?qū)ο蠹夹g(shù)為核心,利用類的繼承等復(fù)用方式,通過逐步細(xì)化地建立對(duì)象模型,以及迭代和演化的步驟完成軟件開發(fā)的模式。2.面向?qū)ο蠓椒?.面向?qū)ο蠓椒?6概括地說,面向?qū)ο蠓椒▽W(xué)具有下述4個(gè)要點(diǎn)。(1)把對(duì)象(Object)作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件。(2)把所有對(duì)象都劃分成類(Class)。(3)按照父類(或稱為基類)與子類(或稱為派生類)的關(guān)系,把若干個(gè)相關(guān)類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級(jí))。(4)對(duì)象彼此間只能通過發(fā)送消息互相聯(lián)系。2.面向?qū)ο蠓椒?.面向?qū)ο蠓椒?7采用了面向?qū)ο蟮募夹g(shù),降低了軟件產(chǎn)品的復(fù)雜性,提高了軟件的可理解性,簡(jiǎn)化了軟件的開發(fā)和維護(hù)工作。面向?qū)ο蠓椒ㄌ赜械睦^承性,進(jìn)一步提高了面向?qū)ο筌浖目芍赜眯浴?.面向?qū)ο蠓椒?.面向?qū)ο蠓椒?8在開發(fā)大型軟件產(chǎn)品時(shí),人們常常使用面向?qū)ο蠓椒?。把一個(gè)大型軟件產(chǎn)品分解成一系列本質(zhì)上相互獨(dú)立的小產(chǎn)品來處理,這就不僅降低了開發(fā)的技術(shù)難度,而且也使得對(duì)開發(fā)工作的管理變得容易多了。2.面向?qū)ο蠓椒?.面向?qū)ο蠓椒?9根據(jù)形式化的程度,可以將軟件工程方法劃分為非形式化、半形式化和形式化三種。形式化方法是一種基于形式化數(shù)學(xué)變換的軟件開發(fā)方法,它可將系統(tǒng)的規(guī)格說明轉(zhuǎn)換為可執(zhí)行的程序。形式化方法有很多種,如有窮狀態(tài)機(jī)、Petri網(wǎng)和Z語言等。3.形式化方法3.形式化方法50形式化方法的優(yōu)點(diǎn),形式化的規(guī)格說明可以用數(shù)學(xué)方法研究和驗(yàn)證。用數(shù)學(xué)語言能夠解決規(guī)格說明的二義性問題,提高其精確性;數(shù)學(xué)提供了確認(rèn)手段,使得證明和驗(yàn)證軟件程序滿足用戶和系統(tǒng)的需求成為可能。但是,由于大多數(shù)形式化的規(guī)格說明主要關(guān)注于系統(tǒng)的功能和數(shù)據(jù),因此,對(duì)問題的時(shí)序、控制和行為等方面的需求很難表示。除此之外,只有極少數(shù)程序員具有應(yīng)用形式化方法的背景,這就需要投入大量資金進(jìn)行培訓(xùn)。3.形式化方法3.形式化方法51盡管使用形式化規(guī)格說明技術(shù)是進(jìn)行軟件產(chǎn)品開發(fā)時(shí)軟件工程方法學(xué)的趨勢(shì),但是,目前形式化方法還沒有在軟件產(chǎn)業(yè)界廣泛使用。目前使用最廣泛的軟件工程方法學(xué),仍然是結(jié)構(gòu)化方法學(xué)和面向?qū)ο蠓椒▽W(xué)。3.形式化方法3.形式化方法523.3本章小結(jié)本章首先介紹軟件是指計(jì)算機(jī)系統(tǒng)中與硬件相互依存的程序,數(shù)據(jù)及其相關(guān)文檔的集合。然后回顧計(jì)算機(jī)軟件發(fā)展的過程,說明開發(fā)軟件的一些錯(cuò)誤方法和觀念是怎樣形成的,列舉了這些錯(cuò)誤方法帶來的軟件危機(jī)。為了計(jì)算機(jī)系統(tǒng)更好地發(fā)展,需要認(rèn)真研究開發(fā)和維護(hù)軟件的科學(xué)技術(shù)。應(yīng)總結(jié)計(jì)算機(jī)軟件的歷史經(jīng)驗(yàn)教訓(xùn),借鑒其他工程領(lǐng)域的管理技術(shù),逐步使軟件工程這門新學(xué)科發(fā)展和完善起來。3.3本章小結(jié)本章首先介紹軟件是指計(jì)算機(jī)系統(tǒng)533.3本章小結(jié)本章還介紹了軟件工程的相關(guān)知識(shí),有助于讀者更全面整體地認(rèn)識(shí)軟件工程這門工程學(xué)科。軟件工程是一門指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的工程學(xué)科。它采用工程的概念、原理、技術(shù)和方法來開發(fā)和維護(hù)軟件,并將經(jīng)過時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好技術(shù)相結(jié)合,開發(fā)出質(zhì)量較高又經(jīng)濟(jì)的軟件,并對(duì)其進(jìn)行有效地維護(hù)。確立軟件工程專業(yè)最重要的就是要建立軟件工程本體知識(shí)的結(jié)構(gòu)。由IEEE主持的2004版軟件工程知識(shí)體系指南中確定了軟件工程的10個(gè)知識(shí)領(lǐng)域,以及相關(guān)學(xué)科知識(shí)領(lǐng)域,其中這10個(gè)知識(shí)域,分為兩類過程。3.3本章小結(jié)本章還介紹了軟件工程的相關(guān)知識(shí)543.3本章小結(jié)軟件工程方法學(xué)包含3個(gè)要素:方法、工具和過程。其中,方法是完成軟件開發(fā)的各項(xiàng)任務(wù)的技術(shù)方法,解決“怎樣做”的問題,是軟件工程學(xué)科的核心內(nèi)容;工具是為運(yùn)用方法而提供的自動(dòng)的或半自動(dòng)的軟件工程支撐環(huán)境;過程是為了獲得高質(zhì)量的軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。從上世紀(jì)60年代后期開始,出現(xiàn)了許多軟件工程方法,其中最具影響的是結(jié)構(gòu)化方法、面向?qū)ο蠓椒ê托问交椒ā?.3本章小結(jié)軟件工程方法學(xué)包含3個(gè)要素:方55第1章概述軟件工程第1章概述軟件工程56

軟件及軟件危機(jī)1.1軟件工程

1.2本章小結(jié)1.3軟件及軟件危機(jī)1.1軟件工程1.2本章小結(jié)1.3571.1軟件及軟件危機(jī)1.1.1軟件的含義、特點(diǎn)與分類1.1.2軟件的發(fā)展1.1.3軟件危機(jī)1.1軟件及軟件危機(jī)1.1.1軟件的含義、特點(diǎn)與分類581.1.1軟件的含義、特點(diǎn)與分類

1.軟件軟件是指計(jì)算機(jī)系統(tǒng)中與硬件相互依存的程序,數(shù)據(jù)及其相關(guān)文檔的集合。這三類集合中,程序是指按事先編制的功能和性能要求執(zhí)行的指令序列,數(shù)據(jù)是指能讓程序正常使用信息的數(shù)據(jù)結(jié)構(gòu),文檔是指與程序開發(fā),維護(hù)及其相關(guān)的圖文材料。因此,在計(jì)算機(jī)上運(yùn)行的程序?qū)儆谲浖?,與這些程序相關(guān)的文檔和數(shù)據(jù)也屬于軟件。1.1.1軟件的含義、特點(diǎn)與分類1.軟件592.特點(diǎn)

(1)從形態(tài)角度來說,軟件是邏輯實(shí)體,而不是具體的物理實(shí)體。軟件沒有大小、沒有物理和化學(xué)特性。

(2)從智能角度來說,軟件具有一定的智能性。對(duì)于事先編制好的程序,可以幫助我們解決復(fù)雜的計(jì)算、分析、判斷和決策問題。

(3)從開發(fā)角度來說,盡管已經(jīng)有了很多輔助軟件幫助程序員進(jìn)行開發(fā)工作,但到還是不能滿足所有開發(fā)任務(wù),軟件開發(fā)仍然需要大量高水平的程序員。

2.特點(diǎn)(1)從形態(tài)角度來說,軟件是邏輯實(shí)體,而不602.特點(diǎn)

(4)從生產(chǎn)角度來說,軟件一旦設(shè)計(jì)開發(fā)出來,具有較強(qiáng)的復(fù)制性,低成本等特點(diǎn),這是硬件或傳統(tǒng)的制造業(yè)產(chǎn)品的生產(chǎn)所不能比擬的。

(5)從質(zhì)量角度來說,目前的軟件產(chǎn)品還無法得到完全沒有缺陷的軟件產(chǎn)品。

(6)從管理角度來說,由于上述的幾個(gè)特點(diǎn),使得軟件的開發(fā)管理顯得更為重要,更為獨(dú)特。

(7)從環(huán)境角度來說,軟件對(duì)于計(jì)算機(jī)系統(tǒng)的環(huán)境有著不同程度的依賴性。軟件的開發(fā)和運(yùn)行都離不開相關(guān)的計(jì)算機(jī)系統(tǒng)環(huán)境,包括支持它的開發(fā)和運(yùn)行的相關(guān)硬件和軟件。

2.特點(diǎn)(4)從生產(chǎn)角度來說,軟件一旦設(shè)計(jì)開發(fā)出來612.特點(diǎn)

(8)從維護(hù)角度來說,軟件一旦投入使用以后需要進(jìn)行必要的維護(hù),但這種維護(hù)比硬件維護(hù)更復(fù)雜。

(9)從廢棄角度來說,軟件的功能不能滿足用戶的需求,就可能被廢棄,這與硬件被“用壞”而被廢棄是不同的。

(10)從應(yīng)用角度來說,軟件的廣泛應(yīng)用已滲入到社會(huì)生活、國民經(jīng)濟(jì)和科研等各個(gè)領(lǐng)域,已成為現(xiàn)代信息社會(huì)不可缺少的一部分,具有不無可取代的地位。

2.特點(diǎn)(8)從維護(hù)角度來說,軟件一旦投入使用以后623.分類軟件是用戶與硬件之間的接口界面。用戶主要是通過軟件與計(jì)算機(jī)進(jìn)行交流。(1)系統(tǒng)軟件(2)應(yīng)用軟件(3)中間件隨著計(jì)算機(jī)技術(shù)與互聯(lián)網(wǎng)的不斷發(fā)展和普及,出現(xiàn)了一種支持跨平臺(tái)開發(fā)應(yīng)用軟件的新型軟件,即中間件。3.分類軟件是用戶與硬件之間的接口界面。用戶63

中間件是一種位于系統(tǒng)軟件和應(yīng)用程序之間的通用服務(wù),應(yīng)用軟件通過它在不同的技術(shù)之間共享資源。中間件位于客戶機(jī)/服務(wù)器的操作系統(tǒng)之上,通過它的標(biāo)準(zhǔn)接口和協(xié)議,可以實(shí)現(xiàn)系統(tǒng)軟件或應(yīng)用程序之間的資源共享和信息交換。通過中間件,應(yīng)用程序可以實(shí)現(xiàn)跨平臺(tái)工作,減少重復(fù)性工作。

例如,微軟公司的ODBC,SUN公司的JDBC等都屬于中間件。中間件是一種位于系統(tǒng)軟件和應(yīng)用程序之間的通用641.1.2軟件的發(fā)展(三個(gè)階段)1.程序設(shè)計(jì)階段軟件發(fā)開主要是個(gè)體手工方式。時(shí)間:1945年~1960年硬件:計(jì)算機(jī)采用電子管軟件:機(jī)器語言和匯編語言應(yīng)用:主要用于科學(xué)計(jì)算1.1.2軟件的發(fā)展(三個(gè)階段)1.程序設(shè)計(jì)階段65這一時(shí)期還沒有軟件的概念,程序設(shè)計(jì)就等于現(xiàn)在的軟件開發(fā),但沒有任何其他的文檔資料,程序主要采用批處理技術(shù)。軟件開發(fā)屬于個(gè)人設(shè)計(jì)、個(gè)人使用、個(gè)人操作的個(gè)體手工方式,軟件無法維護(hù)。1.程序設(shè)計(jì)階段1.程序設(shè)計(jì)階段662.軟件設(shè)計(jì)階段軟件開發(fā)主要是軟件作坊方式。時(shí)間:20世紀(jì)60年代到70年代硬件:計(jì)算機(jī)先后采用晶體管、集成電路軟件:操作系統(tǒng)、高級(jí)語言應(yīng)用:主要用于科學(xué)計(jì)算、數(shù)據(jù)處理和事務(wù)處理等各個(gè)領(lǐng)域2.軟件設(shè)計(jì)階段軟件開發(fā)主要是軟件作坊方式。672.軟件設(shè)計(jì)階段此時(shí)人們開始購買軟件產(chǎn)品,軟件概念由此誕生。隨著計(jì)算機(jī)的廣泛應(yīng)用,軟件系統(tǒng)的規(guī)模越來越大,復(fù)雜程度越來越高,原來的個(gè)體手工方式已經(jīng)不能滿足軟件開發(fā)的需求,需要通過多人的分工協(xié)作,以提高軟件生產(chǎn)率,這樣就出現(xiàn)了“軟件作坊”式的開發(fā)方式。2.軟件設(shè)計(jì)階段此時(shí)人們開始購買軟件產(chǎn)品,軟682.軟件設(shè)計(jì)階段但這種方式基本上還是沿用軟件發(fā)展早期所形成的個(gè)體化的開發(fā)方式,軟件的可靠性無法得到保障,許多程序的個(gè)體化特性導(dǎo)致軟件產(chǎn)品根本無法維護(hù),最終導(dǎo)致了嚴(yán)重的“軟件危機(jī)”大爆發(fā)。2.軟件設(shè)計(jì)階段但這種方式基本上還是沿用軟件693.軟件工程階段軟件開發(fā)主要是工業(yè)化生產(chǎn)方式。時(shí)間:20世紀(jì)70年代至今硬件:計(jì)算機(jī)采用大規(guī)模、超大規(guī)模集成電路軟件:軟件層出不窮應(yīng)用:網(wǎng)絡(luò)時(shí)代,應(yīng)用于各個(gè)領(lǐng)域3.軟件工程階段軟件開發(fā)主要是工業(yè)化生產(chǎn)方式。703.軟件工程階段為了使軟件生產(chǎn)率更高,維護(hù)更方便,軟件的開發(fā)必須以工程化為指導(dǎo)思想,采用工程化的原則、方法和標(biāo)準(zhǔn)來開發(fā)和維護(hù)軟件產(chǎn)品。至此,軟件開發(fā)進(jìn)入軟件工程時(shí)代。3.軟件工程階段為了使軟件生產(chǎn)率更高,維護(hù)更方便711.1.3軟件危機(jī)軟件危機(jī)爆發(fā)于上個(gè)世紀(jì)60年代末。要解決這一危機(jī),就要搞清楚軟件危機(jī)的含義,產(chǎn)生的原因,才能有效地找到消除軟件危機(jī)的途徑。1.1.3軟件危機(jī)軟件危機(jī)爆發(fā)于上個(gè)世紀(jì)72軟件危機(jī)是指由于落后的軟件生產(chǎn)方式不能滿足日益增長(zhǎng)的計(jì)算機(jī)軟件需求,從而在軟件開發(fā)與維護(hù)過程中出現(xiàn)的一系列嚴(yán)重問題。具體來說,

(1)現(xiàn)在軟件開發(fā)的生產(chǎn)率不能滿足人們對(duì)軟件日益增長(zhǎng)的需求(2)大量已有的軟件得不到很好的維護(hù)1.含義1.含義73(1)對(duì)軟件開發(fā)進(jìn)度和成本預(yù)測(cè)不準(zhǔn)確(2)用戶對(duì)交付使用的軟件產(chǎn)品功能不滿(3)軟件產(chǎn)品的質(zhì)量得不到保障(4)軟件產(chǎn)品難以維護(hù)(5)軟件產(chǎn)品缺少適當(dāng)?shù)奈臋n資料軟件危機(jī)的主要表現(xiàn)(1)對(duì)軟件開發(fā)進(jìn)度和成本預(yù)測(cè)不準(zhǔn)確軟件危機(jī)的主要表現(xiàn)74軟件危機(jī)還表現(xiàn)為隨著硬件成本的大幅下降,軟件成本占計(jì)算機(jī)系統(tǒng)總成本的比例越來越高;隨著計(jì)算機(jī)技術(shù)的迅猛發(fā)展和網(wǎng)絡(luò)的日益普及,軟件開發(fā)生產(chǎn)率提高的速度,仍然滿足不了軟件產(chǎn)品的供需要求。軟件危機(jī)的主要表現(xiàn)軟件危機(jī)還表現(xiàn)為隨著硬件成本的大幅下降,軟件成本75

北大西洋公約在上世紀(jì)60年代后期多次組織討論了“軟件危機(jī)”問題,并對(duì)軟件在開發(fā)過程中以及維護(hù)過程中的主要表現(xiàn)進(jìn)行了分析,發(fā)現(xiàn)軟件危機(jī)產(chǎn)生的主要原因有兩點(diǎn),

(1)由于軟件自身特點(diǎn)引起的(2)由于軟件在開發(fā)和維護(hù)過程中方法不當(dāng)造成的2.產(chǎn)生軟件危機(jī)的原因2.產(chǎn)生軟件危機(jī)的原因76與其說軟件危機(jī)是軟件在開發(fā)和維護(hù)過程中方法不當(dāng)造成的,不如說是開發(fā)人員自身的缺點(diǎn)造成的。具體表現(xiàn)為:(1)部分軟件開發(fā)人員缺乏軟件開發(fā)的經(jīng)驗(yàn)和有關(guān)軟件開發(fā)數(shù)據(jù)的積累,使得開發(fā)工作的計(jì)劃很難制定。(2)軟件開發(fā)人員與用戶的溝通不夠充分,使得需求分析不充分或存在錯(cuò)誤。與其說軟件危機(jī)是軟件在開發(fā)和維護(hù)過程中方法不當(dāng)造成77(3)軟件開發(fā)人員在軟件開發(fā)過程有不規(guī)范操作。(4)軟件開發(fā)人員中的組織者缺乏管理經(jīng)驗(yàn)。(5)缺少有效的軟件評(píng)測(cè)手段,提交用戶的軟件質(zhì)量不能完全保證。此外,硬件生產(chǎn)率大幅度提高,而軟件生產(chǎn)規(guī)模和復(fù)雜度雖然增大,但軟件生產(chǎn)率卻低下,導(dǎo)致硬軟件供需失衡,也是造成軟件危機(jī)的重要因素。(3)軟件開發(fā)人員在軟件開發(fā)過程有不規(guī)范操作。78為了消除軟件危機(jī),就要徹底消除“軟件就是程序”的錯(cuò)誤觀念,并正確認(rèn)識(shí)到軟件是程序,數(shù)據(jù)及其相關(guān)文檔的集合。消除軟件為還有做到,充分吸收和借鑒以往從事各種工程項(xiàng)目中積累下來的有效原理、概念、技術(shù)與方法,特別是吸取計(jì)算機(jī)硬件研究和開發(fā)中的經(jīng)驗(yàn)教訓(xùn)。3.消除軟件危機(jī)的途徑3.消除軟件危機(jī)的途徑79按工程化的原則和方法組織軟件開發(fā)工作。為了解決軟件危機(jī),既要有技術(shù)措施(方法和工具),又要有必要的組織管理措施。

軟件工程作為研究如何克服軟件危機(jī)的新興工程學(xué)科誕生了。3.消除軟件危機(jī)的途徑3.消除軟件危機(jī)的途徑801.2軟件工程

1.2.1軟件工程的定義1.2.2軟件工程的基本原理1.2.3軟件工程知識(shí)體系1.2.4軟件工程方法學(xué)1.2軟件工程

1.2.1軟件工程的定義811.2.1軟件工程的定義很多專家學(xué)者和組織機(jī)構(gòu)都對(duì)軟件工程作出了定義:1968年在北大西洋公約組織會(huì)議上,計(jì)算機(jī)科學(xué)家為了應(yīng)對(duì)“軟件危機(jī)”,提出了軟件工程的概念,Baue認(rèn)為軟件工程就是,“建立并使用完善的工程化原則,以較經(jīng)濟(jì)的手段獲得能在實(shí)際機(jī)器上有效運(yùn)行的可靠軟件的一系列方法”。這個(gè)定義強(qiáng)調(diào)軟件工程是一門工程學(xué)課。

1.2.1軟件工程的定義很多專家學(xué)者和組821.2.1軟件工程的定義IEEE在1983年對(duì)軟件工程進(jìn)行定義,“軟件工程是開發(fā)、運(yùn)行、維護(hù)和修復(fù)軟件的系統(tǒng)方法”。十年后,IEEE又對(duì)軟件工程給出一個(gè)更加綜合的定義:“1)將系統(tǒng)化的,規(guī)范的,可度量的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù)的過程,即將工程化應(yīng)用于軟件中;2)對(duì)上述方法的研究”。1.2.1軟件工程的定義IEEE在198831.2.1軟件工程的定義計(jì)算機(jī)科學(xué)技術(shù)百科全書》給出的定義是,軟件工程是應(yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)、邏輯學(xué)及管理科學(xué)等原理,開發(fā)軟件的工程。軟件工程借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量、降低成本和改進(jìn)算法。其中,計(jì)算機(jī)科學(xué)、數(shù)學(xué)用于構(gòu)建模型與算法,工程科學(xué)用于制定規(guī)范、設(shè)計(jì)范型(paradigm)、評(píng)估成本及確定權(quán)衡,管理科學(xué)用于計(jì)劃、資源、質(zhì)量、成本等管理。1.2.1軟件工程的定義計(jì)算機(jī)科學(xué)技術(shù)百科全書841.2.1軟件工程的定義比較被認(rèn)可的一個(gè)定義認(rèn)為:

軟件工程是一門指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的工程學(xué)科。它采用工程的概念、原理、技術(shù)和方法來開發(fā)和維護(hù)軟件,并將經(jīng)過時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好技術(shù)相結(jié)合,開發(fā)出質(zhì)量較高又經(jīng)濟(jì)的軟件,并對(duì)其進(jìn)行有效地維護(hù)。1.2.1軟件工程的定義比較被認(rèn)可的一個(gè)定義認(rèn)為:851.軟件工程的目標(biāo)軟件工程的目標(biāo)就是要運(yùn)用先進(jìn)的軟件開發(fā)技術(shù)和管理方法來提高軟件的質(zhì)量和生產(chǎn)率,也就是要生產(chǎn)出短周期、低成本且高質(zhì)量的軟件產(chǎn)品,并最終實(shí)現(xiàn)軟件的工業(yè)化生產(chǎn)。1.軟件工程的目標(biāo)軟件工程的目標(biāo)就是要運(yùn)用先862.軟件產(chǎn)品應(yīng)具有以下質(zhì)量特性

(1)功能性:軟件所實(shí)現(xiàn)的功能達(dá)到它的設(shè)計(jì)要求和滿足用戶需求的程度;(2)效率:在規(guī)定的條件下使用軟件實(shí)現(xiàn)某種功能所需要的計(jì)算機(jī)資源的有效性;(3)可使用性,為了使用該軟件所需要具有的知識(shí)和能力;(4)可靠性:在規(guī)定的時(shí)間和條件下,軟件能夠正常運(yùn)行;能防止因概念、設(shè)計(jì)和結(jié)構(gòu)等方面的不完善造成的軟件系統(tǒng)失效,具有挽回因操作不當(dāng)造成軟件系統(tǒng)失效的能力。2.軟件產(chǎn)品應(yīng)具有以下質(zhì)量特性(1)功能872.軟件產(chǎn)品應(yīng)具有以下質(zhì)量特性

(5)可維護(hù)性;當(dāng)軟件交付使用后,由于環(huán)境改變或軟件運(yùn)行發(fā)生故障時(shí),能夠?qū)浖M(jìn)行相應(yīng)的修改,使其恢復(fù)正常運(yùn)行??删S護(hù)性是軟件工程中一項(xiàng)十分重要的目標(biāo),軟件維護(hù)所需要的費(fèi)用獨(dú)立于軟件開發(fā)的費(fèi)用且比后者更高。(6)可移植性:軟件在不同計(jì)算機(jī)系統(tǒng)或環(huán)境之間進(jìn)行轉(zhuǎn)移時(shí)仍能正常運(yùn)行和工作所做努力的程度。

2.軟件產(chǎn)品應(yīng)具有以下質(zhì)量特性(5)可維88軟件產(chǎn)品質(zhì)量和軟件工程目標(biāo)的關(guān)系

軟件產(chǎn)品質(zhì)量和軟件工程目標(biāo)的關(guān)系891.2.2軟件工程的基本原理為了確保軟件產(chǎn)品質(zhì)量和開發(fā)效率原理的最小集合,美國著名的軟件工程專家巴利·玻姆(BarryBoehm)綜合大量專家學(xué)者的意見,并總結(jié)了美國天合公司(TRW)多年的開發(fā)軟件的經(jīng)驗(yàn),于1983年提出了軟件工程的七條基本原理。

這七天基本原理相互獨(dú)立,且相當(dāng)完備,是在此之前已經(jīng)提出的100多條軟件工程準(zhǔn)則的任意組合蘊(yùn)含或派生。

1.2.2軟件工程的基本原理為了確保軟件901.2.2軟件工程的基本原理1.用分階段的生命周期計(jì)劃嚴(yán)格管理2.堅(jiān)持進(jìn)行階段評(píng)審3.實(shí)行嚴(yán)格的產(chǎn)品控制4.采納現(xiàn)代程序設(shè)計(jì)技術(shù)5.結(jié)果應(yīng)能清楚地審查6.開發(fā)組織的人員應(yīng)少而精7.承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性1.2.2軟件工程的基本原理1.用分階段的生命周期計(jì)劃911.2.3軟件工程知識(shí)體系確立軟件工程專業(yè)最重要的就是要建立軟件工程本體知識(shí)的結(jié)構(gòu)。因此,1999年5月,ISO和IEC的第一聯(lián)合技術(shù)委員會(huì)為順應(yīng)這種需求,立即啟動(dòng)了標(biāo)準(zhǔn)化項(xiàng)目一一“軟件工程知識(shí)體系指南”。1.2.3軟件工程知識(shí)體系確立軟件工程專921.2.3軟件工程知識(shí)體系軟件工程知識(shí)體系指南的目標(biāo)是:(1)促使軟件工程本體知識(shí)在世界范圍內(nèi)被認(rèn)可;(2)確定軟件工程學(xué)科的范圍,闡明軟件工程與其他相關(guān)學(xué)科之間的關(guān)系;(3)體現(xiàn)軟件工程學(xué)科內(nèi)容的特征;(4)確定軟件工程本體知識(shí)的各個(gè)專題;(5)為編寫相應(yīng)的課程和職業(yè)資格認(rèn)證材料的提供依據(jù)。

1.2.3軟件工程知識(shí)體系軟件工程知識(shí)體系指南的目標(biāo)是931.2.3軟件工程知識(shí)體系經(jīng)過幾十個(gè)國家的幾百名軟件工程專家對(duì)軟件工程知識(shí)體系指南多次的修改和編制,由IEEE主持的2004版軟件工程知識(shí)體系指南(SWEBOK:GuidetoSoftwareEngineeringBodyofKnowledge2004Version)終于誕生了。1.2.3軟件工程知識(shí)體系經(jīng)過幾十個(gè)國家941.2.4軟件工程方法學(xué)通常將軟件開發(fā)全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué)(methedology),也稱為范型(paradigm)。軟件工程方法學(xué)包含3個(gè)要素:方法、工具和過程。1.2.4軟件工程方法學(xué)通常將軟件開發(fā)全951.2.4軟件工程方法學(xué)方法:完成軟件開發(fā)的各項(xiàng)任務(wù)的技術(shù)方法,解決“怎樣做”的問題,是軟件工程學(xué)科的核心內(nèi)容;工具:為運(yùn)用方法而提供的自動(dòng)的或半自動(dòng)的軟件工程支撐環(huán)境;過程:為了獲得高質(zhì)量的軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。1.2.4軟件工程方法學(xué)方法:完成軟件開發(fā)的各項(xiàng)任務(wù)的技961.2.4軟件工程方法學(xué)從上世紀(jì)60年代后期開始,出現(xiàn)了許多軟件工程方法,其中最具影響的是結(jié)構(gòu)化方法、面向?qū)ο蠓椒ā⑿问交椒ā?.2.4軟件工程方法學(xué)97也稱為生命周期方法學(xué)或結(jié)構(gòu)化范型。這種方法學(xué)把軟件生命周期的全過程依次劃分為若干個(gè)階段,然后采用結(jié)構(gòu)化技術(shù)來完成每個(gè)階段的任務(wù)。1.結(jié)構(gòu)化方法1.結(jié)構(gòu)化方法98(1)結(jié)構(gòu)化方法的優(yōu)點(diǎn)

每個(gè)階段的任務(wù)相對(duì)獨(dú)立且簡(jiǎn)單,便于不同人員分工協(xié)作,從而降低了整個(gè)軟件開發(fā)工程的困難程度;每個(gè)階段都采用科學(xué)的管理技術(shù)和良好的技術(shù)方法,而且在每個(gè)階段結(jié)之前都從技術(shù)和管理兩個(gè)角度進(jìn)行嚴(yán)格的審查,合格之后才開始下一階段的工作。不僅大大提高了軟件開發(fā)的成功率,而且也提高了軟件開發(fā)的生產(chǎn)率。1.結(jié)構(gòu)化方法1.結(jié)構(gòu)化方法99

(2)結(jié)構(gòu)化方法的缺點(diǎn)

由于結(jié)構(gòu)化方法要么面向行為,要么面向數(shù)據(jù),缺乏使兩者有機(jī)結(jié)合的機(jī)制,對(duì)于軟件規(guī)模較大,或者對(duì)軟件的需求不明確或用戶提出新要求時(shí),使用結(jié)構(gòu)化方法開發(fā)軟件成功率較低。此外,采用這種方法開發(fā)的軟件可重用程度低,造成軟件很難維護(hù),這是一個(gè)嚴(yán)重的弊端。1.結(jié)構(gòu)化方法1.結(jié)構(gòu)化方法100面向?qū)ο蠓椒ㄊ且环N以數(shù)據(jù)為主線,把數(shù)據(jù)和對(duì)數(shù)據(jù)的操作緊密地結(jié)合起來

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論