版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程總學(xué)時(shí): 32課程性質(zhì):考 試先修要求:語(yǔ)言程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)庫(kù)技術(shù)等主講老師:劉冬懿 聯(lián)系方式ldy_軟件工程教學(xué)方式:教學(xué)方式: 課堂講授(多媒體教學(xué));課堂講授(多媒體教學(xué)); 學(xué)生上機(jī)實(shí)習(xí);學(xué)生上機(jī)實(shí)習(xí); 通過(guò)通過(guò)Email與與Web進(jìn)行網(wǎng)上輔導(dǎo)。進(jìn)行網(wǎng)上輔導(dǎo)。 考查方式:考查方式:平時(shí)成績(jī)平時(shí)成績(jī)10%(考勤);(考勤);作業(yè)成績(jī)作業(yè)成績(jī)20%(平時(shí)作業(yè))(平時(shí)作業(yè))期末考試占期末考試占70%。 課程教材課程教材作者:作者: 竇萬(wàn)峰竇萬(wàn)峰 出版社:機(jī)械工業(yè)出版社出版社:機(jī)械工業(yè)出版社 軟件工程導(dǎo)論軟件工程導(dǎo)論張海藩張海藩 清華大學(xué)出版社清華大學(xué)出版
2、社 參考書(shū)目參考書(shū)目 (References) 實(shí)用軟件工程實(shí)用軟件工程 (第二版)(第二版)鄭人杰、殷人昆、陶永雷鄭人杰、殷人昆、陶永雷 清華大學(xué)出版社清華大學(xué)出版社 軟件工程設(shè)計(jì)導(dǎo)論軟件工程設(shè)計(jì)導(dǎo)論-過(guò)程、原過(guò)程、原理與模式理與模式(UML2.0版版) (美美)Christopher Fox 清華大學(xué)出版社清華大學(xué)出版社 參考書(shū)目參考書(shū)目 (References)Introduction to the Personal Software ProcessWatts S.Humphrey吳超英等譯 人民郵電出版社人民郵電出版社 Introduction to the Team Software
3、 ProcessWatts S.Humphrey韓丹韓丹等譯 人民郵電出版社人民郵電出版社 參考書(shū)目參考書(shū)目 (References) Frederick P. Brooks著著 清華大學(xué)出版社清華大學(xué)出版社 Tom Demarco著著 清華大學(xué)出版社清華大學(xué)出版社 參考書(shū)目參考書(shū)目 (References)相關(guān)網(wǎng)站1 IBM開(kāi)發(fā)者:http:/ UML China: http:/ 3 軟件工程俱樂(lè)部:/4 UML軟件工程組織:http:/ 5 軟件工程專家網(wǎng):http:/ 中國(guó)系統(tǒng)分析員:http:/ 我們國(guó)家有30多所軟件學(xué)院,但是幾百
4、個(gè)高校都有計(jì)算機(jī)系,它們的區(qū)別主要是:計(jì)算機(jī)專業(yè)主要是計(jì)算機(jī)科學(xué)與工程,軟件學(xué)院主要是計(jì)算機(jī)軟件這個(gè)學(xué)科,而且軟件工程這個(gè)專業(yè)還要展開(kāi),比如:需求分析,面向?qū)ο蟮男枨蠓治龊驮O(shè)計(jì),項(xiàng)目管理,進(jìn)度控制,統(tǒng)一建模語(yǔ)言,文檔寫(xiě)作等。軟件工程是不是背背就能過(guò)的課軟件工程絕對(duì)不是背背就能過(guò)的課,計(jì)算機(jī)理論可能是一個(gè)人就能研究出來(lái),軟件工程是成千萬(wàn)網(wǎng)軟件工程師幾十年來(lái)失敗的教訓(xùn)凝結(jié)成的結(jié)晶。計(jì)算級(jí)專業(yè)的人必須具備任何語(yǔ)言1小時(shí)上手的能力,最起碼要在10分鐘把hello world做出來(lái)。 學(xué)好課程,只是萬(wàn)里長(zhǎng)征的第一步即使你學(xué)好了以上課程,我們?nèi)匀徊畹煤苓h(yuǎn),我們只弄清學(xué)什么了,但是還不知道做什么。所以我們要
5、盡可能的多做設(shè)計(jì),別一個(gè)人們悶著頭做,兩三個(gè)人合作一個(gè)項(xiàng)目,不會(huì)交流的計(jì)算機(jī)人員30歲以后肯定會(huì)下崗。題目呢,盡量是一些簡(jiǎn)單的底層開(kāi)發(fā),可以去國(guó)外大學(xué)網(wǎng)站上搜一搜,要自信你一定能做出來(lái),畢竟不是什么難題,而是我們應(yīng)當(dāng)具備的素質(zhì)。 竇萬(wàn)峰計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院南京師范大學(xué)2013年9月第一部分:軟件工程基礎(chǔ)什么是軟件工程?什么是工程化思想?什么是軟件過(guò)程?有哪些過(guò)程模型?如何選擇與建立過(guò)程模型?什么是統(tǒng)一過(guò)程?什么是敏捷過(guò)程?有哪些模型?什么是軟件工程實(shí)踐?第1章 軟件工程概述(內(nèi)容提要)軟件的本質(zhì)軟件工程的基本概念軟件工程化思想軟件工程兩大范型軟件工程思想與基本原理軟件工程基本活動(dòng)什么是軟件?三
6、要素:軟件=程序+文檔+數(shù)據(jù)特性:復(fù)雜性一致性退化性易變性移植性高成本程序是按事先設(shè)計(jì)的功能和性能要求編寫(xiě)的指令序列;數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu);文檔是與程序開(kāi)發(fā)、維護(hù)和使用有關(guān)的圖文材料。軟件技術(shù)演化第一階段:程序設(shè)計(jì)階段。1946年到60年代初,其主要特征是程序生產(chǎn)方式為個(gè)體手工方式。 第二階段:程序系統(tǒng)階段。60年代初到70年代初,軟件工程學(xué)科誕生。軟件的開(kāi)發(fā)方式由個(gè)體生產(chǎn)發(fā)展到了小組生產(chǎn),軟件的開(kāi)發(fā)與維護(hù)費(fèi)用以驚人的速度增加,維護(hù)困難,導(dǎo)致軟件危機(jī)。第三階段:傳統(tǒng)軟件工程階段。20世紀(jì)70年代中期至80年代中期,軟件工程師把工程化的思想加入到軟件的開(kāi)發(fā)過(guò)程中,用工程化的原則、
7、方法和標(biāo)準(zhǔn)來(lái)開(kāi)發(fā)和維護(hù)軟件。第四階段:面向?qū)ο箅A段。20世紀(jì)80年代中期至今,面向?qū)ο蟮姆椒▽W(xué)受到了人們的重視,促進(jìn)了軟件業(yè)的飛速發(fā)展,軟件產(chǎn)業(yè)在世界經(jīng)濟(jì)中已經(jīng)占有舉足輕重的地位。發(fā)展趨勢(shì)軟件服務(wù)多樣性:中間件開(kāi)放性:新型中間件平臺(tái)軟件危機(jī)兩個(gè)方面的問(wèn)題:如何開(kāi)發(fā)軟件如何維護(hù)軟件表現(xiàn):規(guī)模大復(fù)雜度增加需求量增大價(jià)格昂貴供需差增大開(kāi)發(fā)速度慢質(zhì)量難以保證軟件錯(cuò)誤的實(shí)例ARIANE 5 火箭1996 年 6 月,耗資 70 億美元,發(fā)射 37 秒后爆炸發(fā)射失敗的原因在于軟件的錯(cuò)誤 軟件錯(cuò)誤程序中試圖將 64 位浮點(diǎn)數(shù)轉(zhuǎn)換成 16 位整數(shù)時(shí)產(chǎn)生溢出缺少錯(cuò)誤處理程序?qū)?shù)據(jù)溢出進(jìn)行管理備份軟件復(fù)制而成 嚴(yán)
8、格地遵守軟件確認(rèn)過(guò)程可以避免這種錯(cuò)誤9軟件錯(cuò)誤的實(shí)例Therac 25 放射醫(yī)療儀事故 1986 年由于軟件錯(cuò)誤導(dǎo)致放射過(guò)量,2 人死亡 溢出錯(cuò)誤是導(dǎo)致問(wèn)題的主要原因之一 千年蟲(chóng)問(wèn)題 迫于計(jì)算機(jī)存儲(chǔ)空間的限制,程序員將日期縮減為 2 位數(shù) 世界各地更換或升級(jí) 2000 年問(wèn)題軟件的花費(fèi)超過(guò)數(shù)億美元 其他 電子郵件的病毒 拒絕訪問(wèn)等的網(wǎng)絡(luò)攻擊 網(wǎng)絡(luò)事務(wù)的安全問(wèn)題11軟件危機(jī)解決途徑軟件危機(jī)解決途徑重視需求分析,明確與確切表達(dá)需求重視與客戶溝通與交流統(tǒng)一的、公認(rèn)的方法論和規(guī)范指導(dǎo)重視設(shè)計(jì)和實(shí)現(xiàn)過(guò)程的資料充分的檢測(cè)工作軟件工程定義B.W.Boehm的定義:運(yùn)用現(xiàn)代科學(xué)技術(shù)知識(shí)來(lái)設(shè)計(jì)并構(gòu)造計(jì)算機(jī)程序及
9、為開(kāi)發(fā)、運(yùn)行和維護(hù)這些程序所必須的相關(guān)文件資料。Fritz Bauer的定義:軟件工程是為了經(jīng)濟(jì)地獲得能夠在實(shí)際機(jī)器上有效運(yùn)行的可靠軟件而建立和使用的一系列完善的工程化原則。1983年美國(guó)IEEE軟件工程標(biāo)準(zhǔn)術(shù)語(yǔ)的定義為:軟件工程是開(kāi)發(fā)、運(yùn)行、維護(hù)和修復(fù)軟件的系統(tǒng)方法,其中“軟件”的定義為:計(jì)算機(jī)程序、方法、規(guī)則、相關(guān)的文檔資料以及在計(jì)事機(jī)上運(yùn)行時(shí)所必需的數(shù)據(jù)。軟件工程化思想軟件工程化思想把軟件看作是一個(gè)工程產(chǎn)品兩個(gè)方面:軟件開(kāi)發(fā)技術(shù)軟件工程管理原因:缺乏軟件過(guò)程控制能力能力成熟模型(Capability Maturity Model)體現(xiàn):工程化管理軟件工程的三要素軟件工程的三要素 軟件工程
10、以關(guān)注軟件質(zhì)量為目標(biāo),包括過(guò)程、方法和工具三個(gè)要素。 過(guò)程 支持軟件生命周期的所有活動(dòng) 方法 為軟件開(kāi)發(fā)過(guò)程提供“如何做”的技術(shù) 工具 為軟件開(kāi)發(fā)方法提供自動(dòng)的或半自動(dòng)的軟件支撐環(huán)境30方法質(zhì)量工具過(guò)程軟件工程基本原理軟件工程基本原理推遲實(shí)現(xiàn)原理逐步求精原理分解與抽象原理信息隱蔽原理質(zhì)量保證原理軟件工程基本原則軟件工程基本原則分階段的軟件生存周期堅(jiān)持進(jìn)行階段評(píng)審實(shí)行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計(jì)技術(shù)明確職責(zé)開(kāi)發(fā)小組的人員應(yīng)少而精不斷改進(jìn)開(kāi)發(fā)過(guò)程軟件工程兩大范型軟件工程兩大范型結(jié)構(gòu)化開(kāi)發(fā)范型特征:結(jié)構(gòu)化技術(shù)要么面向行為,要么面向數(shù)據(jù)構(gòu)成結(jié)構(gòu)化開(kāi)發(fā)范型的技術(shù)包括:結(jié)構(gòu)化分析結(jié)構(gòu)化設(shè)計(jì)結(jié)構(gòu)化編程結(jié)構(gòu)
11、化測(cè)試結(jié)構(gòu)化維護(hù)軟件工程兩大范型軟件工程兩大范型面向?qū)ο蠓缎吞卣鳎簩?duì)象視作一個(gè)融合了數(shù)據(jù)及在其上操作的行為的、統(tǒng)一的軟件組件。技術(shù)包括:面向?qū)ο蠓治雒嫦驅(qū)ο笤O(shè)計(jì)面向?qū)ο缶幊堂嫦驅(qū)ο鬁y(cè)試面向?qū)ο缶S護(hù)優(yōu)勢(shì):對(duì)象的概念符合業(yè)務(wù)或領(lǐng)域的客觀實(shí)際維護(hù)容易結(jié)構(gòu)化方法 vs. 面向?qū)ο蠓椒ㄓ?jì)算機(jī)35測(cè)試問(wèn)題域需求分析總體設(shè)計(jì)詳細(xì)設(shè)計(jì)編程自然語(yǔ)言傳統(tǒng)的編程語(yǔ)言分析與設(shè)計(jì)的鴻溝計(jì)算機(jī)問(wèn)題域面向?qū)ο蠓治雒嫦驅(qū)ο笤O(shè)計(jì)面向?qū)ο缶幊堂嫦驅(qū)ο鬁y(cè)試自然語(yǔ)言面向?qū)ο蟮木幊陶Z(yǔ)言重型與輕型軟件工程重型軟件工程文檔齊全規(guī)范化和程式化周期長(zhǎng)推遲實(shí)現(xiàn)輕型軟件工程非正式交流重視代碼重視測(cè)試響應(yīng)需求變化軟件工程活動(dòng)軟件工程活動(dòng)溝通活動(dòng)計(jì)
12、劃活動(dòng)建模活動(dòng)實(shí)現(xiàn)活動(dòng)部署活動(dòng)維護(hù)活動(dòng)管理活動(dòng)過(guò)程改進(jìn)活動(dòng)小結(jié)軟件工程的是主旨以工程化的思想進(jìn)行軟件開(kāi)發(fā),以生產(chǎn)高質(zhì)量和高效率的軟件。軟件工程化思想的核心是,把軟件看作是一個(gè)工程產(chǎn)品。軟件工程方法學(xué)分別是傳統(tǒng)結(jié)構(gòu)化范型和面向?qū)ο蠓缎汀\浖こ袒顒?dòng)包括開(kāi)發(fā)活動(dòng)、管理活動(dòng)和過(guò)程改進(jìn)活動(dòng)。第2章 軟件過(guò)程(內(nèi)容提要)什么是軟件過(guò)程?什么軟件生命周期?能力成熟度模型敏捷過(guò)程結(jié)對(duì)編程軟件過(guò)程定義:軟件過(guò)程是為了開(kāi)發(fā)出軟件產(chǎn)品,或者是為了完成軟件工程項(xiàng)目而需要完成的有關(guān)軟件工程的活動(dòng)通常使用生命周期模型簡(jiǎn)潔地描述軟件過(guò)程層次:軟件工程是一門(mén)建立在以質(zhì)量焦點(diǎn)為基礎(chǔ)的層次化綜合技術(shù)過(guò)程:定義階段和管理方法:技
13、術(shù)支持工具:自動(dòng)化實(shí)施支持軟件過(guò)程框架軟件過(guò)程框架定義:框架是實(shí)現(xiàn)整個(gè)軟件開(kāi)發(fā)活動(dòng)的基礎(chǔ),并且那些與過(guò)程有關(guān)的角色、職責(zé)的定義以及實(shí)現(xiàn)也都離不開(kāi)框架的支持兩個(gè)方面的內(nèi)容組織及管理框架技術(shù)及工具框架軟件過(guò)程環(huán)境組織、管理的角色和職責(zé)技術(shù)環(huán)境軟件過(guò)程框架軟件過(guò)程框架組織與管理框架:過(guò)程改進(jìn)活動(dòng)及角色與職責(zé)技術(shù)與工具框架:技術(shù)及自動(dòng)化活動(dòng)工具框架活動(dòng):溝通策劃建模構(gòu)建部署軟件生存周期過(guò)程(表2-1)系統(tǒng)語(yǔ)境的過(guò)程協(xié)議過(guò)程組(2個(gè)過(guò)程,13個(gè)活動(dòng),52個(gè)任務(wù))項(xiàng)目過(guò)程組(7個(gè)過(guò)程,23個(gè)活動(dòng),72個(gè)任務(wù))技術(shù)過(guò)程組(11個(gè)過(guò)程,26個(gè)活動(dòng),64個(gè)任務(wù))組織上項(xiàng)目使能過(guò)程組(5個(gè)過(guò)程,15個(gè)活動(dòng),48個(gè)
14、任務(wù))針對(duì)軟件開(kāi)發(fā)的過(guò)程軟件實(shí)現(xiàn)過(guò)程組(7個(gè)過(guò)程,7個(gè)活動(dòng),39個(gè)任務(wù))軟件支持過(guò)程組(8個(gè)過(guò)程,25個(gè)活動(dòng),68個(gè)任務(wù))軟件復(fù)用過(guò)程組(3個(gè)過(guò)程,14個(gè)活動(dòng),62個(gè)任務(wù))軟件過(guò)程模型軟件過(guò)程模型把軟件生命周期中各項(xiàng)開(kāi)發(fā)活動(dòng)的流程用一個(gè)合理的框架開(kāi)發(fā)模型來(lái)規(guī)范描述,這就是軟件過(guò)程模型,也稱為軟件生命周期模型.軟件過(guò)程模型是一種就是軟件過(guò)程抽象.軟件過(guò)程模型是從一個(gè)特定的角度表現(xiàn)一個(gè)過(guò)程,一般使用直觀的圖形標(biāo)識(shí)軟件開(kāi)發(fā)的過(guò)程,主要根據(jù)軟件的類型、規(guī)模,特別是軟件的開(kāi)發(fā)方法、開(kāi)發(fā)環(huán)境等多種因素確立過(guò)程模型。軟件過(guò)程技術(shù)產(chǎn)品與過(guò)程選擇軟件過(guò)程過(guò)程評(píng)估CMMI/CMMISO9001:2000個(gè)人軟件過(guò)
15、程(PSP):是一種可用于控制、管理和改進(jìn)個(gè)人工作方式的自我持續(xù)改進(jìn)過(guò)程,是一個(gè)包括軟件開(kāi)發(fā)表格、指南和規(guī)程的結(jié)構(gòu)化框架。團(tuán)隊(duì)軟件過(guò)程(TSP):幫助軟件開(kāi)發(fā)組織建立成熟和紀(jì)律性的工程實(shí)踐,生產(chǎn)安全和可信的軟件個(gè)人軟件過(guò)程(PSP)內(nèi)容PSP0是PSP的個(gè)人度量過(guò)程,其目的是建立個(gè)體過(guò)程基線。PSP1是個(gè)人規(guī)劃過(guò)程,引入了基于估計(jì)的計(jì)劃方法PROBE,用自己的歷史數(shù)據(jù)來(lái)預(yù)測(cè)新程序大小和開(kāi)發(fā)時(shí)間,并使用線性回歸方法估計(jì)參數(shù),確定置信區(qū)間以評(píng)價(jià)預(yù)測(cè)的可信程度。PSP2是個(gè)人質(zhì)量管理,根據(jù)程序的缺陷建立檢測(cè)表,按照檢測(cè)表進(jìn)行設(shè)計(jì)復(fù)查和代碼復(fù)查,以便及早發(fā)現(xiàn)缺陷,使修復(fù)缺陷的代價(jià)最小。PSP3的目標(biāo)是
16、把個(gè)體開(kāi)發(fā)小程序所能達(dá)到的生產(chǎn)效率和生產(chǎn)質(zhì)量,延伸到大型程序。團(tuán)隊(duì)軟件過(guò)程(TSP)TSP 采用了循環(huán)遞增的開(kāi)發(fā)策略,整個(gè)軟件生產(chǎn)過(guò)程由多個(gè)循環(huán)出現(xiàn)的開(kāi)發(fā)周期組成,每個(gè)開(kāi)發(fā)周期劃分出若干個(gè)相對(duì)獨(dú)立的階段。TSP 提供了如下方法:計(jì)劃評(píng)審設(shè)計(jì)和編碼標(biāo)準(zhǔn)設(shè)計(jì)和代碼評(píng)審方法缺陷評(píng)審質(zhì)量分析能力成熟度模型能力成熟度模型CMM(Capability Maturity Model)是指“能力成熟度模型”CMM是由美國(guó)卡內(nèi)基梅隆大學(xué)的軟件工程研究所(SEI)開(kāi)發(fā)的軟件成熟度模型。思想:管理軟件過(guò)程的方法不當(dāng)引起的問(wèn)題,導(dǎo)致新軟件技術(shù)的運(yùn)用并不會(huì)自動(dòng)提高軟件的生產(chǎn)率和質(zhì)量。CMM為軟件企業(yè)的過(guò)程能力提供了一個(gè)
17、階梯式的改進(jìn)框架,它基于過(guò)去所有軟件工程過(guò)程改進(jìn)的成果,吸取了以往軟件工程的經(jīng)驗(yàn)教訓(xùn),提供了一個(gè)基于過(guò)程改進(jìn)的框架。能力成熟度模型集成(CMMI-Capability Maturity Model Integration)是CMM模型的最新版本。CMM概述為企業(yè)的發(fā)展規(guī)定過(guò)程成熟級(jí)別,分為5級(jí)(Version 1.0):初始級(jí)(Initial):一般企業(yè)皆具有可重復(fù)級(jí)(Repeatable):成功經(jīng)驗(yàn)可以重復(fù)定義級(jí)(Defined):一套完整的企業(yè)過(guò)程,人員自覺(jué)遵守(培訓(xùn))管理級(jí)(Managed):過(guò)程&產(chǎn)品可度量和控制優(yōu)化級(jí)(Optimizing):過(guò)程持續(xù)改進(jìn)從無(wú)序到有序、從特殊到一般、從
18、定性管理到定量管理、最終達(dá)到動(dòng)態(tài)優(yōu)化CMM概述(續(xù))2. Repeatable1. Initial3. Defined4. ManagedDisciplined ProcessStandard, Consistent ProcessPredictable ProcessContinuously Improving ProcessUnpredictable and poorly controlledCan repeat previously mastered tasksProcess characterized, fairly well understoodProcess measured an
19、d controlledFocus on process improvement5.OptimizingProject Management Integrated Engineering ProcessProduct and Process QualityManaging ChangeDisorder Disciplined Predictable Immature Mature CMM的概念模型關(guān)鍵過(guò)程域KPA:代表一組相關(guān)的工作(活動(dòng))。每個(gè)KPA都有一個(gè)確定的目標(biāo),完成該目標(biāo)即認(rèn)為過(guò)程能力的提高。一般特性CF(Common Features):進(jìn)一步細(xì)分KPA的工作。五個(gè)特性:承諾(co
20、mmitment)準(zhǔn)備(ability)執(zhí)行(activity)度量分析(measurement & analysis)驗(yàn)證(verifying implementation)CMM的五個(gè)級(jí)別Level 1:初始級(jí)過(guò)程無(wú)序且不可見(jiàn)OutInCMM的五個(gè)級(jí)別Level 2:可重復(fù)級(jí)Milestone可見(jiàn),按計(jì)劃開(kāi)發(fā)CMM的五個(gè)級(jí)別Level 2的6個(gè)KPA:側(cè)重于管理需求管理(Requirements Management)軟件項(xiàng)目計(jì)劃(Software Project Planning)軟件項(xiàng)目的跟蹤和監(jiān)控(Software Project Tacking and Oversight)軟件子合
21、同管理(Software Subcontract Management)軟件質(zhì)量保證(Software Quality Assurance)軟件配置管理(Software Configuration Management)CMM的五個(gè)級(jí)別Level 3:定義級(jí)每個(gè)階段的內(nèi)部活動(dòng)可見(jiàn)標(biāo)準(zhǔn)過(guò)程和項(xiàng)目定義過(guò)程裁剪CMM的五個(gè)級(jí)別Level 3的7個(gè)KPA:工程過(guò)程企業(yè)理念機(jī)構(gòu)過(guò)程關(guān)注(Organization Process Focus)機(jī)構(gòu)過(guò)程定義(Organization Process Definition)培訓(xùn)計(jì)劃(Training Program)集成軟件管理(Integrated Sof
22、tware Management)過(guò)程裁剪和定義軟件產(chǎn)品工程(Software Product Engineering)過(guò)程執(zhí)行組間協(xié)調(diào)(Intergroup Coordination)對(duì)等審查(Peer Reviews)CMM的五個(gè)級(jí)別Level 4 管理級(jí)過(guò)程可度量,預(yù)測(cè)值與結(jié)果之間的偏差可控CMM的五個(gè)級(jí)別Level 4的2個(gè)KPA:預(yù)測(cè)量化管理定量過(guò)程管理(Quantitative Process Management)過(guò)程度量軟件質(zhì)量管理(Software Quality Management)產(chǎn)品度量CMM的五個(gè)級(jí)別Level 5 優(yōu)化級(jí)過(guò)程動(dòng)態(tài)調(diào)整、新技術(shù)的采用CMM的五個(gè)級(jí)別L
23、evel 5的3個(gè)KPA:動(dòng)態(tài)優(yōu)化缺陷預(yù)防(Defect Prevention)技術(shù)改變管理(Technology Change Management)過(guò)程改變管理(Process Change Management)能力成熟度模型集成CMMI-Capability Maturity Model Integration是CMM模型的最新版本。CMMI有兩種表示方法:和軟件CMM一樣的階段式表現(xiàn)方法連續(xù)式的表現(xiàn)方法過(guò)程管理項(xiàng)目管理工程支持CMMI的目標(biāo)是質(zhì)量、時(shí)間表和最低的成本關(guān)鍵實(shí)踐CMM結(jié)構(gòu)CMM標(biāo)準(zhǔn)的使用軟件過(guò)程的改進(jìn)(SPI,Software Process Improvement)軟件
24、過(guò)程評(píng)估(SPA,Software Process Assessment)軟件能力評(píng)價(jià)(SCE Software Capability Evaluation)敏捷過(guò)程敏捷不是一個(gè)過(guò)程,是一類過(guò)程的統(tǒng)稱。敏捷方法的兩大主要特征:對(duì)“適應(yīng)性”的強(qiáng)調(diào)對(duì)“人”的關(guān)注做法:快速響應(yīng):引入迭代式的開(kāi)發(fā)手段將整個(gè)軟件生命周期分解為若干個(gè)小的迭代周期獲取切實(shí)有效的客戶反饋提出12條基本原則敏捷開(kāi)發(fā)12條原則我們最優(yōu)先要做的是通過(guò)盡早的、持續(xù)的交付有價(jià)值的軟件來(lái)使客戶滿意。即使到了開(kāi)發(fā)的后期,也歡迎改變需求。敏捷過(guò)程利用變化來(lái)為客戶創(chuàng)造競(jìng)爭(zhēng)優(yōu)勢(shì)。 經(jīng)常性地交付可以工作的軟件,交付的間隔可以從幾個(gè)星期到幾個(gè)月,交
25、付的時(shí)間間隔越短越好。在整個(gè)項(xiàng)目開(kāi)發(fā)期間,業(yè)務(wù)人員和開(kāi)發(fā)人員必須天天都在一起工作。圍繞被激勵(lì)起來(lái)的個(gè)體來(lái)構(gòu)建項(xiàng)目,給他們提供所需的環(huán)境和支持,并且信任他們能夠完成工作。敏捷開(kāi)發(fā)12條原則(續(xù))在團(tuán)隊(duì)內(nèi)部,最具有效果并富有效率的傳遞信息的方法,就是面對(duì)面的交談。工作的軟件是首要的進(jìn)度度量標(biāo)準(zhǔn)。敏捷過(guò)程提倡可持續(xù)的開(kāi)發(fā)速度。責(zé)任人、開(kāi)發(fā)者和用戶應(yīng)該能夠保持一個(gè)長(zhǎng)期的、恒定的開(kāi)發(fā)速度。不斷地關(guān)注優(yōu)秀的技能和好的設(shè)計(jì)會(huì)增強(qiáng)敏捷能力。 簡(jiǎn)單是最根本的。 最好的構(gòu)架、需求和設(shè)計(jì)出于自組織團(tuán)隊(duì)。 每隔一定時(shí)間,團(tuán)隊(duì)會(huì)在如何才能更有效地工作方面進(jìn)行反省,然后相應(yīng)地對(duì)自己的行為進(jìn)行調(diào)整。極限編程極限編程(eXt
26、reme Programming,XP)是一種軟件工程方法學(xué),是敏捷開(kāi)發(fā)中最富有成效的方法學(xué)之一由KentBeck在1996年提出具有強(qiáng)溝通、簡(jiǎn)化設(shè)計(jì)、迅速反饋等特點(diǎn)適合于規(guī)模小、進(jìn)度緊、需求不穩(wěn)定、開(kāi)發(fā)小項(xiàng)目的小團(tuán)隊(duì)。極限編程特點(diǎn):XP模型是“輕量型”或“靈活”的軟件過(guò)程模型與面向?qū)ο笳Z(yǔ)言結(jié)合的開(kāi)發(fā)方案“專家協(xié)作”的開(kāi)發(fā)方式,解決難點(diǎn)問(wèn)題重視客戶反饋核心有四個(gè)要點(diǎn):交流簡(jiǎn)單反饋勇氣交流開(kāi)發(fā)人員與客戶的交流開(kāi)發(fā)人員之間的交流使用結(jié)對(duì)編程開(kāi)發(fā)人員與管理人員的交流簡(jiǎn)單設(shè)計(jì)的簡(jiǎn)單編碼的簡(jiǎn)單注釋的簡(jiǎn)單測(cè)試的簡(jiǎn)單反饋客戶對(duì)軟件的反饋測(cè)試代碼對(duì)功能代碼的反饋先測(cè)試,后編程勇氣接受任務(wù)的勇氣XP常見(jiàn)問(wèn)題XP
27、適合于小型項(xiàng)目(10人左右)?結(jié)對(duì)編程,搭檔如何安排?實(shí)施結(jié)對(duì)編程、集體代碼所有權(quán)之后,如何考核單個(gè)開(kāi)發(fā)人員?77Pair Programming( 結(jié)對(duì)編程 )結(jié)對(duì)編程結(jié)對(duì)編程(Pair-Programming) 是XP中非常重要的實(shí)踐之一。定義:兩個(gè)人坐在同一臺(tái)計(jì)算機(jī)前面,使用相同的鍵盤(pán)和鼠標(biāo)來(lái)開(kāi)發(fā)同樣的一個(gè)模塊,一個(gè)稱為駕駛者(Driver),負(fù)責(zé)代碼的鍵入,另外一個(gè)稱為領(lǐng)航員(Navigator),負(fù)責(zé)監(jiān)看與決策,包括低級(jí)錯(cuò)誤和方向性的錯(cuò)誤。當(dāng)出現(xiàn)的一個(gè)問(wèn)題對(duì)其中一個(gè)人來(lái)說(shuō),難以解決,而恰好是另外一個(gè)人的強(qiáng)項(xiàng)的時(shí)候,那么角色就會(huì)發(fā)生轉(zhuǎn)換。Pair Programming的角色(Role
28、)Driver The one who typesNavigator The one who watches the back角色可以互換的疑問(wèn): 一個(gè)程序兩個(gè)人寫(xiě)是不是一種浪費(fèi)(可是兩份工資,雙倍資源哦)? 編程從來(lái)是一個(gè)人的活動(dòng)。學(xué)校里這么教的,一直以來(lái)也是做么做的。 我不喜歡被人盯著工作,這樣我不自在,無(wú)法工作。 這個(gè)笨家伙老是問(wèn)問(wèn)題,他/她不會(huì)看書(shū)么?我都無(wú)法專心工作了。 另一方面: Pair Programming被很多的大師級(jí)程序員推崇;不少大學(xué)都展開(kāi)對(duì)Pair Programming的研究,并得到正面的結(jié)論; 很多嘗試過(guò)的Developer都開(kāi)始喜歡Pair Programmin
29、g。Pair Programming的疑問(wèn)Pair Programming和Solo Programming的比較一些研究數(shù)據(jù):1999年,University of Uath.兩組學(xué)生,一組獨(dú)自工作,一組Pair Programming。Pair Programming的歷史 1995年,Larry Constantine在他的專欄中第一次提到了在他在P. J. Plaughers software company, Whitesmiths, Ltd觀察到一個(gè)現(xiàn)象:Collaborative Programming“兩個(gè)程序員一起工作,可以比以往更快的交出完成并經(jīng)過(guò)測(cè)試的代碼,而且這些代碼幾
30、乎是沒(méi)有Bug的。”Collaborative Software Process(相對(duì)PSP)1996年,Kent Beck,Ward Cunningham 和Ron Jeffries一起提出了Extreme Programming(XP),其中吸收了Collaborative Programming,并稱為Pair Programming。Pair Programming是XP的一個(gè)key practice,也是XP成功的關(guān)鍵。隨著XP在世界范圍內(nèi)被采用和練習(xí),Pair Programming開(kāi)始被接受。為什么要Pair Programming“The Human eye has an al
31、most infinite capability for not seeing what it does not want to see Programmers, if left to their own devices, will ignore the most glaring errors in their output-errors that anyone else can see in an instant.” - Gerald Weinberg“Knowledge is commonly socially constructed through collaborative effor
32、ts toward shared objectives or by dialogues and challenges brought about by difference in persons perspective” - Salomon“三個(gè)臭皮匠,勝過(guò)一個(gè)諸葛亮” - ?不間斷的不間斷的Code Review1. Peer Code Review,即程序員之間的互相Review缺乏Design Review不能持久,定時(shí)Code Review對(duì)需求和設(shè)計(jì)的不了解導(dǎo)致無(wú)法實(shí)現(xiàn)有效的Review2. Team Code Review什么時(shí)候開(kāi)會(huì)做Review?不可能Team天天開(kāi)會(huì)無(wú)法對(duì)所有
33、的設(shè)計(jì)和Code進(jìn)行Review面子問(wèn)題效率低傳統(tǒng)開(kāi)發(fā)過(guò)程的Review(例如印度的InfoSys公司)的問(wèn)題:不間斷的不間斷的Code ReviewPair Programming提供不間斷的Design review,Unit Test Review,Code Review,Document Review,避免了效果差的Team Code Review,也比抽查式的Peer Code Review有更好的質(zhì)量。(CMM Level 3)Pair Programming中,任何一段代碼都至少被兩雙眼睛看過(guò),兩個(gè)腦袋思考過(guò)。結(jié)合Collective code ownership和小的Task
34、(Small Engineering Task),代碼被不斷的Review。編程方式編程方式避免cow boy式的編程好代碼的衡量標(biāo)準(zhǔn):可讀性和可維護(hù)性硬件設(shè)備價(jià)格的下降和速度的提升,使得代碼效率不是考慮的重點(diǎn)(對(duì)大多數(shù)的商業(yè)應(yīng)用)。對(duì)大部分的商業(yè)項(xiàng)目來(lái)說(shuō),更主要的顧慮是成本。而成本中人工占最大的比例。好的代碼可以減少修改的成本。Pair Programming的互相督促可以提高代碼的可讀性。Pair是一個(gè)最小單位的Team,而任何人都是工作在這樣一個(gè)Team中。Developer的言行都會(huì)影響到其他的Developer( Partner),也受到其他Developer的影響。Pair Pro
35、gramming避免了“我的Code”,使得代碼的責(zé)任不屬于某個(gè)人,而是屬于一個(gè)Pair和整個(gè)Team,從而做到Collective Code Ownership,也避免個(gè)人英雄主義。迫使程序員必須頻繁的交流,增進(jìn)知識(shí)經(jīng)驗(yàn)的交流(Cross-Training)。團(tuán)隊(duì)合作以人為本以人為本同伴的潛在壓力( Peer Pressure )。Pair Programming的過(guò)程也是一個(gè)互相督促的過(guò)程。由于這種督促的壓力,使得程序員更認(rèn)真的工作。每個(gè)人每天的有效工作時(shí)段不超過(guò)3-4個(gè)小時(shí)。Pair Programming中Driver和Navigator的互換可以讓程序員輪流工作,從而避免出現(xiàn)過(guò)度思考
36、而導(dǎo)致觀察力和判斷力出現(xiàn)偏差。潛意識(shí)的有利競(jìng)爭(zhēng)。當(dāng)人在一個(gè)團(tuán)隊(duì)中工作,總是下意識(shí)的努力展現(xiàn)自己的優(yōu)點(diǎn)。工作及時(shí)得到同伴的肯定,自信心和成就感(Self-Satisfaction)增強(qiáng)。覺(jué)得工作是一件愉快( Enjoyable )的事情。結(jié)對(duì)建議Extreme Programming對(duì)實(shí)施的程序員提出了更高的要求。這種要求不是技術(shù)水平,也不是學(xué)歷水平也不是工作經(jīng)驗(yàn)。這種要求是對(duì)一個(gè)人的心智,道德,修養(yǎng)的更高要求。程序員的四怕: 1) 怕自己看上去傻 2) 怕被認(rèn)為是沒(méi)用的 3) 怕自己變的不重要(過(guò)時(shí)) 4) 怕自己不夠好Pair Programming中,編碼不再是私人的工作,而是一種公開(kāi)的“
37、表演”。程序員的代碼,工作方式,技術(shù)水平都變得公開(kāi)和透明。XP開(kāi)發(fā)人員素質(zhì) 一個(gè)XP開(kāi)發(fā)人員具備這樣一些基本素質(zhì):誠(chéng)實(shí),公正,開(kāi)明,勇敢和謙卑!在這些素質(zhì)的基礎(chǔ)之上,才是對(duì)技術(shù)水平,能力和天分等的要求。誠(chéng)實(shí)誠(chéng)實(shí) 公正公正開(kāi)明開(kāi)明 勇氣勇氣 謙卑謙卑 具備這些素質(zhì)才能克服“四怕”,才能成為一個(gè)成熟和專業(yè)的Developer。如何結(jié)對(duì)編程Driver 寫(xiě)設(shè)計(jì)文檔(Class diagram等),進(jìn)行編碼(Unit Test and Business Object)等XP開(kāi)發(fā)流程。Navigator 審閱Driver的文檔、Driver對(duì)編碼等開(kāi)發(fā)流程的執(zhí)行;考慮Unit Test的覆蓋程度;是否需
38、要和如何Refactoring;幫助Driver解決具體的技術(shù)問(wèn)題。Driver和Navigator不斷輪換角色,不要連續(xù)工作超過(guò)一小時(shí),每一小時(shí)休息15分鐘。Navigator要控制開(kāi)發(fā)時(shí)間。主動(dòng)參與 雖然每個(gè)Engineering Task都有owner,但不能一旁觀者的心態(tài)來(lái)做。任何一個(gè)Task都首先是兩個(gè)人的責(zé)任,也是所有人的責(zé)任。沒(méi)有“我的Code”、”你的Code”或“她的Code”,只有“我們的Code”。如何結(jié)對(duì)編程只有水平上的差距,沒(méi)有級(jí)別上的差異。一個(gè)Pair,盡管可能大家的級(jí)別資歷不同,但不管在分析,設(shè)計(jì)或編碼,雙方都擁有平等的決策權(quán)利。Pairs之間互換Partner。
39、每個(gè)Task都應(yīng)該和不同的Developer配對(duì)。每隔一天,甚至是半天,互換Partners。但Task的owner因該繼續(xù)留該Task的Pair中。如果Pair中的一人請(qǐng)假,另一人應(yīng)盡量不要寫(xiě)Production Code。Pair一起加班94沒(méi)有結(jié)對(duì)編程就沒(méi)有XPPair Programming是XP所有的Practices中最被爭(zhēng)議和被認(rèn)為是最難接受。Pair Programming是獲得XP最大價(jià)值的關(guān)鍵。沒(méi)有Pair Programming,無(wú)法實(shí)現(xiàn)有效的Continuous Code Review,代碼質(zhì)量下降。沒(méi)有Peer Pressure,流程的執(zhí)行很容易出現(xiàn)偏差。沒(méi)有Pair
40、 Programming,Communication很容易弱化,進(jìn)而影響Team work。Pair Programming象XP流程中的粘合劑,把各個(gè)環(huán)節(jié)連接起來(lái)實(shí)現(xiàn)最大的價(jià)值。95沒(méi)有結(jié)對(duì)編程就沒(méi)有XP這是引進(jìn)XP時(shí)最難被接受的規(guī)則。但如果在采用其它XP的慣例和規(guī)則時(shí),拋棄Pair Programming,那么會(huì)面對(duì)以下問(wèn)題:如何進(jìn)行有效的Design Review如何進(jìn)行有效的Code Review如何保證代碼質(zhì)量如何保證流程的執(zhí)行如何增進(jìn)Communication如何進(jìn)行Cross-Training如何增強(qiáng)Teamwork96Pair Programming和Open SourceOp
41、en Source現(xiàn)象:Open Source Project的代碼質(zhì)量比很多的商業(yè)軟件(項(xiàng)目)都好。和Pair Programming的共性:有效的Code ReviewCollective code ownershipDistributed Pair Programming分布式的Pair Programming:兩個(gè)Programmers身處不同的物理位置,通過(guò)Sharing 軟件來(lái)實(shí)現(xiàn)Pair Programming。需要Sharing軟件能提供 桌面共享,文字交談,語(yǔ)音交談,甚至是視頻交流。目前這種方法還沒(méi)有被認(rèn)可,主要出現(xiàn)在學(xué)校的關(guān)于XP的研究項(xiàng)目中.面臨的問(wèn)題:Internet的
42、網(wǎng)路延遲工作時(shí)段的約定Pair Programming和Solo Programming的比較雖然Pair Programming的學(xué)生在剛開(kāi)始的階段比獨(dú)自工作的學(xué)生花在同樣Task的時(shí)間較多,但很快Pair Programming的學(xué)生的時(shí)間開(kāi)始大幅度的下降。而獨(dú)立工作的學(xué)生需要花費(fèi)比Pairs更多的時(shí)間來(lái)達(dá)到接近的代碼質(zhì)量。Pair Programming和Solo Programming的比較比較研究項(xiàng)目后的問(wèn)卷調(diào)查發(fā)現(xiàn):Pair Programming能用較少的時(shí)間生產(chǎn)更高質(zhì)量的代碼。Pair Programming的學(xué)生們認(rèn)為自己比一個(gè)人的時(shí)候更勤奮和更聰明的工作,因?yàn)椴幌胱屪约旱膒
43、artner失望。Pair Programming的學(xué)生認(rèn)為自己比一個(gè)人的時(shí)候更專著,緊湊和由紀(jì)律的工作,而且是持續(xù)的(因?yàn)閬?lái)自Partner的Pair-Pressure)。而獨(dú)立工作的學(xué)生也可以專著和緊湊的工作,但往往不持續(xù)。Pair Programming的學(xué)生對(duì)自己的工作更有信心和成就感。Pair Programming的學(xué)生覺(jué)得工作很愉快,很愿意很partner一起工作。在緊張時(shí)間安排和繁重的工作壓力下,獨(dú)自工作的學(xué)生很容易蛻變?yōu)闆](méi)有紀(jì)律的Programmer。Pair Programming是個(gè)漸進(jìn)的過(guò)程有效率的Pair Programming不是一天就能做到的。Pair Progr
44、amming是一個(gè)相互學(xué)習(xí),相互磨合的一個(gè)漸進(jìn)過(guò)程。Developers需要時(shí)間來(lái)適應(yīng)這種新的開(kāi)發(fā)模式。剛開(kāi)始的Pair Programming很可能不比Solo Programming有更高的效率。但適應(yīng)后的Pairs的開(kāi)發(fā)質(zhì)量和開(kāi)發(fā)時(shí)間都比Solo Programming有大幅度的改善。結(jié)對(duì)編程優(yōu)勢(shì):可以減少風(fēng)險(xiǎn)可以使團(tuán)隊(duì)生產(chǎn)效率更高是知識(shí)傳播的最好途徑可以打造出最佳的合作團(tuán)隊(duì)??梢陨筛玫拇a三個(gè)方面的應(yīng)用:教育學(xué)結(jié)對(duì)學(xué)習(xí)工業(yè)界結(jié)對(duì)開(kāi)發(fā)與編程分布式結(jié)對(duì)編程環(huán)境結(jié)對(duì)編程研究教育學(xué)研究結(jié)對(duì)編程學(xué)習(xí)效果研究結(jié)對(duì)雙方的相容性研究結(jié)對(duì)編程過(guò)程研究軟件工業(yè)界結(jié)對(duì)編程實(shí)踐方式社會(huì)動(dòng)力學(xué)研究個(gè)人編程能
45、力的增強(qiáng)分布式結(jié)對(duì)編程結(jié)對(duì)編程開(kāi)發(fā)環(huán)境研究開(kāi)發(fā)結(jié)對(duì)編程工具的需求適合開(kāi)展分布式結(jié)對(duì)編程的工具研究結(jié)對(duì)編程與測(cè)試驅(qū)動(dòng)開(kāi)發(fā)測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(Test Driven Development,TDD)思想:開(kāi)發(fā)之前首先完成測(cè)試用例編寫(xiě);然后編寫(xiě)代碼和測(cè)試;測(cè)試通過(guò)后即需增加新功能。優(yōu)勢(shì):測(cè)試優(yōu)先,保證質(zhì)量結(jié)合結(jié)對(duì)編程結(jié)對(duì)編程與代碼重構(gòu)重構(gòu)就是代碼的重新設(shè)計(jì)。目的:得到好的代碼和架構(gòu),易修改、易理解適應(yīng)需求結(jié)對(duì)編程:審查代碼理解代碼反饋結(jié)對(duì)編程與簡(jiǎn)單設(shè)計(jì)簡(jiǎn)單設(shè)計(jì):達(dá)到目前需求即可結(jié)對(duì)編程可以達(dá)到簡(jiǎn)單結(jié)對(duì)編程方法面對(duì)面結(jié)對(duì)編程分布式結(jié)對(duì)編程軟件工程實(shí)踐軟件工程實(shí)踐的精髓是理解問(wèn)題、計(jì)劃解決方案、實(shí)施計(jì)劃和檢查
46、結(jié)果的精確度等方面通用的框架活動(dòng)包括:溝通計(jì)劃建模部署普適性活動(dòng)軟件工程實(shí)踐核心原則:存在價(jià)值保持簡(jiǎn)潔維護(hù)視圖生產(chǎn)者要讓消費(fèi)者理解面向未來(lái)計(jì)劃復(fù)用認(rèn)真思考軟件工程實(shí)踐溝通實(shí)踐:包括決定項(xiàng)目涉及人的信息和溝通需求計(jì)劃實(shí)踐:是軟件開(kāi)發(fā)過(guò)程的準(zhǔn)備階段,包括定義問(wèn)題、可行性分析、制定計(jì)劃模型實(shí)踐:創(chuàng)建分析模型和設(shè)計(jì)模型小結(jié)軟件工程是一種層次化技術(shù),包括過(guò)程、技術(shù)和工具。軟件過(guò)程是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。軟件過(guò)程框架定義了若干個(gè)小的框架活動(dòng),為完整的軟件開(kāi)發(fā)過(guò)程建立了基礎(chǔ)。軟件過(guò)程框架的通用過(guò)程框架活動(dòng)包括溝通、計(jì)劃、建模、構(gòu)建和部署。能力成熟度模
47、型(CMM)是改進(jìn)軟件過(guò)程的有效策略。它的基本思想是通過(guò)改進(jìn)對(duì)軟件過(guò)程的管理來(lái)提高軟件生產(chǎn)率和軟件質(zhì)量。敏捷方法是一組敏捷實(shí)踐技術(shù)的總稱,包括極限編程、自適應(yīng)軟件開(kāi)發(fā)、動(dòng)態(tài)系統(tǒng)開(kāi)發(fā)和特征驅(qū)動(dòng)開(kāi)發(fā)等等。軟件工程實(shí)踐包括概念、原則、方法和在整個(gè)軟件開(kāi)發(fā)過(guò)程中所使用的工具。軟件工程實(shí)踐的通用框架活動(dòng)包括溝通實(shí)踐、計(jì)劃實(shí)踐、建模實(shí)踐、構(gòu)造實(shí)踐和部署實(shí)踐。第3章 軟件過(guò)程模型(內(nèi)容提要)瀑布模型增量模型螺旋模型協(xié)同開(kāi)發(fā)模型面向?qū)ο竽P兔嫦蚍矫娴能浖_(kāi)發(fā)軟件生存周期軟件也有一個(gè)從生到死的過(guò)程,這個(gè)過(guò)程一般稱之為軟件的軟件生存周期或生命周期(Software Development Life Cycle)軟
48、件生存周期可劃分為定義、開(kāi)發(fā)和運(yùn)行三個(gè)時(shí)期,每個(gè)時(shí)期又細(xì)分為若干個(gè)階段。把整個(gè)軟件生存周期劃分為若干階段,使得每個(gè)階段有明確的任務(wù),使規(guī)模大,結(jié)構(gòu)復(fù)雜和管理復(fù)雜的軟件開(kāi)發(fā)變的容易控制和管理。軟件生存周期包括可行性分析、項(xiàng)目計(jì)劃、需求分析、軟件設(shè)計(jì)、編碼與測(cè)試、維護(hù)等階段,每個(gè)階段有包含一系列的活動(dòng)。瀑布模型瀑布模型將軟件生命周期劃分為軟件計(jì)劃、需求分析和定義、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、運(yùn)行和維護(hù)這6個(gè)階段,規(guī)定了它們自上而下、相互銜接的固定次序,如同瀑布流水逐級(jí)下落。從本質(zhì)來(lái)講,它是一個(gè)軟件開(kāi)發(fā)架構(gòu),開(kāi)發(fā)過(guò)程是通過(guò)一系列階段順序展開(kāi)的,從系統(tǒng)需求分析開(kāi)始直到產(chǎn)品發(fā)布和維護(hù),每個(gè)階段都會(huì)產(chǎn)生循環(huán)反饋.瀑
49、布模型示意圖瀑布模型它是一個(gè)軟件開(kāi)發(fā)架構(gòu),開(kāi)發(fā)過(guò)程是通過(guò)一系列階段順序展開(kāi)的。每個(gè)階段都會(huì)產(chǎn)生循環(huán)反饋各個(gè)階段產(chǎn)生的文檔是維護(hù)軟件產(chǎn)品時(shí)必不可少的,沒(méi)有文檔的軟件幾乎是不可能維護(hù)的。瀑布模型是一種文檔驅(qū)動(dòng)的過(guò)程模型瀑布模型特點(diǎn)順序性和依賴性推遲實(shí)現(xiàn)質(zhì)量保證的觀點(diǎn)是一種線性模型強(qiáng)調(diào)文檔的作用增量模型增量模型(Incremental Model)也稱為漸增模型,是在項(xiàng)目的開(kāi)發(fā)過(guò)程中以一系列的增量方式開(kāi)發(fā)系統(tǒng)。軟件被作為一系列的增量構(gòu)件來(lái)設(shè)計(jì)、實(shí)現(xiàn)、集成和測(cè)試,每一個(gè)構(gòu)件是由多種相互作用的模塊所形成的提供特定功能的代碼片段構(gòu)成.增量方式包括:增量開(kāi)發(fā):以一定的時(shí)間間隔開(kāi)發(fā)部分工作軟件增量提交:以一定
50、的時(shí)間間隔增量方式向用戶提交工作軟件及相應(yīng)文檔增量模型融合了線性順序模型的基本成份和原型實(shí)現(xiàn)模型的迭代特征。增量模型分為漸增模型和原型模型漸增模型是瀑布模型的變種,有兩類漸增模型:增量構(gòu)造模型:它在瀑布模型基礎(chǔ)上,對(duì)一些階段進(jìn)行整體開(kāi)發(fā)整體開(kāi)發(fā),對(duì)另一些階段進(jìn)行增量開(kāi)發(fā)。前面的開(kāi)發(fā)階段按瀑布模型進(jìn)行整體開(kāi)發(fā),后面的開(kāi)發(fā)階段按增量提增量提交交。演化提交模型:它在瀑布模型的基礎(chǔ)上,所有階段都進(jìn)行增量開(kāi)發(fā)增量開(kāi)發(fā),也就是說(shuō)不僅是增量開(kāi)發(fā),也是增量提交增量提交。增量構(gòu)造模型需求分析設(shè)計(jì)編碼1測(cè)試1測(cè)試2編碼2編碼3測(cè)試3螺旋模型螺旋模型(Spiral Model)是結(jié)合了瀑布模型和快速原型模型的迭代開(kāi)
51、發(fā)模型強(qiáng)調(diào)了其他模型均忽略了的風(fēng)險(xiǎn)分析:風(fēng)險(xiǎn)識(shí)別風(fēng)險(xiǎn)分析風(fēng)險(xiǎn)控制特別適合于大型復(fù)雜的系統(tǒng)每一個(gè)周期都包括需求定義、風(fēng)險(xiǎn)分析、工程實(shí)現(xiàn)和評(píng)審螺旋模型示意圖螺旋模型活動(dòng)四個(gè)象限分別代表了以下活動(dòng):制定計(jì)劃:確定軟件目標(biāo),選定實(shí)施方案,確定項(xiàng)目開(kāi)發(fā)的限制條件; 風(fēng)險(xiǎn)分析:分析評(píng)估所選方案,考慮如何識(shí)別和消除風(fēng)險(xiǎn);實(shí)施工程:實(shí)施軟件開(kāi)發(fā)和驗(yàn)證;客戶評(píng)估:評(píng)價(jià)開(kāi)發(fā)工作,提出修正建議,制定下一步計(jì)劃。螺旋模型是風(fēng)險(xiǎn)驅(qū)動(dòng)的模型面向?qū)ο筮^(guò)程模型面向?qū)ο筮^(guò)程模型面向?qū)ο笫且环N的程序設(shè)計(jì)方法,或者說(shuō)它是一種程序設(shè)計(jì)范型?;舅枷胧鞘褂脤?duì)象,類,繼承,封裝,消息等基本概念來(lái)進(jìn)行程序設(shè)計(jì)。面向?qū)ο蟮囊兀?抽象:強(qiáng)調(diào)
52、實(shí)體的本質(zhì)、內(nèi)在的屬性,忽略一些無(wú)關(guān)緊要的屬性。類實(shí)現(xiàn)了對(duì)象的數(shù)據(jù)(即狀態(tài))和行為的抽象,是對(duì)象的共性的抽象。封裝性:指所有軟件部件內(nèi)部都有明確的范圍以及清楚的外部邊界。 共享性:面向?qū)ο蟮奶卣鳎簩?duì)象惟一性;分類性;繼承性;多態(tài)性(多形性)。統(tǒng)一過(guò)程統(tǒng)一過(guò)程A software development process:是一個(gè)將用戶需求轉(zhuǎn)是一個(gè)將用戶需求轉(zhuǎn)化為軟件系統(tǒng)所需要的活動(dòng)的集合?;癁檐浖到y(tǒng)所需要的活動(dòng)的集合。A process framework:一個(gè)簡(jiǎn)單的過(guò)程,也是一個(gè)通用一個(gè)簡(jiǎn)單的過(guò)程,也是一個(gè)通用的過(guò)程框架。的過(guò)程框架。Component-based:軟件構(gòu)件軟件構(gòu)件+接口接口T
53、he standard - employing the UML(Unified Modeling Language)use-case drivenarchitecture-centriciterative and incrementalThe Evolution of the Unified Process1967: a predecessorof Objectory1976-80: formalization &generalization1997: Objectory 4.11987-95: Objectory 1.0-3.8SDLA book: The Unified ProcessA
54、product: The Rational Unified Process1998: Unified ProcessOMTBoochRationals best practices: Kruchten Royce and many othersThe Next Industry StandardA Software Development ProcessSoftware development is the process of developing software from requirements.New or changedrequirementsNew or changed syst
55、emSoftware DevelopmentProcess統(tǒng)一過(guò)程是用況驅(qū)動(dòng)的用況模型(use case model)要素:用戶(user)用況(use case)動(dòng)作(action)用況驅(qū)動(dòng)(use-case driven):用況可以驅(qū)動(dòng)開(kāi)發(fā)過(guò)程:用況不只是確定系統(tǒng)需求的工具,還能驅(qū)動(dòng)系統(tǒng)設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試的進(jìn)行。不能孤立地選擇用況UC: 吃晚餐 用戶動(dòng)作 系統(tǒng)響應(yīng) 點(diǎn)餐上開(kāi)胃菜上主餐請(qǐng)上點(diǎn)心上點(diǎn)心買單結(jié)賬開(kāi)收據(jù)拿走收據(jù)統(tǒng)一過(guò)程是以構(gòu)架為中心的軟件構(gòu)架包含了系統(tǒng)中最重要的靜態(tài)和動(dòng)態(tài)特征構(gòu)架刻畫(huà)了系統(tǒng)的整體設(shè)計(jì),突出系統(tǒng)的重要特征構(gòu)架的價(jià)值依賴于執(zhí)行該任務(wù)的人的素質(zhì)過(guò)程可以幫助構(gòu)架設(shè)計(jì)師確定正確的目標(biāo)用況和構(gòu)架的關(guān)系:用況對(duì)應(yīng)功能(function)構(gòu)架對(duì)應(yīng)表現(xiàn)形式(form)用況和構(gòu)架相互影響,并必須進(jìn)化統(tǒng)一過(guò)程是以構(gòu)架
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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年重慶年貨運(yùn)從業(yè)資格證考試題答案
- 酒店住宿租賃合同模板
- 臨時(shí)演出場(chǎng)地租賃合同樣本
- 綠寶石礦建設(shè)土石方施工合同
- 食品加工銷售延期付款協(xié)議
- 商業(yè)步行街房產(chǎn)過(guò)戶模板
- 基坑支護(hù)施工合同:交通設(shè)施篇
- 城市燃?xì)饨?jīng)營(yíng)許可管理辦法
- 分離廠電力系統(tǒng)安裝合同
- 銀行押運(yùn)車司機(jī)聘用協(xié)議
- 《個(gè)體防護(hù)裝備安全管理規(guī)范AQ 6111-2023》知識(shí)培訓(xùn)
- 客戶管理系統(tǒng)技術(shù)服務(wù)合同
- 北京交通大學(xué)《成本會(huì)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 治療皮膚病藥膏市場(chǎng)需求與消費(fèi)特點(diǎn)分析
- 醫(yī)院電梯維保服務(wù)方案及應(yīng)急措施
- 設(shè)備安裝應(yīng)急應(yīng)對(duì)預(yù)案
- 企業(yè)合規(guī)風(fēng)險(xiǎn)控制手冊(cè)
- 2023-2024學(xué)年人教版選擇性必修2 1-1 種群的數(shù)量特征 教案
- 7.2+做全球發(fā)展的貢獻(xiàn)者+課件-高中政治統(tǒng)編版選擇性必修一當(dāng)代國(guó)際政治與經(jīng)濟(jì)
- 2024年大學(xué)試題(藝術(shù)學(xué))-藝術(shù)導(dǎo)論考試近5年真題集錦(頻考類試題)帶答案
- 基于區(qū)塊鏈的碳交易研究
評(píng)論
0/150
提交評(píng)論