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

下載本文檔

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

文檔簡介

1、軟件工程概述陳學(xué)習(xí)“軟件工程”的目的和意義學(xué)會如何在現(xiàn)代IT企業(yè)的環(huán)境中做一個成功者;學(xué)會如何做世界級的、高質(zhì)量的研究;學(xué)會如何創(chuàng)建大規(guī)模的軟件。 微軟全球資深副總裁原微軟亞洲院長首席科學(xué)家2第一講 軟件工程概述 軟件軟件工程軟件工程學(xué)科3什么是軟件?軟件=程序?(計算機(jī))軟件是與計算機(jī)系統(tǒng)操作有關(guān)的程序、規(guī)程、規(guī)則及任何與之有關(guān)的文檔和數(shù)據(jù)。它是包括程序、數(shù)據(jù)及其相關(guān)文檔的完整集合。程序是用程序設(shè)計語言描述的、適合于計算機(jī)處理的語句序列。數(shù)據(jù)是使程序能正常信息的數(shù)據(jù)結(jié)構(gòu)文檔是一種數(shù)據(jù)和其上所的數(shù)據(jù),它是與程序開發(fā),維護(hù)和使用有關(guān)的圖文材料知識和經(jīng)驗4軟件的特點軟件是一種邏輯實體,而不是具體的

2、物理實體。因而它具有抽象性軟件的生產(chǎn)與硬件不同,在它的開發(fā)過程中沒有明顯的作相當(dāng)復(fù)雜在軟件的運行和使用期間, 沒有硬件那樣的機(jī)械磨損, 老化問題過程,使用中的維護(hù)工修改點失效率實際曲線理想曲線時間5軟件的特點軟件需求軟件的開發(fā)和運行常受到差距軟件復(fù)雜性計算機(jī)系統(tǒng)的限制,對計算機(jī)系統(tǒng)有著不同程度的依賴性軟件的開發(fā)至今尚未完全擺脫手工藝的開發(fā)方式軟件本身是復(fù)雜的實際問題的復(fù)雜性程序邏輯結(jié)構(gòu)的復(fù)雜性軟件成本相當(dāng)昂貴相當(dāng)多的軟件工作涉及到因素軟件技術(shù)時間6軟件不是孤立的過程傳感器設(shè)備計算機(jī)系統(tǒng)數(shù)據(jù)庫特點整體性層次性模塊相關(guān)性環(huán)境依賴性應(yīng)用軟件人功能:完成信息的、處理、融合、傳輸、管理、服務(wù)等。7軟件的

3、分類通用軟件(Generic Software) 通用軟件是由軟件開發(fā)組織開發(fā),面向市場用戶公開銷售的運行系統(tǒng),有時也被稱為套裝軟件。 舉例:操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)、字處理軟件等定制軟件(Customized Software) 定制軟件是由某個特定客戶委托,軟件開發(fā)組織在合同的約束下開發(fā)的軟件。 舉例:企業(yè)ERP 系統(tǒng)、系統(tǒng)等系統(tǒng)、空通指揮8軟件的分類按軟件的功能進(jìn)行劃分: 系統(tǒng)軟件操作系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)設(shè)備驅(qū)動程序 通信處理程序等 實時軟件軟件 科學(xué)和工程計算軟件 事務(wù)處理軟件 人工智能軟件9軟件的分類按軟件的應(yīng)用領(lǐng)域進(jìn)行劃分: 個人計算機(jī)軟件 CASE(Computer-aided sof

4、tware engineering)工具軟件10軟件的分類按軟件規(guī)模進(jìn)行劃分:類別微型小型中型大型參加1125數(shù)研制期限源程序大小14周16月12年23年45年510年0.5k1k2k 5k50k 50k100k1M(=1000k)1M10M520100100020005000甚大型極大型按軟件服務(wù)對象的范圍劃分 項目軟件軟件11軟件出現(xiàn)于20 世紀(jì)60 年代末是指在計算機(jī)軟件的開發(fā)和維護(hù)過程中軟件軟件遇到的一系列嚴(yán)重問題。 軟件開發(fā)的成本和進(jìn)度難以準(zhǔn)確估計,延遲交付甚至取消項目的現(xiàn)象屢見不鮮 軟件著錯誤多、性能低、不可靠、不安全等質(zhì)量問題 軟件維護(hù)極其,而且很難適應(yīng)不斷變化的用戶需求和使用環(huán)

5、境12軟件開發(fā)進(jìn)度難以拖延工期幾甚至幾年的現(xiàn)象并不罕見。以丹佛新國際機(jī)場為例該機(jī)場規(guī)模是曼哈頓機(jī)場的兩倍,寬為希思機(jī)場的10倍,可以全天侯同時起降三架噴氣式客機(jī);投資1.93億4,000臺行李傳送系統(tǒng),總長21英里,有建立了一個車,可按不同線路在20家不同航空公司柜臺、登機(jī)李領(lǐng)取處之間和傳遞行李;支持該系統(tǒng)的是5,000個電子眼、400臺無線電接受機(jī)、56臺條形碼掃描儀和100臺計算機(jī)。按原定計劃要在1993年萬圣節(jié)前啟用,但一直到1994年6月,該 系統(tǒng)還無法正常運行。據(jù)研究結(jié)果統(tǒng)計:只有15%的項目是按計劃完成的。13軟件的開發(fā)成本難以投資一再追加,令人難于置信。據(jù)同樣的研究統(tǒng)計結(jié)果表明:

6、僅有10%的項目是按費用計劃完成的。美國稅收表格自動處理系統(tǒng)80年代初,美國國內(nèi)稅收服務(wù)處(IRS)委托Sperry公司開發(fā)結(jié)果是:系統(tǒng)被證明不適合當(dāng)前的工作量,花費幾乎是預(yù)算的兩倍,必須立即更換(到1985年,還需要再追加9千萬的)。來改進(jìn)Sperry公司最初價值1.03億的設(shè)備。另外,因為出現(xiàn)的問題阻礙了IRS按時返還納稅者的,IRS還被迫償還4. 02億的利息以及2.23千萬的工資給加班職員。14軟件錯誤與代價愛國者千年蟲問題解決軟件的途徑:軟件工程15第一講 軟件工程概述軟件 軟件工程軟件工程學(xué)科16工程的含義規(guī)模上的差異花園小道 vs. 汽車高速公路樹上小屋 vs. 摩天大樓加法程序

7、 vs. 醫(yī)院系統(tǒng)手工(Craft):小規(guī)模的設(shè)計與建造 簡單問題與單一目標(biāo) 個人與個人技能工程(Engineering): 大規(guī)模的設(shè)計與建造 復(fù)雜問題與目標(biāo)分解 多人參與,需要考慮運營、管理、成本、質(zhì)量等、安全17工程的特征平衡與決策 需要進(jìn)行一系列決策和評價,在每一個決策點做出適當(dāng)選擇,恰當(dāng)與否通過平衡成本和利益的分析來。度量與驗證 應(yīng)該度量事物,在恰當(dāng)?shù)臅r候定量工作;需要校正并驗證度量,并在經(jīng)驗和實驗數(shù)據(jù)的基礎(chǔ)上進(jìn)行選擇。運用工具 工程師需要將工具系統(tǒng)地應(yīng)用在過程中,因此選用恰當(dāng)?shù)墓ぞ呤枪こ痰年P(guān)鍵。18工程的特征團(tuán)隊協(xié)同工作注重訓(xùn)練有素,并以團(tuán)隊的形式進(jìn)行有效的工作。分工多重:研究、開

8、發(fā)、設(shè)計、生產(chǎn)、測試、構(gòu)造、實施、管理以及其他諸如銷售、咨詢和教學(xué)等。最佳實踐 通過專業(yè)團(tuán)體不斷開發(fā)和確認(rèn)工程原則、標(biāo)準(zhǔn)和實踐。強(qiáng)調(diào)重用 工程師應(yīng)該重用設(shè)計和設(shè)計制品。19工程化的軟件開發(fā)范圍+時間+成本+質(zhì)量退役維護(hù)使用確認(rèn)測試組裝測試實現(xiàn)詳細(xì)設(shè)計概要設(shè)計需求分析可行性研究什么是軟件工程Bauer, 1972 軟件工程是為了地獲得能夠在實際上高效運行的可靠軟件而建立和使用的一系列好的工程化原則。CMU, 1990 軟件工程是以工程的形式應(yīng)用計算機(jī)科學(xué)和數(shù)學(xué)原理,從而有效地解決軟件問題。IEEE, 1993 軟件工程是將系統(tǒng)性的、規(guī)范化的、可定量的方法應(yīng)用于軟件的開發(fā)、運行和維護(hù),即工程化應(yīng)用

9、到軟 件上;對中所述方法的研究。21軟件工程的目標(biāo)提高軟件的質(zhì)量與生產(chǎn)率,最終實現(xiàn)軟件的工業(yè)化生產(chǎn)!開發(fā)方業(yè)主方必須要關(guān)注最關(guān)注最關(guān)注高質(zhì)量高效率孰輕孰重?劣質(zhì)軟件是業(yè)主方的負(fù)擔(dān)、開發(fā)方的噩夢!高效率地生產(chǎn)劣質(zhì)軟件是最大的浪費22軟件生存周期可行性研究與計劃制定定義階段測試運行維護(hù)階段23退役維護(hù)使用實現(xiàn)開發(fā)階段詳細(xì)設(shè)計概要設(shè)計需求分析如何理解軟件質(zhì)量?好車?好軟件?消費者滿意的車?車很好,只是太貴業(yè)主滿意的軟件?功能很強(qiáng),不好用24軟件質(zhì)量的定義軟件滿足規(guī)定的和隱含的與需求能力有關(guān)的全部特征和特性 1軟件質(zhì)量滿足用戶要求的程度; 2軟件各種屬性的組合程度; 3用戶對軟件的綜合反映程度; 4軟

10、件在使用過程中滿足用戶要求的程度。2526序號質(zhì)量因素實例說明1正確性n 血壓超過或低于閥值,要提示護(hù)士;n 話費計算,中間結(jié)果到厘、最后總額四舍五入到分。2可靠性n 系統(tǒng)停機(jī)時間超過30分鐘的概率要小于0.5%;n 心臟部件的失效頻度要求少于20年一次。3效率n 系統(tǒng)的響應(yīng)時間平均少于2秒;n 一般報表統(tǒng)計時間少于5秒。4完整性n 客戶只能通過賬號/的消費;n 擁有賬號才能進(jìn)行操作。5實用性n 呼叫中心一個坐席每天至少能夠處理60個服務(wù);n 新員工培訓(xùn)2天后即可熟練操作系統(tǒng)。6可維護(hù)性n 高內(nèi)聚、低耦合;結(jié)構(gòu)性好,可讀性好。n 遵循編程規(guī)范。7靈活性n 利率調(diào)整通過參數(shù)配置實現(xiàn);n 靈活的、

11、統(tǒng)計。8可測試性n 操作日志、錯誤跟蹤日志9可移植性n 數(shù)據(jù)庫從SQL SERVER遷移到ORACLE;n 應(yīng)用服務(wù)器從WINDOWS2003遷移到Linux。10可重用性n 工作流引擎、報表引擎11互操作性n 萬能充電器不同質(zhì)量的關(guān)注點不同27軟件工程的原則抽象抽取本質(zhì)特性,忽略非基本的細(xì)節(jié);采用分層次抽象,自頂向下、逐層細(xì)化方法軟件開發(fā)過程復(fù)雜性信息隱蔽將模塊設(shè)計成“黑箱”,實現(xiàn)的細(xì)節(jié)隱藏在模塊內(nèi)部,不讓模塊的使用者直接模塊化。這就是信息封裝,使用與實現(xiàn)分離的原則如 C 語言程序中的函數(shù)過程,C+ 語言程序中的類。模塊化有助于信息隱蔽和抽象,有助于表示復(fù)雜的系統(tǒng)。局部化要求在一個物理模塊內(nèi)

12、集中邏輯上相互關(guān)聯(lián)的計算機(jī),保證模塊之間具有松散的耦合,模塊內(nèi)部具有較強(qiáng)的內(nèi)聚。這有助于性解的復(fù)雜28軟件工程的原則一致性 整個軟件系統(tǒng)的各個模塊應(yīng)使用一致的概念、符號和術(shù)語。程序內(nèi)部接口應(yīng)保持一致。軟件和硬件、操作系統(tǒng)的接口應(yīng)保持一致。系統(tǒng)規(guī)格說明與系統(tǒng)行為應(yīng)保持一致。用于形式化規(guī)格說明的公理系統(tǒng)應(yīng)保持一致完整(備)性 軟件系統(tǒng)不丟失任何重要成分,可以完全實現(xiàn)系統(tǒng)所要求功能的程度。為了保證系統(tǒng)的完備性,在軟件開發(fā)和運行過程中需要嚴(yán)格的技術(shù)評審。可驗證性 開發(fā)大型的軟件系統(tǒng)需要對系統(tǒng)自頂向下、逐層分解。系統(tǒng)分解應(yīng)遵循系統(tǒng)易于檢查、測試、評審的原則,以確保系統(tǒng)的正確性。29軟件工程的三要素軟件工

13、程三要素:方法、工具和過程方法為軟件開發(fā)過程提供“如何做”的技術(shù)工具為軟件開發(fā)方法提供自動的或半自動的軟件支撐環(huán)境過程支持軟件生命周期的所有活動,將織及管理有機(jī)結(jié)合在一起。、技術(shù)、組30方法 方法:為軟件開發(fā)過程提供“如何做”的技術(shù) 結(jié)構(gòu)化方法:數(shù)據(jù)流分析 面向?qū)ο蠓椒ǎ簩ο蠓治?設(shè)計建議:體系結(jié)構(gòu)、設(shè)計模式 項目管理:項目計劃、項目度量、跟蹤監(jiān)督、變更控制 過程指南:過程說明、裁剪指南、文檔模板、過程知識庫31結(jié)構(gòu)化方法&面向?qū)ο蠓椒?2 采用自然思維方式建立軟件系統(tǒng)模型 整個過程采用統(tǒng)一的概念和模型表示 對象是包括屬性與操作的單元 對象封裝性信息隱蔽有利于軟件復(fù)用 功能與數(shù)據(jù)分離 上下層模

14、塊緊密依賴 變動修改難,限制了軟件復(fù)用 集中在模塊中工具 工具: 為軟件開發(fā)方法提供自動的或半自動的軟件支撐環(huán)境Project、P3、OFFICEROSE、Together、PowerDesignerEclipse、Visio Studio、QC、Junit、LoadRunner、WinRunnerVSS、CVS、SVN、Clear Case33過程 過程 將軟件工程的方法和工具綜合起來所進(jìn)行的一系列軟件開發(fā)和進(jìn) 化的活動。 四個基本活動 規(guī)格說明(Specification) 定義軟件功能以及對其使用的限制 軟件開發(fā)(Development) 設(shè)計和實現(xiàn)滿足規(guī)格說明的軟件 軟件確認(rèn)(Vali

15、dation) 驗證軟件以保證能夠滿足客戶的要求 軟件演化(Evolution)34 改進(jìn)軟件以適應(yīng)不斷變化的需求軟件工程的發(fā)展 50至60年代末 60末至80年代中 80年代中至90年代末 2000年代至今第一階段第二階段第三階段第四階段35第一講 軟件工程概述軟件軟件工程 軟件工程學(xué)科36SWEBOK(軟件工程知識體系)軟件工程知識體系(SWEBOK) IEEE 計算機(jī)學(xué)會發(fā)起研究,從而促進(jìn)軟件工程發(fā)展成為 2001 年5 月完成的專業(yè)學(xué)科SWEBOK 的組成 將軟件工程知識分解成若干知識域,形成層次化的組成結(jié)構(gòu) 10 個知識域37SWEBOK組成Software Requirements

16、 Software Design Software Construction Software Testing Software Maintenance軟件需求軟件設(shè)計軟件構(gòu)造軟件測試軟件維護(hù)軟件配置管理軟件工程管理軟件工程過程Software Configuration Management Software Engineering Management Software Engineering Process軟件工程工具和方法Software Engineering Tools and Methods軟件質(zhì)量Software Quality38軟件工程與計算機(jī)科學(xué)的區(qū)別計算機(jī)科學(xué) 研究方法 舉例:數(shù)據(jù)結(jié)構(gòu)、離散數(shù)學(xué)、算法分析等軟件工程 研究開發(fā)和發(fā)布軟件的實際問題計算機(jī)和軟件系統(tǒng)基礎(chǔ)的有關(guān)理論和 舉例:飛行軟件39一些有爭議的觀念1. 如果軟件運行較慢,是換一臺更快的計算機(jī), 還是設(shè)計一種更快的算法?2. 有最好的軟件工程方法,最好的編程語言嗎?3. 編程時是否應(yīng)該多使用技巧?4. 軟件中的錯誤是否可按嚴(yán)重程度分等級?5. 我可以同時從事多個

溫馨提示

  • 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

提交評論