軟件工程講義_第1頁
軟件工程講義_第2頁
軟件工程講義_第3頁
軟件工程講義_第4頁
軟件工程講義_第5頁
已閱讀5頁,還剩17頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程概述一、軟件工程學(xué)科介紹二、學(xué)習(xí)目標(biāo)三、部分參考資料四、課程特點和學(xué)習(xí)的注意事項五、教材簡介六、課程考核方式一、軟件工程學(xué)科介紹軟件程學(xué)科發(fā)展歷史三個階段:概念提出、學(xué)科雛形、學(xué)科確立第一階段:概念提出 1968 年 NATO 會議(北大西洋公約組織的計算機(jī)科學(xué)家的國際會議)提出“軟件工程”概念。當(dāng)時對“軟件工程”代表性定義:為了經(jīng)濟(jì)地獲得在真實機(jī)器上可靠工作的軟件而制定和使用的合理工程原則和方法。 1972 年 IEEE 學(xué)會的計算機(jī)分會 IEEE 一 CS 第一次出版了“軟件工程學(xué)報”第二階段:學(xué)科雛形上世紀(jì) 70 年代末,美國將軟件工程教程列入研究生教育計劃。 1980 年代末和 1

2、990 年代初,軟件工程教育得到卡內(nèi)基一梅隆大學(xué)軟件工程研究所( CMU / SEI )的支持。 1991 年,“軟件工程”被 ACM (美國計算機(jī)協(xié)會)和 IEEE / CS 列為計算學(xué)科的九個知識領(lǐng)域之一。 1993 年, IEEE 一 CS 和ACM 為了把軟件工程建設(shè)成為一個專業(yè),建立了 IEEE 一 CS / ACM 聯(lián)合指導(dǎo)委員會。第三階段:學(xué)科確立2004 年 8 月,IEEE 一 CS 和 ACM 給出:軟件工程知識體( SWEBOK , Software Engineering Body of Knowledge ) 軟件工程教育知識體( SEEK ) 最終版,標(biāo)志著軟件工程

3、學(xué)科在世界范圍正式確 立。軟件工程、計算機(jī)科學(xué)、計算機(jī)工程、信息系統(tǒng)、信息技術(shù)并列成為計算學(xué)科下的獨立學(xué)科。軟件工程知識體( SWEBOK ) :全面描述了軟件工程實踐所需的知識。SWEBOK (軟件工程知識體 10 個領(lǐng)域l 軟件需求l 軟件設(shè)計l 軟件構(gòu)造l 軟件測試 l 軟件維護(hù)l 軟件配置管理l 軟件工程管理l 軟件工程過程l 軟件工程工具和方法l 軟件質(zhì)量SWEBOK詳細(xì)結(jié)構(gòu)(1)軟件工程與其他學(xué)科的關(guān)系1 、軟件工程是計算學(xué)科 9 個領(lǐng)域之一 算法和數(shù)據(jù)結(jié)構(gòu) 計算機(jī)系統(tǒng)結(jié)構(gòu) 人工智能和機(jī)器人學(xué) 數(shù)據(jù)庫和信息檢索 人一機(jī)交互 操作系統(tǒng) 程序設(shè)計語言 軟件方法學(xué)和軟件工程 數(shù)字和符號計

4、算 計算學(xué)科中12個重復(fù)出現(xiàn)的基本概念l 綁定l 概念和形式模型l 效率l 抽象層次l 按時間排序l 安全性l 大問題的復(fù)雜性l 一致性和完備性l 演化l 按空間排序l 重用l 折衷與決策2 、 8 個相關(guān)學(xué)科知識域l 計算機(jī)工程l 計算機(jī)科學(xué)l 數(shù)學(xué)l 管理學(xué)l 項目管理l 質(zhì)量管理l 系統(tǒng)工程學(xué)l 軟件人類工程學(xué) 其中:計算機(jī)科學(xué)、數(shù)學(xué)是基礎(chǔ)工程學(xué)科、管理學(xué)科也非常重要軟件程是一門什么樣的學(xué)科? 它是指導(dǎo)計算機(jī)軟件開發(fā)與維護(hù)的一門工程學(xué)科。工程:將科學(xué)及數(shù)學(xué)原理運用于實際用途的應(yīng)用手段,如:設(shè)計、制造、機(jī)器操縱、構(gòu)架等。典型的傳統(tǒng)工程:建筑工程、機(jī)械工程、電力工程等。 概括的說,軟件工程即

5、用工程、科學(xué)和數(shù)學(xué)的原則和方法研制、維護(hù)計算機(jī)軟件的有關(guān)技術(shù)及方法,其優(yōu)點是以較小的代價開發(fā)高質(zhì)量的軟件并有效地維護(hù)它。 二、學(xué)習(xí)目標(biāo)(1) 掌握軟件工程的基礎(chǔ)知識和理論,對軟件工程學(xué)有一個全貌的了解; 熟悉軟件項目開發(fā)和維護(hù)的一般過程; 熟練掌握軟件需求分析、設(shè)計、編碼和測試等階段的主要思想和技術(shù)方法;二、學(xué)習(xí)目標(biāo)(2) 通過學(xué)習(xí),特別是通過課程設(shè)計,真正運用和深刻體會軟件工程的思想方法,轉(zhuǎn)變對軟件開發(fā)的認(rèn)識:從個人的單純編程活動轉(zhuǎn)移到進(jìn)行系統(tǒng)分析與設(shè)計方面上來轉(zhuǎn)變思維定式:程序員 系統(tǒng)工程師(系統(tǒng)分析員)三、部分參考資料 軟件工程理論與實踐 許家冶等編著,高等教育出版社, 2005 年 軟

6、件工程 (第二版),齊治昌等,高等教育出版社, 2004 年 面向?qū)ο蟮南到y(tǒng)分析 ,楊芙清等編著,清華大學(xué)出版社, 2001 年 UML 用戶指南 G Booch 等著,邵維忠等譯,機(jī)械工業(yè)出版社 2002 年四、課程特點和學(xué)習(xí)的注肯事項1 、知易行難 要將理論知識與實踐運用結(jié)合,進(jìn)行對照,以加深理解和掌握。 2 、內(nèi)容紛雜 軟件工程涉及計算機(jī)科學(xué)、數(shù)學(xué)、工程科學(xué)和管理科學(xué)等多個領(lǐng)域。其中: 計算機(jī)科學(xué)和數(shù)學(xué)用于構(gòu)造模型與算法; 工程科學(xué)用于制定規(guī)范、設(shè)計范型、評估成本及確定權(quán)衡 管理科學(xué)用于計劃、資源、質(zhì)量和成本的管理。五、教材總目錄第 1 章軟件工程學(xué)概述第 2 章可行性研究第 3 章需求

7、分析第 4 章形式化說明技術(shù)第 5 章總體設(shè)計第 6 章詳細(xì)設(shè)計第 7 章實現(xiàn)第 8 章維護(hù)第9 章面向?qū)ο蠓椒▽W(xué)引論第 10 章面向?qū)ο蠓治龅?11 章面向?qū)ο笤O(shè)計第 12 章面向?qū)ο髮崿F(xiàn)第 13 章軟件項目管理附錄 AC + 類庫管理系統(tǒng)分析與設(shè)計附錄 B 漢字行編輯程序設(shè)計課程內(nèi)容學(xué)時安排章節(jié) 課程內(nèi)容 學(xué)時l 軟件工程學(xué)概述 4 2 可行性研究 4 3 需求分析 4 5 總體設(shè)計 6 6 詳細(xì)設(shè)計 4 7 實現(xiàn) 8 章節(jié) 課程內(nèi)容 學(xué)時8 軟件維護(hù) 2 9 面向?qū)ο蠓椒▽W(xué)引論 4 10 面向?qū)ο蠓治?2 11 面向?qū)ο笤O(shè)計 2 12 面向?qū)ο髮崿F(xiàn) 213 軟件項目管理 6 14 總結(jié)

8、2六、課程考核方式分?jǐn)?shù)組成:平時成績( 10 % ) :以理論課課堂表現(xiàn)為主。作業(yè)( 30 % ) :書面作業(yè)期末考試(60 % ) :第 1 章 軟件工程學(xué)概述學(xué)習(xí)重點 1、軟件危機(jī)、軟件工程產(chǎn)生的原因 2、軟件工程過程和軟件生命周期 3、軟件生命周期模型掌握幾個基本概念 軟件危機(jī) 軟件工程 軟件過程 軟件生命周期 軟件生命周期模型 軟件危機(jī)與軟件工程學(xué)軟件工程學(xué)的產(chǎn)生要從“軟件危機(jī)”說起 1968 年,第一屆 NAT0 (北大西洋公約組織的計算機(jī)科學(xué)家的國際會議) 會議,“ 軟件工程” 的慨念作為一種有效解決“ 軟件危機(jī)” 的途徑被正式提出。 l 什么是軟件危機(jī)? l 軟件危機(jī)有什么典型表

9、現(xiàn)? l 為什么會產(chǎn)生軟件危機(jī)? l 怎么解決軟件危機(jī)? 1 軟件危機(jī) 1 . 1 . 1 軟件危機(jī)介紹什么是軟件危機(jī)? 軟件危機(jī)指在計算機(jī)軟件的開發(fā)和維護(hù)過程中,所遇到的一系列嚴(yán)重問題。軟件危機(jī)主要包括的問題(兩方面) : 如何開發(fā)軟件 如何維護(hù)軟件軟件危機(jī)有什么典型表現(xiàn)?(1)開發(fā)費用和進(jìn)度難以估算和控制,大大超過預(yù)期的資金和規(guī)定日期;軟件需求分析不夠充分,用戶不滿意“已經(jīng)完成”的軟件系統(tǒng)。軟件質(zhì)量難于保證;軟件維護(hù)困難; 難以改正程序中的錯誤; 難以根據(jù)用戶的需要在原有程序中增加一些新的功能。 軟件危機(jī)有什么典型表現(xiàn)?通常沒有保留適當(dāng)?shù)奈臋n資料。文檔的作用: 軟件開發(fā)管理人員:用于管理和

10、評價軟件開發(fā)工程的進(jìn)展?fàn)顩r 軟件開發(fā)人員:用于開發(fā)人員對各個階段的工作都進(jìn)行周密思考、全盤權(quán)衡、從而減少返工。并且可在開發(fā)早期發(fā)現(xiàn)錯誤和不一致性,便于及時加以糾正 軟件維護(hù)人員:軟件維護(hù)的依據(jù) 開發(fā)成本逐年上升,軟件開發(fā)生產(chǎn)率提高的速度,遠(yuǎn)遠(yuǎn)跟不上計算機(jī)應(yīng)用迅速普及深入的趨勢。幾個軟件危機(jī)的著名案例 1966年,IBM 360 機(jī)的操作系統(tǒng)。花費 5000 人一年的工作量,寫了近 1 萬行代碼。錯誤百出,每次的新版本就是從前一版本中找 1 000個程序錯誤而修正的結(jié)果。 1963 年,美國用于控制火星探測器的計算機(jī)軟件中的一個 “ , ”號被誤寫為“.”,而致使飛往火星的探測器發(fā)生爆炸,造成高

11、達(dá)數(shù)億美元的損失。 美國丹佛新國際機(jī)場自動化行李系統(tǒng)軟件。投資 1. 93 億美元,計劃 1993 年萬圣節(jié)啟用。但開發(fā)人員一直為系統(tǒng)錯誤困擾,屢次推后啟用時間,直到 1994 年 6 月,機(jī)場計劃者承認(rèn)無法預(yù)測何時能啟用。 1996 年,歐洲阿里亞納 5 型運載火箭墜毀,造成 5 億美元損失。原因是控制軟件中的一個錯誤。1 . 1 . 2 產(chǎn)生軟件危機(jī)的原因主要兩個原因: 1 、與軟件本身的特點有關(guān) 2 、與軟件開發(fā)與維護(hù)的方法不正確有關(guān)。一 、軟件本身的特點 ( 1)軟件與硬件、一般程序存在很多不同之處。 1 、軟件與硬件不同抽象性。軟件生產(chǎn)沒有明顯的制造過程,難以衡量開發(fā)進(jìn)展,也難以控制

12、軟件質(zhì)量。問題的隱蔽性。沒有硬件的磨損、老化問題,但存在開發(fā)早期在分析、設(shè)計階段的錯誤,修改難度較大。失效率蜘線改正一個問題需付出的代價2 、軟件與一般程序不同(1) 軟件遠(yuǎn)比一般程序規(guī)模龐大,復(fù)雜性高 軟件所反映的實際問題的復(fù)雜性 程序邏輯結(jié)構(gòu)的復(fù)雜性。 例 1 : Windows95 , 1000 萬行代碼; Windows2000 , 5000 萬行代碼 例 2 : Exchange 2000 和 windows 2000 開發(fā)人員 軟件的規(guī)模軟件產(chǎn)品的特殊性和人類智力的局限性,導(dǎo)致人們無力處理“復(fù)雜問題”。2 、軟件與一般程序不同( 2 ) 大型軟件開發(fā)既有技術(shù)問題,還有社會問題。 社

13、會因素:組織機(jī)構(gòu)、體制、管理方式、觀念、人的心理素等。 開發(fā)團(tuán)隊成員分工合作 技術(shù)與管理的矛盾 軟件開發(fā)人員對軟件應(yīng)用的領(lǐng)域知識的了解 二、軟件開發(fā)維護(hù)方法中存在的問題(1) 對用戶需求的獲取不正確 用戶的原因 分析人員的原因 對分析人員的要求:溝通能力、歸納總結(jié)能力、經(jīng)驗 越是早期產(chǎn)生的錯誤,付出的代價越大。 圖:不同時期引入同一變動的代價 二、軟件開發(fā)維護(hù)方法中存在的問題( 2 ) 軟件開發(fā)就是編寫程序。 一個完整的軟件產(chǎn)品由一整套完整的配置組成,程序只是其中的一個組成部分。 軟件開發(fā)過程包括多個階段,每個階段的產(chǎn)品都是最終的完整的軟件產(chǎn)品的一部分。 軟件開發(fā)只要依靠個別編程高手就能完成。

14、 輕視軟件維護(hù) 軟件維護(hù)約占軟件費用 55 一 75 % ,包括修改軟件運行的錯誤;對軟件進(jìn)行改進(jìn)和功能擴(kuò)充。軟件維護(hù)在軟件費用的比例三、其他產(chǎn)生軟件危機(jī)的原因軟件開發(fā)尚未完全擺脫手工藝的開發(fā)方式。 軟件成本相當(dāng)昂貴,主要依靠大量復(fù)雜的、高強度的腦力勞動 軟件的開發(fā)和運行常常受到計算機(jī)系統(tǒng)的限制,對計算機(jī)系統(tǒng)有著不同程度的依賴性。 軟件的“ 可移植性” 就是指的軟件對硬件的依賴程度。好的可移植性依賴少。 1 . 1 . 3 消除軟件危機(jī)的途徑1 、徹底消除“軟件就是程序”的錯誤觀念。2 、充分認(rèn)識到軟件開發(fā)是一種組織良好、管理嚴(yán)密、各類人員協(xié)同配合、共同完成的工程項目,不是個人獨立的勞動。3

15、、推廣和使用在實踐中總結(jié)出來的軟件開發(fā)的成功技術(shù)和方法。4 、開發(fā)和使用更好的軟件工具總結(jié):“軟件工程”的方法理論是擺脫軟件危機(jī)的一個主要出路。 計算機(jī)和軟件科學(xué)家為解決軟件危機(jī)問題,嘗試將在其它領(lǐng)域中行之有效的工程學(xué)知識運用到軟件開發(fā)工作中來,經(jīng)過不斷實踐和總結(jié),最后得出一個結(jié)論;按工程化的原則和方法組織軟件開發(fā)工作是有效的,是擺脫軟件危機(jī)的一個主要出路。思考題( 1 )1 )只要是編程高手,即使是不懂軟件工程,也能編出很好的軟件。 軟件是服務(wù)于大眾,卻是由個性化的開發(fā)人員完成的。如果個性化太強,程序就無法閱讀,其他人員也就無法維護(hù)。 例:國內(nèi) 80 年代涌現(xiàn)出來的眾多漢字操作系統(tǒng)均是由編程

16、高手完成的。 思考題( 2 )2 )只要擁有一套講述如何開發(fā)軟件的書籍,并了解了書中的標(biāo)準(zhǔn)與示例,就可以解決軟件開發(fā)中遇到的任何問題。 軟件是用來解決現(xiàn)實問題的,現(xiàn)實問題的特殊性對規(guī)范提出了挑戰(zhàn)(要進(jìn)行適應(yīng))。 軟件技術(shù)是發(fā)展的,沒有祖?zhèn)髅胤健?就像擁有食譜并不能成為名廚一樣,軟件開發(fā)需要實踐。 思考題( 3 )3 )只要擁有最好的開發(fā)工具、最好的計算機(jī),一定能做出優(yōu)秀的軟件。 硬件環(huán)境只是必要條件,人才是充分條件,軟件是人在一定的約束條件下創(chuàng)造出來的。因人因事而異。 思考題 (4)4 )軟件開發(fā)時,如果進(jìn)度慢,落后于計劃,可以增加更多的程序員來解決。 增加人力可以減少開發(fā)時間嗎? 新手!任務(wù)

17、的重新劃分!溝通更加復(fù)雜! 必須依靠科學(xué)地計劃來解決這樣的問題。 思考題(5)5 )爭議:如果軟件運行較慢,是換一臺更快的計算機(jī),還是設(shè)計一種更快的算法?軟件的性能問題;應(yīng)用級別算法的合理性;系統(tǒng)級別操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)、系統(tǒng)軟件等;硬件級別機(jī)器性能1 . 2 軟件工程1 . 2 . 1 軟件工程介紹一、“軟件工程”的典型定義 1 )1968 年,第一屆 NATO 會議為了經(jīng)濟(jì)地獲得可靠的且能在實際機(jī)器上有效地運行的軟件,而建立和使用完善的工程原理。 2 ) IEEE/CS(電氣電子工程師協(xié)會計算機(jī)科學(xué)分會) 1993 年,將系統(tǒng)化的、規(guī)范的、可度量的方法應(yīng)用于軟件的開發(fā)、運行和維護(hù)的過程,即

18、將工程化應(yīng)用于軟件中。 對 中提到的各種方法的研究3 ) 其他學(xué)者的定義Boehm :運用現(xiàn)代科學(xué)技術(shù)知識來設(shè)計并構(gòu)造計算機(jī)程序及為開發(fā)、運行和維護(hù)這些程序所必需的相關(guān)文件資料。Fritz Bauer: 建立并使用完善的工程化原則,以較經(jīng)濟(jì)的手段獲得能在實際機(jī)器上有效運行的可靠軟件的一系列方法所有定義都強調(diào)在軟件開發(fā)過程中,應(yīng)用工程化原則的重要性幾個關(guān)于軟件工程本質(zhì)特性和基本原理的問題問題一: 軟件工程適用范圍? 問題二:軟件工程如何控制系統(tǒng)開發(fā)的復(fù)雜性的?問題三:以你的經(jīng)驗,舉例說明一個成熟的軟件通常采用什么方法來適應(yīng)現(xiàn)實世界的變化的?問題四:假設(shè)某軟件公司,能為同一個用戶開發(fā)兩個不同層次的

19、軟件:一個層次的軟件功能非常強大,在滿足用戶所有需求的基礎(chǔ)上,還能提供大大超過用戶需求的其他更多更強的功能;另一個層次的軟件僅僅能滿足用戶需求,但沒有提供其他額外的功能。請問如果你是項目負(fù)責(zé)人,你會選擇為客戶開發(fā)那個層次的軟件?問題五:協(xié)同工作有什么重要性?:怎樣理解“在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品”這句話?問題六:某軟件開發(fā),由于時間和資金都非常緊迫,在需求分析人員非常認(rèn)真、仔細(xì)地做完需求分析之后,說:我們可以保證我們的需求分析正確性,不用花時間檢查了,設(shè)計人員可以直接拿著這份分析報告,馬上開始設(shè)計。如果你是項目負(fù)責(zé)人,你會如何決定?為什么?問題七:

20、在需求分析完成并獲得了用戶的肯定,也通過了評審,進(jìn)入軟件設(shè)計階段之后,用戶的想法有了改變,提出了一個新的要求,此時如果你是項目負(fù)責(zé)人,應(yīng)該怎樣做?二、軟件工程本質(zhì)特性(2)1 )軟件工程關(guān)注于大型程序的構(gòu)造。2 )軟件工程的中心課題是控制復(fù)雜性 主要考慮:如何分解和集成 為什么要分解: G .Miller, “7士 2 ” 原則 3 )軟件經(jīng)常變化 4 )開發(fā)軟件的效率非常重要 5 )和諧地合作是開發(fā)軟件的關(guān)鍵 6 )軟件必須有效地支持它的用戶 7 )在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品擴(kuò)展定義:軟件=知識程序+數(shù)據(jù)+文檔1 . 2 . 2 軟件工程的基本原

21、理B.W.Boehm, 1983 年提出: 1 )用分階段的生命周期計劃嚴(yán)格管理 2 )堅持進(jìn)行階段評審 3 )實行嚴(yán)格的產(chǎn)品控制基線 基線(baseline )控制 4 )采用現(xiàn)代程序設(shè)計技術(shù) 5 )結(jié)果應(yīng)能清楚地審查 6 )開發(fā)小組的人員應(yīng)該少而精 7 )承認(rèn)不斷改進(jìn)軟件工程實踐的必要性 1 . 2 . 3 軟件工程方法學(xué)l 軟件工程包括“管理”和“技術(shù)”兩方面內(nèi)容:管理 對人、財、物的合理使用和配置;技術(shù) 指軟件開發(fā)中采用的方法、工具和過程。l 什么是軟件工程方法學(xué)?通常把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué)(methodology),也稱為范型(paradigm)

22、。一、軟件工程方法學(xué)三要素:工具、方法和過程要素一:軟件工程過程規(guī)定了完成各項任務(wù)的工作步驟。要素二:軟件工程方法完成軟件開發(fā)的各項任務(wù)的技術(shù)方法,為軟件開發(fā)提供了“如何做”的技術(shù)。 如項目計劃與估算、軟件系統(tǒng)需求分析、數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)總體結(jié)構(gòu)的設(shè)計、算法過程的設(shè)計、編碼、測試以及維護(hù)等。要素三:軟件工程工具計算機(jī)輔助軟件工程 CASE ( computer Aided sottware Engineering ) ,為軟件工程方法提供自動或半自動的軟件支撐環(huán)境。二、軟件工程方法學(xué)思想兩種:1、 傳統(tǒng)方法學(xué)(生命周期方法學(xué)或結(jié)構(gòu)化范型)2、面向?qū)ο蠓椒?.傳統(tǒng)方法學(xué)(生命周期方法學(xué)或結(jié)構(gòu)化范型)

23、l 采用結(jié)構(gòu)化技術(shù)(結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計和結(jié)構(gòu)化實現(xiàn))來完成軟件開發(fā)的各項任務(wù);l 把軟件生命周期劃分為若干個階段,按順序完成每個階段的任務(wù);l 每個階段開始和結(jié)束都有嚴(yán)格的標(biāo)準(zhǔn),對任何兩個相鄰的階段而言,前一個階段的結(jié)束標(biāo)準(zhǔn)就是后一階段的開始標(biāo)準(zhǔn);l 每一個階段結(jié)束之前都必須進(jìn)行正式嚴(yán)格的技術(shù)審查和管理復(fù)審傳統(tǒng)方法學(xué)的優(yōu)點:l 分解任務(wù),分工合作,降低整個軟件開發(fā)工程的困難;l 采用科學(xué)的管理技術(shù)和良好的技術(shù)方法對每個階段成果都進(jìn)行嚴(yán)格的審查。保證了軟件的質(zhì)量。傳統(tǒng)方法學(xué)的缺點:把數(shù)據(jù)和操作人為地分離成兩個獨立的部分,增加了軟件開發(fā)與維護(hù)的難度。2 、面向?qū)ο蠓椒▽W(xué)( OO,Object-

24、 oriented ) 模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過程盡可能接近人類認(rèn)識世界解決問題的方法與過程,從而使描述問題的問題空間(也稱為問題域)與實現(xiàn)解法的解空間(也稱為求解域)在結(jié)構(gòu)上盡可能一致。面向?qū)ο蠓椒▽W(xué) 4 要點l 把對象( object )作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構(gòu)件。l 把所有對象都劃分成類(class )。l 按照父類(或稱為基類)與子類(或稱為派生類)的關(guān)系,把若干個相關(guān)類組成一個層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級)。l 對象彼此間僅能通過發(fā)送消息互相聯(lián)系。二者區(qū)別l 傳統(tǒng)方法學(xué):強調(diào)自頂向下順序地完成軟件開發(fā)的各階段任務(wù)。l 面向?qū)ο蠓椒ǎ菏侵鲃拥?/p>

25、多次反復(fù)迭代的演化過程3 軟件生命周期一、什么是軟件生命周期( life cycle)指軟件孕育、誕生、成長、成熟、衰亡的生存過程 GB 一 8567 中將軟件生命周期分為 7 個階段:可行性研究和項目開發(fā)計劃;需求分析;慨要設(shè)計;詳細(xì)設(shè)計;編碼;測試;維護(hù)其他分法, 5 個階段:需求定義、設(shè)計、編碼、測試及維護(hù);需求定義階段包括可行性研究和項目開發(fā)計劃、需求分析;設(shè)計階段包括慨要設(shè)計和詳細(xì)設(shè)計。本教材對軟件生命周期的劃分1 、軟件定義時期任務(wù):確定軟件開發(fā)工程必須完成的總目標(biāo);確定工程的可行性;導(dǎo)出實現(xiàn)工程目標(biāo)應(yīng)該采用的策略及系統(tǒng)必須完成的功能;估計完成該項工程需要的資源和成本,并且制定工程

26、進(jìn)度表。通常分為問題定義、可行性研究和需求分析三個階段。軟件定義時期的三個階段 問題定義階段回答: 回答:“要解決的問題是什么?” 可行性研究階段回答:“對于上一個階段所確定的問題有行得通的解決辦法嗎? 需求分析(Requirement Analysis)回答“為了解決這個問題,目標(biāo)系統(tǒng)必須做什么 ? 用正式文檔準(zhǔn)確地記錄對目標(biāo)系統(tǒng)的需求,這份文檔通常稱為規(guī)格說明書( specification )。2 、軟件開發(fā)時期具體設(shè)計和實現(xiàn)前一個時期定義的軟件,通常分為四個階段: 總體設(shè)計(概要設(shè)計)回答:“概括地說,應(yīng)該怎樣實現(xiàn)目標(biāo)系統(tǒng)? ” 根據(jù)需求分析,設(shè)計軟件的體系結(jié)構(gòu);定義結(jié)構(gòu)中的組成模塊。

27、 詳細(xì)設(shè)計(模塊設(shè)計)回答:“應(yīng)該怎樣具體地實現(xiàn)這個系統(tǒng)呢? ” 對每個模塊要完成的工作進(jìn)行具體的描述,為源程序編寫打下基礎(chǔ)。編寫設(shè)計說明書,提交評審。 二者統(tǒng)稱系統(tǒng)設(shè)計。 程序編寫( Coding, Programming ) :把軟件設(shè)計轉(zhuǎn)換成計算機(jī)可以接受的程序代碼。 軟件測試(Testing ) : 按規(guī)定的各項需求,逐項進(jìn)行有效性測試,決定已開發(fā)的軟件是否合格,能否交付用戶使用,包括單元測試和組裝測試。二者統(tǒng)稱系統(tǒng)實現(xiàn)3、運行維護(hù)(軟件維護(hù))時期( Running/Maintenance )使軟件持久的滿足用戶的需要。包括:l 改正性維護(hù):運行中發(fā)現(xiàn)了軟件中的錯誤需要修正。l 適應(yīng)性

28、維護(hù):為了適應(yīng)變化了的軟件工作環(huán)境,需做適當(dāng)變更。l 完善性維護(hù):當(dāng)用戶有新的要求時,應(yīng)該及時改進(jìn)軟件以滿足用戶的要求。l 預(yù)防性維護(hù): 即修改軟件為將來的維護(hù)活動預(yù)先做準(zhǔn)備。幾個關(guān)干軟件生命周期階段的問題問題一:開發(fā)一個軟件大概需要多少資金、時間,將獲得什么效益一般是在哪個階段確定?相對而言,在哪個階段與用戶交流最多?問題二:系統(tǒng)分析員主要工作在哪個時期?程序員主要工作在哪個時期?問題三:軟件定義時期的三個階段,各自回答什么關(guān)鍵問題?問題四:軟件開發(fā)時期有幾個階段?各自回答什么關(guān)鍵問題?問題五:軟件體系結(jié)構(gòu)最早是在哪個階段決定的?問題六:詳細(xì)設(shè)計與程序編寫階段有什么樣的密切聯(lián)系?問題七:“軟

29、件測試是為了驗證系統(tǒng)的正確性”這句話對嗎?問題八:軟件維護(hù)有那幾種?各有什么功能?1.4 軟件過程( Software Process )1 、什么是軟件過程 為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項任務(wù)的工作步驟。 ISO 9000的定義: 使用資源將輸入轉(zhuǎn)化為輸出的活動所構(gòu)成的系統(tǒng) 。 “系統(tǒng)”是相互關(guān)聯(lián)或相互作用的一組要素。 過程是軟件工程三要素之一。 通常用軟件生命周期模型 來描述。2 、什么是軟件生命周期模型又稱:軟件開發(fā)模型軟件過程模型軟件工程范型。指軟件項目從需求定義直至軟件經(jīng)使用后廢棄為止,跨越整個生存周期的系統(tǒng)開發(fā)、運作和維護(hù)所實施的全部過程、活動和任

30、務(wù)的結(jié)構(gòu)框架。常見的有:瀑布模型、演化模型、螺旋模型、噴泉模型、智能模型 瀑布模型(waterfall model)1970年,由W.Royce提出 一、瀑布模型的過程 1 、傳統(tǒng)的瀑布模型 從上一階段接受本階段的工作對象,作為輸入; 利用輸入,完成本階段活動的內(nèi)容 本階段的工作成果作為輸出傳入下一階段。 2 瀑布模型 實際的瀑布模型 增加了一個評審活動,評審每個階段完成的活動,若得到確認(rèn),則進(jìn)行下一階段的活動;否則返回前一階段,甚至更前階段返工;二、瀑布模型特點F 階段間具有順序性和依賴性F 推遲實現(xiàn)的觀點F 質(zhì)量保證的觀點三、瀑布模型優(yōu)缺點優(yōu)點:l 可強迫開發(fā)人員采用規(guī)范的方法;l 嚴(yán)格地規(guī)定了每個階段必須提交的文檔;l 要求每個階段的所有產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細(xì)驗證;缺點: 無法解決軟件需求不明確或不準(zhǔn)確的問題;可能導(dǎo)致最終開發(fā)的產(chǎn)品不能真正滿足用戶需要。 瀑布模型比較適合開發(fā)需求明確的軟件。 1 . 4 . 2 快速原型模型1 、什么是“原型” ? 原型是快速實現(xiàn)和運行的早期版本,反映最終系統(tǒng)部分重要特性。 常見的原型實例:人機(jī)界面;系統(tǒng)主要功能。 優(yōu)點: 1 、通常能反映用戶真實需求; 2 、軟件產(chǎn)品的開

溫馨提示

  • 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

提交評論