




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Software Engineering軟件工程主主 講講: 劉磊劉磊教教 材:軟件工程導(dǎo)論(第材:軟件工程導(dǎo)論(第6版)版)作者:張海藩作者:張海藩 Software Engineering2 課程概述一、軟件工程學(xué)科介紹一、軟件工程學(xué)科介紹二、學(xué)習(xí)目標(biāo)二、學(xué)習(xí)目標(biāo)三、部分參考資料三、部分參考資料四、課程特點(diǎn)和學(xué)習(xí)的注意事項(xiàng)四、課程特點(diǎn)和學(xué)習(xí)的注意事項(xiàng)五、教材簡(jiǎn)介五、教材簡(jiǎn)介六、課程考核方式六、課程考核方式Software Engineering3 一、軟件工程學(xué)科介紹軟件程學(xué)科發(fā)展歷史軟件程學(xué)科發(fā)展歷史三個(gè)階段:概念提出、學(xué)科雛形、學(xué)科確立三個(gè)階段:概念提出、學(xué)科雛形、學(xué)科確立第一階段:概
2、念提出第一階段:概念提出 1968 年年 NATO 會(huì)議會(huì)議(北大西洋公約組織的計(jì)算機(jī)科學(xué)家的國(guó)際會(huì)議)提提出出“軟件工程軟件工程”概念。概念。當(dāng)時(shí)對(duì)當(dāng)時(shí)對(duì)“軟件工程軟件工程”代表性定義:為了經(jīng)濟(jì)地獲得代表性定義:為了經(jīng)濟(jì)地獲得在真實(shí)機(jī)器上可靠工作的軟件而制定和使用的合理在真實(shí)機(jī)器上可靠工作的軟件而制定和使用的合理工程原則和方法。工程原則和方法。 1972 年年 IEEE 學(xué)會(huì)的計(jì)算機(jī)分會(huì)學(xué)會(huì)的計(jì)算機(jī)分會(huì) IEEE 一一 CS 第一第一次出版了次出版了“軟件工程學(xué)報(bào)軟件工程學(xué)報(bào)”Software Engineering4 第二階段:學(xué)科雛形上世紀(jì)上世紀(jì) 70 年代末,美國(guó)將軟件工程教程列入研究
3、年代末,美國(guó)將軟件工程教程列入研究生教育計(jì)劃。生教育計(jì)劃。 1980 年代末和年代末和 1990 年代初,軟件工程教育得到卡年代初,軟件工程教育得到卡內(nèi)基一梅隆大學(xué)軟件工程研究所(內(nèi)基一梅隆大學(xué)軟件工程研究所( CMU / SEI )的)的支持。支持。 1991 年,年,“軟件工程軟件工程”被被 ACM (美國(guó)計(jì)算機(jī)協(xié)會(huì))和和 IEEE / CS 列為計(jì)算學(xué)科的九個(gè)知識(shí)領(lǐng)域之一。列為計(jì)算學(xué)科的九個(gè)知識(shí)領(lǐng)域之一。 1993 年,年, IEEE 一一 CS 和和ACM 為了把軟件工程建為了把軟件工程建設(shè)成為一個(gè)專業(yè),建立了設(shè)成為一個(gè)專業(yè),建立了 IEEE 一一 CS / ACM 聯(lián)合聯(lián)合指導(dǎo)委員會(huì)
4、。指導(dǎo)委員會(huì)。Software Engineering5 第三階段:學(xué)科確立2004 年年 8 月,月,IEEE 一一 CS 和和 ACM 給出:給出:軟件工程知識(shí)體(軟件工程知識(shí)體( SWEBOK , Software Engineering Body of Knowledge ) 軟件工程教育知識(shí)體軟件工程教育知識(shí)體( SEEK ) 最終版,標(biāo)志著軟最終版,標(biāo)志著軟件工程學(xué)科在世界范圍正式確件工程學(xué)科在世界范圍正式確 立。立。軟件工程、計(jì)算機(jī)科學(xué)、計(jì)算機(jī)工程、信息系統(tǒng)、軟件工程、計(jì)算機(jī)科學(xué)、計(jì)算機(jī)工程、信息系統(tǒng)、信息技術(shù)并列成為計(jì)算學(xué)科下的獨(dú)立學(xué)科。信息技術(shù)并列成為計(jì)算學(xué)科下的獨(dú)立學(xué)科。軟
5、件工程知識(shí)體軟件工程知識(shí)體( SWEBOK ) :全面描述了軟件:全面描述了軟件工程實(shí)踐所需的知識(shí)。工程實(shí)踐所需的知識(shí)。Software Engineering6 SWEBOK (軟件工程知識(shí)體 10 個(gè)領(lǐng)域l軟件需求軟件需求l軟件設(shè)計(jì)軟件設(shè)計(jì)l軟件構(gòu)造軟件構(gòu)造l軟件測(cè)試軟件測(cè)試 l軟件維護(hù)軟件維護(hù)l軟件配置管理軟件配置管理l軟件工程管理軟件工程管理l軟件工程過程軟件工程過程l軟件工程工具和方法軟件工程工具和方法l軟件質(zhì)量軟件質(zhì)量參考資料:參考資料:1 白征白征 SWEBOK :軟件工程知識(shí)體,計(jì):軟件工程知識(shí)體,計(jì)算機(jī)科學(xué),算機(jī)科學(xué), 2001 年年 07 期期 2 萬江平軟件工程知識(shí)體系指
6、南綜述,萬江平軟件工程知識(shí)體系指南綜述,計(jì)算機(jī)應(yīng)用研究,計(jì)算機(jī)應(yīng)用研究, 2006 年年 10 期期Software Engineering7 SWEBOK詳細(xì)結(jié)構(gòu)(詳細(xì)結(jié)構(gòu)(1)Software Engineering8 Software Engineering9 軟件工程與其他學(xué)科的關(guān)系1 、軟件工程是計(jì)算學(xué)科、軟件工程是計(jì)算學(xué)科 9 個(gè)領(lǐng)域之一個(gè)領(lǐng)域之一算法和數(shù)據(jù)結(jié)構(gòu)算法和數(shù)據(jù)結(jié)構(gòu)計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)人工智能和機(jī)器人學(xué)人工智能和機(jī)器人學(xué)數(shù)據(jù)庫和信息檢索數(shù)據(jù)庫和信息檢索人一機(jī)交互人一機(jī)交互操作系統(tǒng)操作系統(tǒng)程序設(shè)計(jì)語言程序設(shè)計(jì)語言軟件方法學(xué)和軟件工程軟件方法學(xué)和軟件工程數(shù)字和符號(hào)計(jì)算
7、數(shù)字和符號(hào)計(jì)算Software Engineering10 計(jì)算學(xué)科中12個(gè)重復(fù)出現(xiàn)的基本概念l綁定綁定l概念和形式模型概念和形式模型l效率效率l抽象層次抽象層次l按時(shí)間排序按時(shí)間排序l安全性安全性l大問題的復(fù)雜性大問題的復(fù)雜性l一致性和完備性一致性和完備性l演化演化l按空間排序按空間排序l重用重用l折衷與決策折衷與決策F軟件工程是計(jì)算學(xué)科的分支,這軟件工程是計(jì)算學(xué)科的分支,這 12 12 個(gè)概念同樣將個(gè)概念同樣將貫穿軟件工程學(xué)科,是學(xué)科的精髓。貫穿軟件工程學(xué)科,是學(xué)科的精髓。Software Engineering11 2 、 8 個(gè)相關(guān)學(xué)科知識(shí)域l計(jì)算機(jī)工程計(jì)算機(jī)工程l計(jì)算機(jī)科學(xué)計(jì)算機(jī)科學(xué)
8、l數(shù)學(xué)數(shù)學(xué)l管理學(xué)管理學(xué)l項(xiàng)目管理項(xiàng)目管理l質(zhì)量管理質(zhì)量管理l系統(tǒng)工程學(xué)系統(tǒng)工程學(xué)l軟件人類工程學(xué)軟件人類工程學(xué) 其中:計(jì)算機(jī)科學(xué)、數(shù)學(xué)是基礎(chǔ)工程學(xué)科、管理其中:計(jì)算機(jī)科學(xué)、數(shù)學(xué)是基礎(chǔ)工程學(xué)科、管理學(xué)科也非常重要學(xué)科也非常重要Software Engineering12 軟件程是一門什么樣的學(xué)科? 是是指導(dǎo)計(jì)算機(jī)軟件開發(fā)與維護(hù)指導(dǎo)計(jì)算機(jī)軟件開發(fā)與維護(hù)的一門的一門工程工程學(xué)科。學(xué)科。工程:將科學(xué)及數(shù)學(xué)原理運(yùn)用于實(shí)際用途的應(yīng)用手段,如:設(shè)計(jì)、制造、機(jī)器操縱、構(gòu)架等。典型的傳統(tǒng)工程:建筑工程、機(jī)械工程、電力工程等。 概括的說,軟件工程即用工程、科學(xué)和數(shù)概括的說,軟件工程即用工程、科學(xué)和數(shù)學(xué)的原則和方
9、法研制、維護(hù)計(jì)算機(jī)軟件的有學(xué)的原則和方法研制、維護(hù)計(jì)算機(jī)軟件的有關(guān)技術(shù)及方法,其優(yōu)點(diǎn)是以較小的代價(jià)開發(fā)關(guān)技術(shù)及方法,其優(yōu)點(diǎn)是以較小的代價(jià)開發(fā)高質(zhì)量的軟件并有效地維護(hù)它。高質(zhì)量的軟件并有效地維護(hù)它。Software Engineering13 二、學(xué)習(xí)目標(biāo)(1) 掌握軟件工程的基礎(chǔ)知識(shí)和理論,對(duì)軟件掌握軟件工程的基礎(chǔ)知識(shí)和理論,對(duì)軟件工程學(xué)有一個(gè)全貌的了解;工程學(xué)有一個(gè)全貌的了解; 熟悉軟件項(xiàng)目開發(fā)和維護(hù)的一般過程;熟悉軟件項(xiàng)目開發(fā)和維護(hù)的一般過程; 熟練掌握軟件需求分析、設(shè)計(jì)、編碼和測(cè)熟練掌握軟件需求分析、設(shè)計(jì)、編碼和測(cè)試等階段的主要思想和技術(shù)方法;試等階段的主要思想和技術(shù)方法;Softwar
10、e Engineering14 二、學(xué)習(xí)目標(biāo)(2) 通過學(xué)習(xí),特別是通過課程設(shè)計(jì),真正運(yùn)通過學(xué)習(xí),特別是通過課程設(shè)計(jì),真正運(yùn)用和深刻體會(huì)軟件工程的思想方法,轉(zhuǎn)變對(duì)用和深刻體會(huì)軟件工程的思想方法,轉(zhuǎn)變對(duì)軟件開發(fā)的認(rèn)識(shí):從個(gè)人的單純編程活動(dòng)轉(zhuǎn)軟件開發(fā)的認(rèn)識(shí):從個(gè)人的單純編程活動(dòng)轉(zhuǎn)移到進(jìn)行系統(tǒng)分析與設(shè)計(jì)方面上來移到進(jìn)行系統(tǒng)分析與設(shè)計(jì)方面上來轉(zhuǎn)變思維定式:轉(zhuǎn)變思維定式:程序員程序員 系統(tǒng)工程師(系統(tǒng)分析員)系統(tǒng)工程師(系統(tǒng)分析員)Software Engineering15 三、部分參考資料 軟件工程理論與實(shí)踐軟件工程理論與實(shí)踐 許家冶等編著,高許家冶等編著,高等教育出版社,等教育出版社, 2005
11、年年 軟件工程軟件工程 (第二版),齊治昌等,高(第二版),齊治昌等,高等教育出版社,等教育出版社, 2004 年年 面向?qū)ο蟮南到y(tǒng)分析面向?qū)ο蟮南到y(tǒng)分析 ,楊芙清等編著,楊芙清等編著,清華大學(xué)出版社,清華大學(xué)出版社, 2001 年年 UML 用戶指南用戶指南 G Booch 等著,邵維忠等著,邵維忠等譯,機(jī)械工業(yè)出版社等譯,機(jī)械工業(yè)出版社 2002 年年Software Engineering16 四、課程特點(diǎn)和學(xué)習(xí)的注肯事項(xiàng)1 、知易行難、知易行難 要將理論知識(shí)與實(shí)踐運(yùn)用結(jié)合,進(jìn)行對(duì)照,以加要將理論知識(shí)與實(shí)踐運(yùn)用結(jié)合,進(jìn)行對(duì)照,以加深理解和掌握。深理解和掌握。 2 、內(nèi)容紛雜、內(nèi)容紛雜 軟
12、件工程涉及計(jì)算機(jī)科學(xué)、數(shù)學(xué)、工程科學(xué)和管軟件工程涉及計(jì)算機(jī)科學(xué)、數(shù)學(xué)、工程科學(xué)和管理科學(xué)等多個(gè)領(lǐng)域。其中:理科學(xué)等多個(gè)領(lǐng)域。其中:計(jì)算機(jī)科學(xué)和數(shù)學(xué)用于構(gòu)造模型與算法;計(jì)算機(jī)科學(xué)和數(shù)學(xué)用于構(gòu)造模型與算法;工程科學(xué)用于制定規(guī)范、設(shè)計(jì)范型、評(píng)估成本及確定工程科學(xué)用于制定規(guī)范、設(shè)計(jì)范型、評(píng)估成本及確定權(quán)衡權(quán)衡管理科學(xué)用于計(jì)劃、資源、質(zhì)量和成本的管理。管理科學(xué)用于計(jì)劃、資源、質(zhì)量和成本的管理。Software Engineering17 五、教材總目錄第第 1 章軟件工程學(xué)概述章軟件工程學(xué)概述第第 2 章可行性研究章可行性研究第第 3 章需求分析章需求分析第第 4 章形式化說明技術(shù)章形式化說明技術(shù)第第
13、5 章總體設(shè)計(jì)章總體設(shè)計(jì)第第 6 章詳細(xì)設(shè)計(jì)章詳細(xì)設(shè)計(jì)第第 7 章實(shí)現(xiàn)章實(shí)現(xiàn)第第 8 章維護(hù)章維護(hù)第第9 章面向?qū)ο蠓椒▽W(xué)章面向?qū)ο蠓椒▽W(xué)引論引論第第 10 章面向?qū)ο蠓治稣旅嫦驅(qū)ο蠓治龅诘?11 章面向?qū)ο笤O(shè)計(jì)章面向?qū)ο笤O(shè)計(jì)第第 12 章面向?qū)ο髮?shí)現(xiàn)章面向?qū)ο髮?shí)現(xiàn)第第 13 章軟件項(xiàng)目管理章軟件項(xiàng)目管理Software Engineering18 課程內(nèi)容學(xué)時(shí)安排章節(jié)章節(jié) 課程內(nèi)容課程內(nèi)容 學(xué)時(shí)學(xué)時(shí)l 軟件工程學(xué)概述軟件工程學(xué)概述 4 2 可行性研究可行性研究 4 3 需求分析需求分析 4 5 總體設(shè)計(jì)總體設(shè)計(jì) 6 6 詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì) 4 7 實(shí)現(xiàn)實(shí)現(xiàn) 8 章節(jié)章節(jié) 課程內(nèi)容課程內(nèi)容 學(xué)時(shí)
14、學(xué)時(shí)8 軟件維護(hù)軟件維護(hù) 2 9 面向?qū)ο蠓椒▽W(xué)引論面向?qū)ο蠓椒▽W(xué)引論 4 10 面向?qū)ο蠓治雒嫦驅(qū)ο蠓治?2 11 面向?qū)ο笤O(shè)計(jì)面向?qū)ο笤O(shè)計(jì) 2 12 面向?qū)ο髮?shí)現(xiàn)面向?qū)ο髮?shí)現(xiàn) 213 軟件項(xiàng)目管理軟件項(xiàng)目管理 6 14 總結(jié)總結(jié) 2注:注: 2 、 3 章內(nèi)容關(guān)聯(lián)較大,講授時(shí)不拘于課本中章節(jié)的章內(nèi)容關(guān)聯(lián)較大,講授時(shí)不拘于課本中章節(jié)的安排和劃分;第安排和劃分;第 9 、 10 章也同樣。章也同樣。Software Engineering19 六、課程考核方式分?jǐn)?shù)組成:分?jǐn)?shù)組成:平時(shí)成績(jī)(平時(shí)成績(jī)( 10 % ) :以理論課課堂表現(xiàn)為主。:以理論課課堂表現(xiàn)為主。作業(yè)(作業(yè)( 30 % ) :書
15、面作業(yè):書面作業(yè)期末考試(期末考試(60 % ) :Software Engineering20 課程設(shè)計(jì)分組要求 3- 5 人一組,自由組合,選出組長(zhǎng)。人一組,自由組合,選出組長(zhǎng)。以小組為單位共同完成以小組為單位共同完成“課程實(shí)踐課程實(shí)踐”和和“課課程設(shè)計(jì)程設(shè)計(jì)”。課程設(shè)計(jì)內(nèi)容、記分方式另外通知課程設(shè)計(jì)內(nèi)容、記分方式另外通知本周(第本周(第 1 周)星期五之前請(qǐng)各班課代表或周)星期五之前請(qǐng)各班課代表或者學(xué)習(xí)委員給出分組的詳細(xì)名單。(電子版者學(xué)習(xí)委員給出分組的詳細(xì)名單。(電子版和紙張文檔)和紙張文檔)Software Engineering21 第 1 章 軟件工程學(xué)概述1 . 1 軟件危機(jī)軟
16、件危機(jī) 1 . 2 軟件工程軟件工程 1 . 3 軟件生命周期軟件生命周期 1 . 4 軟件過程軟件過程 1 . 5 小結(jié)小結(jié)習(xí)題習(xí)題Software Engineering22 學(xué)習(xí)重點(diǎn)學(xué)習(xí)重點(diǎn)1、軟件危機(jī)、軟件工程產(chǎn)生的原因、軟件危機(jī)、軟件工程產(chǎn)生的原因2、軟件工程過程和軟件生命周期、軟件工程過程和軟件生命周期3、軟件生命周期模型、軟件生命周期模型掌握幾個(gè)基本概念掌握幾個(gè)基本概念軟件危機(jī)軟件危機(jī)軟件工程軟件工程軟件過程軟件過程軟件生命周期軟件生命周期軟件生命周期模型軟件生命周期模型Software Engineering23 軟件危機(jī)與軟件工程學(xué)軟件工程學(xué)的產(chǎn)生要從軟件工程學(xué)的產(chǎn)生要從“軟
17、件危機(jī)軟件危機(jī)”說起說起 1968 年,第一屆年,第一屆 NAT0 (北大西洋公約組織的計(jì)算機(jī)科學(xué)家的國(guó)際會(huì)議)會(huì)議,會(huì)議,“軟件工程軟件工程”的慨念作為一種的慨念作為一種有效解決有效解決“軟件危機(jī)軟件危機(jī)”的途徑被正式提出。的途徑被正式提出。l什么是軟件危機(jī)?什么是軟件危機(jī)?l軟件危機(jī)有什么典型表現(xiàn)?軟件危機(jī)有什么典型表現(xiàn)?l為什么會(huì)產(chǎn)生軟件危機(jī)?為什么會(huì)產(chǎn)生軟件危機(jī)?l怎么解決軟件危機(jī)?怎么解決軟件危機(jī)?Software Engineering24 1 軟件危機(jī) 1 . 1 . 1 軟件危機(jī)介紹軟件危機(jī)介紹什么是軟件危機(jī)?什么是軟件危機(jī)? 軟件危機(jī)指在計(jì)算機(jī)軟件的軟件危機(jī)指在計(jì)算機(jī)軟件的開
18、發(fā)和維護(hù)開發(fā)和維護(hù)過過程中,所遇到的一系列嚴(yán)重問題。程中,所遇到的一系列嚴(yán)重問題。軟件危機(jī)主要包括的問題(兩方面)軟件危機(jī)主要包括的問題(兩方面) : 如何開發(fā)軟件如何開發(fā)軟件 如何維護(hù)軟件如何維護(hù)軟件Software Engineering25 軟件危機(jī)有什么典型表現(xiàn)?(1)開發(fā)費(fèi)用和進(jìn)度難以估算和控制,大大超過開發(fā)費(fèi)用和進(jìn)度難以估算和控制,大大超過預(yù)期的資金和規(guī)定日期;預(yù)期的資金和規(guī)定日期;軟件需求分析不夠充分,用戶不滿意軟件需求分析不夠充分,用戶不滿意“已經(jīng)已經(jīng)完成完成”的軟件系統(tǒng)。的軟件系統(tǒng)。軟件質(zhì)量難于保證;軟件質(zhì)量難于保證;軟件維護(hù)困難;軟件維護(hù)困難;難以改正程序中的錯(cuò)誤;難以改正
19、程序中的錯(cuò)誤;難以根據(jù)用戶的需要在原有程序中增加一些新難以根據(jù)用戶的需要在原有程序中增加一些新的功能。的功能。Software Engineering26 軟件危機(jī)有什么典型表現(xiàn)?通常沒有保留適當(dāng)?shù)奈臋n資料。通常沒有保留適當(dāng)?shù)奈臋n資料。文檔的作用:文檔的作用:軟件開發(fā)管理人員:用于管理和評(píng)價(jià)軟件開發(fā)工程的軟件開發(fā)管理人員:用于管理和評(píng)價(jià)軟件開發(fā)工程的進(jìn)展?fàn)顩r進(jìn)展?fàn)顩r軟件開發(fā)人員:用于開發(fā)人員對(duì)各個(gè)階段的工作都進(jìn)軟件開發(fā)人員:用于開發(fā)人員對(duì)各個(gè)階段的工作都進(jìn)行周密思考、全盤權(quán)衡、從而減少返工。并且可在開發(fā)行周密思考、全盤權(quán)衡、從而減少返工。并且可在開發(fā)早期發(fā)現(xiàn)錯(cuò)誤和不一致性,便于及時(shí)加以糾正早期
20、發(fā)現(xiàn)錯(cuò)誤和不一致性,便于及時(shí)加以糾正軟件維護(hù)人員軟件維護(hù)人員:軟件維護(hù)的依據(jù)軟件維護(hù)的依據(jù) 開發(fā)成本逐年上升,軟件開發(fā)生產(chǎn)率提高的速度,開發(fā)成本逐年上升,軟件開發(fā)生產(chǎn)率提高的速度,遠(yuǎn)遠(yuǎn)跟不上計(jì)算機(jī)應(yīng)用迅速普及深入的趨勢(shì)。遠(yuǎn)遠(yuǎn)跟不上計(jì)算機(jī)應(yīng)用迅速普及深入的趨勢(shì)。Software Engineering27 Software Engineering28 幾個(gè)軟件危機(jī)的著名案例 1966 1966年,年,IBM 360 IBM 360 機(jī)的操作系統(tǒng)。花費(fèi)機(jī)的操作系統(tǒng)?;ㄙM(fèi) 5000 5000 人一年的人一年的工作量,寫了近工作量,寫了近 1 1 萬行代碼。錯(cuò)誤百出,每次的新版本就萬行代碼。錯(cuò)誤百出,
21、每次的新版本就是從前一版本中找是從前一版本中找 1 0001 000個(gè)程序錯(cuò)誤而修正的結(jié)果。個(gè)程序錯(cuò)誤而修正的結(jié)果。 1963 1963 年,美國(guó)用于控制火星探測(cè)器的計(jì)算機(jī)軟件中的一年,美國(guó)用于控制火星探測(cè)器的計(jì)算機(jī)軟件中的一個(gè)個(gè) “ “ , ”, ”號(hào)被誤寫為號(hào)被誤寫為“.”.”,而致使飛往火星的探測(cè)器發(fā),而致使飛往火星的探測(cè)器發(fā)生爆炸,造成高達(dá)數(shù)億美元的損失。生爆炸,造成高達(dá)數(shù)億美元的損失。 美國(guó)丹佛新國(guó)際機(jī)場(chǎng)自動(dòng)化行李系統(tǒng)軟件。投資美國(guó)丹佛新國(guó)際機(jī)場(chǎng)自動(dòng)化行李系統(tǒng)軟件。投資 1. 93 1. 93 億美元,計(jì)劃億美元,計(jì)劃 1993 1993 年萬圣節(jié)啟用。但開發(fā)人員一直為系統(tǒng)年萬圣節(jié)啟
22、用。但開發(fā)人員一直為系統(tǒng)錯(cuò)誤困擾,屢次推后啟用時(shí)間,直到錯(cuò)誤困擾,屢次推后啟用時(shí)間,直到 1994 1994 年年 6 6 月,機(jī)場(chǎng)月,機(jī)場(chǎng)計(jì)劃者承認(rèn)無法預(yù)測(cè)何時(shí)能啟用。計(jì)劃者承認(rèn)無法預(yù)測(cè)何時(shí)能啟用。 1996 1996 年,歐洲阿里亞納年,歐洲阿里亞納 5 5 型運(yùn)載火箭墜毀,造成型運(yùn)載火箭墜毀,造成 5 5 億美元損失。原因是控制軟件中的一個(gè)錯(cuò)誤。億美元損失。原因是控制軟件中的一個(gè)錯(cuò)誤。Software Engineering29 1 . 1 . 2 產(chǎn)生軟件危機(jī)的原因主要兩個(gè)原因:主要兩個(gè)原因: 1 、與軟件本身的特點(diǎn)有關(guān)、與軟件本身的特點(diǎn)有關(guān) 2 、與軟件開發(fā)與維護(hù)的方法不正確有關(guān)。、
23、與軟件開發(fā)與維護(hù)的方法不正確有關(guān)。Software Engineering30 一 、軟件本身的特點(diǎn) ( 1)軟件與硬件、一般程序存在很多不同之處。軟件與硬件、一般程序存在很多不同之處。 1 、軟件與硬件不同、軟件與硬件不同抽象性。抽象性。軟件生產(chǎn)沒有明顯的制造過程,難軟件生產(chǎn)沒有明顯的制造過程,難以衡量開發(fā)進(jìn)展,也難以控制軟件質(zhì)量。以衡量開發(fā)進(jìn)展,也難以控制軟件質(zhì)量。問題的隱蔽性。問題的隱蔽性。沒有硬件的磨損、老化問題,沒有硬件的磨損、老化問題,但存在開發(fā)早期在分析、設(shè)計(jì)階段的錯(cuò)誤,但存在開發(fā)早期在分析、設(shè)計(jì)階段的錯(cuò)誤,修改難度較大。修改難度較大。Software Engineering31
24、 失效率蜘線Software Engineering32 改正一個(gè)問題需付出的代價(jià)Software Engineering33 2 、軟件與一般程序不同(1) 軟件遠(yuǎn)比一般程序規(guī)模龐大,復(fù)雜性高軟件遠(yuǎn)比一般程序規(guī)模龐大,復(fù)雜性高軟件所反映的實(shí)際問題的復(fù)雜性軟件所反映的實(shí)際問題的復(fù)雜性程序邏輯結(jié)構(gòu)的復(fù)雜性。程序邏輯結(jié)構(gòu)的復(fù)雜性。例例 1 : Windows95 , 1000 萬行代碼;萬行代碼; Windows2000, 5000 萬行代碼萬行代碼例例 2 : Exchange 2000 和和 windows 2000 開開發(fā)人員發(fā)人員Software Engineering34 軟件的規(guī)模F軟
25、件產(chǎn)品的特殊性和人類智力的局限性,軟件產(chǎn)品的特殊性和人類智力的局限性,導(dǎo)致人們無力處理導(dǎo)致人們無力處理“復(fù)雜問題復(fù)雜問題”。Software Engineering35 2 、軟件與一般程序不同( 2 ) 大型軟件開發(fā)既有技術(shù)問題,還有社會(huì)問大型軟件開發(fā)既有技術(shù)問題,還有社會(huì)問題。題。社會(huì)因素:組織機(jī)構(gòu)、體制、管理方式、觀念、社會(huì)因素:組織機(jī)構(gòu)、體制、管理方式、觀念、人的心理素等。人的心理素等。開發(fā)團(tuán)隊(duì)成員分工合作開發(fā)團(tuán)隊(duì)成員分工合作技術(shù)與管理的矛盾技術(shù)與管理的矛盾軟件開發(fā)人員對(duì)軟件應(yīng)用的領(lǐng)域知識(shí)的了解軟件開發(fā)人員對(duì)軟件應(yīng)用的領(lǐng)域知識(shí)的了解Software Engineering36 二、軟件
26、開發(fā)維護(hù)方法中存在的問題(1) 對(duì)用戶需求的獲取不正確對(duì)用戶需求的獲取不正確用戶的原因用戶的原因分析人員的原因分析人員的原因 對(duì)分析人員的要求:溝通能力、歸納總結(jié)能力、經(jīng)驗(yàn)對(duì)分析人員的要求:溝通能力、歸納總結(jié)能力、經(jīng)驗(yàn)越是后期產(chǎn)生的錯(cuò)誤,付出的代價(jià)越大。越是后期產(chǎn)生的錯(cuò)誤,付出的代價(jià)越大。圖:不同時(shí)期引入同一變圖:不同時(shí)期引入同一變 動(dòng)動(dòng) 的代價(jià)的代價(jià)Software Engineering37 二、軟件開發(fā)維護(hù)方法中存在的問題( 2 ) 軟件開發(fā)就是編寫程序。軟件開發(fā)就是編寫程序。一個(gè)完整的軟件產(chǎn)品由一整套完整的配置組成,程序一個(gè)完整的軟件產(chǎn)品由一整套完整的配置組成,程序只是其中的一個(gè)組成部
27、分。只是其中的一個(gè)組成部分。軟件開發(fā)過程包括多個(gè)階段,每個(gè)階段的產(chǎn)品都是最軟件開發(fā)過程包括多個(gè)階段,每個(gè)階段的產(chǎn)品都是最終的完整的軟件產(chǎn)品的一部分。終的完整的軟件產(chǎn)品的一部分。 軟件開發(fā)只要依靠個(gè)別編程高手就能完成。軟件開發(fā)只要依靠個(gè)別編程高手就能完成。 輕視軟件維護(hù)輕視軟件維護(hù)軟件維護(hù)約占軟件費(fèi)用軟件維護(hù)約占軟件費(fèi)用 55 一一 75 % ,包括修改軟件運(yùn),包括修改軟件運(yùn)行的錯(cuò)誤;對(duì)軟件進(jìn)行改進(jìn)和功能擴(kuò)充。行的錯(cuò)誤;對(duì)軟件進(jìn)行改進(jìn)和功能擴(kuò)充。Software Engineering38 軟件維護(hù)在軟件費(fèi)用的比例Software Engineering39 三、其他產(chǎn)生軟件危機(jī)的原因軟件開發(fā)尚
28、未完全擺脫手工藝的開發(fā)方式。軟件開發(fā)尚未完全擺脫手工藝的開發(fā)方式。 軟件成本相當(dāng)昂貴,主要依靠大量復(fù)雜的、軟件成本相當(dāng)昂貴,主要依靠大量復(fù)雜的、高強(qiáng)度的腦力勞動(dòng)高強(qiáng)度的腦力勞動(dòng) 軟件的開發(fā)和運(yùn)行常常受到計(jì)算機(jī)系統(tǒng)的軟件的開發(fā)和運(yùn)行常常受到計(jì)算機(jī)系統(tǒng)的限制,對(duì)計(jì)算機(jī)系統(tǒng)有著不同程度的依賴性。限制,對(duì)計(jì)算機(jī)系統(tǒng)有著不同程度的依賴性。軟件的軟件的“可移植性可移植性”就是指的軟件對(duì)硬件的依就是指的軟件對(duì)硬件的依賴程度。好的可移植性依賴少。賴程度。好的可移植性依賴少。Software Engineering40 1 . 1 . 3 消除軟件危機(jī)的途徑1 、徹底消除、徹底消除“軟件就是程序軟件就是程序”的
29、錯(cuò)誤觀念。的錯(cuò)誤觀念。2 、充分認(rèn)識(shí)到軟件開發(fā)是一種組織良好、充分認(rèn)識(shí)到軟件開發(fā)是一種組織良好、管理嚴(yán)密、各類人員協(xié)同配合、共同完成的管理嚴(yán)密、各類人員協(xié)同配合、共同完成的工程項(xiàng)目,不是個(gè)人獨(dú)立的勞動(dòng)。工程項(xiàng)目,不是個(gè)人獨(dú)立的勞動(dòng)。 3 、推廣和使用在實(shí)踐中總結(jié)出來的軟件開、推廣和使用在實(shí)踐中總結(jié)出來的軟件開發(fā)的成功技術(shù)和方法。發(fā)的成功技術(shù)和方法。 4 、開發(fā)和使用更好的軟件工具、開發(fā)和使用更好的軟件工具Software Engineering41 總結(jié):總結(jié):“軟件工程軟件工程”的方法理論是擺脫軟件的方法理論是擺脫軟件危機(jī)的一個(gè)主要出路。危機(jī)的一個(gè)主要出路。計(jì)算機(jī)和軟件科學(xué)家為解決軟件危機(jī)問
30、題,嘗計(jì)算機(jī)和軟件科學(xué)家為解決軟件危機(jī)問題,嘗試將在其它領(lǐng)域中行之有效的工程學(xué)知識(shí)運(yùn)用到試將在其它領(lǐng)域中行之有效的工程學(xué)知識(shí)運(yùn)用到軟件開發(fā)工作中來,經(jīng)過不斷實(shí)踐和總結(jié),軟件開發(fā)工作中來,經(jīng)過不斷實(shí)踐和總結(jié),最后最后得出一個(gè)結(jié)論;得出一個(gè)結(jié)論;按工程化的原則和方法組織軟件按工程化的原則和方法組織軟件開發(fā)工作是有效的,是擺脫軟件危機(jī)的一個(gè)主要開發(fā)工作是有效的,是擺脫軟件危機(jī)的一個(gè)主要出路。出路。Software Engineering42 思考題( 1 )1 )只要是編程高手,即使是不懂軟件工程,)只要是編程高手,即使是不懂軟件工程,也能編出很好的軟件。也能編出很好的軟件。軟件是服務(wù)于大眾,卻是由
31、個(gè)性化的開發(fā)人員軟件是服務(wù)于大眾,卻是由個(gè)性化的開發(fā)人員完成的。如果個(gè)性化太強(qiáng),程序就無法閱讀,其完成的。如果個(gè)性化太強(qiáng),程序就無法閱讀,其他人員也就無法維護(hù)。他人員也就無法維護(hù)。例:國(guó)內(nèi)例:國(guó)內(nèi) 80 年代涌現(xiàn)出來的眾多漢字操作系年代涌現(xiàn)出來的眾多漢字操作系統(tǒng)均是由編程高手完成的。統(tǒng)均是由編程高手完成的。Software Engineering43 思考題( 2 )2 )只要擁有一套講述如何開發(fā)軟件的書籍,)只要擁有一套講述如何開發(fā)軟件的書籍,并了解了書中的標(biāo)準(zhǔn)與示例,就可以解決軟并了解了書中的標(biāo)準(zhǔn)與示例,就可以解決軟件開發(fā)中遇到的任何問題。件開發(fā)中遇到的任何問題。軟件是用來解決現(xiàn)實(shí)問題的,
32、現(xiàn)實(shí)問題的特殊軟件是用來解決現(xiàn)實(shí)問題的,現(xiàn)實(shí)問題的特殊性對(duì)規(guī)范提出了挑戰(zhàn)(要進(jìn)行適應(yīng))。性對(duì)規(guī)范提出了挑戰(zhàn)(要進(jìn)行適應(yīng))。軟件技術(shù)是發(fā)展的,沒有祖?zhèn)髅胤?。軟件技術(shù)是發(fā)展的,沒有祖?zhèn)髅胤健>拖駬碛惺匙V并不能成為名廚一樣,軟件開發(fā)就像擁有食譜并不能成為名廚一樣,軟件開發(fā)需要實(shí)踐。需要實(shí)踐。Software Engineering44 思考題( 3 )3 )只要擁有最好的開發(fā)工具、最好的計(jì)算)只要擁有最好的開發(fā)工具、最好的計(jì)算機(jī),一定能做出優(yōu)秀的軟件。機(jī),一定能做出優(yōu)秀的軟件。硬件環(huán)境只是必要條件,人才是充分條件,軟硬件環(huán)境只是必要條件,人才是充分條件,軟件是人在一定的約束條件下創(chuàng)造出來的。因人因件
33、是人在一定的約束條件下創(chuàng)造出來的。因人因事而異。事而異。Software Engineering45 思考題 (4)4 )軟件開發(fā)時(shí),如果進(jìn)度慢,落后于計(jì)劃,)軟件開發(fā)時(shí),如果進(jìn)度慢,落后于計(jì)劃,可以增加更多的程序員來解決??梢栽黾痈嗟某绦騿T來解決。增加人力可以減少開發(fā)時(shí)間嗎?增加人力可以減少開發(fā)時(shí)間嗎?新手!任務(wù)的重新劃分!溝通更加復(fù)雜!新手!任務(wù)的重新劃分!溝通更加復(fù)雜!必須依靠科學(xué)地計(jì)劃來解決這樣的問題。必須依靠科學(xué)地計(jì)劃來解決這樣的問題。Software Engineering46 思考題(5)5 )爭(zhēng)議:如果軟件運(yùn)行較慢,是換一臺(tái)更)爭(zhēng)議:如果軟件運(yùn)行較慢,是換一臺(tái)更快的計(jì)算機(jī),還
34、是設(shè)計(jì)一種更快的算法?快的計(jì)算機(jī),還是設(shè)計(jì)一種更快的算法?軟件的性能問題;軟件的性能問題;應(yīng)用級(jí)別應(yīng)用級(jí)別算法的合理性;算法的合理性;系統(tǒng)級(jí)別系統(tǒng)級(jí)別操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)、系統(tǒng)軟操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)、系統(tǒng)軟件等;件等;硬件級(jí)別硬件級(jí)別機(jī)器性能機(jī)器性能Software Engineering47 1 . 2 軟件工程1 . 2 . 1 軟件工程介紹軟件工程介紹一、一、“軟件工程軟件工程”的典型定義的典型定義 1 )1968 年,第一屆年,第一屆 NATO 會(huì)議會(huì)議為了經(jīng)濟(jì)地獲得可靠的且能在實(shí)際機(jī)器上有效地運(yùn)為了經(jīng)濟(jì)地獲得可靠的且能在實(shí)際機(jī)器上有效地運(yùn)行的軟件,而建立和使用完善的行的軟件,而建立和
35、使用完善的工程工程原理。原理。 2 ) IEEE/CS(電氣電子工程師協(xié)會(huì)計(jì)算機(jī)科學(xué)分會(huì))(電氣電子工程師協(xié)會(huì)計(jì)算機(jī)科學(xué)分會(huì)) 1993 年,將系統(tǒng)化的、規(guī)范的、可度量的方法年,將系統(tǒng)化的、規(guī)范的、可度量的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù)的過程,即將應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù)的過程,即將工程工程化化應(yīng)用于軟件中。應(yīng)用于軟件中。 對(duì)對(duì) 中提到的各種方法的研究中提到的各種方法的研究Software Engineering48 3 ) 其他學(xué)者的定義Boehm :運(yùn)用現(xiàn)代科學(xué)技術(shù)知識(shí)來設(shè)計(jì)并構(gòu):運(yùn)用現(xiàn)代科學(xué)技術(shù)知識(shí)來設(shè)計(jì)并構(gòu)造計(jì)算機(jī)程序及為開發(fā)、運(yùn)行和維護(hù)這些程造計(jì)算機(jī)程序及為開發(fā)、運(yùn)行和維護(hù)這些
36、程序所必需的相關(guān)文件資料。序所必需的相關(guān)文件資料。Fritz Bauer: 建立并使用完善的建立并使用完善的工程化工程化原則,原則,以較經(jīng)濟(jì)的手段獲得能在實(shí)際機(jī)器上有效運(yùn)以較經(jīng)濟(jì)的手段獲得能在實(shí)際機(jī)器上有效運(yùn)行的可靠軟件的一系列方法行的可靠軟件的一系列方法所有定義都強(qiáng)調(diào)在軟件開發(fā)過程中,應(yīng)用工所有定義都強(qiáng)調(diào)在軟件開發(fā)過程中,應(yīng)用工程化原則的重要性程化原則的重要性Software Engineering49 幾個(gè)關(guān)于軟件工程本質(zhì)特性和基本原理的問題問題一:?jiǎn)栴}一: 軟件工程適用范圍?軟件工程適用范圍? 問題二:軟件工程如何控制系統(tǒng)開發(fā)的復(fù)雜問題二:軟件工程如何控制系統(tǒng)開發(fā)的復(fù)雜性的?性的?問題三
37、:以你的經(jīng)驗(yàn),舉例說明一個(gè)成熟的問題三:以你的經(jīng)驗(yàn),舉例說明一個(gè)成熟的軟件通常采用什么方法來適應(yīng)現(xiàn)實(shí)世界的變軟件通常采用什么方法來適應(yīng)現(xiàn)實(shí)世界的變化的?化的?Software Engineering50 幾個(gè)關(guān)于軟件工程本質(zhì)特性和基本原理的問題問題四:假設(shè)某軟件公司,能為同一個(gè)用戶問題四:假設(shè)某軟件公司,能為同一個(gè)用戶開發(fā)兩個(gè)不同層次的軟件:一個(gè)層次的軟件開發(fā)兩個(gè)不同層次的軟件:一個(gè)層次的軟件功能非常強(qiáng)大,在滿足用戶所有需求的基礎(chǔ)功能非常強(qiáng)大,在滿足用戶所有需求的基礎(chǔ)上,還能提供大大超過用戶需求的其他更多上,還能提供大大超過用戶需求的其他更多更強(qiáng)的功能;另一個(gè)層次的軟件僅僅能滿足更強(qiáng)的功能;另
38、一個(gè)層次的軟件僅僅能滿足用戶需求,但沒有提供其他額外的功能。請(qǐng)用戶需求,但沒有提供其他額外的功能。請(qǐng)問如果你是項(xiàng)目負(fù)責(zé)人,你會(huì)選擇為客戶開問如果你是項(xiàng)目負(fù)責(zé)人,你會(huì)選擇為客戶開發(fā)那個(gè)層次的軟件?發(fā)那個(gè)層次的軟件?問題五:協(xié)同工作有什么重要性?問題五:協(xié)同工作有什么重要性?Software Engineering51 幾個(gè)關(guān)于軟件工程本質(zhì)特性和基本原理的問題問題五:怎樣理解問題五:怎樣理解“在軟件工程領(lǐng)域中是由具有一在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品品”這句話?這句話?問題六:某軟件開發(fā),由于時(shí)間和資金都非常緊迫,
39、問題六:某軟件開發(fā),由于時(shí)間和資金都非常緊迫,在需求分析人員非常認(rèn)真、仔細(xì)地做完需求分析之在需求分析人員非常認(rèn)真、仔細(xì)地做完需求分析之后,說:我們可以保證我們的需求分析正確性,不后,說:我們可以保證我們的需求分析正確性,不用花時(shí)間檢查了,設(shè)計(jì)人員可以直接拿著這份分析用花時(shí)間檢查了,設(shè)計(jì)人員可以直接拿著這份分析報(bào)告,馬上開始設(shè)計(jì)。如果你是項(xiàng)目負(fù)責(zé)人,你會(huì)報(bào)告,馬上開始設(shè)計(jì)。如果你是項(xiàng)目負(fù)責(zé)人,你會(huì)如何決定?為什么?如何決定?為什么?問題七:在需求分析完成并獲得了用戶的肯定,也問題七:在需求分析完成并獲得了用戶的肯定,也通過了評(píng)審,進(jìn)入軟件設(shè)計(jì)階段之后,用戶的想法通過了評(píng)審,進(jìn)入軟件設(shè)計(jì)階段之后,
40、用戶的想法有了改變,提出了一個(gè)新的要求,此時(shí)如果你是項(xiàng)有了改變,提出了一個(gè)新的要求,此時(shí)如果你是項(xiàng)目負(fù)責(zé)人,應(yīng)該怎樣做?目負(fù)責(zé)人,應(yīng)該怎樣做?Software Engineering52 二、軟件工程本質(zhì)特性(2)1 )軟件工程關(guān)注于大型程序的構(gòu)造。)軟件工程關(guān)注于大型程序的構(gòu)造。 2 )軟件工程的中心課題是控制復(fù)雜性)軟件工程的中心課題是控制復(fù)雜性主要考慮:如何分解和集成主要考慮:如何分解和集成為什么要分解:為什么要分解: G .Miller, “7士士 2 ” 原則原則 3 )軟件經(jīng)常變化)軟件經(jīng)常變化 4 )開發(fā)軟件的效率非常重要)開發(fā)軟件的效率非常重要 5 )和諧地合作是開發(fā)軟件的關(guān)鍵
41、)和諧地合作是開發(fā)軟件的關(guān)鍵 6 )軟件必須有效地支持它的用戶)軟件必須有效地支持它的用戶 7 )在軟件工程領(lǐng)域中是由具有一種文化背景的人)在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品替具有另一種文化背景的人創(chuàng)造產(chǎn)品擴(kuò)展定義:擴(kuò)展定義:軟件軟件=知識(shí)程序知識(shí)程序+數(shù)據(jù)數(shù)據(jù)+文檔文檔Software Engineering53 1 . 2 . 2 軟件工程的基本原理B.W.Boehm, 1983 年提出:年提出: 1 )用分階段的生命周期計(jì)劃嚴(yán)格管理)用分階段的生命周期計(jì)劃嚴(yán)格管理 2 )堅(jiān)持進(jìn)行階段評(píng)審)堅(jiān)持進(jìn)行階段評(píng)審 3 )實(shí)行嚴(yán)格的產(chǎn)品控制基線)實(shí)行嚴(yán)格的產(chǎn)品
42、控制基線 基線(基線(baseline)控制)控制 4 )采用現(xiàn)代程序設(shè)計(jì)技術(shù))采用現(xiàn)代程序設(shè)計(jì)技術(shù) 5 )結(jié)果應(yīng)能清楚地審查)結(jié)果應(yīng)能清楚地審查 6 )開發(fā)小組的人員應(yīng)該少而精)開發(fā)小組的人員應(yīng)該少而精 7 )承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性)承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性Software Engineering54 1 . 2 . 3 軟件工程方法學(xué)l軟件工程包括軟件工程包括“管理管理”和和“技術(shù)技術(shù)”兩方面內(nèi)兩方面內(nèi)容:容:管理管理 對(duì)人、財(cái)、物的合理使用和配置;對(duì)人、財(cái)、物的合理使用和配置;技術(shù)技術(shù) 指軟件開發(fā)中采用的方法、工具和指軟件開發(fā)中采用的方法、工具和過程。過程。l什么是什么
43、是軟件工程方法學(xué)軟件工程方法學(xué)?通常把在軟件生命周期全過程中使用的一整套通常把在軟件生命周期全過程中使用的一整套技術(shù)方法技術(shù)方法的集合稱為方法學(xué)的集合稱為方法學(xué)(methodology),也稱為范型也稱為范型(paradigm)。)。Software Engineering55 一、軟件工程方法學(xué)三要素:工具、方法和過程要素一:軟件工程過程要素一:軟件工程過程規(guī)定了完成各項(xiàng)任務(wù)的工作規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。步驟。要素二:軟件工程方法要素二:軟件工程方法完成軟件開發(fā)的各項(xiàng)任務(wù)的完成軟件開發(fā)的各項(xiàng)任務(wù)的技術(shù)方法,為軟件開發(fā)提供技術(shù)方法,為軟件開發(fā)提供了了“如何做如何做”的技術(shù)。的技術(shù)。如項(xiàng)目
44、計(jì)劃與估算、軟件系如項(xiàng)目計(jì)劃與估算、軟件系統(tǒng)需求分析、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)統(tǒng)需求分析、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)總體結(jié)構(gòu)的設(shè)計(jì)、算法過程的總體結(jié)構(gòu)的設(shè)計(jì)、算法過程的設(shè)計(jì)、編碼、測(cè)試以及維護(hù)等。設(shè)計(jì)、編碼、測(cè)試以及維護(hù)等。要素三:軟件工程工具要素三:軟件工程工具計(jì)算機(jī)輔助軟件工程計(jì)算機(jī)輔助軟件工程 CASE ( computer Aided sottware Engineering ) ,為軟件工,為軟件工程方法提供自動(dòng)或半自動(dòng)的程方法提供自動(dòng)或半自動(dòng)的軟件支撐環(huán)境。軟件支撐環(huán)境。Software Engineering56 二、軟件工程方法學(xué)思想兩種:兩種:1、 傳統(tǒng)方法學(xué)(生命周期方法學(xué)或結(jié)構(gòu)化傳統(tǒng)方法學(xué)(生
45、命周期方法學(xué)或結(jié)構(gòu)化范型)范型) 2、面向?qū)ο蠓椒ā⒚嫦驅(qū)ο蠓椒⊿oftware Engineering57 1.傳統(tǒng)方法學(xué)(生命周期方法學(xué)或結(jié)構(gòu)化范型)l采用結(jié)構(gòu)化技術(shù)(結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)采用結(jié)構(gòu)化技術(shù)(結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化實(shí)現(xiàn))來完成軟件開發(fā)的各項(xiàng)任計(jì)和結(jié)構(gòu)化實(shí)現(xiàn))來完成軟件開發(fā)的各項(xiàng)任務(wù);務(wù);l把軟件生命周期劃分為若干個(gè)階段,按順把軟件生命周期劃分為若干個(gè)階段,按順序完成每個(gè)階段的任務(wù);序完成每個(gè)階段的任務(wù);l每個(gè)階段開始和結(jié)束都有嚴(yán)格的標(biāo)準(zhǔn),對(duì)每個(gè)階段開始和結(jié)束都有嚴(yán)格的標(biāo)準(zhǔn),對(duì)任何兩個(gè)相鄰的階段而言,前一個(gè)階段的結(jié)任何兩個(gè)相鄰的階段而言,前一個(gè)階段的結(jié)束標(biāo)準(zhǔn)就是后一階段的
46、開始標(biāo)準(zhǔn);束標(biāo)準(zhǔn)就是后一階段的開始標(biāo)準(zhǔn);l每一個(gè)階段結(jié)束之前都必須進(jìn)行正式嚴(yán)格每一個(gè)階段結(jié)束之前都必須進(jìn)行正式嚴(yán)格的技術(shù)審查和管理復(fù)審的技術(shù)審查和管理復(fù)審Software Engineering58 傳統(tǒng)方法學(xué)的優(yōu)點(diǎn):l分解任務(wù),分工合作,降低整個(gè)軟件開發(fā)分解任務(wù),分工合作,降低整個(gè)軟件開發(fā)工程的困難;工程的困難;l采用科學(xué)的管理技術(shù)和良好的技術(shù)方法對(duì)采用科學(xué)的管理技術(shù)和良好的技術(shù)方法對(duì)每個(gè)階段成果都進(jìn)行嚴(yán)格的審查。保證了軟每個(gè)階段成果都進(jìn)行嚴(yán)格的審查。保證了軟件的質(zhì)量。件的質(zhì)量。傳統(tǒng)方法學(xué)的缺點(diǎn):傳統(tǒng)方法學(xué)的缺點(diǎn):把數(shù)據(jù)和操作人為地分離成兩個(gè)獨(dú)立的部分,把數(shù)據(jù)和操作人為地分離成兩個(gè)獨(dú)立的部分
47、,增加了軟件開發(fā)與維護(hù)的難度。增加了軟件開發(fā)與維護(hù)的難度。Software Engineering59 2 、面向?qū)ο蠓椒▽W(xué)( OO,Object- oriented ) 模擬人類習(xí)慣的思維方式,使開發(fā)軟件的模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過程盡可能接近人類認(rèn)識(shí)世界解決問方法與過程盡可能接近人類認(rèn)識(shí)世界解決問題的方法與過程,從而使描述問題的問題空題的方法與過程,從而使描述問題的問題空間(也稱為問題域)與實(shí)現(xiàn)解法的解空間間(也稱為問題域)與實(shí)現(xiàn)解法的解空間(也稱為求解域)在結(jié)構(gòu)上盡可能一致。(也稱為求解域)在結(jié)構(gòu)上盡可能一致。Software Engineering60 面向?qū)ο蠓椒▽W(xué)
48、 4 要點(diǎn)l把對(duì)象(把對(duì)象( object )作為融合了數(shù)據(jù)及在數(shù))作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件。據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件。l把所有對(duì)象都劃分成類(把所有對(duì)象都劃分成類(class )。)。l按照父類(或稱為基類)與子類(或稱為按照父類(或稱為基類)與子類(或稱為派生類)的關(guān)系,把若干個(gè)相關(guān)類組成一個(gè)派生類)的關(guān)系,把若干個(gè)相關(guān)類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級(jí))。層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級(jí))。l對(duì)象彼此間僅能通過發(fā)送消息互相聯(lián)系。對(duì)象彼此間僅能通過發(fā)送消息互相聯(lián)系。Software Engineering61 二者區(qū)別l傳統(tǒng)方法學(xué):強(qiáng)調(diào)自頂向下順序地完成軟傳
49、統(tǒng)方法學(xué):強(qiáng)調(diào)自頂向下順序地完成軟件開發(fā)的各階段任務(wù)。件開發(fā)的各階段任務(wù)。l面向?qū)ο蠓椒ǎ菏侵鲃?dòng)地多次反復(fù)迭代的面向?qū)ο蠓椒ǎ菏侵鲃?dòng)地多次反復(fù)迭代的演化過程演化過程Software Engineering62 3 軟件生命周期一、什么是軟件生命周期(一、什么是軟件生命周期( life cycle)指軟件孕育、誕生、成長(zhǎng)、成熟、衰亡的生存過程指軟件孕育、誕生、成長(zhǎng)、成熟、衰亡的生存過程 GB 一一 8567 中將軟件生命周期分為中將軟件生命周期分為 7 個(gè)階段個(gè)階段:可行性研究和項(xiàng)目開發(fā)計(jì)劃;需求分析;慨要設(shè)計(jì);可行性研究和項(xiàng)目開發(fā)計(jì)劃;需求分析;慨要設(shè)計(jì);詳細(xì)設(shè)計(jì);編碼;測(cè)試;維護(hù)詳細(xì)設(shè)計(jì);編
50、碼;測(cè)試;維護(hù)其他分法,其他分法, 5 個(gè)階段個(gè)階段:需求定義、設(shè)計(jì)、編碼、測(cè)試及維護(hù);需求定義、設(shè)計(jì)、編碼、測(cè)試及維護(hù);需求定義階段包括可行性研究和項(xiàng)目開發(fā)計(jì)劃、需需求定義階段包括可行性研究和項(xiàng)目開發(fā)計(jì)劃、需求分析;求分析;設(shè)計(jì)階段包括慨要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。設(shè)計(jì)階段包括慨要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。Software Engineering63 本教材對(duì)軟件生命周期的劃分Software Engineering64 1 、軟件定義時(shí)期任務(wù):任務(wù):確定軟件開發(fā)工程必須完成的總目標(biāo);確定軟件開發(fā)工程必須完成的總目標(biāo);確定工程的可行性;確定工程的可行性;導(dǎo)出實(shí)現(xiàn)工程目標(biāo)應(yīng)該采用的策略及系統(tǒng)必導(dǎo)出實(shí)現(xiàn)工程目標(biāo)應(yīng)該
51、采用的策略及系統(tǒng)必須完成的功能;須完成的功能;估計(jì)完成該項(xiàng)工程需要的資源和成本,并且估計(jì)完成該項(xiàng)工程需要的資源和成本,并且制定工程進(jìn)度表。制定工程進(jìn)度表。通常分為通常分為問題定義、可行性研究和需求分析問題定義、可行性研究和需求分析三個(gè)階段。三個(gè)階段。Software Engineering65 軟件定義時(shí)期的三個(gè)階段 問題定義階段回答:?jiǎn)栴}定義階段回答: 回答:回答:“要解決的問題是什么?要解決的問題是什么?” 可行性研究階段可行性研究階段回答:回答:“對(duì)于上一個(gè)階段所確定的問題有行得通的對(duì)于上一個(gè)階段所確定的問題有行得通的解決辦法嗎?解決辦法嗎? 需求分析(需求分析(Requirement
52、Analysis)回答回答“為了解決這個(gè)問題,目標(biāo)系統(tǒng)必須做什么為了解決這個(gè)問題,目標(biāo)系統(tǒng)必須做什么 ? 用正式文檔準(zhǔn)確地記錄對(duì)目標(biāo)系統(tǒng)的需求,這份文用正式文檔準(zhǔn)確地記錄對(duì)目標(biāo)系統(tǒng)的需求,這份文檔通常稱為規(guī)格說明書(檔通常稱為規(guī)格說明書( specification )。)。Software Engineering66 2 、軟件開發(fā)時(shí)期具體設(shè)計(jì)和實(shí)現(xiàn)前一個(gè)時(shí)期定義的軟件,通常分為具體設(shè)計(jì)和實(shí)現(xiàn)前一個(gè)時(shí)期定義的軟件,通常分為四個(gè)階段:四個(gè)階段: 總體設(shè)計(jì)(概要設(shè)計(jì))總體設(shè)計(jì)(概要設(shè)計(jì))回答:回答:“概括地說概括地說,應(yīng)該怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)?,應(yīng)該怎樣實(shí)現(xiàn)目標(biāo)系統(tǒng)? ” 根據(jù)需求分析,根據(jù)需求分析
53、,設(shè)計(jì)軟件的設(shè)計(jì)軟件的體系結(jié)構(gòu);體系結(jié)構(gòu);定義結(jié)構(gòu)中定義結(jié)構(gòu)中的的組成模塊。組成模塊。 詳細(xì)設(shè)計(jì)(模塊設(shè)計(jì))詳細(xì)設(shè)計(jì)(模塊設(shè)計(jì))回答:回答:“應(yīng)該怎樣應(yīng)該怎樣具體地具體地實(shí)現(xiàn)這個(gè)系統(tǒng)呢?實(shí)現(xiàn)這個(gè)系統(tǒng)呢? ” 對(duì)每個(gè)模塊要完成的工作進(jìn)行具體的描述,為源程對(duì)每個(gè)模塊要完成的工作進(jìn)行具體的描述,為源程序編寫打下基礎(chǔ)。編寫設(shè)計(jì)說明書,提交評(píng)審。序編寫打下基礎(chǔ)。編寫設(shè)計(jì)說明書,提交評(píng)審。 二者統(tǒng)稱二者統(tǒng)稱系統(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì) Software Engineering67 軟件開發(fā)時(shí)期四個(gè)階段 程序編寫(程序編寫( Coding, Programming ) :把軟件設(shè)計(jì)轉(zhuǎn)換成計(jì)算機(jī)可以接受的程序代把軟件設(shè)計(jì)
54、轉(zhuǎn)換成計(jì)算機(jī)可以接受的程序代碼。碼。 軟件測(cè)試(軟件測(cè)試(Testing ) : 按規(guī)定的各項(xiàng)需求,按規(guī)定的各項(xiàng)需求,逐項(xiàng)進(jìn)行有效性測(cè)試,決定已開發(fā)的軟件是逐項(xiàng)進(jìn)行有效性測(cè)試,決定已開發(fā)的軟件是否合格,能否交付用戶使用,包括否合格,能否交付用戶使用,包括單元測(cè)試單元測(cè)試和組裝測(cè)試。和組裝測(cè)試。二者統(tǒng)稱二者統(tǒng)稱系統(tǒng)實(shí)現(xiàn)系統(tǒng)實(shí)現(xiàn)Software Engineering68 3、運(yùn)行維護(hù)(軟件維護(hù))時(shí)期( Running/Maintenance )使軟件持久的滿足用戶的需要。包括:使軟件持久的滿足用戶的需要。包括:l改正性維護(hù):改正性維護(hù):運(yùn)行中發(fā)現(xiàn)了軟件中的錯(cuò)誤運(yùn)行中發(fā)現(xiàn)了軟件中的錯(cuò)誤需要修正。需
55、要修正。l適應(yīng)性維護(hù):適應(yīng)性維護(hù):為了適應(yīng)變化了的軟件工作為了適應(yīng)變化了的軟件工作環(huán)境,需做適當(dāng)變更。環(huán)境,需做適當(dāng)變更。l完善性維護(hù):完善性維護(hù):當(dāng)用戶有新的要求時(shí),應(yīng)該當(dāng)用戶有新的要求時(shí),應(yīng)該及時(shí)改進(jìn)軟件以滿足用戶的要求。及時(shí)改進(jìn)軟件以滿足用戶的要求。l預(yù)防性維護(hù)預(yù)防性維護(hù): 即修改軟件為將來的維護(hù)活動(dòng)即修改軟件為將來的維護(hù)活動(dòng)預(yù)先做準(zhǔn)備。預(yù)先做準(zhǔn)備。Software Engineering69 幾個(gè)關(guān)干軟件生命周期階段的問題問題一:開發(fā)一個(gè)軟件大概需要多少資金、問題一:開發(fā)一個(gè)軟件大概需要多少資金、時(shí)間,將獲得什么效益一般是在哪個(gè)階段確時(shí)間,將獲得什么效益一般是在哪個(gè)階段確定?相對(duì)而言,
56、在哪個(gè)階段與用戶交流最多?定?相對(duì)而言,在哪個(gè)階段與用戶交流最多?問題二:系統(tǒng)分析員主要工作在哪個(gè)時(shí)期?問題二:系統(tǒng)分析員主要工作在哪個(gè)時(shí)期?程序員主要工作在哪個(gè)時(shí)期?程序員主要工作在哪個(gè)時(shí)期?問題三:軟件定義時(shí)期的三個(gè)階段,各自回問題三:軟件定義時(shí)期的三個(gè)階段,各自回答什么關(guān)鍵問題?答什么關(guān)鍵問題?問題四:軟件開發(fā)時(shí)期有幾個(gè)階段?各自回問題四:軟件開發(fā)時(shí)期有幾個(gè)階段?各自回答什么關(guān)鍵問題?答什么關(guān)鍵問題?Software Engineering70 問題五:軟件體系結(jié)構(gòu)最早是在哪個(gè)階段決問題五:軟件體系結(jié)構(gòu)最早是在哪個(gè)階段決定的?定的?問題六:詳細(xì)設(shè)計(jì)與程序編寫階段有什么樣問題六:詳細(xì)設(shè)計(jì)與
57、程序編寫階段有什么樣的密切聯(lián)系?的密切聯(lián)系?問題七:?jiǎn)栴}七:“軟件測(cè)試是為了驗(yàn)證系統(tǒng)的正確軟件測(cè)試是為了驗(yàn)證系統(tǒng)的正確性性”這句話對(duì)嗎?這句話對(duì)嗎?問題八:軟件維護(hù)有那幾種?各有什么功能?問題八:軟件維護(hù)有那幾種?各有什么功能?Software Engineering71 1.4 軟件過程( Software Process )1 、什么是軟件過程、什么是軟件過程 為了獲得高質(zhì)量軟件所需要完成的為了獲得高質(zhì)量軟件所需要完成的一系列一系列任務(wù)的框架任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的,它規(guī)定了完成各項(xiàng)任務(wù)的工作工作步驟步驟。 ISO 9000的定義:的定義:使用資源將輸入轉(zhuǎn)化為輸出的活動(dòng)所構(gòu)成的使
58、用資源將輸入轉(zhuǎn)化為輸出的活動(dòng)所構(gòu)成的系系統(tǒng)統(tǒng)。 “系統(tǒng)系統(tǒng)”是相互關(guān)聯(lián)或相互作用的一組要是相互關(guān)聯(lián)或相互作用的一組要素。素。過程過程是軟件工程三要素之一。是軟件工程三要素之一。通常用通常用軟件生命周期模型軟件生命周期模型來描述來描述。Software Engineering72 2 、什么是軟件生命周期模型又稱:軟件開發(fā)模型軟件過程模型軟件又稱:軟件開發(fā)模型軟件過程模型軟件工程范型。工程范型。指軟件項(xiàng)目從指軟件項(xiàng)目從需求定義需求定義直至直至軟件經(jīng)使用后廢軟件經(jīng)使用后廢棄棄為止,跨越整個(gè)生存周期的系統(tǒng)開發(fā)、運(yùn)為止,跨越整個(gè)生存周期的系統(tǒng)開發(fā)、運(yùn)作和維護(hù)所實(shí)施的全部過程、活動(dòng)和任務(wù)的作和維護(hù)所實(shí)施
59、的全部過程、活動(dòng)和任務(wù)的結(jié)構(gòu)框架結(jié)構(gòu)框架。常見的有:瀑布模型、演化模型、螺旋模型、常見的有:瀑布模型、演化模型、螺旋模型、噴泉模型、智能模型噴泉模型、智能模型Software Engineering73 1.4.1瀑布模型(waterfall model)19701970年年, ,由由W.RoyceW.Royce提出提出 一、瀑布模型的過程一、瀑布模型的過程 1 、傳統(tǒng)的瀑布模型、傳統(tǒng)的瀑布模型 從上一階段接受本階段從上一階段接受本階段的工作對(duì)象,作為輸?shù)墓ぷ鲗?duì)象,作為輸 入;入; 利用輸入,完成本階段活利用輸入,完成本階段活動(dòng)的內(nèi)容動(dòng)的內(nèi)容 本階段的工作成果作為輸出本階段的工作成果作為輸出傳
60、入下一階段。傳入下一階段。Software Engineering74 瀑布模型 實(shí)際的瀑布模型 需求分析需求分析驗(yàn)證驗(yàn)證規(guī)格說明規(guī)格說明驗(yàn)證驗(yàn)證設(shè)計(jì)設(shè)計(jì)驗(yàn)證驗(yàn)證編碼編碼測(cè)試測(cè)試綜合測(cè)試綜合測(cè)試維護(hù)維護(hù)變化的需求變化的需求驗(yàn)證驗(yàn)證 增加了一個(gè)評(píng)審活動(dòng),增加了一個(gè)評(píng)審活動(dòng),評(píng)審每個(gè)階段完成的活評(píng)審每個(gè)階段完成的活動(dòng),若得到確認(rèn),則進(jìn)動(dòng),若得到確認(rèn),則進(jìn)行下一階段的活動(dòng);否行下一階段的活動(dòng);否則返回前一階段,甚至則返回前一階段,甚至更前階段返工;更前階段返工;Software Engineering75 二、瀑布模型特點(diǎn)1. 階段間具有順序性和依賴性階段間具有順序性和依賴性2. 推遲實(shí)現(xiàn)的觀點(diǎn)推遲
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030太陽能自動(dòng)取款機(jī)行業(yè)產(chǎn)業(yè)運(yùn)行態(tài)勢(shì)及投資規(guī)劃深度研究報(bào)告
- 2025至2030兵團(tuán)玩具產(chǎn)業(yè)發(fā)展趨勢(shì)分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- 2025至2030中國(guó)移動(dòng)物流機(jī)器人行業(yè)發(fā)展趨勢(shì)分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- 2025至2030中國(guó)磷化鎂熏蒸行業(yè)發(fā)展趨勢(shì)分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- 2025至2030中國(guó)硬脂富馬酸鈉行業(yè)發(fā)展趨勢(shì)分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- 2025至2030中國(guó)石材提取器行業(yè)發(fā)展趨勢(shì)分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- 2025至2030中國(guó)皮化產(chǎn)品行業(yè)市場(chǎng)現(xiàn)狀分析及競(jìng)爭(zhēng)格局與投資發(fā)展報(bào)告
- 2025至2030中國(guó)男士全棉內(nèi)褲行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及商業(yè)模式與投融資戰(zhàn)略報(bào)告
- 2025至2030中國(guó)電影字幕行業(yè)發(fā)展趨勢(shì)分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- 特色養(yǎng)殖產(chǎn)業(yè)發(fā)展協(xié)議
- 學(xué)生實(shí)習(xí)家長(zhǎng)知情同意書(完美版)
- 《白夜行》名著導(dǎo)讀讀書分享
- 藍(lán)莓可行性研究報(bào)告
- 山東省汽車維修工時(shí)定額(T-SDAMTIA 0001-2023)
- 綜合布線設(shè)計(jì)與施工 第4版 課件全套 第1-13章 網(wǎng)絡(luò)綜合布線概述-網(wǎng)絡(luò)綜合布線實(shí)訓(xùn)
- 小學(xué)語文-“實(shí)用性閱讀與交流”學(xué)習(xí)任務(wù)群設(shè)計(jì)與實(shí)施例談
- 移動(dòng)破碎施工方案
- 國(guó)開(山東)地域文化(本)形成性考核1-3答案
- 厚皮甜瓜設(shè)施栽培技術(shù)規(guī)程
- 駐足思考瞬間整理思路并有力表達(dá)完整版
- 成都市青羊區(qū)2023年數(shù)學(xué)四下期末教學(xué)質(zhì)量檢測(cè)試題含解析
評(píng)論
0/150
提交評(píng)論