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

下載本文檔

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

文檔簡介

1、軟件工程導(dǎo)論: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 1計算機軟件學科計算機軟件學科 程序設(shè)計語言 數(shù)據(jù)結(jié)構(gòu) 人機交互 程序設(shè)計方法論 軟件工程: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 2教材及參考書教材及參考書 張海藩: 軟件工程導(dǎo)論(第6版),清華大學出版社,2013. 薩默維爾:軟件工程(第8版),機械工業(yè)出版社,2009.01: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 3成績評分標準成績評分標準 平時成績(20%) (課堂表現(xiàn)、考勤 ) 課程報告 (40%) (可行性報告和需求分析報告 ) 期末考試(40%)(開卷筆試 ): 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 4課程介紹和要求課程介紹和要求: 軟件工

2、程導(dǎo)論軟件工程導(dǎo)論Page 5教學目標教學目標 為什么要學習這門課程有助于正確理解和認識“軟件”的概念及其特點理解軟件開發(fā)面臨的問題和挑戰(zhàn)掌握軟件工程的原則、方法和思想來系統(tǒng)地開發(fā)軟件,尤其是復(fù)雜、龐大的軟件的開發(fā)了解和接觸軟件開發(fā)所需的各種技術(shù)手段 理解、掌握和運用: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 6理解理解 什么是軟件工程 為什么需要軟件工程(產(chǎn)生背景) 軟件工程需要解決那些問題 軟件工程涉及那些方面內(nèi)容: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 7掌握掌握 軟件工程概念技術(shù)過程手段工具: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 8運用運用 運用工程化思想進行軟件開發(fā)可行性研究需求分析軟件設(shè)計程序

3、設(shè)計軟件維護: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 9先導(dǎo)要求先導(dǎo)要求 程序設(shè)計語言 最好有一定的軟件開發(fā)經(jīng)驗: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 10學習要求學習要求聽理解知識點和思想無需死記硬背做實踐體會軟件工程的原則、方法和技術(shù),在實踐中提高培養(yǎng)抽象思維能力培養(yǎng)獨立解決問題的能力培養(yǎng)合作精神想閱讀相關(guān)資料: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 11課程實習課程實習 內(nèi)容選擇一個項目開發(fā)課題,用軟件工程的思想知道其開發(fā)過程。完成需求分析,詳細設(shè)計,測試,項目匯報。 分組以小組為單位,6人一組為宜: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 12 提交內(nèi)容電子文檔與打印文檔 評價方法按階段遞交和打分文檔

4、: 完整性、合理性、規(guī)范性 注意: 嚴格按照要求執(zhí)行: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 13印度軟件業(yè)印度軟件業(yè)全球軟件外包市場規(guī)模已達到5000億美元。全球軟件外包的發(fā)包市場主要集中在北美、西歐和日本等國家,其中美國占40%,日本占10%。美國市場被印度壟斷,印度軟件業(yè)80%的收入依賴軟件外包業(yè)務(wù),印度已經(jīng)成為軟件外包的第一大國中國海關(guān)的統(tǒng)計,2012年中國外包及軟件出口業(yè)務(wù)總額約為368億美元,只相當于全球外包總量的1%,大約相當于印度5多年前的水平,且60%以上的業(yè)務(wù)來自日本。 現(xiàn)在軟件公司年收入增長率為25%-45%,而在互聯(lián)網(wǎng)鼎盛時期則到達了100%。納斯達克上市的印度人創(chuàng)辦的軟件

5、公司至少有25家比爾蓋茨早就預(yù)見,印度將成為21世紀的軟件超級大國,現(xiàn)在這個預(yù)言正在變成現(xiàn)實。 : 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 14計算機人才需求每年增加30萬(2012年) 據(jù)介紹,目前我國的計算機應(yīng)用水平還處于初級階段,現(xiàn)有計算機和信息技術(shù)據(jù)介紹,目前我國的計算機應(yīng)用水平還處于初級階段,現(xiàn)有計算機和信息技術(shù)設(shè)施的功能沒有得到很好的開發(fā)和運用,比發(fā)達國家落后設(shè)施的功能沒有得到很好的開發(fā)和運用,比發(fā)達國家落后1010年。但我國信息技年。但我國信息技術(shù)在不斷地發(fā)展中,目前的軟件營業(yè)收入是十年前的術(shù)在不斷地發(fā)展中,目前的軟件營業(yè)收入是十年前的500500倍,倍,20122012年軟件產(chǎn)業(yè)年軟

6、件產(chǎn)業(yè)的規(guī)模達到的規(guī)模達到2500025000億元。億元。隨著我國軟件業(yè)規(guī)模不斷擴大,軟件人才結(jié)構(gòu)性矛盾日益顯得突出。教育部關(guān)隨著我國軟件業(yè)規(guī)模不斷擴大,軟件人才結(jié)構(gòu)性矛盾日益顯得突出。教育部關(guān)于緊缺人才的報告稱,軟件從業(yè)人員近于緊缺人才的報告稱,軟件從業(yè)人員近320320萬人,其中專業(yè)人才約有萬人,其中專業(yè)人才約有150150萬人萬人(其中高級人才(其中高級人才2020萬人,中級人才萬人,中級人才9090萬人,初級人才萬人,初級人才4040萬人)。人才結(jié)構(gòu)呈萬人)。人才結(jié)構(gòu)呈兩頭小中間大的橄欖型結(jié)構(gòu),不僅缺乏高層次的系統(tǒng)分析員、項目總設(shè)計師,兩頭小中間大的橄欖型結(jié)構(gòu),不僅缺乏高層次的系統(tǒng)分析

7、員、項目總設(shè)計師,也缺少大量的從事基礎(chǔ)性軟件開發(fā)人員。根據(jù)國際經(jīng)驗,軟件人才高、中、初也缺少大量的從事基礎(chǔ)性軟件開發(fā)人員。根據(jù)國際經(jīng)驗,軟件人才高、中、初之比為之比為1 1 4 4 7 7。按照合理的人才結(jié)構(gòu)比例進行測算,到。按照合理的人才結(jié)構(gòu)比例進行測算,到20132013年,我國需要軟年,我國需要軟件高級人才件高級人才3030萬人,中級軟件人才萬人,中級軟件人才100100萬人,初級軟件人才萬人,初級軟件人才6060萬人,再加上企萬人,再加上企業(yè)、社區(qū)、機關(guān)、學校等行業(yè),初步測算,全國計算機應(yīng)用專業(yè)人才的需求每業(yè)、社區(qū)、機關(guān)、學校等行業(yè),初步測算,全國計算機應(yīng)用專業(yè)人才的需求每年將增加數(shù)十

8、萬人。年將增加數(shù)十萬人。 : 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 15軟件測試人才缺口軟件測試人才缺口3030萬萬 年薪可達年薪可達2020萬(萬(20122012年)年) 3030萬萬軟件測試人才缺口軟件測試人才缺口3030萬萬據(jù)前程無憂招聘網(wǎng)統(tǒng)計,目前,國內(nèi)據(jù)前程無憂招聘網(wǎng)統(tǒng)計,目前,國內(nèi)320320萬軟件從業(yè)人員中,真正能擔當軟件萬軟件從業(yè)人員中,真正能擔當軟件測試職位的不超過測試職位的不超過1010萬人,軟件測試人才缺口已超過萬人,軟件測試人才缺口已超過3030萬并向萬并向4040萬大關(guān)急速萬大關(guān)急速挺進。在中華英才網(wǎng)近期發(fā)布的挺進。在中華英才網(wǎng)近期發(fā)布的20122012十大熱門職業(yè)中,

9、軟件測試工程師也位居十大熱門職業(yè)中,軟件測試工程師也位居三甲之列。三甲之列。2020萬萬軟件測試人才年薪可達軟件測試人才年薪可達2020萬萬為了吸引更多的人才,企業(yè)紛紛采取高薪策略。據(jù)統(tǒng)計,測試工程師的起步月為了吸引更多的人才,企業(yè)紛紛采取高薪策略。據(jù)統(tǒng)計,測試工程師的起步月薪在薪在5000500060006000元左右,遠高于同齡人元左右,遠高于同齡人2000200030003000元的薪資水平,另外還可元的薪資水平,另外還可享受帶薪年假、內(nèi)部培訓、住房公積金等福利待遇,工作享受帶薪年假、內(nèi)部培訓、住房公積金等福利待遇,工作2 23 3年月薪大約在年月薪大約在8080000013000130

10、00元之間。但即便如此,很多企業(yè)仍舊紛紛感嘆:元之間。但即便如此,很多企業(yè)仍舊紛紛感嘆:“高薪難覓找茬人高薪難覓找茬人才。才?!? 1:88目前我國軟測人員與開發(fā)人員比例目前我國軟測人員與開發(fā)人員比例微軟微軟公司軟件測試工程師對外透露,在微軟內(nèi)部,軟件測試工程師和開發(fā)工程公司軟件測試工程師對外透露,在微軟內(nèi)部,軟件測試工程師和開發(fā)工程師的比例基本維持在師的比例基本維持在1 1:1 1左右,而國內(nèi)其他軟件企業(yè)中這一比例卻僅在左右,而國內(nèi)其他軟件企業(yè)中這一比例卻僅在1 1:5 5至至1 1:8 8之間。之間?!罢袀€軟件測試人員比招博士還難!招個軟件測試人員比招博士還難!”不少企業(yè)發(fā)出類似的感嘆。不

11、少企業(yè)發(fā)出類似的感嘆。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 16ITIT行業(yè)收入情況行業(yè)收入情況 ITIT企業(yè)的薪酬結(jié)構(gòu)構(gòu)成企業(yè)的薪酬結(jié)構(gòu)構(gòu)成技術(shù)人員的薪酬結(jié)構(gòu)構(gòu)成情況:崗位工資技術(shù)人員的薪酬結(jié)構(gòu)構(gòu)成情況:崗位工資68.1%,68.1%,技能技能工資工資17.6%,17.6%,各種津貼各種津貼3.4%,3.4%,獎金獎金10.9%10.9%;銷售人員的薪酬結(jié)構(gòu)構(gòu)成情況:崗位工資銷售人員的薪酬結(jié)構(gòu)構(gòu)成情況:崗位工資30.8%,30.8%,各種各種津貼津貼14%,14%,獎金獎金14.1%,14.1%,傭金傭金33.2%,33.2%,長期激勵長期激勵7.9%7.9%;技術(shù)、銷售以外人員的薪酬結(jié)構(gòu)構(gòu)

12、成:崗位工資技術(shù)、銷售以外人員的薪酬結(jié)構(gòu)構(gòu)成:崗位工資66.566.5%,%,各種津貼各種津貼19.6%,19.6%,獎金獎金10.1%,10.1%,長期激勵長期激勵3.8%3.8%。 : 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 17誰在拿高薪誰在拿高薪 電信高級測試工程師(年薪20萬) 他們是電信設(shè)備提供商產(chǎn)品能否推向市場的關(guān)鍵環(huán)節(jié),因為無論是軟件的編程還是硬件的研發(fā),都是在獨立的空間里面分別完成,最后能否集成在一起以確保系統(tǒng)良 好的運營,企業(yè)耗費巨資開發(fā)的產(chǎn)品能否實際應(yīng)用,很大程度上取決于測試結(jié)果。創(chuàng)新能力、軟硬兼通、具備三到五年測試的經(jīng)驗是這個職位必須具備的素質(zhì)。: 軟件工程導(dǎo)論軟件工程導(dǎo)論P

13、age 18誰在拿高薪誰在拿高薪 SP產(chǎn)品開發(fā)經(jīng)理(年薪30萬) 作為SP行業(yè)的產(chǎn)品經(jīng)理,負責產(chǎn)品的創(chuàng)意、研發(fā)、渠道、執(zhí)行等環(huán)節(jié),這樣的人在這個行業(yè)里面是很少的,有經(jīng)驗的人也是很少的,薪酬自然相當高。這是一個極 其富有挑戰(zhàn)性的職位,你不但有創(chuàng)意,你還要能夠?qū)崿F(xiàn)。首先必須在很短的時間內(nèi)創(chuàng)新開發(fā)出用戶喜歡的產(chǎn)品。還要率領(lǐng)研發(fā)團隊盡快執(zhí)行,與電信運營商溝通與渠 道商談判,最后把產(chǎn)品推向用戶。 : 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 19誰在拿高薪誰在拿高薪 手機研發(fā)經(jīng)理(年薪31萬)不論從基本現(xiàn)金收入到總薪酬都高于其他職能部門經(jīng)理薪酬水平,尤其是手機芯片制造商對于該類人才瘋狂“挖角”,也導(dǎo)致研發(fā)部門的

14、人才從制造商企業(yè)大量流失。物以稀為貴的道理人人通曉,薪酬自然水漲船高。 : 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 20誰在拿高薪誰在拿高薪 軟件與系統(tǒng)集成領(lǐng)域的研發(fā)總監(jiān)(年薪40萬) 研發(fā)隊伍是軟件/集成企業(yè)進行創(chuàng)新的原動力,經(jīng)理級以上的高級研發(fā)人員,他們肩負著研發(fā)設(shè)計管理、監(jiān)督員工工作甚至保證公司戰(zhàn)略目標實現(xiàn)的職責,是軟件 /集成公司中的中堅力量,屬于市場稀缺資源,因而企業(yè)為使其能夠留在企業(yè)中并為企業(yè)創(chuàng)造更多價值,愿意支付更高的薪水。在本次調(diào)查中給付最高的公司為研發(fā) 總監(jiān)支付高于40萬的年薪,足見公司對高級研發(fā)人員的重視程度。 : 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 21目前國際上公認的目前國際上

15、公認的ITIT證書證書 主要包括以下幾種:微軟專家認證、Cisco專家認證、3COM資格認證、SCO資格認證、Siemon資格認證、NORDX/CDT資格認證、AMP公司資格認證、ADOBE資格認證、Sun資格認證、Oracle認證介紹、CIW認證、Lotus認證 : 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 22處在十字路口的中國軟件產(chǎn)業(yè)處在十字路口的中國軟件產(chǎn)業(yè) 主權(quán)大國必須建立基于自主技術(shù)的、完整的軟件產(chǎn)業(yè)體系。軟件本國提供率:中國1/3左右,美國97% “印度模式”還是“中國模式” 軟件人才結(jié)構(gòu)不合理,缺乏中高級軟件人才 軟件人員缺乏軟件工程化的概念。

16、/viewthread.php?tid=21&extra= : 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 23 你現(xiàn)在有什么感想你現(xiàn)在有什么感想? : 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 24各章節(jié)主要內(nèi)容各章節(jié)主要內(nèi)容 第一章 軟件工程學概述 第二章 可行性研究(重要) 第三章 需求分析(重要) 第四章 形式化說明技術(shù) 第五章 總體設(shè)計(重要) 第六章 詳細設(shè)計(重要) 第七章 實現(xiàn) 第八章 維護 第九章 面向?qū)ο蠓椒▽W引論 第十章 面向?qū)ο蠓治?第十一章 面向?qū)ο笤O(shè)計 第十二章 面向?qū)ο髮崿F(xiàn) 第十三章 軟件項目管理: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 25第一章第一章 軟件工程學概述軟件工程

17、學概述軟件工程產(chǎn)生的背景(軟件危機) 軟件工程定義軟件工程方法學軟件過程模型小結(jié): 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 261.1 1.1 軟件工程產(chǎn)生的背景軟件工程產(chǎn)生的背景 軟軟 件件 a. a. 軟件的定義軟件的定義軟件軟件( Software)是計算機系統(tǒng)中與硬件相互依存的另一部分,它是計算機系統(tǒng)中與硬件相互依存的另一部分,它是包括是包括程序程序(Program),數(shù)據(jù)數(shù)據(jù)(Data)及其相關(guān)及其相關(guān)文檔文檔(Document)的完整集合。的完整集合。 Software = Program + Data + Document程序是按事先設(shè)計的功能和性能要求執(zhí)行的指令序列程序是按事先設(shè)計的

18、功能和性能要求執(zhí)行的指令序列數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu)文檔是與程序開發(fā),維護和使用有關(guān)的圖文材料文檔是與程序開發(fā),維護和使用有關(guān)的圖文材料: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 27軟件的特征軟件的特征 軟件是一種邏輯實體,而不是具體的物理實體。因而它具有抽象性 軟件的生產(chǎn)與硬件不同,在它的開發(fā)過程中沒有明顯的制造過程 軟件的運行和使用期間,沒有硬件那樣的機械磨損,老化問題 軟件的開發(fā)和運行常受到計算機系統(tǒng)的限制,對計算機系統(tǒng)有著不同程度的依賴性 軟件的開發(fā)至今尚未完全擺脫手工藝的開發(fā)方式: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 28軟件的特征軟件的特征

19、非常復(fù)雜非常復(fù)雜 實際問題非常復(fù)雜 邏輯復(fù)雜 開發(fā)復(fù)雜成本難以估算進度難以控制人員素質(zhì)要求質(zhì)量得不到保證 96年Ariane火箭發(fā)射失敗,浮點數(shù)轉(zhuǎn)換時發(fā)生錯誤: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 29軟件的特征軟件的特征成本高成本高: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 30軟件的特征軟件的特征維護困難維護困難 維護形式多樣化改正性:修改故障完善性:增加功能適應(yīng)性:移植 維護成本越來越高55%到70 維護帶來的問題: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 31軟件的特征軟件的特征風險大風險大1995年美國Standish咨詢集團的統(tǒng)計分析(至90年代初的軟件項目執(zhí)行情況)成功:16.2%失?。?1受

20、到挑戰(zhàn):53.8%近幾年來的統(tǒng)計數(shù)據(jù)成功:26失敗:28受到挑戰(zhàn):46%: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 32軟件的分類軟件的分類 按軟件的功能劃分系統(tǒng)軟件 操作系統(tǒng) 數(shù)據(jù)庫管理系統(tǒng) 設(shè)備驅(qū)動程序 通信處理程序: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 33軟件的分類軟件的分類 支撐軟件文本編輯程序文件格式化程序程序庫系統(tǒng)支持需求分析、設(shè)計、實現(xiàn)、測試和支持管理軟件: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 34軟件的分類軟件的分類 應(yīng)用軟件商業(yè)數(shù)據(jù)處理軟件工程與科學計算軟件計算機輔助設(shè)計/制造軟件系統(tǒng)仿真軟件智能產(chǎn)品嵌入軟件醫(yī)療、制藥軟件事務(wù)處理、辦公自動化軟件計算機輔助教學軟件: 軟件工程導(dǎo)論軟件

21、工程導(dǎo)論Page 35軟件的分類軟件的分類 按軟件規(guī)模劃分: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 36軟件的分類軟件的分類 按軟件工作方式劃分實時處理系統(tǒng)分時系統(tǒng)交互式軟件批處理軟件: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 37軟件的分類軟件的分類 按軟件服務(wù)對象的范圍劃分項目軟件產(chǎn)品軟件 按使用頻率劃分一次使用頻繁使用: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 38軟件的分類軟件的分類 按軟件失效的影響進行劃分高可靠性軟件一般可靠性軟件: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 39軟件的發(fā)展軟件的發(fā)展早期早期面向批處理面向批處理有限的分布有限的分布自定義軟件自定義軟件第二階段第二階段多用戶多用戶實時實時數(shù)據(jù)

22、庫數(shù)據(jù)庫軟件產(chǎn)品軟件產(chǎn)品第三階段第三階段分布式系統(tǒng)分布式系統(tǒng)嵌入嵌入“智能智能”低成本硬件低成本硬件消費者的影響消費者的影響第四階段第四階段強大的桌面系統(tǒng)強大的桌面系統(tǒng)面向?qū)ο蠹夹g(shù)面向?qū)ο蠹夹g(shù)專家系統(tǒng)專家系統(tǒng)人工神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)并行計算并行計算網(wǎng)路計算機網(wǎng)路計算機195019601970198019902000 1968 1968年年1010月,北大西洋公約組織(月,北大西洋公約組織(NATONATO)的科學家在德國)的科學家在德國召開的學術(shù)會議上正式提出了軟件危機問題。召開的學術(shù)會議上正式提出了軟件危機問題。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 40軟件危機案例軟件危機案例 美國美國IB

23、MIBM公司在公司在19631963年至年至19661966年開發(fā)的年開發(fā)的IBM360IBM360機的機的操作系統(tǒng)。這一項目花了操作系統(tǒng)。這一項目花了50005000人一年的工作量,最人一年的工作量,最多時有多時有10001000人投入開發(fā)工作,寫出了近人投入開發(fā)工作,寫出了近100100萬行源萬行源程序。程序。.據(jù)統(tǒng)計,這個操作系統(tǒng)每次發(fā)行的新?lián)y(tǒng)計,這個操作系統(tǒng)每次發(fā)行的新版本都是從前一版本中找出版本都是從前一版本中找出10001000個程序錯誤而修正個程序錯誤而修正的結(jié)果。的結(jié)果。.: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 41 這個項目的負責人這個項目的負責人F. D. BrooksF.

24、 D. Brooks事后總結(jié)了他在組織開發(fā)事后總結(jié)了他在組織開發(fā)過程中的沉痛教訓時說:過程中的沉痛教訓時說:“.正像一只逃亡的野獸落正像一只逃亡的野獸落到泥潭中做垂死的掙扎,越是掙扎,陷得越深,最后無法到泥潭中做垂死的掙扎,越是掙扎,陷得越深,最后無法逃脫滅頂?shù)臑?zāi)難。逃脫滅頂?shù)臑?zāi)難。.程序設(shè)計工作正像這樣一個泥程序設(shè)計工作正像這樣一個泥潭,潭,.一批批程序員被迫在泥潭中拼命掙扎,一批批程序員被迫在泥潭中拼命掙扎,.誰也沒有料到問題竟會陷入這樣的困境誰也沒有料到問題竟會陷入這樣的困境.”.”。IBM360IBM360操作系統(tǒng)的歷史教訓成為軟件開發(fā)項目的典型事例為人們操作系統(tǒng)的歷史教訓成為軟件開發(fā)

25、項目的典型事例為人們所記取。所記取。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 42Myth: 如果落后于進度表,我們可以增加更多的程如果落后于進度表,我們可以增加更多的程 序員便能趕上進度。序員便能趕上進度。Reality: 軟件開發(fā)不是象制造業(yè)的機械過程。用軟件開發(fā)不是象制造業(yè)的機械過程。用 Brooks Brooks 的話說:的話說:“向進度落后的軟件項目增加人員只會向進度落后的軟件項目增加人員只會使該項目進度變的更慢。使該項目進度變的更慢?!眴栴}出在哪里?問題出在哪里?: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 43人與人的人與人的交流交流比寫程序困難得多。比寫程序困難得多。 沒有充分的文檔資料沒

26、有充分的文檔資料( (documentationdocumentation) ) Myth: : 一個成功的項目唯一需要交付的就是運行的程一個成功的項目唯一需要交付的就是運行的程序。序。 Reality: : 運行的程序只是軟件配置的一部分,除此之運行的程序只是軟件配置的一部分,除此之外,還包括程序清單、文檔以及相關(guān)數(shù)據(jù)。文檔是開發(fā)工外,還包括程序清單、文檔以及相關(guān)數(shù)據(jù)。文檔是開發(fā)工作成功進行的基礎(chǔ),更重要的是為軟件維護提供指南作用。作成功進行的基礎(chǔ),更重要的是為軟件維護提供指南作用。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 44 軟件可靠性軟件可靠性( (reliabilityreliabili

27、ty) )缺少度量的標準,質(zhì)量無法保證。如何保缺少度量的標準,質(zhì)量無法保證。如何保證軟件產(chǎn)品的質(zhì)量,是非常復(fù)雜困難的問題,特別對于規(guī)模龐大的證軟件產(chǎn)品的質(zhì)量,是非常復(fù)雜困難的問題,特別對于規(guī)模龐大的軟件。軟件。Myth: 一旦我們完成了程序的編寫,并讓它能運行,那一旦我們完成了程序的編寫,并讓它能運行,那我們的任務(wù)就完成了。我們的任務(wù)就完成了。Reality: 有一個人曾經(jīng)說過:有一個人曾經(jīng)說過:“你越早開始編寫代碼,你越早開始編寫代碼,那你就越晚完成工作。那你就越晚完成工作?!惫I(yè)統(tǒng)計數(shù)字表示,產(chǎn)品第一次交工業(yè)統(tǒng)計數(shù)字表示,產(chǎn)品第一次交付給用戶后,還要花費編寫該軟件付給用戶后,還要花費編寫該

28、軟件60%-80%60%-80%的精力來維護。的精力來維護。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 452) 2) 軟件危機軟件危機 軟件危機的表現(xiàn)軟件危機的表現(xiàn) 概括來講主要是兩個方面的問題如何開發(fā)軟件,以滿足對軟件日益增長的需求如何維護數(shù)量不斷膨脹的已有軟件: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 46軟件危機的表現(xiàn)軟件危機的表現(xiàn)(1) (1) 對軟件開發(fā)成本和進度的估計常常很不準確對軟件開發(fā)成本和進度的估計常常很不準確(2) (2) 用戶對用戶對“已完成的已完成的”軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)軟件系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。常發(fā)生。(3) (3) 軟件產(chǎn)品的質(zhì)量往往靠不住。軟件產(chǎn)品的質(zhì)量往往靠不住。

29、(4) (4) 軟件常常是不可維護的。軟件常常是不可維護的。(5) (5) 軟件通常沒有適當?shù)奈臋n資料。軟件通常沒有適當?shù)奈臋n資料。(6) (6) 軟件成本在計算機系統(tǒng)總成本中所占的比例逐軟件成本在計算機系統(tǒng)總成本中所占的比例逐年上升。年上升。(7) (7) 軟件開發(fā)生產(chǎn)率提高的速度,遠遠跟不上計算軟件開發(fā)生產(chǎn)率提高的速度,遠遠跟不上計算機應(yīng)用迅速普及深入的趨勢。機應(yīng)用迅速普及深入的趨勢。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 47產(chǎn)生軟件危機的原因產(chǎn)生軟件危機的原因 與軟件本身的特點有關(guān) (難于維護, 邏輯復(fù)雜) 與軟件開發(fā)與維護的方法不正確有關(guān):軟件軟件程序程序急于求成急于求成= =拔苗助長

30、拔苗助長各自為陣,無方法學各自為陣,無方法學: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 48軟件工程(學)因危機而產(chǎn)生軟件工程(學)因危機而產(chǎn)生 開發(fā)一個具有一定規(guī)模和復(fù)雜性的軟件系統(tǒng)與編寫一個簡單的程序不一樣正如建設(shè)狗窩和高樓大廈 大型、復(fù)雜軟件系統(tǒng)的開發(fā)是一項工程,必須按照工程化的方法組織軟件的生產(chǎn)和管理,必須經(jīng)過分析、設(shè)計、實現(xiàn)、測試、維護等一系列軟件過程和活動: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 49消除軟件危機的技術(shù)途徑消除軟件危機的技術(shù)途徑提出有效的方法和工具支持軟件開發(fā)提出有效的方法和工具支持軟件開發(fā)19601960年出現(xiàn)軟件危機,軟件工程被正式提出,開始注重軟件結(jié)構(gòu)的年出現(xiàn)軟件危機,

31、軟件工程被正式提出,開始注重軟件結(jié)構(gòu)的研究研究19701970年代,程序設(shè)計方法學成為研究熱點,出現(xiàn)了結(jié)構(gòu)化分析和設(shè)年代,程序設(shè)計方法學成為研究熱點,出現(xiàn)了結(jié)構(gòu)化分析和設(shè)計方法計方法19801980年代,軟件開發(fā)方法學成為研究重點,面象對象技術(shù)開始出現(xiàn)年代,軟件開發(fā)方法學成為研究重點,面象對象技術(shù)開始出現(xiàn)并逐步流行并逐步流行19901990年代,軟件復(fù)用和軟件構(gòu)件技術(shù)被視為解決軟件危機的一條現(xiàn)年代,軟件復(fù)用和軟件構(gòu)件技術(shù)被視為解決軟件危機的一條現(xiàn)實可行途徑,基于構(gòu)件的軟件開發(fā)方法成為主流技術(shù)之一。實可行途徑,基于構(gòu)件的軟件開發(fā)方法成為主流技術(shù)之一。新的技術(shù)新的技術(shù): : 軟件重用、快速原型、需

32、求工程軟件重用、快速原型、需求工程典型技術(shù)典型技術(shù): COM, Java, C+, .Net, .: COM, Java, C+, .Net, .支撐工具和環(huán)境:支撐工具和環(huán)境:Jbuilder, Visual Studio, WebLogic, Jbuilder, Visual Studio, WebLogic, : 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 50消除軟件危機的管理途徑消除軟件危機的管理途徑 2020世紀世紀8080年代末,美國年代末,美國DoDDoD(網(wǎng)絡(luò)信息中心)和工業(yè)界開(網(wǎng)絡(luò)信息中心)和工業(yè)界開始認識到管理的重要性始認識到管理的重要性美國美國DoDDoD的一項研究表明,的一項

33、研究表明,70%70%的項目由于管理不善導(dǎo)致難的項目由于管理不善導(dǎo)致難以控制進步、成本和質(zhì)量;以控制進步、成本和質(zhì)量;進一步的研究發(fā)現(xiàn):管理是影響軟件項目成功開發(fā)的全局性進一步的研究發(fā)現(xiàn):管理是影響軟件項目成功開發(fā)的全局性因素,而技術(shù)只影響局部因素,而技術(shù)只影響局部如果軟件開發(fā)組織不能對軟件項目進行有效管理,就不能充如果軟件開發(fā)組織不能對軟件項目進行有效管理,就不能充分發(fā)揮軟件開發(fā)方法和工具的潛力,也就不能高效率地開發(fā)分發(fā)揮軟件開發(fā)方法和工具的潛力,也就不能高效率地開發(fā)出高質(zhì)量的軟件產(chǎn)品出高質(zhì)量的軟件產(chǎn)品: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 511.2 1.2 軟件工程軟件工程 1.2.1 1

34、.2.1 軟件工程的介紹軟件工程的介紹 概括地說,軟件工程是指導(dǎo)計算機軟件開發(fā)和維護的一門工程學科。 采用工程的概念、原理、技術(shù)和方法來開發(fā)與維護軟件,把經(jīng)過時間考驗而證明正確的管理技術(shù)和當前能夠得到的最好的技術(shù)方法結(jié)合起來,以經(jīng)濟地開發(fā)出高質(zhì)量的軟件并有效地維護它,這就是軟件工程。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 52軟件工程的定義軟件工程的定義1968年在第一屆NATO會議上曾經(jīng)給出了軟件工程的一個早期定義:“軟件工程就是為了經(jīng)濟地獲得可靠的且能在實際機器上有效地運行的軟件,而建立和使用完善的工程原理?!?1993年IEEE進一步給出了一個更全面更具體的定義:“軟件工程是: 把系統(tǒng)的、

35、規(guī)范的、可度量的途徑應(yīng)用于軟件開發(fā)、運行和維護過程,也就是把工程應(yīng)用于軟件; 研究中提到的途徑?!? 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 53軟件工程的本質(zhì)特性軟件工程的本質(zhì)特性1. 1. 軟件工程關(guān)注于大型程序軟件工程關(guān)注于大型程序( (軟件系統(tǒng)軟件系統(tǒng)) )的構(gòu)造的構(gòu)造2. 2. 軟件工程的中心課題是控制復(fù)雜性軟件工程的中心課題是控制復(fù)雜性3. 3. 軟件經(jīng)常變化軟件經(jīng)常變化4. 4. 開發(fā)軟件的效率非常重要開發(fā)軟件的效率非常重要5. 5. 和諧地合作是開發(fā)軟件的關(guān)鍵和諧地合作是開發(fā)軟件的關(guān)鍵6. 6. 軟件必須有效地支持它的用戶軟件必須有效地支持它的用戶7. 7. 在軟件工程領(lǐng)域中是由具有

36、一種文化背景的人替具有另一在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人種文化背景的人( (完成一些工作完成一些工作) ): 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 541.2.2 1.2.2 軟件工程的基本原理軟件工程的基本原理1. 1. 用分階段的生命周期計劃進行嚴格管理用分階段的生命周期計劃進行嚴格管理2. 2. 堅持進行階段評審堅持進行階段評審3. 3. 實行嚴格的產(chǎn)品控制實行嚴格的產(chǎn)品控制4. 4. 采用現(xiàn)代程序設(shè)計技術(shù)采用現(xiàn)代程序設(shè)計技術(shù)5. 5. 結(jié)果應(yīng)能清楚地審查結(jié)果應(yīng)能清楚地審查6. 6. 開發(fā)小組的人員應(yīng)該少而精開發(fā)小組的人員應(yīng)該少而精7. 7. 承認不斷改進軟

37、件工程實踐的必要性承認不斷改進軟件工程實踐的必要性: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 551.2.3 1.2.3 軟件工程方法學軟件工程方法學 軟件工程包括技術(shù)和管理兩方面的內(nèi)容,是技術(shù)與管理緊軟件工程包括技術(shù)和管理兩方面的內(nèi)容,是技術(shù)與管理緊密結(jié)合所形成的工程學科。密結(jié)合所形成的工程學科。 所謂管理就是通過計劃、組織和控制等一系列活動,合理所謂管理就是通過計劃、組織和控制等一系列活動,合理地配置和使用各種資源,以達到既定目標的過程。地配置和使用各種資源,以達到既定目標的過程。 通常把在軟件生命周期全過程中使用的一整套技術(shù)方法的通常把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學

38、集合稱為方法學(methodology)(methodology),也稱為范型,也稱為范型(paradigm)(paradigm)。在軟件工程領(lǐng)域中,這兩個術(shù)語的含義基本相同。在軟件工程領(lǐng)域中,這兩個術(shù)語的含義基本相同。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 56軟件工程:軟件工程: 一種層次化技術(shù)一種層次化技術(shù)質(zhì)量關(guān)注點質(zhì)量關(guān)注點過程過程方法方法工具工具 軟件工程層次圖軟件工程層次圖軟件工程三個要素軟件工程三個要素:工具、方法、過程工具、方法、過程基礎(chǔ)層,綜合方法基礎(chǔ)層,綜合方法及工具,定義方法及工具,定義方法使用的順序,所需使用的順序,所需要的管理要的管理為軟件開發(fā)提供為軟件開發(fā)提供“如何做

39、如何做”的技術(shù)的技術(shù)為軟件開發(fā)提供自動或為軟件開發(fā)提供自動或半自動的軟件支撐環(huán)境半自動的軟件支撐環(huán)境,建立計算機輔助軟件,建立計算機輔助軟件工程工程(CASE)的軟件開的軟件開發(fā)支撐系統(tǒng)發(fā)支撐系統(tǒng): 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 571. 1. 傳統(tǒng)方法學傳統(tǒng)方法學 傳統(tǒng)方法學也稱為生命周期方法學或結(jié)構(gòu)化范型。 它采用結(jié)構(gòu)化技術(shù)(結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計和結(jié)構(gòu)化實現(xiàn))來完成軟件開發(fā)的各項任務(wù),并使用適當?shù)能浖ぞ呋蜍浖こ汰h(huán)境來支持結(jié)構(gòu)化技術(shù)的運用。 這種方法學這種方法學把軟件生命周期的全過程依次劃分為若干個階把軟件生命周期的全過程依次劃分為若干個階段,然后順序地完成每個階段的任務(wù)。段,然后

40、順序地完成每個階段的任務(wù)。 采用這種方法學開發(fā)軟件的時候,從對問題的抽象邏輯分析開始,一個階段一個階段地進行開發(fā)。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 582.2.面向?qū)ο蠓椒▽W面向?qū)ο蠓椒▽W 當軟件規(guī)模龐大,或者對軟件的需求是模糊的或會隨時間而變化的時候,使用傳統(tǒng)方法學開發(fā)軟件往往不成功,此外,使用傳統(tǒng)方法學開發(fā)出的軟件,維護起來仍然很困難。 面向?qū)ο蠓椒ㄊ且环N以數(shù)據(jù)為主線,把數(shù)據(jù)和對數(shù)據(jù)的操作緊密地結(jié)合起來的方法。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 59面向?qū)ο蠓椒▽W的面向?qū)ο蠓椒▽W的4 4個要點個要點(1) 把對象(object)作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件。面向

41、對象程序是由對象組成的,程序中任何元素都是對象,復(fù)雜對象由比較簡單的對象組合而成。也就是說,用對象分解取代了傳統(tǒng)方法的功能分解。(2) 把所有對象都劃分成類(class)。每個類都定義了一組數(shù)據(jù)和一組操作,類是對具有相同數(shù)據(jù)和相同操作的一組相似對象的定義。數(shù)據(jù)用于表示對象的靜態(tài)屬性,是對象的狀態(tài)信息,而施加于數(shù)據(jù)之上的操作用于實現(xiàn)對象的動態(tài)行為。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 60(3) 按照父類(或稱為基類)與子類(或稱為派生類)的關(guān)系,把若干個相關(guān)類組成一個層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級)。在類等級中,下層派生類自動擁有上層基類中定義的數(shù)據(jù)和操作,這種現(xiàn)象稱為繼承。(4) 對象彼此間僅

42、能通過發(fā)送消息互相聯(lián)系。對象與傳統(tǒng)數(shù)據(jù)有本質(zhì)區(qū)別,它不是被動地等待外界對它施加操作,相反,它是數(shù)據(jù)處理的主體,必須向它發(fā)消息,請求它執(zhí)行它的某個操作以處理它的數(shù)據(jù),而不能從外界直接對它的數(shù)據(jù)進行處理。也就是說,對象的所有私有信息都被封裝在該對象內(nèi),不能從外界直接訪問,這就是通常所說的封裝性。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 61 用面向?qū)ο蠓椒▽W開發(fā)軟件的過程,是一個主動地多次反復(fù)迭代的演化過程。 面向?qū)ο蠓椒ㄔ诟拍詈捅硎痉椒ㄉ系囊恢滦裕WC了在各項開發(fā)活動之間的平滑(即無縫)過渡。 面向?qū)ο蠓椒ㄆ毡檫M行的對象分類過程,支持從特殊到一般的歸納思維過程;通過建立類等級而獲得的繼承性,支持從一

43、般到特殊的演繹思維過程。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 62面向?qū)ο蠓椒▽W的優(yōu)點面向?qū)ο蠓椒▽W的優(yōu)點 正確地運用面向?qū)ο蠓椒▽W開發(fā)軟件,則最終的軟件產(chǎn)品由許多較小的、基本上獨立的對象組成,每個對象相當于一個微型程序,而且大多數(shù)對象都與現(xiàn)實世界中的實體相對應(yīng),因此,降低了軟件產(chǎn)品的復(fù)雜性,提高了軟件的可因此,降低了軟件產(chǎn)品的復(fù)雜性,提高了軟件的可理解性,簡化了軟件的開發(fā)和維護工作理解性,簡化了軟件的開發(fā)和維護工作。 對象是相對獨立的實體,容易在以后的軟件產(chǎn)品中重復(fù)使用,因此,面向?qū)ο蠓缎偷牧硪粋€重要優(yōu)點是促進了軟件重用。面向?qū)ο蠓椒ㄌ赜械睦^承性和多態(tài)性,進一步提高面向?qū)ο蠓椒ㄌ赜械睦^承性和

44、多態(tài)性,進一步提高了面向?qū)ο筌浖目芍赜眯粤嗣嫦驅(qū)ο筌浖目芍赜眯浴? 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 63 問題定義問題定義 軟件定義軟件定義 可行性研究可行性研究 需求分析需求分析 總體設(shè)計總體設(shè)計 詳細設(shè)計詳細設(shè)計軟件生命周期軟件生命周期 軟件開發(fā)軟件開發(fā) 編碼編碼 單元測試單元測試 綜合測試綜合測試 運行維護運行維護 持久滿足用戶需求持久滿足用戶需求1.3 1.3 軟件生命周期軟件生命周期: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 641.1.問題定義問題定義 問題定義階段必須回答的關(guān)鍵問題是:問題定義階段必須回答的關(guān)鍵問題是:“要解決的要解決的問題是什么問題是什么? ?” ” 通過對客戶

45、的訪問調(diào)查,系統(tǒng)分析員扼要地寫出關(guān)通過對客戶的訪問調(diào)查,系統(tǒng)分析員扼要地寫出關(guān)于問題性質(zhì)、工程目標和工程規(guī)模的書面報告,經(jīng)于問題性質(zhì)、工程目標和工程規(guī)模的書面報告,經(jīng)過討論和必要的修改之后這份報告應(yīng)該得到客戶的過討論和必要的修改之后這份報告應(yīng)該得到客戶的確認。確認。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 652.2.可行性分析可行性分析 這個階段要回答的關(guān)鍵問題是:這個階段要回答的關(guān)鍵問題是:“對于上一個階段所確定對于上一個階段所確定的問題有行得通的解決辦法嗎的問題有行得通的解決辦法嗎? ?” ” 系統(tǒng)分析員需要進行一次大大壓縮和簡化了的系統(tǒng)分析和系統(tǒng)分析員需要進行一次大大壓縮和簡化了的系統(tǒng)分析

46、和設(shè)計過程,也就是在較抽象的高層次上進行的分析和設(shè)計設(shè)計過程,也就是在較抽象的高層次上進行的分析和設(shè)計過程。過程。 可行性研究應(yīng)該比較簡短,這個階段的任務(wù)不是具體解決可行性研究應(yīng)該比較簡短,這個階段的任務(wù)不是具體解決問題,而是研究問題的范圍,探索這個問題是否值得去解,問題,而是研究問題的范圍,探索這個問題是否值得去解,是否有可行的解決辦法。是否有可行的解決辦法。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 66 可行性研究可行性研究經(jīng)濟可行性經(jīng)濟可行性技術(shù)可行性技術(shù)可行性操作可行性操作可行性法律可行性法律可行性: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 673.3.需求分析需求分析 這個階段的任務(wù)仍然不是具

47、體地解決問題,而是準確地確這個階段的任務(wù)仍然不是具體地解決問題,而是準確地確定定“為了解決這個問題,目標系統(tǒng)必須做什么為了解決這個問題,目標系統(tǒng)必須做什么”,主要是,主要是確定目標系統(tǒng)必須具備哪些功能確定目標系統(tǒng)必須具備哪些功能。 系統(tǒng)分析員在需求分析階段必須和用戶密切配合,充分交系統(tǒng)分析員在需求分析階段必須和用戶密切配合,充分交流信息,以得出流信息,以得出經(jīng)過用戶確認經(jīng)過用戶確認的系統(tǒng)邏輯模型。通常用數(shù)的系統(tǒng)邏輯模型。通常用數(shù)據(jù)流圖、數(shù)據(jù)字典和簡要的算法表示系統(tǒng)的邏輯模型。據(jù)流圖、數(shù)據(jù)字典和簡要的算法表示系統(tǒng)的邏輯模型。 用正式文檔準確地記錄對目標系統(tǒng)的需求,這份文檔通常用正式文檔準確地記錄

48、對目標系統(tǒng)的需求,這份文檔通常稱為規(guī)格說明書稱為規(guī)格說明書(specification)(specification)。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 684.4.總體設(shè)計總體設(shè)計 這個階段必須回答的關(guān)鍵問題是:這個階段必須回答的關(guān)鍵問題是:“概括地說,應(yīng)該怎樣概括地說,應(yīng)該怎樣實現(xiàn)目標系統(tǒng)實現(xiàn)目標系統(tǒng)?”?”總體設(shè)計又稱為概要設(shè)計。總體設(shè)計又稱為概要設(shè)計。 首先,應(yīng)該設(shè)計出實現(xiàn)目標系統(tǒng)的幾種可能的方案。通常首先,應(yīng)該設(shè)計出實現(xiàn)目標系統(tǒng)的幾種可能的方案。通常至少應(yīng)該設(shè)計出低成本、中等成本和高成本等至少應(yīng)該設(shè)計出低成本、中等成本和高成本等3 3種方案。種方案。此此外,還應(yīng)該制定出實現(xiàn)最佳方

49、案的詳細計劃。外,還應(yīng)該制定出實現(xiàn)最佳方案的詳細計劃。 總體設(shè)計的另一項主要任務(wù)就是總體設(shè)計的另一項主要任務(wù)就是設(shè)計程序的體系結(jié)構(gòu),也設(shè)計程序的體系結(jié)構(gòu),也就是確定程序由哪些模塊組成以及模塊間的關(guān)系。就是確定程序由哪些模塊組成以及模塊間的關(guān)系。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 69 著名的軟件設(shè)計方法著名的軟件設(shè)計方法逐步精化逐步精化- -自頂向下設(shè)計方法自頂向下設(shè)計方法面向數(shù)據(jù)的設(shè)計方法,面向數(shù)據(jù)流的設(shè)計方法面向數(shù)據(jù)的設(shè)計方法,面向數(shù)據(jù)流的設(shè)計方法面向?qū)ο蟮脑O(shè)計面向?qū)ο蟮脑O(shè)計 階段性成果:階段性成果:概要設(shè)計說明書;概要設(shè)計說明書;數(shù)據(jù)庫或數(shù)據(jù)結(jié)構(gòu)說明書;數(shù)據(jù)庫或數(shù)據(jù)結(jié)構(gòu)說明書;組裝測試

50、計劃等文檔。組裝測試計劃等文檔。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 705.5.詳細設(shè)計詳細設(shè)計 詳細設(shè)計階段的任務(wù)就是把解法具體化,也就是回答下面詳細設(shè)計階段的任務(wù)就是把解法具體化,也就是回答下面這個關(guān)鍵問題:這個關(guān)鍵問題:“應(yīng)該怎樣具體地實現(xiàn)這個系統(tǒng)呢應(yīng)該怎樣具體地實現(xiàn)這個系統(tǒng)呢?”?” 設(shè)計出程序的詳細規(guī)格說明設(shè)計出程序的詳細規(guī)格說明應(yīng)該包含必要的細節(jié),程序員可以根據(jù)它們寫出實際的程序應(yīng)該包含必要的細節(jié),程序員可以根據(jù)它們寫出實際的程序代碼代碼 詳細設(shè)計也稱為模塊設(shè)計,在這個階段將詳細設(shè)計也稱為模塊設(shè)計,在這個階段將詳細地設(shè)計每個詳細地設(shè)計每個模塊,確定實現(xiàn)模塊功能所需要的算法和數(shù)據(jù)結(jié)

51、構(gòu)。模塊,確定實現(xiàn)模塊功能所需要的算法和數(shù)據(jù)結(jié)構(gòu)。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 71 詳細設(shè)計工具詳細設(shè)計工具圖形工具圖形工具 流程圖、流程圖、N-SN-S圖、判定表、判定樹、問題分析圖圖、判定表、判定樹、問題分析圖列表工具列表工具 HIPO(Hierarchy plus Input/Process/Output)HIPO(Hierarchy plus Input/Process/Output)語言工具語言工具 PDL(Program Design Language)PDL(Program Design Language): 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 726.6.編碼和單元測試

52、編碼和單元測試 這個階段的關(guān)鍵任務(wù)是寫出正確的容易理解、容易這個階段的關(guān)鍵任務(wù)是寫出正確的容易理解、容易維護的程序模塊。維護的程序模塊。 把軟件設(shè)計轉(zhuǎn)換成計算機可以接受的程序代碼。把軟件設(shè)計轉(zhuǎn)換成計算機可以接受的程序代碼。 選擇易學、使用方便的編程語言,以利于減少出錯選擇易學、使用方便的編程語言,以利于減少出錯的概率和提高軟件的可靠性。的概率和提高軟件的可靠性。 編程風格是在不影響軟件性能的前提下,有效地組編程風格是在不影響軟件性能的前提下,有效地組織和編寫程序,提高軟件的易讀性、易測試性和易織和編寫程序,提高軟件的易讀性、易測試性和易維護性。維護性。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 73

53、開發(fā)軟件不僅僅是編程開發(fā)軟件不僅僅是編程: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 747.7.綜合測試綜合測試 這個階段的關(guān)鍵任務(wù)是通過各種類型的測試這個階段的關(guān)鍵任務(wù)是通過各種類型的測試( (及相及相應(yīng)的調(diào)試應(yīng)的調(diào)試) )使軟件達到預(yù)定的要求。使軟件達到預(yù)定的要求。 最基本的測試是集成測試和驗收測試。最基本的測試是集成測試和驗收測試。 通常需要以正式的或非正式的方式對用戶進行培訓。通常需要以正式的或非正式的方式對用戶進行培訓。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 758.8.軟件維護軟件維護 任務(wù)任務(wù): : 通過各種維護活動使軟件系統(tǒng)持久地滿足用通過各種維護活動使軟件系統(tǒng)持久地滿足用戶的需求。戶

54、的需求。 每項維護活動實質(zhì)上都是一次壓縮和簡化了的軟件每項維護活動實質(zhì)上都是一次壓縮和簡化了的軟件定義和軟件開發(fā)過程。都要經(jīng)歷提出維護要求、分定義和軟件開發(fā)過程。都要經(jīng)歷提出維護要求、分析維護要求、提出維護方案、審批維護方案、確定析維護要求、提出維護方案、審批維護方案、確定維護計劃、修改軟件設(shè)計、修改程序、測試程序、維護計劃、修改軟件設(shè)計、修改程序、測試程序、評審、驗收等步驟。評審、驗收等步驟。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 76 通常有4類維護活動:改正性維護:即診斷和改正在使用過程中發(fā)現(xiàn)的軟件錯誤適應(yīng)性維護:即修改軟件以適應(yīng)環(huán)境的變化完善性維護:即根據(jù)用戶的要求改進或擴充軟件使它更完

55、善預(yù)防性維護:即修改軟件為將來的維護活動預(yù)先做準備: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 771.4 1.4 軟件過程軟件過程 軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系列列任務(wù)的框架任務(wù)的框架,它規(guī)定了完成各項任務(wù)的工作步驟。,它規(guī)定了完成各項任務(wù)的工作步驟。 軟件過程定義了運用方法的順序、應(yīng)該交付的文檔軟件過程定義了運用方法的順序、應(yīng)該交付的文檔資料、為保證軟件質(zhì)量和協(xié)調(diào)變化所需要采取的管資料、為保證軟件質(zhì)量和協(xié)調(diào)變化所需要采取的管理措施,以及標志軟件開發(fā)各個階段任務(wù)完成的里理措施,以及標志軟件開發(fā)各個階段任務(wù)完成的里程碑。程碑。: 軟件工程導(dǎo)論

56、軟件工程導(dǎo)論Page 78軟件過程可分為三大類:軟件過程可分為三大類: 基本過程類:是構(gòu)成軟件生存周期主要部分的那些過程,基本過程類:是構(gòu)成軟件生存周期主要部分的那些過程,包括獲取、供應(yīng)、開發(fā)、操作、維護等過程。包括獲取、供應(yīng)、開發(fā)、操作、維護等過程。 支持過程類:可穿插到基本過程中提供支持的一系列過程,支持過程類:可穿插到基本過程中提供支持的一系列過程,包括文檔開發(fā)、配置管理、質(zhì)量保證、驗證、確認、聯(lián)合包括文檔開發(fā)、配置管理、質(zhì)量保證、驗證、確認、聯(lián)合評審、審計、問題解決等過程。評審、審計、問題解決等過程。 組織過程類:一個組織用來建立、實施一種基礎(chǔ)結(jié)構(gòu)、并組織過程類:一個組織用來建立、實施

57、一種基礎(chǔ)結(jié)構(gòu)、并不斷改進該基礎(chǔ)結(jié)構(gòu)的過程,包括管理、基礎(chǔ)、改進、培不斷改進該基礎(chǔ)結(jié)構(gòu)的過程,包括管理、基礎(chǔ)、改進、培訓等過程。訓等過程。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 79軟件過程模型軟件過程模型 軟件生命周期的每一階段都有明確的任務(wù),把規(guī)模大、結(jié)軟件生命周期的每一階段都有明確的任務(wù),把規(guī)模大、結(jié)構(gòu)復(fù)雜、管理復(fù)雜的軟件開發(fā)變得容易控制和管理。構(gòu)復(fù)雜、管理復(fù)雜的軟件開發(fā)變得容易控制和管理。 各個階段的活動如何銜接,開發(fā)過程中采用什么樣的策略,各個階段的活動如何銜接,開發(fā)過程中采用什么樣的策略,應(yīng)遵守什么樣的規(guī)定和制約,將這些活動框架(忽略不必應(yīng)遵守什么樣的規(guī)定和制約,將這些活動框架(忽略不

58、必要的細節(jié))用一種模型表示出來,稱為要的細節(jié))用一種模型表示出來,稱為軟件過程模型軟件過程模型(或(或軟件開發(fā)模型軟件開發(fā)模型或或軟件生命周期模型軟件生命周期模型)。)。 也就是說,也就是說, 軟件過程模型是軟件開發(fā)全部過程、活動和任軟件過程模型是軟件開發(fā)全部過程、活動和任務(wù)的結(jié)構(gòu)框架。務(wù)的結(jié)構(gòu)框架。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 80案例案例: 某個老師(某個老師(T)想要考察一個同學()想要考察一個同學(S)的學習情況和技術(shù)水平,于)的學習情況和技術(shù)水平,于是交給該學生一個任務(wù)。是交給該學生一個任務(wù)。 T : 我有一個朋友想要一個圖象瀏覽軟件,能夠查看多種格式的圖象,我有一個朋友想要

59、一個圖象瀏覽軟件,能夠查看多種格式的圖象,包括包括BMP、TIFF、JPG、PNG,并且能夠支持一般的放大、縮小、漫,并且能夠支持一般的放大、縮小、漫游。你能做這樣一個軟件嗎?游。你能做這樣一個軟件嗎? S:就是類似:就是類似ACDSEE這樣的軟件嗎?這樣的軟件嗎? T: 差不多,不過不需要那么強大的功能,我這個朋友計算機是外行,差不多,不過不需要那么強大的功能,我這個朋友計算機是外行,最好能做的比較方便,傻瓜型的,例如象最好能做的比較方便,傻瓜型的,例如象ACDSEE自動翻頁這種功能自動翻頁這種功能還是要的。還是要的。 S:我以前學過:我以前學過BMP和和JPG的圖象格式解析,我想沒有問題的

60、圖象格式解析,我想沒有問題 T:好的,給你:好的,給你30天時間,下周你再來一趟,跟我講一下你的工作進天時間,下周你再來一趟,跟我講一下你的工作進度。度。 這位同學非常明白老師的意圖,回去后想了一下,并列出了一個清單。這位同學非常明白老師的意圖,回去后想了一下,并列出了一個清單。: 軟件工程導(dǎo)論軟件工程導(dǎo)論Page 81 一一 功能:功能: 1.讀取、顯示、另存四種格式圖片(讀取、顯示、另存四種格式圖片( BMP、TIFF、JPG、PNG ) 2. 放大、縮小、漫游放大、縮小、漫游 3.列出當前目錄下所有四種格式圖片文件名列出當前目錄下所有四種格式圖片文件名 4. PAGEUP(PAGEDOWN)自動

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論