版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
軟件工程(ruǎnjiànɡōnɡchénɡ)主講:蔡勇Email:jkx_cy@163.com課件下載:1用戶名:student-cy教材:軟件工程(ruǎnjiànɡōnɡchénɡ)導論(第五版)清華大學出版社作者:張海藩共九十頁課程(kèchéng)概述一、軟件工程(ruǎnjiànɡōnɡchénɡ)學科介紹二、學習目標三、部分參考資料四、課程特點和學習的注意事項五、教材簡介六、課程考核方式2共九十頁一、軟件工程(ruǎnjiànɡōnɡchénɡ)學科介紹軟件程學科發(fā)展歷史三個階段:概念提出、學科雛形、學科確立第一階段:概念提出1968年NATO會議(北大西洋公約組織的計算機科學家的國際會議)提出“軟件工程”概念。當時(dàngshí)對“軟件工程”代表性定義:為了經(jīng)濟地獲得在真實機器上可靠工作的軟件而制定和使用的合理工程原則和方法。1972年IEEE學會的計算機分會IEEE一CS第一次出版了“軟件工程學報”3共九十頁第二階段:學科(xuékē)雛形上世紀70年代末,美國將軟件工程教程列入研究生教育計劃(jìhuà)。1980年代末和1990年代初,軟件工程教育得到卡內(nèi)基一梅隆大學軟件工程研究所(CMU/SEI)的支持。1991年,“軟件工程”被ACM(美國計算機協(xié)會)和IEEE/CS列為計算學科的九個知識領域之一。1993年,IEEE一CS和ACM為了把軟件工程建設成為一個專業(yè),建立了IEEE一CS/ACM聯(lián)合指導委員會。4共九十頁第三階段:學科(xuékē)確立2004年8月,IEEE一CS和ACM給出:軟件工程知識體(SWEBOK,SoftwareEngineeringBodyofKnowledge)軟件工程教育知識體(SEEK)最終版,標志著軟件工程學科在世界范圍正式(zhèngshì)確立。軟件工程、計算機科學、計算機工程、信息系統(tǒng)、信息技術并列成為計算學科下的獨立學科。軟件工程知識體(SWEBOK):全面描述了軟件工程實踐所需的知識。5共九十頁SWEBOK(軟件工程知識(zhīshi)體》10個領域軟件需求軟件設計軟件構造軟件測試軟件維護軟件配置管理軟件工程管理軟件工程過程(guòchéng)軟件工程工具和方法軟件質(zhì)量參考資料:[1]白征.SWEBOK:軟件工程知識體,計算機科學,2001年07期[2萬江平.軟件工程知識體系指南綜述,計算機應用研究,2006年10期6共九十頁SWEBOK詳細(xiángxì)結(jié)構(1)7共九十頁8共九十頁軟件工程與其他(qítā)學科的關系1、軟件工程是計算學科9個領域之一.算法和數(shù)據(jù)結(jié)構(shùjùjiéɡòu)計算機系統(tǒng)結(jié)構人工智能和機器人學數(shù)據(jù)庫和信息檢索人一機交互操作系統(tǒng)程序設計語言軟件方法學和軟件工程數(shù)字和符號計算9共九十頁計算學科(xuékē)中12個重復出現(xiàn)的基本概念綁定.概念和形式模型(móxíng)效率抽象層次按時間排序安全性大問題的復雜性一致性和完備性演化按空間排序重用折衷與決策軟件工程是計算學科的分支,這12個概念同樣將貫穿軟件工程學科,是學科的精髓。10共九十頁2、8個相關(xiāngguān)學科知識域計算機工程計算機科學數(shù)學管理學項目管理質(zhì)量管理系統(tǒng)工程學軟件人類(rénlèi)工程學其中:計算機科學、數(shù)學是基礎工程學科、管理學科也非常重要11共九十頁軟件程是一門(yīmén)什么樣的學科?是指導計算機軟件開發(fā)與維護的一門工程學科。工程:將科學及數(shù)學原理運用于實際用途的應用手段,如:設計、制造、機器操縱、構架等。典型的傳統(tǒng)(chuántǒng)工程:建筑工程、機械工程、電力工程等。概括的說,軟件工程即用工程、科學和數(shù)學的原則和方法研制、維護計算機軟件的有關技術及方法,其優(yōu)點是以較小的代價開發(fā)高質(zhì)量的軟件并有效地維護它。12共九十頁二、學習(xuéxí)目標(1)掌握軟件工程的基礎知識和理論,對軟件工程學有一個全貌的了解;熟悉軟件項目開發(fā)和維護的一般過程;熟練掌握軟件需求分析、設計(shèjì)、編碼和測試等階段的主要思想和技術方法;13共九十頁二、學習(xuéxí)目標(2)通過學習,特別是通過課程設計,真正運用和深刻體會軟件工程的思想方法(fāngfǎ),轉(zhuǎn)變對軟件開發(fā)的認識:從個人的單純編程活動轉(zhuǎn)移到進行系統(tǒng)分析與設計方面上來轉(zhuǎn)變思維定式:程序員―系統(tǒng)工程師(系統(tǒng)分析員)14共九十頁三、部分(bùfen)參考資料《軟件工程理論與實踐》許家冶等編著(biānzhù),高等教育出版社,2005年《軟件工程》(第二版),齊治昌等,高等教育出版社,2004年《面向?qū)ο蟮南到y(tǒng)分析》,楊芙清等編著,清華大學出版社,2001年《UML用戶指南》GBooch等著,邵維忠等譯,機械工業(yè)出版社2002年15共九十頁四、課程(kèchéng)特點和學習的注肯事項1、知易行難要將理論知識與實踐運用結(jié)合,進行(jìnxíng)對照,以加深理解和掌握。2、內(nèi)容紛雜軟件工程涉及計算機科學、數(shù)學、工程科學和管理科學等多個領域。其中:計算機科學和數(shù)學用于構造模型與算法;工程科學用于制定規(guī)范、設計范型、評估成本及確定權衡管理科學用于計劃、資源、質(zhì)量和成本的管理。16共九十頁五、教材(jiàocái)總目錄第1章軟件工程學概述第2章可行性研究第3章需求分析第4章形式化說明技術(jìshù)第5章總體設計第6章詳細設計第7章實現(xiàn)第8章維護第9章面向?qū)ο蠓椒▽W引論第10章面向?qū)ο蠓治龅?1章面向?qū)ο笤O計第12章面向?qū)ο髮崿F(xiàn)第13章軟件項目管理附錄AC++類庫管理系統(tǒng)分析與設計附錄B漢字行編輯程序設計17共九十頁課程內(nèi)容學時(xuéshí)安排章節(jié)(zhāngjié)課程內(nèi)容學時l軟件工程學概述42可行性研究43需求分析45總體設計66詳細設計47實現(xiàn)8章節(jié)課程內(nèi)容學時8軟件維護29面向?qū)ο蠓椒▽W引論410面向?qū)ο蠓治?11面向?qū)ο笤O計212面向?qū)ο髮崿F(xiàn)213軟件項目管理614總結(jié)2注:2、3章內(nèi)容關聯(lián)較大,講授時不拘于課本中章節(jié)的安排和劃分;第9、10章也同樣。18共九十頁六、課程考核(kǎohé)方式分數(shù)組成:平時成績(10%):以理論課課堂(kètáng)表現(xiàn)為主。作業(yè)(30%):書面作業(yè)期末考試(60%):19共九十頁課程設計分組要求(yāoqiú)3-5人一組,自由組合,選出組長。以小組為單位共同完成“課程實踐”和“課程設計”。課程設計內(nèi)容、記分方式另外通知.本周(第1周)星期五之前請各班課代表或者(huòzhě)學習委員給出分組的詳細名單。(電子版和紙張文檔)20共九十頁第1章軟件工程學概述(ɡàishù)1.1軟件(ruǎnjiàn)危機1.2軟件工程1.3軟件生命周期1.4軟件過程1.5小結(jié)習題21共九十頁學習(xuéxí)重點1、軟件危機、軟件工程(ruǎnjiànɡōnɡchénɡ)產(chǎn)生的原因2、軟件工程過程和軟件生命周期3、軟件生命周期模型掌握幾個基本概念軟件危機軟件工程軟件過程軟件生命周期軟件生命周期模型22共九十頁軟件(ruǎnjiàn)危機與軟件(ruǎnjiàn)工程學軟件工程學的產(chǎn)生(chǎnshēng)要從“軟件危機”說起1968年,第一屆NAT0(北大西洋公約組織的計算機科學家的國際會議)會議,“軟件工程”的慨念作為一種有效解決“軟件危機”的途徑被正式提出。什么是軟件危機?軟件危機有什么典型表現(xiàn)?為什么會產(chǎn)生軟件危機?怎么解決軟件危機?23共九十頁§1軟件(ruǎnjiàn)危機§1.1.1軟件危機介紹(jièshào)什么是軟件危機?軟件危機指在計算機軟件的開發(fā)和維護過程中,所遇到的一系列嚴重問題。軟件危機主要包括的問題(兩方面):
①如何開發(fā)軟件②如何維護軟件24共九十頁軟件(ruǎnjiàn)危機有什么典型表現(xiàn)?(1)開發(fā)費用和進度難以估算和控制,大大超過預期的資金和規(guī)定日期;軟件需求分析不夠充分,用戶(yònghù)不滿意“已經(jīng)完成”的軟件系統(tǒng)。軟件質(zhì)量難于保證;軟件維護困難;難以改正程序中的錯誤;難以根據(jù)用戶的需要在原有程序中增加一些新的功能。25共九十頁軟件危機有什么典型(diǎnxíng)表現(xiàn)?通常沒有保留適當?shù)奈臋n資料。文檔的作用:軟件開發(fā)管理人員:用于管理和評價(píngjià)軟件開發(fā)工程的進展狀況軟件開發(fā)人員:用于開發(fā)人員對各個階段的工作都進行周密思考、全盤權衡、從而減少返工。并且可在開發(fā)早期發(fā)現(xiàn)錯誤和不一致性,便于及時加以糾正軟件維護人員:軟件維護的依據(jù)開發(fā)成本逐年上升,軟件開發(fā)生產(chǎn)率提高的速度,遠遠跟不上計算機應用迅速普及深入的趨勢。26共九十頁27共九十頁幾個(jǐɡè)軟件危機的著名案例①1966年,IBM360機的操作系統(tǒng)?;ㄙM5000人一年的工作量,寫了近1萬行代碼。錯誤百出,每次的新版本就是從前一版本中找1000個程序錯誤而修正的結(jié)果。②1963年,美國用于控制火星探測器的計算機軟件中的一個“,”號被誤寫為“.”,而致使飛往火星的探測器發(fā)生爆炸,造成高達數(shù)億美元的損失。③美國丹佛新國際機場自動化行李系統(tǒng)軟件。投資1.93億美元,計劃1993年萬圣節(jié)啟用。但開發(fā)人員一直為系統(tǒng)錯誤困擾,屢次推后啟用時間,直到1994年6月,機場計劃者承認無法預測何時能啟用。④1996年,歐洲(ōuzhōu)阿里亞納5型運載火箭墜毀,造成5億美元損失。原因是控制軟件中的一個錯誤。28共九十頁§1.1.2產(chǎn)生軟件(ruǎnjiàn)危機的原因主要兩個原因(yuányīn):1、與軟件本身的特點有關2、與軟件開發(fā)與維護的方法不正確有關。29共九十頁一、軟件本身(běnshēn)的特點(1)軟件與硬件、一般程序存在很多不同之處。
1、軟件與硬件不同抽象性。軟件生產(chǎn)沒有明顯的制造過程,難以衡量開發(fā)進展,也難以控制軟件質(zhì)量。問題的隱蔽性。沒有硬件的磨損、老化(lǎohuà)問題,但存在開發(fā)早期在分析、設計階段的錯誤,修改難度較大。30共九十頁失效率蜘線31共九十頁改正一個問題需付出(fùchū)的代價32共九十頁2、軟件與一般程序(chéngxù)不同(1)①軟件遠比一般程序(chéngxù)規(guī)模龐大,復雜性高軟件所反映的實際問題的復雜性程序邏輯結(jié)構的復雜性。例1:Windows95,1000萬行代碼;Windows2000,5000萬行代碼例2:Exchange2000和windows2000開發(fā)人員33共九十頁軟件(ruǎnjiàn)的規(guī)模軟件產(chǎn)品的特殊性和人類智力的局限性,導致人們無力處理(chǔlǐ)“復雜問題”。34共九十頁2、軟件(ruǎnjiàn)與一般程序不同(2)②大型軟件開發(fā)既有技術問題(wèntí),還有社會問題(wèntí)。社會因素:組織機構、體制、管理方式、觀念、人的心理素等。開發(fā)團隊成員分工合作技術與管理的矛盾軟件開發(fā)人員對軟件應用的領域知識的了解35共九十頁二、軟件開發(fā)維護(wéihù)方法中存在的問題(1)①對用戶需求的獲取不正確用戶的原因分析人員的原因
對分析人員的要求:溝通能力(nénglì)、歸納總結(jié)能力(nénglì)、經(jīng)驗越是早期產(chǎn)生的錯誤,付出的代價越大。圖:不同時期引入同一變動的代價36共九十頁二、軟件開發(fā)維護方法中存在(cúnzài)的問題(2)②軟件開發(fā)就是編寫程序。一個完整的軟件產(chǎn)品由一整套完整的配置組成,程序只是其中的一個組成部分。軟件開發(fā)過程包括多個階段(jiēduàn),每個階段(jiēduàn)的產(chǎn)品都是最終的完整的軟件產(chǎn)品的一部分。③軟件開發(fā)只要依靠個別編程高手就能完成。④輕視軟件維護軟件維護約占軟件費用55一75%,包括修改軟件運行的錯誤;對軟件進行改進和功能擴充。37共九十頁軟件維護在軟件費用(fèiyong)的比例38共九十頁三、其他(qítā)產(chǎn)生軟件危機的原因①軟件開發(fā)尚未完全擺脫手工藝的開發(fā)方式。②軟件成本相當昂貴,主要依靠大量復雜的、高強度的腦力勞動③軟件的開發(fā)和運行常常受到計算機系統(tǒng)的限制,對計算機系統(tǒng)有著不同程度的依賴性。軟件的“可移植性”就是指的軟件對硬件(yìnɡjiàn)的依賴程度。好的可移植性依賴少。39共九十頁§1.1.3消除(xiāochú)軟件危機的途徑1、徹底消除“軟件就是程序”的錯誤觀念。2、充分認識到軟件開發(fā)是一種組織良好、管理嚴密、各類人員協(xié)同配合、共同完成的工程項目,不是個人獨立的勞動。3、推廣和使用在實踐中總結(jié)(zǒngjié)出來的軟件開發(fā)的成功技術和方法。4、開發(fā)和使用更好的軟件工具40共九十頁總結(jié):“軟件工程”的方法理論是擺脫軟件危機的一個主要(zhǔyào)出路。計算機和軟件科學家為解決軟件危機問題,嘗試將在其它領域中行之有效的工程學知識運用到軟件開發(fā)工作中來,經(jīng)過不斷實踐和總結(jié),最后得出一個結(jié)論;按工程化的原則和方法組織軟件開發(fā)工作是有效的,是擺脫軟件危機的一個主要出路。41共九十頁思考題(1)1)只要是編程高手,即使是不懂軟件工程,也能編出很好的軟件。軟件是服務于大眾,卻是由個性化的開發(fā)人員(rényuán)完成的。如果個性化太強,程序就無法閱讀,其他人員(rényuán)也就無法維護。例:國內(nèi)80年代涌現(xiàn)出來的眾多漢字操作系統(tǒng)均是由編程高手完成的。42共九十頁思考題(2)2)只要擁有一套講述如何開發(fā)軟件的書籍,并了解了書中的標準與示例,就可以解決軟件開發(fā)中遇到的任何問題。軟件是用來解決現(xiàn)實問題的,現(xiàn)實問題的特殊性對規(guī)范提出了挑戰(zhàn)(tiǎozhàn)(要進行適應)。軟件技術是發(fā)展的,沒有祖?zhèn)髅胤?。就像擁有食譜并不能成為名廚一樣,軟件開發(fā)需要實踐。43共九十頁思考題(3)3)只要擁有最好的開發(fā)工具、最好的計算機,一定能做出優(yōu)秀的軟件(ruǎnjiàn)。硬件環(huán)境只是必要條件,人才是充分條件,軟件是人在一定的約束條件下創(chuàng)造出來的。因人因事而異。44共九十頁思考題(4)4)軟件開發(fā)時,如果進度慢,落后于計劃,可以增加更多的程序員來解決。增加人力(rénlì)可以減少開發(fā)時間嗎?新手!任務的重新劃分!溝通更加復雜!必須依靠科學地計劃來解決這樣的問題。45共九十頁思考題(5)5)爭議:如果(rúguǒ)軟件運行較慢,是換一臺更快的計算機,還是設計一種更快的算法?軟件的性能問題;應用級別→算法的合理性;系統(tǒng)級別→操作系統(tǒng)、數(shù)據(jù)庫系統(tǒng)、系統(tǒng)軟件等;硬件級別→機器性能46共九十頁§1.2軟件工程(ruǎnjiànɡōnɡchénɡ)§1.2.1軟件工程介紹一、“軟件工程”的典型定義1)1968年,第一屆NATO會議為了經(jīng)濟地獲得可靠的且能在實際機器上有效地運行的軟件,而建立和使用完善的工程原理。2)IEEE/CS(電氣電子工程師協(xié)會/計算機科學分會)①1993年,將系統(tǒng)化的、規(guī)范的、可度量的方法應用(yìngyòng)于軟件的開發(fā)、運行和維護的過程,即將工程化應用于軟件中。②對①中提到的各種方法的研究47共九十頁3)其他(qítā)學者的定義Boehm:運用現(xiàn)代科學技術知識來設計并構造計算機程序及為開發(fā)、運行和維護這些程序所必需的相關文件資料。FritzBauer:建立并使用完善的工程化原則,以較經(jīng)濟的手段獲得能在實際(shíjì)機器上有效運行的可靠軟件的一系列方法所有定義都強調(diào)在軟件開發(fā)過程中,應用工程化原則的重要性48共九十頁幾個關于軟件工程(ruǎnjiànɡōnɡchénɡ)本質(zhì)特性和基本原理的問題問題(wèntí)一:軟件工程適用范圍?問題二:軟件工程如何控制系統(tǒng)開發(fā)的復雜性的?問題三:以你的經(jīng)驗,舉例說明一個成熟的軟件通常采用什么方法來適應現(xiàn)實世界的變化的?49共九十頁幾個(jǐɡè)關于軟件工程本質(zhì)特性和基本原理的問題問題四:假設某軟件公司,能為同一個用戶開發(fā)兩個不同層次的軟件:一個層次的軟件功能非常強大,在滿足用戶所有需求的基礎上,還能提供大大超過用戶需求的其他更多更強的功能;另一個層次的軟件僅僅能滿足用戶需求,但沒有提供其他額外的功能。請問如果你是項目負責人,你會選擇為客戶(kèhù)開發(fā)那個層次的軟件?問題五:協(xié)同工作有什么重要性?50共九十頁幾個(jǐɡè)關于軟件工程本質(zhì)特性和基本原理的問題問題五:怎樣理解(lǐjiě)“在軟件工程領域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品”這句話?問題六:某軟件開發(fā),由于時間和資金都非常緊迫,在需求分析人員非常認真、仔細地做完需求分析之后,說:我們可以保證我們的需求分析正確性,不用花時間檢查了,設計人員可以直接拿著這份分析報告,馬上開始設計。如果你是項目負責人,你會如何決定?為什么?問題七:在需求分析完成并獲得了用戶的肯定,也通過了評審,進入軟件設計階段之后,用戶的想法有了改變,提出了一個新的要求,此時如果你是項目負責人,應該怎樣做?51共九十頁二、軟件工程(ruǎnjiànɡōnɡchénɡ)本質(zhì)特性(2)1)軟件工程關注于大型程序的構造。2)軟件工程的中心課題是控制復雜性主要考慮:如何分解和集成為什么要分解:G.Miller,“7士2”原則3)軟件經(jīng)常變化4)開發(fā)軟件的效率非常重要5)和諧地合作是開發(fā)軟件的關鍵6)軟件必須有效地支持它的用戶7)在軟件工程領域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品擴展定義(dìngyì):軟件=知識+程序+數(shù)據(jù)+文檔52共九十頁§1.2.2軟件工程(ruǎnjiànɡōnɡchénɡ)的基本原理B.W.Boehm,1983年提出:1)用分階段的生命周期計劃嚴格管理2)堅持進行階段評審3)實行(shíxíng)嚴格的產(chǎn)品控制基線基線(baseline)控制4)采用現(xiàn)代程序設計技術5)結(jié)果應能清楚地審查6)開發(fā)小組的人員應該少而精7)承認不斷改進軟件工程實踐的必要性53共九十頁§1.2.3軟件工程(ruǎnjiànɡōnɡchénɡ)方法學軟件工程包括“管理”和“技術”兩方面內(nèi)容:管理——對人、財、物的合理使用和配置(pèizhì);技術——指軟件開發(fā)中采用的方法、工具和過程。什么是軟件工程方法學?通常把在軟件生命周期全過程中使用的一整套技術方法的集合稱為方法學(methodology),也稱為范型(paradigm)。54共九十頁一、軟件工程(ruǎnjiànɡōnɡchénɡ)方法學三要素:工具、方法和過程要素一:軟件工程過程規(guī)定了完成各項任務的工作步驟。要素二:軟件工程方法完成軟件開發(fā)的各項任務的技術方法,為軟件開發(fā)提供了“如何做”的技術。如項目計劃與估算、軟件系統(tǒng)需求分析、數(shù)據(jù)結(jié)構、系統(tǒng)總體結(jié)構的設計、算法過程的設計、編碼(biānmǎ)、測試以及維護等。要素三:軟件工程工具計算機輔助軟件工程CASE(computerAidedsottwareEngineering),為軟件工程方法提供自動或半自動的軟件支撐環(huán)境。55共九十頁二、軟件工程(ruǎnjiànɡōnɡchénɡ)方法學思想兩種:1、傳統(tǒng)(chuántǒng)方法學(生命周期方法學或結(jié)構化范型)2、面向?qū)ο蠓椒?6共九十頁1.傳統(tǒng)(chuántǒng)方法學(生命周期方法學或結(jié)構化范型)采用結(jié)構化技術(結(jié)構化分析、結(jié)構化設計和結(jié)構化實現(xiàn))來完成軟件開發(fā)的各項任務;把軟件生命周期劃分為若干個階段,按順序完成每個階段的任務;每個階段開始和結(jié)束都有嚴格的標準(biāozhǔn),對任何兩個相鄰的階段而言,前一個階段的結(jié)束標準(biāozhǔn)就是后一階段的開始標準(biāozhǔn);每一個階段結(jié)束之前都必須進行正式嚴格的技術審查和管理復審57共九十頁傳統(tǒng)(chuántǒng)方法學的優(yōu)點:分解任務,分工合作,降低整個軟件開發(fā)工程的困難;采用科學的管理技術和良好的技術方法對每個階段成果都進行嚴格(yángé)的審查。保證了軟件的質(zhì)量。傳統(tǒng)方法學的缺點:把數(shù)據(jù)和操作人為地分離成兩個獨立的部分,增加了軟件開發(fā)與維護的難度。58共九十頁2、面向?qū)ο蠓椒▽W(OO,Object-oriented)模擬人類習慣的思維方式,使開發(fā)軟件的方法與過程盡可能接近人類認識(rènshi)世界解決問題的方法與過程,從而使描述問題的問題空間(也稱為問題域)與實現(xiàn)解法的解空間(也稱為求解域)在結(jié)構上盡可能一致。59共九十頁面向?qū)ο蠓椒▽W4要點(yàodiǎn)把對象(object)作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一的軟件構件。把所有對象都劃分成類(class)。按照父類(或稱為基類)與子類(或稱為派生類)的關系,把若干個相關類組成一個層次結(jié)構的系統(tǒng)(也稱為類等級)。對象彼此間僅能通過(tōngguò)發(fā)送消息互相聯(lián)系。60共九十頁二者區(qū)別(qūbié)傳統(tǒng)方法學:強調(diào)自頂向下順序地完成軟件開發(fā)的各階段任務(rènwu)。面向?qū)ο蠓椒ǎ菏侵鲃拥囟啻畏磸偷难莼^程61共九十頁3軟件(ruǎnjiàn)生命周期一、什么是軟件生命周期(lifecycle)指軟件孕育、誕生、成長、成熟、衰亡的生存過程GB一8567中將軟件生命周期分為7個階段:可行性研究和項目開發(fā)計劃;需求分析(fēnxī);慨要設計;詳細設計;編碼;測試;維護其他分法,5個階段:需求定義、設計、編碼、測試及維護;需求定義階段包括可行性研究和項目開發(fā)計劃、需求分析;設計階段包括慨要設計和詳細設計。62共九十頁本教材對軟件(ruǎnjiàn)生命周期的劃分63共九十頁1、軟件(ruǎnjiàn)定義時期任務:確定軟件開發(fā)工程必須完成的總目標;確定工程的可行性;導出實現(xiàn)工程目標應該采用的策略及系統(tǒng)必須完成的功能;估計完成該項工程需要的資源和成本,并且制定工程進度表。通常(tōngcháng)分為問題定義、可行性研究和需求分析三個階段。64共九十頁軟件定義(dìngyì)時期的三個階段①問題定義階段回答:
回答:“要解決的問題是什么?”
②可行性研究階段回答:“對于上一個階段所確定的問題有行得通的解決辦法嗎?
③需求分析(fēnxī)(RequirementAnalysis)回答“為了解決這個問題,目標系統(tǒng)必須做什么?
用正式文檔準確地記錄對目標系統(tǒng)的需求,這份文檔通常稱為規(guī)格說明書(specification)。65共九十頁2、軟件開發(fā)時期(shíqī)具體設計和實現(xiàn)前一個(yīɡè)時期定義的軟件,通常分為四個階段:①總體設計(概要設計)回答:“概括地說,應該怎樣實現(xiàn)目標系統(tǒng)?”根據(jù)需求分析,設計軟件的體系結(jié)構;定義結(jié)構中的組成模塊。②詳細設計(模塊設計)回答:“應該怎樣具體地實現(xiàn)這個系統(tǒng)呢?”對每個模塊要完成的工作進行具體的描述,為源程序編寫打下基礎。編寫設計說明書,提交評審。二者統(tǒng)稱系統(tǒng)設計
66共九十頁軟件開發(fā)時期(shíqī)四個階段③程序編寫(Coding,Programming):把軟件設計轉(zhuǎn)換成計算機可以(kěyǐ)接受的程序代碼。④軟件測試(Testing):按規(guī)定的各項需求,逐項進行有效性測試,決定已開發(fā)的軟件是否合格,能否交付用戶使用,包括單元測試和組裝測試。二者統(tǒng)稱系統(tǒng)實現(xiàn)67共九十頁3、運行(yùnxíng)維護(軟件維護)時期(Running/Maintenance)使軟件持久的滿足用戶的需要。包括:改正性維護:運行中發(fā)現(xiàn)了軟件中的錯誤需要修正。適應性維護:為了適應變化了的軟件工作環(huán)境(huánjìng),需做適當變更。完善性維護:當用戶有新的要求時,應該及時改進軟件以滿足用戶的要求。預防性維護:即修改軟件為將來的維護活動預先做準備。68共九十頁幾個關干軟件生命周期階段(jiēduàn)的問題問題一:開發(fā)一個軟件大概需要多少資金、時間,將獲得(huòdé)什么效益一般是在哪個階段確定?相對而言,在哪個階段與用戶交流最多?問題二:系統(tǒng)分析員主要工作在哪個時期?程序員主要工作在哪個時期?問題三:軟件定義時期的三個階段,各自回答什么關鍵問題?問題四:軟件開發(fā)時期有幾個階段?各自回答什么關鍵問題?69共九十頁問題五:軟件體系結(jié)構最早是在哪個階段決定的?問題六:詳細設計(shèjì)與程序編寫階段有什么樣的密切聯(lián)系?問題七:“軟件測試是為了驗證系統(tǒng)的正確性”這句話對嗎?問題八:軟件維護有那幾種?各有什么功能?70共九十頁§1.4軟件(ruǎnjiàn)過程(SoftwareProcess)1、什么是軟件過程為了獲得高質(zhì)量軟件所需要完成的一系列任務的框架,它規(guī)定了完成各項任務的工作步驟(bùzhòu)。ISO9000的定義:使用資源將輸入轉(zhuǎn)化為輸出的活動所構成的系統(tǒng)?!跋到y(tǒng)”是相互關聯(lián)或相互作用的一組要素。過程是軟件工程三要素之一。通常用軟件生命周期模型來描述。71共九十頁2、什么是軟件(ruǎnjiàn)生命周期模型又稱:軟件開發(fā)模型/軟件過程模型/軟件工程范型。指軟件項目從需求定義直至軟件經(jīng)使用后廢棄為止(wéizhǐ),跨越整個生存周期的系統(tǒng)開發(fā)、運作和維護所實施的全部過程、活動和任務的結(jié)構框架。常見的有:瀑布模型、演化模型、螺旋模型、噴泉模型、智能模型72共九十頁§1.4.1瀑布(pùbù)模型(waterfallmodel)1970年,由W.Royce提出
一、瀑布模型的過程1、傳統(tǒng)的瀑布模型從上一階段(jiēduàn)接受本階段(jiēduàn)
的工作對象,作為輸入;利用輸入,完成本階段活
動的內(nèi)容.本階段的工作成果作為輸出
傳入下一階段。73共九十頁瀑布模型(móxíng)—實際的瀑布模型
需求(xūqiú)分析驗證規(guī)格說明驗證設計驗證編碼測試綜合測試維護變化的需求驗證增加了一個評審活動,評審每個階段完成的活動,若得到確認,則進行下一階段的活動;否則返回前一階段,甚至更前階段返工;74共九十頁二、瀑布(pùbù)模型特點階段間具有順序(shùnxù)性和依賴性推遲實現(xiàn)的觀點質(zhì)量保證的觀點75共九十頁三、瀑布(pùbù)模型優(yōu)缺點優(yōu)點:可強迫(qiǎngpò)開發(fā)人員采用規(guī)范的方法;嚴格地規(guī)定了每個階段必須提交的文檔;要求每個階段的所有產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細驗證;缺點:無法解決軟件需求不明確或不準確的問題;可能導致最終開發(fā)的產(chǎn)品不能真正滿足用戶需要。瀑布模型比較適合開發(fā)需求明確的軟件。76共九十頁§1.4.2快速原型(yuánxíng)模型1、什么是“原型”?原型是快速實現(xiàn)和運行(yùnxíng)的早期版本,反映最終系統(tǒng)部分重要特性。常見的原型實例:人機界面;系統(tǒng)主要功能。
優(yōu)點:1、通常能反映用戶真實需求;2、軟件產(chǎn)品的開發(fā)基本上是線性順序進行的。77共九十頁2、快速原型(yuánxíng)的過程如右圖。獲得用戶的基本(jīběn)需求說明,據(jù)此快速建立一個小型軟件系統(tǒng).用戶試用,對其評價;開發(fā)人員按照用戶的意見快速地修改原型系統(tǒng),獲得新的原型版本,再請用戶試用,如此反復,直到滿足用戶的要求;用戶確認原型系統(tǒng)之后,開發(fā)人員據(jù)此書寫規(guī)格說明文檔,進行下一步開發(fā)。78共九十頁1.4.3增量(zēnɡliànɡ)(漸增)模型把軟件產(chǎn)品作為一系列的增量構件來設計、編碼、集成和測試。每個構件由多個相互作用的模塊構成(gòuchéng),并且能夠完成特定的功能。使用增量模型時,第一個階段的增量構件往往實現(xiàn)軟件的基本需求,提供最核心的功能;后面的增量構架逐漸添加系統(tǒng)的功能。79共九十頁圖:增量(zēnɡliàn
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版高新技術企業(yè)勞動合同期限及薪資調(diào)整協(xié)議3篇
- 2024年特種設備銷售與安裝調(diào)試合同3篇
- 2025年二手叉車買賣合同6篇
- 2025年度水電安裝與材料供應合同9篇
- 2025年度工程建筑裝修項目合同2篇
- 2025版消防報警系統(tǒng)安裝與調(diào)試合同3篇
- 2024年貨物買賣合同標的明細與屬性
- 2025年度基于SET協(xié)議的電子商務支付安全解決方案定制合同2篇
- 二零二五年度XX城市污水處理廠運營維護服務合同
- 2024年離婚訴訟雙方合同格式一
- 安恒可信數(shù)據(jù)空間建設方案 2024
- 2024年學校與家長共同促進家校合作發(fā)展協(xié)議3篇
- C預應力錨索框架梁施工方案(完整版)
- 參加團干部培訓心得體會
- 中華民族共同體概論專家講座第一講中華民族共同體基礎理論
- 湖北省襄陽市2023-2024學年高一上學期期末考試化學試題(含答案)
- 浙江省金華市十校2023-2024學年高一上學期1月期末考試物理試題 含解析
- 物業(yè)管理師考試題庫單選題100道及答案解析
- 校園智能安防系統(tǒng)安裝合同
- 2024年專利代理人專利法律知識考試試卷及參考答案
- 2024-2025學年九年級上學期化學期中模擬試卷(人教版2024+含答案解析)
評論
0/150
提交評論