軟件工程01概述_第1頁
軟件工程01概述_第2頁
軟件工程01概述_第3頁
軟件工程01概述_第4頁
軟件工程01概述_第5頁
已閱讀5頁,還剩62頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、軟件工程軟件工程第第1 1章章 概述概述第一章 軟件工程學(xué)概述1.1 軟件危機(jī)1.2 軟件工程中的常見問題1.3 職業(yè)和道德上的責(zé)任軟件工程導(dǎo)論22022-5-291)軟件的定義軟件的定義Software)Program)Data)Document) Software = Program + Data + Document1.1 軟件危機(jī)2022-5-293軟件工程導(dǎo)論1.1 軟件危機(jī)n復(fù)雜性復(fù)雜性軟件是人類思維和智能的一種延伸和在異體上的再現(xiàn)軟件是人類思維和智能的一種延伸和在異體上的再現(xiàn), ,在規(guī)模上可能比任何由人類創(chuàng)造的其他實體都要復(fù)雜在規(guī)模上可能比任何由人類創(chuàng)造的其他實體都要復(fù)雜,復(fù)雜性

2、是軟件的本質(zhì)特性復(fù)雜性是軟件的本質(zhì)特性。n軟件的復(fù)雜性是必要屬性 n大量的組合狀態(tài);豐富的結(jié)構(gòu)和相互依賴性;良好的接口用以封裝內(nèi)部的復(fù)雜性 開發(fā)問題也會增加復(fù)雜性開發(fā)問題也會增加復(fù)雜性 n高效率的代碼通常是復(fù)雜的;重用通用化的組件意味著復(fù)雜的狀態(tài)連接;復(fù)雜的代碼難以維護(hù),導(dǎo)致設(shè)計上的更復(fù)雜軟件工程導(dǎo)論42022-5-291.1 軟件危機(jī)n一致性一致性軟件必須遵從人為的慣例并適應(yīng)已有的技術(shù)和軟件必須遵從人為的慣例并適應(yīng)已有的技術(shù)和系統(tǒng)系統(tǒng)n軟件必須遵循各種接口、協(xié)議和標(biāo)準(zhǔn);n有些情況下,兼容性是軟件開發(fā)的目標(biāo)。軟件需要隨接口的不同而改變,隨時間的推移軟件需要隨接口的不同而改變,隨時間的推移而變化

3、,而這些變化是不同的人設(shè)計的結(jié)果。而變化,而這些變化是不同的人設(shè)計的結(jié)果。許多復(fù)雜性來自保持與其他接口的一致,對軟許多復(fù)雜性來自保持與其他接口的一致,對軟件的任何再設(shè)計,都無法簡化這些復(fù)雜特性。件的任何再設(shè)計,都無法簡化這些復(fù)雜特性。軟件工程導(dǎo)論52022-5-291.1 軟件危機(jī)n可變性可變性軟件產(chǎn)品扎根于文化的母體中;軟件產(chǎn)品扎根于文化的母體中;n各種應(yīng)用、用戶、自然及社會規(guī)律、計算機(jī)硬件等持續(xù)不斷地變化著,這些變化強(qiáng)迫著軟件隨之變化。 所有成功的軟件都會發(fā)生變更。所有成功的軟件都會發(fā)生變更。n當(dāng)人們發(fā)現(xiàn)軟件很有用時,會在原有應(yīng)用范圍的邊界,或者在超越邊界的情況下使用軟件; n功能擴(kuò)展的壓

4、力主要來自那些喜歡基本功能,又對軟件提出了很多新用法的用戶們。軟件工程導(dǎo)論62022-5-291.1 軟件危機(jī)n不可見性不可見性軟件是不可見的和無法可視化的軟件是不可見的和無法可視化的n軟件的客觀存在不具有空間的形體特征,定義“需要做什么”成為軟件開發(fā)的根本問題。人們一直試圖使用不同的技術(shù)進(jìn)行軟件可視化人們一直試圖使用不同的技術(shù)進(jìn)行軟件可視化n如控制流程、數(shù)據(jù)流、依賴關(guān)系、UML等,但這些技術(shù)仍然無法給出準(zhǔn)確的、完整的描述。軟件仍然保持著無法可視化的固有特性軟件仍然保持著無法可視化的固有特性n從而剝奪了一些具有強(qiáng)大功能的概念工具的構(gòu)造思路。這種缺憾不僅限制了個人的設(shè)計過程,也嚴(yán)重地阻礙了相互之

5、間的交流。軟件工程導(dǎo)論 72022-5-291.1 軟件危機(jī)n軟件危機(jī) 軟件危機(jī)是指計算機(jī)軟件的軟件危機(jī)是指計算機(jī)軟件的開發(fā)與維護(hù)開發(fā)與維護(hù)過程中過程中所遇到的一系列嚴(yán)重問題,幾乎所有軟件都不所遇到的一系列嚴(yán)重問題,幾乎所有軟件都不同程度地存在這些問題。同程度地存在這些問題。 軟件危機(jī)主要包含兩方面問題:軟件危機(jī)主要包含兩方面問題:n 如何開發(fā)軟件以滿足社會對軟件日益增長的需求n 如何更有效地維護(hù)數(shù)量不斷膨脹的已有軟件。軟件工程導(dǎo)論82022-5-291.1 軟件危機(jī)n 軟件危機(jī)的典型表現(xiàn):軟件危機(jī)的典型表現(xiàn): 對軟件開發(fā)成本和進(jìn)度的估計常常很不準(zhǔn)確; 用戶對“已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)

6、常發(fā)生; 軟件產(chǎn)品的質(zhì)量往往靠不住。 軟件通常很難維護(hù); 軟件往往沒有適當(dāng)?shù)奈臋n資料; 軟件成本在計算機(jī)系統(tǒng)總成本中所占的比例逐年上升; 軟件開發(fā)生產(chǎn)率提高的速度遠(yuǎn)遠(yuǎn)不能滿足社會對軟件產(chǎn)品日益增長的需求。軟件工程導(dǎo)論92022-5-291962年6月,美國飛向金星的第一個空間探測號(水手1號),因其飛艙中的計算機(jī)導(dǎo)航程序之一的一個語句的語義出錯,總是偏離航線無法取得成功。1965年1970年,美國范登堡基地因程序有錯誤造成發(fā)射火箭多次失敗。10軟件工程導(dǎo)論2022-5-29類別參加人員數(shù)研制期限 產(chǎn)品規(guī)模 (源程序行數(shù))微型114周 0.5k小型116月 1k2k中型2512年 5k50k大型

7、52023年 50k100k甚大型100100045年 1M(=1000k)極大型20005000 510年 1M10M11軟件工程導(dǎo)論2022-5-29軟件工程導(dǎo)論12n例:Windows95有1000萬行代碼 Windows2000有5000萬行代碼Exchange2000和 Windows2000開發(fā)人員結(jié)構(gòu)n Exchange2000Windows2000項目經(jīng)理25人約250人開發(fā)人員140人約1700人測試人員350人約3200人2022-5-29 處在十字路口的中國軟件產(chǎn)業(yè) n主權(quán)大國必須建立基于自主技術(shù)的、完整的軟件產(chǎn)業(yè)體系。軟件本國提供率:中國1/3左右,美國97%n“印度模

8、式”還是“中國模式”n軟件人才結(jié)構(gòu)不合理,缺乏中高級軟件人才。軟件人員缺乏軟件工程化的概念。13軟件工程導(dǎo)論2022-5-29軟件需求與軟件技術(shù)關(guān)系示意圖14軟件工程導(dǎo)論2022-5-291.1 軟件危機(jī)n 產(chǎn)生產(chǎn)生軟件危機(jī)的原因軟件危機(jī)的原因 客觀原因:客觀原因:n軟件的不可見性在管理和控制軟件開發(fā)過程相當(dāng)困難;n軟件維護(hù)意味著改正或修改原有設(shè)計,從而使得軟件較難維護(hù);n軟件規(guī)模龐大,程序復(fù)雜性隨軟件規(guī)模指數(shù)增加,無法預(yù)見軟件可能遇到的每一種情況。軟件工程導(dǎo)論152022-5-291.1 軟件危機(jī)n 產(chǎn)生產(chǎn)生軟件危機(jī)的原因軟件危機(jī)的原因 主觀原因:主觀原因:n 計算機(jī)系統(tǒng)發(fā)展早期開發(fā)軟件的個

9、體化特點(diǎn)使得許多軟件工程師對軟件開發(fā)和維護(hù)有不少糊涂認(rèn)識,主要表現(xiàn)在: 忽視軟件需求分析的重要性; 認(rèn)為軟件開發(fā)就是寫程序; 輕視軟件維護(hù)。軟件工程導(dǎo)論162022-5-29軟件工程導(dǎo)論17 引入同一變動付出的代價隨時間變化的趨勢2022-5-29改正一個問題需付出的代價需求分析結(jié)構(gòu)設(shè)計詳細(xì)設(shè)計編碼集成測試系統(tǒng)測試現(xiàn)場改正一個問題的估計費(fèi)用改正一個問題估計的工作量20200200010005.02.50.050.5(美元)(人天)18軟件工程導(dǎo)論2022-5-291.1 軟件危機(jī)n消除軟件危機(jī)的途徑消除軟件危機(jī)的途徑 樹立對計算機(jī)軟件的正確認(rèn)識樹立對計算機(jī)軟件的正確認(rèn)識n軟件=程序+數(shù)據(jù)+文檔

10、 軟件開發(fā)應(yīng)該是組織良好、管理嚴(yán)格、各類人員軟件開發(fā)應(yīng)該是組織良好、管理嚴(yán)格、各類人員團(tuán)結(jié)協(xié)作共同完成的工程項目;團(tuán)結(jié)協(xié)作共同完成的工程項目; 積極開發(fā)和使用計算機(jī)輔助軟件工程積極開發(fā)和使用計算機(jī)輔助軟件工程(CASE)(CASE)工具工具 因此,消除軟件危機(jī)既要有技術(shù)措施(方法和工因此,消除軟件危機(jī)既要有技術(shù)措施(方法和工具),又要有必要的組織管理措施。具),又要有必要的組織管理措施。軟件工程導(dǎo)論192022-5-29201.2 軟件工程中的常見問題(一)n什么是軟件?n什么是軟件工程?n軟件工程和計算機(jī)科學(xué)有何區(qū)別?n軟件工程和系統(tǒng)工程有何區(qū)別?n什么是軟件過程?n什么是軟件過程模型?軟件

11、工程導(dǎo)論2022-5-29211.2 軟件工程中的常見問題(二)n什么是軟件過程的成本?n什么是軟件工程方法?n什么是CASE(計算機(jī)輔助軟件工程)?n什么是優(yōu)良軟件的特點(diǎn)?n軟件工程面臨的主要挑戰(zhàn)是什么?軟件工程導(dǎo)論2022-5-2922什么是軟件n軟件是程序和所有使用程序正確運(yùn)行所需要的相關(guān)文檔和配置信息。n軟件產(chǎn)品可能是為特定的顧客而開發(fā)的,也可能是為一般市場而開發(fā)的。n軟件成品可以分成以下兩類: 通用軟件產(chǎn)品定制軟件成品n這兩類產(chǎn)品的重要區(qū)別:軟件描述的提供者不同。通用軟件由開發(fā)者給出定制軟件由客戶給出軟件工程導(dǎo)論2022-5-2923什么是軟件工程n軟件工程是一門工程學(xué)科,涉及軟件生

12、產(chǎn)的各個方面,從最初的系統(tǒng)描述一直到使用后期的系統(tǒng)維護(hù),都屬于其學(xué)科范疇。工程學(xué)科軟件生產(chǎn)的各個方面n軟件工程人員應(yīng)當(dāng)運(yùn)用系統(tǒng)的、有組織的工作方法來開發(fā)高質(zhì)量的軟件。軟件工程導(dǎo)論2022-5-291.2 軟件工程n工程的概念 工程是將理論和所學(xué)的知識應(yīng)用于實踐的科學(xué),以便經(jīng)濟(jì)有效地解決實際問題。 手工(Craft):小規(guī)模的設(shè)計與建造 -簡單問題與單一目標(biāo)n個人控制與個人技能 工程(Engineering): 大規(guī)模的設(shè)計與建造n復(fù)雜問題與目標(biāo)分解n多人參與,需要考慮運(yùn)營、管理、成本、質(zhì)量控制、安全等軟件工程導(dǎo)論24 2022-5-29軟件工程導(dǎo)論251.2 軟件工程 軟件工程簡介危機(jī)n 工程

13、的概念 工程是將理論和所學(xué)的知識應(yīng)用于實踐的科學(xué),以便經(jīng)濟(jì)有效地解決實際問題。手工(Craft): 小規(guī)模的設(shè)計與建造 -簡單問題與單一目標(biāo) -個人控制與個人技能工程(Engineering): 大規(guī)模的設(shè)計與建造-復(fù)雜問題與目標(biāo)分解-多人參與,需要考慮運(yùn)營、管理、成本、質(zhì)量控制、安全等 2022-5-29軟件工程25只有編碼的開發(fā)過程 編碼實現(xiàn) 162022-5-29軟件工程導(dǎo)論261.1 軟件危機(jī) 軟件危機(jī)n 消除軟件危機(jī)的途徑樹立對計算機(jī)軟件的正確認(rèn)識 軟件=程序+數(shù)據(jù)+文檔軟件開發(fā)應(yīng)該是組織良好、管理嚴(yán)格、各類人員團(tuán)結(jié)協(xié)作共同完成的工程項目;積極開發(fā)和使用計算機(jī)輔助軟件工程(CASE)

14、工具 因此, 消除軟件危機(jī)既要有技術(shù)措施(方法和工具),又要有必要的組織管理措施。 2022-5-29軟件工程26工程化的軟件開發(fā) 概念形成 ? 需求規(guī)格 說明 ? 設(shè)計 ? 實現(xiàn) 172022-5-291.2 軟件工程定義軟件工程定義(1) The establishment and use of sound engineering principles (methods) in order to obtain economically software that is reliable and works on real machines. (1968- Fritz Bauer) 軟件工程

15、就是建立和使用一套合理軟件工程就是建立和使用一套合理的工程原理,從而經(jīng)濟(jì)地獲得可靠的、的工程原理,從而經(jīng)濟(jì)地獲得可靠的、可以在實際機(jī)器上高效運(yùn)行的軟件??梢栽趯嶋H機(jī)器上高效運(yùn)行的軟件。2022-5-2927軟件工程導(dǎo)論1.2 軟件工程定義軟件工程定義(2) Software engineering. (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the appl

16、ication of engineering to software. (2) The study of approaches as in (1). (IEEE(The Institute for Electrical and Electronic engineers) Std 610-1990.) 軟件工程是軟件工程是:(:(1)把系統(tǒng)的、規(guī)范的、把系統(tǒng)的、規(guī)范的、 可度量的途徑應(yīng)用于軟件開發(fā)、運(yùn)行和維護(hù)過程,可度量的途徑應(yīng)用于軟件開發(fā)、運(yùn)行和維護(hù)過程,也就是把工程應(yīng)用于軟件;(也就是把工程應(yīng)用于軟件;(2)研究)研究(1)中提到中提到的途徑。的途徑。2022-5-2928軟件工程導(dǎo)論1.2

17、 軟件工程n 軟件工程的概念軟件工程的概念Bauer, 1972 軟件工程是為了經(jīng)濟(jì)地獲得能夠在實際機(jī)器上高效運(yùn)行的可靠軟件而建立和使用的一系列好的工程化原則。CMU, 1990 軟件工程是以工程的形式應(yīng)用計算機(jī)科學(xué)和數(shù)學(xué)原理,從而經(jīng)濟(jì)有效地解決軟件問題。IEEE, 1993 軟件工程是將系統(tǒng)性的、規(guī)范化的、可定量的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù),即工程化應(yīng)用到軟件上; 對中所述方法的研究。 軟件工程導(dǎo)論29 2022-5-291.2 軟件工程定義軟件工程定義總之:總之: 軟件工程是應(yīng)用計算機(jī)科學(xué)、數(shù)學(xué)及軟件工程是應(yīng)用計算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理開發(fā)軟件的工程。它借鑒管理科學(xué)等原理開發(fā)軟

18、件的工程。它借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量,降傳統(tǒng)工程的原則、方法,以提高質(zhì)量,降低成本為目的。低成本為目的。2022-5-2930軟件工程導(dǎo)論軟件工程的特性1. 軟件工程關(guān)注于大型程序的構(gòu)造2. 軟件工程的中心課題是控制復(fù)雜性3. 軟件經(jīng)常變化4. 開發(fā)軟件的效率非常重要5. 和諧地合作是開發(fā)軟件的關(guān)鍵6. 軟件必須有效地支持它的用戶7. 在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人2022-5-2931軟件工程導(dǎo)論1.2 軟件工程n軟件工程的本質(zhì)特征軟件工程的本質(zhì)特征 軟件工程關(guān)注于大型程序的構(gòu)造軟件工程關(guān)注于大型程序的構(gòu)造;n “大”與“小”的分界線并不十分清晰

19、。通常把一個人在較短時間內(nèi)寫出的程序稱為小型程序,而把多人合作用時半年以上才寫出的程序稱為大型程序。傳統(tǒng)的程序設(shè)計技術(shù)和工具是支持小型程序設(shè)計的,不能簡單地把這些技術(shù)和工具用于開發(fā)大型程序。n 事實上,在此處使用術(shù)語“程序”并不十分恰當(dāng),現(xiàn)在的軟件開發(fā)項目通常構(gòu)造出包含若干個相關(guān)程序的“系統(tǒng)”。軟件工程導(dǎo)論32 2022-5-291.2 軟件工程n中心課題是控制復(fù)雜性中心課題是控制復(fù)雜性通常,軟件所解決的問題十分復(fù)雜,以致不能把問題作為一個整體通盤考慮。人們不得不把問題分解,使得分解出的每個部分是可理解的,而且各部分之間保持簡單的通信關(guān)系。用這種方法并不能降低問題的整體復(fù)雜性,但是卻可使它變成

20、可以管理的。注意,許多軟件的復(fù)雜性主要不是由問題的內(nèi)在復(fù)雜性造成的,而是由必須處理的大量細(xì)節(jié)造成的。軟件工程導(dǎo)論33 2022-5-291.2 軟件工程n軟件交付使用后仍需要經(jīng)常修改軟件交付使用后仍需要經(jīng)常修改絕大多數(shù)軟件都模擬了現(xiàn)實世界的某一部分。現(xiàn)實世界在不斷變化,軟件為了不被很快淘汰,必須隨著所模擬的現(xiàn)實世界一起變化。因此,在軟件系統(tǒng)交付使用后仍然需要耗費(fèi)成本,而且在開發(fā)過程中必須考慮軟件將來可能的變化。軟件工程導(dǎo)論34 2022-5-291.2 軟件工程n開發(fā)軟件的效率非常重要開發(fā)軟件的效率非常重要目前,社會對新應(yīng)用系統(tǒng)的需求超過了人力資源所能提供的限度,軟件供不應(yīng)求的現(xiàn)象日益嚴(yán)重。因

21、此,軟件工程的一個重要課題就是,尋求開發(fā)與維護(hù)軟件的更好更有效的方法和工具。軟件工程導(dǎo)論35 2022-5-291.2 軟件工程n開發(fā)人員和諧地合作是成功開發(fā)軟件的關(guān)鍵開發(fā)人員和諧地合作是成功開發(fā)軟件的關(guān)鍵軟件處理的問題十分龐大,必須多人協(xié)同工作才能解決這類問題。為了有效地合作,必須明確地規(guī)定每個人的責(zé)任和相互通信的方法。事實上僅有上述規(guī)定還不夠,每個人還必須嚴(yán)格地按規(guī)定行事。為了迫使大家遵守規(guī)定,應(yīng)該運(yùn)用標(biāo)準(zhǔn)和規(guī)程。通常,可以用工具來支持這些標(biāo)準(zhǔn)和規(guī)程。總之,紀(jì)律是成功地完成軟件開發(fā)項目的一個關(guān)鍵。軟件工程導(dǎo)論36 2022-5-291.2 軟件工程n軟件必須有效地支持它的用戶軟件必須有效地

22、支持它的用戶開發(fā)軟件的目的是支持用戶的工作。軟件提供的功能應(yīng)該能有效地協(xié)助用戶完成他們的工作。如果用戶對軟件系統(tǒng)不滿意,可以棄用該系統(tǒng),至少也會立即提出新的需求。因此,僅僅用正確的方法構(gòu)造系統(tǒng)還不夠,還必須構(gòu)造出正確的系統(tǒng)。有效地支持用戶意味著必須仔細(xì)地研究用戶,以確定適當(dāng)?shù)墓δ苄枨?、可用性要求及其他質(zhì)量要求(例如,可靠性、響應(yīng)時間等)。有效地支持用戶還意味著,軟件開發(fā)不僅應(yīng)該提交軟件產(chǎn)品,而且應(yīng)該寫出用戶手冊和培訓(xùn)材料,此外,還必須注意建立使用新系統(tǒng)的環(huán)境。軟件工程導(dǎo)論37 2022-5-291.2 軟件工程n在軟件工程領(lǐng)域中通常有具有一種文化背景的人替在軟件工程領(lǐng)域中通常有具有一種文化背景

23、的人替另一種文化背景的人開發(fā)產(chǎn)品。另一種文化背景的人開發(fā)產(chǎn)品。創(chuàng)造產(chǎn)品這個特性與前兩個特性緊密相關(guān)。軟件工程師是諸如Java程序設(shè)計、軟件體系結(jié)構(gòu)、測試或統(tǒng)一建模語言(UML)等方面的專家,他們通常并不是圖書館管理、航空控制或銀行事務(wù)等領(lǐng)域的專家,但是他們卻不得不為這些領(lǐng)域開發(fā)應(yīng)用系統(tǒng)。缺乏應(yīng)用領(lǐng)域的應(yīng)用領(lǐng)域的相關(guān)知識相關(guān)知識,是軟件開發(fā)項目出現(xiàn)問題的常見原因。軟件工程導(dǎo)論38 2022-5-291.3 軟件工程方法學(xué)n軟件工程包括技術(shù)和管理兩方面的內(nèi)容,是技術(shù)與管理緊密結(jié)合所形成的工程學(xué)科。n通常把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué)(methodology),也稱為范

24、型(paradigm)。在軟件工程領(lǐng)域中,這兩個術(shù)語的含義基本相同。n軟件工程方法學(xué)包含3個要素:方法、工具和過程。2022-5-2939軟件工程導(dǎo)論1.3 軟件工程方法學(xué)軟件工程方法學(xué)軟件工程:軟件工程: 一種層次化技術(shù)一種層次化技術(shù)質(zhì)量關(guān)注點(diǎn)質(zhì)量關(guān)注點(diǎn)過程過程方法方法工具工具 軟件工程層次圖軟件工程層次圖軟件工程三個要素軟件工程三個要素:工具、方法、過程工具、方法、過程基礎(chǔ)層,綜合方法基礎(chǔ)層,綜合方法及工具,定義方法及工具,定義方法使用的順序,所需使用的順序,所需要的管理要的管理為軟件開發(fā)提供為軟件開發(fā)提供“如何做如何做”的技術(shù)的技術(shù)為軟件開發(fā)提供自動或為軟件開發(fā)提供自動或半自動的軟件支撐

25、環(huán)境半自動的軟件支撐環(huán)境,建立計算機(jī)輔助軟件,建立計算機(jī)輔助軟件工程工程(CASE)的軟件開的軟件開發(fā)支撐系統(tǒng)發(fā)支撐系統(tǒng)2022-5-2940軟件工程導(dǎo)論1.3 軟件工程方法學(xué)軟件工程方法學(xué)ALM(Application Lifecycle Management)MSF(Microsoft Solution Framework )2022-5-2941軟件工程導(dǎo)論軟件工程層次的擴(kuò)展軟件工程層次的擴(kuò)展2022-5-2942軟件工程導(dǎo)論43軟件工程和計算機(jī)科學(xué)的區(qū)別n從本質(zhì)上來看,計算機(jī)科學(xué)研究的是構(gòu)成計算機(jī)和軟件系統(tǒng)基礎(chǔ)的有關(guān)理論和方法;而軟件工程則研究軟件制作中的實際問題。n計算機(jī)科學(xué)理論一直

26、以來就不能夠完全地支撐軟件工程。對于實際、復(fù)雜的問題,計算機(jī)科學(xué)的經(jīng)典理論不可能總是適用的,這就需要應(yīng)用軟件工程的方法來解決問題。軟件工程導(dǎo)論2022-5-2944軟件工程和系統(tǒng)工程有何區(qū)別n系統(tǒng)工程關(guān)注的是以計算機(jī)為基礎(chǔ)的系統(tǒng)發(fā)展的各個方面,它包括硬件和軟件開發(fā)、過程設(shè)計、系統(tǒng)實施等。軟件工程是在系統(tǒng)工程中與軟件基礎(chǔ)設(shè)施、控制、應(yīng)用程序和數(shù)據(jù)庫等開發(fā)有關(guān)的一部分。n系統(tǒng)工程涉及到了系統(tǒng)規(guī)范,體系結(jié)構(gòu)的設(shè)計、集成和部署等軟件工程導(dǎo)論2022-5-2945什么是軟件過程n軟件過程是指制作軟件產(chǎn)品的一組活動及其結(jié)果。n軟件過程包含四項基本的活動: 1、軟件描述 2、軟件開發(fā) 3、軟件有效性驗證 4

27、、軟件進(jìn)化軟件工程導(dǎo)論2022-5-2946什么是軟件過程模型(一)n軟件過程模型是從一特定角度提出的軟件過程的簡化描述。n下面介紹幾種軟件過程模型: 1. 工作流模型 2. 數(shù)據(jù)流或活動模型 3. 角色/動作模型軟件工程導(dǎo)論2022-5-2947什么是軟件過程模型(二)n通用開發(fā)流程的模型 1. 瀑布型開發(fā)方法 2. 迭代式開發(fā)方法 3. 基于組件的軟件工程(CBSE)軟件工程導(dǎo)論2022-5-2948什么是軟件工程的成本n粗略地講,開發(fā)成本占60%,測試成本占40%。對于制定軟件,軟件的進(jìn)化成本通常要高于開發(fā)成本。n成本的變動取決于所開發(fā)的系統(tǒng)的類型和系統(tǒng)性能和可靠性等系統(tǒng)屬性的要求。n成

28、本的分布依賴于軟件開發(fā)所采用的過程模型軟件工程導(dǎo)論2022-5-2949軟件工程活動成本分布軟件工程導(dǎo)論2022-5-2950產(chǎn)品開發(fā)成本軟件工程導(dǎo)論2022-5-2951什么是軟件工程方法(一)n軟件工程方法是一種結(jié)構(gòu)化方法,它包括系統(tǒng)模型、符號、規(guī)則、設(shè)計咨詢和流程指導(dǎo)。n無論什么方法都是基于這樣的思路,即開發(fā)出能夠用圖形表示的系統(tǒng)模型,并用這些模型來描述或設(shè)計系統(tǒng)。這些方法應(yīng)該包含許多不同的組件方法。軟件工程導(dǎo)論2022-5-2952什么是軟件工程方法(二)組件描述實例系統(tǒng)模型描述規(guī)則建議過程指南對要開發(fā)的系統(tǒng)模型和定義這些模型所使用的符號的描述系統(tǒng)模型總的使用約束啟發(fā)式方法可使設(shè)計活動

29、具有創(chuàng)意,使用該方法可做出組織得很好的系統(tǒng)模型描述開發(fā)系統(tǒng)模型要遵循的活動以及這些活動的組織結(jié)構(gòu)對象模型、數(shù)據(jù)流模型、狀態(tài)機(jī)模型等系統(tǒng)模型中每一個實體都要有一個名字任何一個對象都不要有超過7個以上的相關(guān)子對象在定義與對象關(guān)聯(lián)的操作前應(yīng)記錄對象的屬性表1-2 方法組件軟件工程導(dǎo)論2022-5-2953什么是CASEnCASE是計算機(jī)輔助軟件過程(Computer-Aided Software Engineering)的英文縮寫。它包括很多種類的軟件工具,這些工具覆蓋面很廣,包括支持軟件過程活動,如需求分析、系統(tǒng)建模、調(diào)試和測試等。nCASE系統(tǒng)通常用于方法的支持Upper-CASE 作為工具以支

30、持需求分析和設(shè)計過程的早期活動Lower-CASE 作為工具以支持編程、調(diào)試和測試等后期活動軟件工程導(dǎo)論2022-5-29軟件工程導(dǎo)論54什么是CASE CASE(Computer Aided Software Engineering) - 計算機(jī)輔助軟件工程是一組工具和方法的集合,用于輔助軟件開發(fā)、維護(hù)、管理過程中的各項活動,促進(jìn)軟件過程的工程化和自動化。 - 所有的軟件工程方法都需要CASE 的相應(yīng)技術(shù)來支持 用于系統(tǒng)模型的圖形編輯器 管理設(shè)計實體的數(shù)據(jù)字典 生成用戶界面的 GUI 軟件 輔助生成系統(tǒng)文檔的報告生成器 支持程序糾錯的調(diào)試器 代碼生成器 12 2022-5-29軟件工程導(dǎo)論5

31、5CASE 的層次 問題定義 需求分析 分析設(shè)計工作臺 軟 件 總體設(shè)計 開 發(fā) 詳細(xì)設(shè)計 過 集成化環(huán)境 程 編程 程序設(shè)計工作臺 與 管 軟件測試 測試工作臺 理 軟件維護(hù) CASE工具 CASE工作臺 CASE環(huán)境 13 2022-5-29軟件工程導(dǎo)論56CASE 工具 IBM Rational 公司產(chǎn)品(http:/ - 開發(fā)過程管理:RUP - 需求管理:RequisitePro - 可視化建模:Rose - 自動測試:Robot, Test Realtime, TestManager, XDE Tester- 項目管理:ProjectConsole - 配置管理:ClearCase

32、, ClearQuest 開源 CASE 工具(http:/ - CVS: 應(yīng)用廣泛的版本管理工具 - UML Modeler: UML 模型圖形編輯工具 - UML2EJB: 將 XML 表示的 UML 模型轉(zhuǎn)換成 EJB 代碼的轉(zhuǎn)換器 14 2022-5-2957什么是優(yōu)良軟件的屬性(一)n軟件除了提供用戶所需的功能和性能以外,作為一個產(chǎn)品它還應(yīng)有一系列相關(guān)的反映軟件質(zhì)量的屬性,如可維護(hù)性、可靠性等軟件工程導(dǎo)論2022-5-2958什么是優(yōu)良軟件的屬性(二)產(chǎn)品特性可維護(hù)性可依賴性有效性可用性描述軟件必須能夠不斷進(jìn)化以滿足客戶的需求變化,這是軟件產(chǎn)品最根本的特性,因為工作環(huán)境是不斷變化的,

33、軟件也必須跟著不斷變化軟件可依賴性還包括一系列特性,包括可靠性、保密性、安全性??煽康能浖谙到y(tǒng)失敗的情況下,也不會導(dǎo)致人員傷亡和經(jīng)濟(jì)損失軟件不需要浪費(fèi)內(nèi)存和處理器等系統(tǒng)資源,因而有效性應(yīng)包括響應(yīng)時間、處理時間、內(nèi)存利用率等方面軟件必須具備可用性。必須是用戶不用特殊地努力就能操作。這就意味著,軟件必須相應(yīng)的用戶界面和充分的說明文檔表1-3 優(yōu)良軟件必須具有的屬性軟件工程導(dǎo)論2022-5-2959軟件工程所面臨的主要問題n軟件工程在21世紀(jì)面臨以下三大挑戰(zhàn): 多樣性的挑戰(zhàn) 分布式、異構(gòu)、遺留系統(tǒng)集成交付上的挑戰(zhàn) 不影響軟件質(zhì)量,縮短開發(fā)周期信任的挑戰(zhàn) 網(wǎng)絡(luò)遠(yuǎn)程服務(wù)、支付軟件工程導(dǎo)論2022-5-2960職業(yè)和道德上的責(zé)任n和其他工程人員技術(shù)技能的簡單應(yīng)用相比,軟件工程

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論