版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、課程總學(xué)時(shí): 32課程性質(zhì):考 試先修要求:語言程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu) 數(shù)據(jù)庫技術(shù)等主講老師:劉冬懿 聯(lián)系方式ldy_軟件工程教學(xué)方式:教學(xué)方式: 課堂講授(多媒體教學(xué));課堂講授(多媒體教學(xué)); 學(xué)生上機(jī)實(shí)習(xí);學(xué)生上機(jī)實(shí)習(xí); 通過通過Email與與Web進(jìn)行網(wǎng)上輔導(dǎo)。進(jìn)行網(wǎng)上輔導(dǎo)。 考查方式:考查方式:平時(shí)成績平時(shí)成績10%(考勤);(考勤);作業(yè)成績作業(yè)成績20%(平時(shí)作業(yè))(平時(shí)作業(yè))期末考試占期末考試占70%。 課程教材課程教材作者:作者: 竇萬峰竇萬峰 出版社:機(jī)械工業(yè)出版社出版社:機(jī)械工業(yè)出版社 軟件工程導(dǎo)論軟件工程導(dǎo)論張海藩張海藩 清華大學(xué)出版社清華大學(xué)出版
2、社 參考書目參考書目 (References) 實(shí)用軟件工程實(shí)用軟件工程 (第二版)(第二版)鄭人杰、殷人昆、陶永雷鄭人杰、殷人昆、陶永雷 清華大學(xué)出版社清華大學(xué)出版社 軟件工程設(shè)計(jì)導(dǎo)論軟件工程設(shè)計(jì)導(dǎo)論-過程、原過程、原理與模式理與模式(UML2.0版版) (美美)Christopher Fox 清華大學(xué)出版社清華大學(xué)出版社 參考書目參考書目 (References)Introduction to the Personal Software ProcessWatts S.Humphrey吳超英等譯 人民郵電出版社人民郵電出版社 Introduction to the Team Software
3、 ProcessWatts S.Humphrey韓丹韓丹等譯 人民郵電出版社人民郵電出版社 參考書目參考書目 (References) Frederick P. Brooks著著 清華大學(xué)出版社清華大學(xué)出版社 Tom Demarco著著 清華大學(xué)出版社清華大學(xué)出版社 參考書目參考書目 (References)相關(guān)網(wǎng)站1 IBM開發(fā)者:http:/ UML China: http:/ 3 軟件工程俱樂部:/4 UML軟件工程組織:http:/ 5 軟件工程專家網(wǎng):http:/ 中國系統(tǒng)分析員:http:/ 我們國家有30多所軟件學(xué)院,但是幾百
4、個(gè)高校都有計(jì)算機(jī)系,它們的區(qū)別主要是:計(jì)算機(jī)專業(yè)主要是計(jì)算機(jī)科學(xué)與工程,軟件學(xué)院主要是計(jì)算機(jī)軟件這個(gè)學(xué)科,而且軟件工程這個(gè)專業(yè)還要展開,比如:需求分析,面向?qū)ο蟮男枨蠓治龊驮O(shè)計(jì),項(xiàng)目管理,進(jìn)度控制,統(tǒng)一建模語言,文檔寫作等。軟件工程是不是背背就能過的課軟件工程絕對(duì)不是背背就能過的課,計(jì)算機(jī)理論可能是一個(gè)人就能研究出來,軟件工程是成千萬網(wǎng)軟件工程師幾十年來失敗的教訓(xùn)凝結(jié)成的結(jié)晶。計(jì)算級(jí)專業(yè)的人必須具備任何語言1小時(shí)上手的能力,最起碼要在10分鐘把hello world做出來。 學(xué)好課程,只是萬里長征的第一步即使你學(xué)好了以上課程,我們?nèi)匀徊畹煤苓h(yuǎn),我們只弄清學(xué)什么了,但是還不知道做什么。所以我們要
5、盡可能的多做設(shè)計(jì),別一個(gè)人們悶著頭做,兩三個(gè)人合作一個(gè)項(xiàng)目,不會(huì)交流的計(jì)算機(jī)人員30歲以后肯定會(huì)下崗。題目呢,盡量是一些簡單的底層開發(fā),可以去國外大學(xué)網(wǎng)站上搜一搜,要自信你一定能做出來,畢竟不是什么難題,而是我們應(yīng)當(dāng)具備的素質(zhì)。 竇萬峰計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院南京師范大學(xué)2013年9月第一部分:軟件工程基礎(chǔ)什么是軟件工程?什么是工程化思想?什么是軟件過程?有哪些過程模型?如何選擇與建立過程模型?什么是統(tǒng)一過程?什么是敏捷過程?有哪些模型?什么是軟件工程實(shí)踐?第1章 軟件工程概述(內(nèi)容提要)軟件的本質(zhì)軟件工程的基本概念軟件工程化思想軟件工程兩大范型軟件工程思想與基本原理軟件工程基本活動(dòng)什么是軟件?三
6、要素:軟件=程序+文檔+數(shù)據(jù)特性:復(fù)雜性一致性退化性易變性移植性高成本程序是按事先設(shè)計(jì)的功能和性能要求編寫的指令序列;數(shù)據(jù)是使程序能正常操縱信息的數(shù)據(jù)結(jié)構(gòu);文檔是與程序開發(fā)、維護(hù)和使用有關(guān)的圖文材料。軟件技術(shù)演化第一階段:程序設(shè)計(jì)階段。1946年到60年代初,其主要特征是程序生產(chǎn)方式為個(gè)體手工方式。 第二階段:程序系統(tǒng)階段。60年代初到70年代初,軟件工程學(xué)科誕生。軟件的開發(fā)方式由個(gè)體生產(chǎn)發(fā)展到了小組生產(chǎn),軟件的開發(fā)與維護(hù)費(fèi)用以驚人的速度增加,維護(hù)困難,導(dǎo)致軟件危機(jī)。第三階段:傳統(tǒng)軟件工程階段。20世紀(jì)70年代中期至80年代中期,軟件工程師把工程化的思想加入到軟件的開發(fā)過程中,用工程化的原則、
7、方法和標(biāo)準(zhǔn)來開發(fā)和維護(hù)軟件。第四階段:面向?qū)ο箅A段。20世紀(jì)80年代中期至今,面向?qū)ο蟮姆椒▽W(xué)受到了人們的重視,促進(jìn)了軟件業(yè)的飛速發(fā)展,軟件產(chǎn)業(yè)在世界經(jīng)濟(jì)中已經(jīng)占有舉足輕重的地位。發(fā)展趨勢軟件服務(wù)多樣性:中間件開放性:新型中間件平臺(tái)軟件危機(jī)兩個(gè)方面的問題:如何開發(fā)軟件如何維護(hù)軟件表現(xiàn):規(guī)模大復(fù)雜度增加需求量增大價(jià)格昂貴供需差增大開發(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)過程可以避免這種錯(cuò)誤9軟件錯(cuò)誤的實(shí)例Therac 25 放射醫(yī)療儀事故 1986 年由于軟件錯(cuò)誤導(dǎo)致放射過量,2 人死亡 溢出錯(cuò)誤是導(dǎo)致問題的主要原因之一 千年蟲問題 迫于計(jì)算機(jī)存儲(chǔ)空間的限制,程序員將日期縮減為 2 位數(shù) 世界各地更換或升級(jí) 2000 年問題軟件的花費(fèi)超過數(shù)億美元 其他 電子郵件的病毒 拒絕訪問等的網(wǎng)絡(luò)攻擊 網(wǎng)絡(luò)事務(wù)的安全問題11軟件危機(jī)解決途徑軟件危機(jī)解決途徑重視需求分析,明確與確切表達(dá)需求重視與客戶溝通與交流統(tǒng)一的、公認(rèn)的方法論和規(guī)范指導(dǎo)重視設(shè)計(jì)和實(shí)現(xiàn)過程的資料充分的檢測工作軟件工程定義B.W.Boehm的定義:運(yùn)用現(xiàn)代科學(xué)技術(shù)知識(shí)來設(shè)計(jì)并構(gòu)造計(jì)算機(jī)程序及
9、為開發(fā)、運(yùn)行和維護(hù)這些程序所必須的相關(guān)文件資料。Fritz Bauer的定義:軟件工程是為了經(jīng)濟(jì)地獲得能夠在實(shí)際機(jī)器上有效運(yùn)行的可靠軟件而建立和使用的一系列完善的工程化原則。1983年美國IEEE軟件工程標(biāo)準(zhǔn)術(shù)語的定義為:軟件工程是開發(fā)、運(yùn)行、維護(hù)和修復(fù)軟件的系統(tǒng)方法,其中“軟件”的定義為:計(jì)算機(jī)程序、方法、規(guī)則、相關(guān)的文檔資料以及在計(jì)事機(jī)上運(yùn)行時(shí)所必需的數(shù)據(jù)。軟件工程化思想軟件工程化思想把軟件看作是一個(gè)工程產(chǎn)品兩個(gè)方面:軟件開發(fā)技術(shù)軟件工程管理原因:缺乏軟件過程控制能力能力成熟模型(Capability Maturity Model)體現(xiàn):工程化管理軟件工程的三要素軟件工程的三要素 軟件工程
10、以關(guān)注軟件質(zhì)量為目標(biāo),包括過程、方法和工具三個(gè)要素。 過程 支持軟件生命周期的所有活動(dòng) 方法 為軟件開發(fā)過程提供“如何做”的技術(shù) 工具 為軟件開發(fā)方法提供自動(dòng)的或半自動(dòng)的軟件支撐環(huán)境30方法質(zhì)量工具過程軟件工程基本原理軟件工程基本原理推遲實(shí)現(xiàn)原理逐步求精原理分解與抽象原理信息隱蔽原理質(zhì)量保證原理軟件工程基本原則軟件工程基本原則分階段的軟件生存周期堅(jiān)持進(jìn)行階段評(píng)審實(shí)行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計(jì)技術(shù)明確職責(zé)開發(fā)小組的人員應(yīng)少而精不斷改進(jìn)開發(fā)過程軟件工程兩大范型軟件工程兩大范型結(jié)構(gòu)化開發(fā)范型特征:結(jié)構(gòu)化技術(shù)要么面向行為,要么面向數(shù)據(jù)構(gòu)成結(jié)構(gòu)化開發(fā)范型的技術(shù)包括:結(jié)構(gòu)化分析結(jié)構(gòu)化設(shè)計(jì)結(jié)構(gòu)化編程結(jié)構(gòu)
11、化測試結(jié)構(gòu)化維護(hù)軟件工程兩大范型軟件工程兩大范型面向?qū)ο蠓缎吞卣鳎簩?duì)象視作一個(gè)融合了數(shù)據(jù)及在其上操作的行為的、統(tǒng)一的軟件組件。技術(shù)包括:面向?qū)ο蠓治雒嫦驅(qū)ο笤O(shè)計(jì)面向?qū)ο缶幊堂嫦驅(qū)ο鬁y試面向?qū)ο缶S護(hù)優(yōu)勢:對(duì)象的概念符合業(yè)務(wù)或領(lǐng)域的客觀實(shí)際維護(hù)容易結(jié)構(gòu)化方法 vs. 面向?qū)ο蠓椒ㄓ?jì)算機(jī)35測試問題域需求分析總體設(shè)計(jì)詳細(xì)設(shè)計(jì)編程自然語言傳統(tǒng)的編程語言分析與設(shè)計(jì)的鴻溝計(jì)算機(jī)問題域面向?qū)ο蠓治雒嫦驅(qū)ο笤O(shè)計(jì)面向?qū)ο缶幊堂嫦驅(qū)ο鬁y試自然語言面向?qū)ο蟮木幊陶Z言重型與輕型軟件工程重型軟件工程文檔齊全規(guī)范化和程式化周期長推遲實(shí)現(xiàn)輕型軟件工程非正式交流重視代碼重視測試響應(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)過程改進(jìn)活動(dòng)小結(jié)軟件工程的是主旨以工程化的思想進(jìn)行軟件開發(fā),以生產(chǎn)高質(zhì)量和高效率的軟件。軟件工程化思想的核心是,把軟件看作是一個(gè)工程產(chǎn)品。軟件工程方法學(xué)分別是傳統(tǒng)結(jié)構(gòu)化范型和面向?qū)ο蠓缎汀\浖こ袒顒?dòng)包括開發(fā)活動(dòng)、管理活動(dòng)和過程改進(jìn)活動(dòng)。第2章 軟件過程(內(nèi)容提要)什么是軟件過程?什么軟件生命周期?能力成熟度模型敏捷過程結(jié)對(duì)編程軟件過程定義:軟件過程是為了開發(fā)出軟件產(chǎn)品,或者是為了完成軟件工程項(xiàng)目而需要完成的有關(guān)軟件工程的活動(dòng)通常使用生命周期模型簡潔地描述軟件過程層次:軟件工程是一門建立在以質(zhì)量焦點(diǎn)為基礎(chǔ)的層次化綜合技術(shù)過程:定義階段和管理方法:技
13、術(shù)支持工具:自動(dòng)化實(shí)施支持軟件過程框架軟件過程框架定義:框架是實(shí)現(xiàn)整個(gè)軟件開發(fā)活動(dòng)的基礎(chǔ),并且那些與過程有關(guān)的角色、職責(zé)的定義以及實(shí)現(xiàn)也都離不開框架的支持兩個(gè)方面的內(nèi)容組織及管理框架技術(shù)及工具框架軟件過程環(huán)境組織、管理的角色和職責(zé)技術(shù)環(huán)境軟件過程框架軟件過程框架組織與管理框架:過程改進(jìn)活動(dòng)及角色與職責(zé)技術(shù)與工具框架:技術(shù)及自動(dòng)化活動(dòng)工具框架活動(dòng):溝通策劃建模構(gòu)建部署軟件生存周期過程(表2-1)系統(tǒng)語境的過程協(xié)議過程組(2個(gè)過程,13個(gè)活動(dòng),52個(gè)任務(wù))項(xiàng)目過程組(7個(gè)過程,23個(gè)活動(dòng),72個(gè)任務(wù))技術(shù)過程組(11個(gè)過程,26個(gè)活動(dòng),64個(gè)任務(wù))組織上項(xiàng)目使能過程組(5個(gè)過程,15個(gè)活動(dòng),48個(gè)
14、任務(wù))針對(duì)軟件開發(fā)的過程軟件實(shí)現(xiàn)過程組(7個(gè)過程,7個(gè)活動(dòng),39個(gè)任務(wù))軟件支持過程組(8個(gè)過程,25個(gè)活動(dòng),68個(gè)任務(wù))軟件復(fù)用過程組(3個(gè)過程,14個(gè)活動(dòng),62個(gè)任務(wù))軟件過程模型軟件過程模型把軟件生命周期中各項(xiàng)開發(fā)活動(dòng)的流程用一個(gè)合理的框架開發(fā)模型來規(guī)范描述,這就是軟件過程模型,也稱為軟件生命周期模型.軟件過程模型是一種就是軟件過程抽象.軟件過程模型是從一個(gè)特定的角度表現(xiàn)一個(gè)過程,一般使用直觀的圖形標(biāo)識(shí)軟件開發(fā)的過程,主要根據(jù)軟件的類型、規(guī)模,特別是軟件的開發(fā)方法、開發(fā)環(huán)境等多種因素確立過程模型。軟件過程技術(shù)產(chǎn)品與過程選擇軟件過程過程評(píng)估CMMI/CMMISO9001:2000個(gè)人軟件過
15、程(PSP):是一種可用于控制、管理和改進(jìn)個(gè)人工作方式的自我持續(xù)改進(jìn)過程,是一個(gè)包括軟件開發(fā)表格、指南和規(guī)程的結(jié)構(gòu)化框架。團(tuán)隊(duì)軟件過程(TSP):幫助軟件開發(fā)組織建立成熟和紀(jì)律性的工程實(shí)踐,生產(chǎn)安全和可信的軟件個(gè)人軟件過程(PSP)內(nèi)容PSP0是PSP的個(gè)人度量過程,其目的是建立個(gè)體過程基線。PSP1是個(gè)人規(guī)劃過程,引入了基于估計(jì)的計(jì)劃方法PROBE,用自己的歷史數(shù)據(jù)來預(yù)測新程序大小和開發(fā)時(shí)間,并使用線性回歸方法估計(jì)參數(shù),確定置信區(qū)間以評(píng)價(jià)預(yù)測的可信程度。PSP2是個(gè)人質(zhì)量管理,根據(jù)程序的缺陷建立檢測表,按照檢測表進(jìn)行設(shè)計(jì)復(fù)查和代碼復(fù)查,以便及早發(fā)現(xiàn)缺陷,使修復(fù)缺陷的代價(jià)最小。PSP3的目標(biāo)是
16、把個(gè)體開發(fā)小程序所能達(dá)到的生產(chǎn)效率和生產(chǎn)質(zhì)量,延伸到大型程序。團(tuán)隊(duì)軟件過程(TSP)TSP 采用了循環(huán)遞增的開發(fā)策略,整個(gè)軟件生產(chǎn)過程由多個(gè)循環(huán)出現(xiàn)的開發(fā)周期組成,每個(gè)開發(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是由美國卡內(nèi)基梅隆大學(xué)的軟件工程研究所(SEI)開發(fā)的軟件成熟度模型。思想:管理軟件過程的方法不當(dāng)引起的問題,導(dǎo)致新軟件技術(shù)的運(yùn)用并不會(huì)自動(dòng)提高軟件的生產(chǎn)率和質(zhì)量。CMM為軟件企業(yè)的過程能力提供了一個(gè)
17、階梯式的改進(jìn)框架,它基于過去所有軟件工程過程改進(jìn)的成果,吸取了以往軟件工程的經(jīng)驗(yàn)教訓(xùn),提供了一個(gè)基于過程改進(jìn)的框架。能力成熟度模型集成(CMMI-Capability Maturity Model Integration)是CMM模型的最新版本。CMM概述為企業(yè)的發(fā)展規(guī)定過程成熟級(jí)別,分為5級(jí)(Version 1.0):初始級(jí)(Initial):一般企業(yè)皆具有可重復(fù)級(jí)(Repeatable):成功經(jīng)驗(yàn)可以重復(fù)定義級(jí)(Defined):一套完整的企業(yè)過程,人員自覺遵守(培訓(xùn))管理級(jí)(Managed):過程&產(chǎn)品可度量和控制優(yōu)化級(jí)(Optimizing):過程持續(xù)改進(jìn)從無序到有序、從特殊到一般、從
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)鍵過程域KPA:代表一組相關(guān)的工作(活動(dòng))。每個(gè)KPA都有一個(gè)確定的目標(biāo),完成該目標(biāo)即認(rèn)為過程能力的提高。一般特性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í)過程無序且不可見OutInCMM的五個(gè)級(jí)別Level 2:可重復(fù)級(jí)Milestone可見,按計(jì)劃開發(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)可見標(biāo)準(zhǔn)過程和項(xiàng)目定義過程裁剪CMM的五個(gè)級(jí)別Level 3的7個(gè)KPA:工程過程企業(yè)理念機(jī)構(gòu)過程關(guān)注(Organization Process Focus)機(jī)構(gòu)過程定義(Organization Process Definition)培訓(xùn)計(jì)劃(Training Program)集成軟件管理(Integrated Sof
22、tware Management)過程裁剪和定義軟件產(chǎn)品工程(Software Product Engineering)過程執(zhí)行組間協(xié)調(diào)(Intergroup Coordination)對(duì)等審查(Peer Reviews)CMM的五個(gè)級(jí)別Level 4 管理級(jí)過程可度量,預(yù)測值與結(jié)果之間的偏差可控CMM的五個(gè)級(jí)別Level 4的2個(gè)KPA:預(yù)測量化管理定量過程管理(Quantitative Process Management)過程度量軟件質(zhì)量管理(Software Quality Management)產(chǎn)品度量CMM的五個(gè)級(jí)別Level 5 優(yōu)化級(jí)過程動(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)過程改變管理(Process Change Management)能力成熟度模型集成CMMI-Capability Maturity Model Integration是CMM模型的最新版本。CMMI有兩種表示方法:和軟件CMM一樣的階段式表現(xiàn)方法連續(xù)式的表現(xiàn)方法過程管理項(xiàng)目管理工程支持CMMI的目標(biāo)是質(zhì)量、時(shí)間表和最低的成本關(guān)鍵實(shí)踐CMM結(jié)構(gòu)CMM標(biāo)準(zhǔn)的使用軟件過程的改進(jìn)(SPI,Software Process Improvement)軟件
24、過程評(píng)估(SPA,Software Process Assessment)軟件能力評(píng)價(jià)(SCE Software Capability Evaluation)敏捷過程敏捷不是一個(gè)過程,是一類過程的統(tǒng)稱。敏捷方法的兩大主要特征:對(duì)“適應(yīng)性”的強(qiáng)調(diào)對(duì)“人”的關(guān)注做法:快速響應(yīng):引入迭代式的開發(fā)手段將整個(gè)軟件生命周期分解為若干個(gè)小的迭代周期獲取切實(shí)有效的客戶反饋提出12條基本原則敏捷開發(fā)12條原則我們最優(yōu)先要做的是通過盡早的、持續(xù)的交付有價(jià)值的軟件來使客戶滿意。即使到了開發(fā)的后期,也歡迎改變需求。敏捷過程利用變化來為客戶創(chuàng)造競爭優(yōu)勢。 經(jīng)常性地交付可以工作的軟件,交付的間隔可以從幾個(gè)星期到幾個(gè)月,交
25、付的時(shí)間間隔越短越好。在整個(gè)項(xiàng)目開發(fā)期間,業(yè)務(wù)人員和開發(fā)人員必須天天都在一起工作。圍繞被激勵(lì)起來的個(gè)體來構(gòu)建項(xiàng)目,給他們提供所需的環(huán)境和支持,并且信任他們能夠完成工作。敏捷開發(fā)12條原則(續(xù))在團(tuán)隊(duì)內(nèi)部,最具有效果并富有效率的傳遞信息的方法,就是面對(duì)面的交談。工作的軟件是首要的進(jìn)度度量標(biāo)準(zhǔn)。敏捷過程提倡可持續(xù)的開發(fā)速度。責(zé)任人、開發(fā)者和用戶應(yīng)該能夠保持一個(gè)長期的、恒定的開發(fā)速度。不斷地關(guān)注優(yōu)秀的技能和好的設(shè)計(jì)會(huì)增強(qiáng)敏捷能力。 簡單是最根本的。 最好的構(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é),是敏捷開發(fā)中最富有成效的方法學(xué)之一由KentBeck在1996年提出具有強(qiáng)溝通、簡化設(shè)計(jì)、迅速反饋等特點(diǎn)適合于規(guī)模小、進(jìn)度緊、需求不穩(wěn)定、開發(fā)小項(xiàng)目的小團(tuán)隊(duì)。極限編程特點(diǎn):XP模型是“輕量型”或“靈活”的軟件過程模型與面向?qū)ο笳Z言結(jié)合的開發(fā)方案“專家協(xié)作”的開發(fā)方式,解決難點(diǎn)問題重視客戶反饋核心有四個(gè)要點(diǎn):交流簡單反饋勇氣交流開發(fā)人員與客戶的交流開發(fā)人員之間的交流使用結(jié)對(duì)編程開發(fā)人員與管理人員的交流簡單設(shè)計(jì)的簡單編碼的簡單注釋的簡單測試的簡單反饋客戶對(duì)軟件的反饋測試代碼對(duì)功能代碼的反饋先測試,后編程勇氣接受任務(wù)的勇氣XP常見問題XP
27、適合于小型項(xiàng)目(10人左右)?結(jié)對(duì)編程,搭檔如何安排?實(shí)施結(jié)對(duì)編程、集體代碼所有權(quán)之后,如何考核單個(gè)開發(fā)人員?77Pair Programming( 結(jié)對(duì)編程 )結(jié)對(duì)編程結(jié)對(duì)編程(Pair-Programming) 是XP中非常重要的實(shí)踐之一。定義:兩個(gè)人坐在同一臺(tái)計(jì)算機(jī)前面,使用相同的鍵盤和鼠標(biāo)來開發(fā)同樣的一個(gè)模塊,一個(gè)稱為駕駛者(Driver),負(fù)責(zé)代碼的鍵入,另外一個(gè)稱為領(lǐng)航員(Navigator),負(fù)責(zé)監(jiān)看與決策,包括低級(jí)錯(cuò)誤和方向性的錯(cuò)誤。當(dāng)出現(xiàn)的一個(gè)問題對(duì)其中一個(gè)人來說,難以解決,而恰好是另外一個(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角色可以互換的疑問: 一個(gè)程序兩個(gè)人寫是不是一種浪費(fèi)(可是兩份工資,雙倍資源哦)? 編程從來是一個(gè)人的活動(dòng)。學(xué)校里這么教的,一直以來也是做么做的。 我不喜歡被人盯著工作,這樣我不自在,無法工作。 這個(gè)笨家伙老是問問題,他/她不會(huì)看書么?我都無法專心工作了。 另一方面: Pair Programming被很多的大師級(jí)程序員推崇;不少大學(xué)都展開對(duì)Pair Programming的研究,并得到正面的結(jié)論; 很多嘗試過的Developer都開始喜歡Pair Programmin
29、g。Pair Programming的疑問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)過測試的代碼,而且這些代碼幾
30、乎是沒有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開始被接受。為什么要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è)臭皮匠,勝過一個(gè)諸葛亮” - ?不間斷的不間斷的Code Review1. Peer Code Review,即程序員之間的互相Review缺乏Design Review不能持久,定時(shí)Code Review對(duì)需求和設(shè)計(jì)的不了解導(dǎo)致無法實(shí)現(xiàn)有效的Review2. Team Code Review什么時(shí)候開會(huì)做Review?不可能Team天天開會(huì)無法對(duì)所有
33、的設(shè)計(jì)和Code進(jìn)行Review面子問題效率低傳統(tǒng)開發(fā)過程的Review(例如印度的InfoSys公司)的問題:不間斷的不間斷的Code ReviewPair Programming提供不間斷的Design review,Unit Test Review,Code Review,Document Review,避免了效果差的Team Code Review,也比抽查式的Peer Code Review有更好的質(zhì)量。(CMM Level 3)Pair Programming中,任何一段代碼都至少被兩雙眼睛看過,兩個(gè)腦袋思考過。結(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)目來說,更主要的顧慮是成本。而成本中人工占最大的比例。好的代碼可以減少修改的成本。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的過程也是一個(gè)互相督促的過程。由于這種督促的壓力,使得程序員更認(rèn)真的工作。每個(gè)人每天的有效工作時(shí)段不超過3-4個(gè)小時(shí)。Pair Programming中Driver和Navigator的互換可以讓程序員輪流工作,從而避免出現(xiàn)過度思考
36、而導(dǎo)致觀察力和判斷力出現(xiàn)偏差。潛意識(shí)的有利競爭。當(dāng)人在一個(gè)團(tuán)隊(duì)中工作,總是下意識(shí)的努力展現(xiàn)自己的優(yōu)點(diǎn)。工作及時(shí)得到同伴的肯定,自信心和成就感(Self-Satisfaction)增強(qiáng)。覺得工作是一件愉快( Enjoyable )的事情。結(jié)對(duì)建議Extreme Programming對(duì)實(shí)施的程序員提出了更高的要求。這種要求不是技術(shù)水平,也不是學(xué)歷水平也不是工作經(jīng)驗(yàn)。這種要求是對(duì)一個(gè)人的心智,道德,修養(yǎng)的更高要求。程序員的四怕: 1) 怕自己看上去傻 2) 怕被認(rèn)為是沒用的 3) 怕自己變的不重要(過時(shí)) 4) 怕自己不夠好Pair Programming中,編碼不再是私人的工作,而是一種公開的“
37、表演”。程序員的代碼,工作方式,技術(shù)水平都變得公開和透明。XP開發(fā)人員素質(zhì) 一個(gè)XP開發(fā)人員具備這樣一些基本素質(zhì):誠實(shí),公正,開明,勇敢和謙卑!在這些素質(zhì)的基礎(chǔ)之上,才是對(duì)技術(shù)水平,能力和天分等的要求。誠實(shí)誠實(shí) 公正公正開明開明 勇氣勇氣 謙卑謙卑 具備這些素質(zhì)才能克服“四怕”,才能成為一個(gè)成熟和專業(yè)的Developer。如何結(jié)對(duì)編程Driver 寫設(shè)計(jì)文檔(Class diagram等),進(jìn)行編碼(Unit Test and Business Object)等XP開發(fā)流程。Navigator 審閱Driver的文檔、Driver對(duì)編碼等開發(fā)流程的執(zhí)行;考慮Unit Test的覆蓋程度;是否需
38、要和如何Refactoring;幫助Driver解決具體的技術(shù)問題。Driver和Navigator不斷輪換角色,不要連續(xù)工作超過一小時(shí),每一小時(shí)休息15分鐘。Navigator要控制開發(fā)時(shí)間。主動(dòng)參與 雖然每個(gè)Engineering Task都有owner,但不能一旁觀者的心態(tài)來做。任何一個(gè)Task都首先是兩個(gè)人的責(zé)任,也是所有人的責(zé)任。沒有“我的Code”、”你的Code”或“她的Code”,只有“我們的Code”。如何結(jié)對(duì)編程只有水平上的差距,沒有級(jí)別上的差異。一個(gè)Pair,盡管可能大家的級(jí)別資歷不同,但不管在分析,設(shè)計(jì)或編碼,雙方都擁有平等的決策權(quán)利。Pairs之間互換Partner。
39、每個(gè)Task都應(yīng)該和不同的Developer配對(duì)。每隔一天,甚至是半天,互換Partners。但Task的owner因該繼續(xù)留該Task的Pair中。如果Pair中的一人請假,另一人應(yīng)盡量不要寫Production Code。Pair一起加班94沒有結(jié)對(duì)編程就沒有XPPair Programming是XP所有的Practices中最被爭議和被認(rèn)為是最難接受。Pair Programming是獲得XP最大價(jià)值的關(guān)鍵。沒有Pair Programming,無法實(shí)現(xiàn)有效的Continuous Code Review,代碼質(zhì)量下降。沒有Peer Pressure,流程的執(zhí)行很容易出現(xiàn)偏差。沒有Pair
40、 Programming,Communication很容易弱化,進(jìn)而影響Team work。Pair Programming象XP流程中的粘合劑,把各個(gè)環(huán)節(jié)連接起來實(shí)現(xiàn)最大的價(jià)值。95沒有結(jié)對(duì)編程就沒有XP這是引進(jìn)XP時(shí)最難被接受的規(guī)則。但如果在采用其它XP的慣例和規(guī)則時(shí),拋棄Pair Programming,那么會(huì)面對(duì)以下問題:如何進(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身處不同的物理位置,通過Sharing 軟件來實(shí)現(xiàn)Pair Programming。需要Sharing軟件能提供 桌面共享,文字交談,語音交談,甚至是視頻交流。目前這種方法還沒有被認(rèn)可,主要出現(xiàn)在學(xué)校的關(guān)于XP的研究項(xiàng)目中.面臨的問題:Internet的
42、網(wǎng)路延遲工作時(shí)段的約定Pair Programming和Solo Programming的比較雖然Pair Programming的學(xué)生在剛開始的階段比獨(dú)自工作的學(xué)生花在同樣Task的時(shí)間較多,但很快Pair Programming的學(xué)生的時(shí)間開始大幅度的下降。而獨(dú)立工作的學(xué)生需要花費(fèi)比Pairs更多的時(shí)間來達(dá)到接近的代碼質(zhì)量。Pair Programming和Solo Programming的比較比較研究項(xiàng)目后的問卷調(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)閬碜訮artner的Pair-Pressure)。而獨(dú)立工作的學(xué)生也可以專著和緊湊的工作,但往往不持續(xù)。Pair Programming的學(xué)生對(duì)自己的工作更有信心和成就感。Pair Programming的學(xué)生覺得工作很愉快,很愿意很partner一起工作。在緊張時(shí)間安排和繁重的工作壓力下,獨(dú)自工作的學(xué)生很容易蛻變?yōu)闆]有紀(jì)律的Programmer。Pair Programming是個(gè)漸進(jìn)的過程有效率的Pair Programming不是一天就能做到的。Pair Progr
44、amming是一個(gè)相互學(xué)習(xí),相互磨合的一個(gè)漸進(jìn)過程。Developers需要時(shí)間來適應(yīng)這種新的開發(fā)模式。剛開始的Pair Programming很可能不比Solo Programming有更高的效率。但適應(yīng)后的Pairs的開發(fā)質(zhì)量和開發(fā)時(shí)間都比Solo Programming有大幅度的改善。結(jié)對(duì)編程優(yōu)勢:可以減少風(fēng)險(xiǎn)可以使團(tuán)隊(duì)生產(chǎn)效率更高是知識(shí)傳播的最好途徑可以打造出最佳的合作團(tuán)隊(duì)。可以生成更好的代碼三個(gè)方面的應(yīng)用:教育學(xué)結(jié)對(duì)學(xué)習(xí)工業(yè)界結(jié)對(duì)開發(fā)與編程分布式結(jié)對(duì)編程環(huán)境結(jié)對(duì)編程研究教育學(xué)研究結(jié)對(duì)編程學(xué)習(xí)效果研究結(jié)對(duì)雙方的相容性研究結(jié)對(duì)編程過程研究軟件工業(yè)界結(jié)對(duì)編程實(shí)踐方式社會(huì)動(dòng)力學(xué)研究個(gè)人編程能
45、力的增強(qiáng)分布式結(jié)對(duì)編程結(jié)對(duì)編程開發(fā)環(huán)境研究開發(fā)結(jié)對(duì)編程工具的需求適合開展分布式結(jié)對(duì)編程的工具研究結(jié)對(duì)編程與測試驅(qū)動(dòng)開發(fā)測試驅(qū)動(dòng)開發(fā)(Test Driven Development,TDD)思想:開發(fā)之前首先完成測試用例編寫;然后編寫代碼和測試;測試通過后即需增加新功能。優(yōu)勢:測試優(yōu)先,保證質(zhì)量結(jié)合結(jié)對(duì)編程結(jié)對(duì)編程與代碼重構(gòu)重構(gòu)就是代碼的重新設(shè)計(jì)。目的:得到好的代碼和架構(gòu),易修改、易理解適應(yīng)需求結(jié)對(duì)編程:審查代碼理解代碼反饋結(jié)對(duì)編程與簡單設(shè)計(jì)簡單設(shè)計(jì):達(dá)到目前需求即可結(jié)對(duì)編程可以達(dá)到簡單結(jié)對(duì)編程方法面對(duì)面結(jié)對(duì)編程分布式結(jié)對(duì)編程軟件工程實(shí)踐軟件工程實(shí)踐的精髓是理解問題、計(jì)劃解決方案、實(shí)施計(jì)劃和檢查
46、結(jié)果的精確度等方面通用的框架活動(dòng)包括:溝通計(jì)劃建模部署普適性活動(dòng)軟件工程實(shí)踐核心原則:存在價(jià)值保持簡潔維護(hù)視圖生產(chǎn)者要讓消費(fèi)者理解面向未來計(jì)劃復(fù)用認(rèn)真思考軟件工程實(shí)踐溝通實(shí)踐:包括決定項(xiàng)目涉及人的信息和溝通需求計(jì)劃實(shí)踐:是軟件開發(fā)過程的準(zhǔn)備階段,包括定義問題、可行性分析、制定計(jì)劃模型實(shí)踐:創(chuàng)建分析模型和設(shè)計(jì)模型小結(jié)軟件工程是一種層次化技術(shù),包括過程、技術(shù)和工具。軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。軟件過程框架定義了若干個(gè)小的框架活動(dòng),為完整的軟件開發(fā)過程建立了基礎(chǔ)。軟件過程框架的通用過程框架活動(dòng)包括溝通、計(jì)劃、建模、構(gòu)建和部署。能力成熟度模
47、型(CMM)是改進(jìn)軟件過程的有效策略。它的基本思想是通過改進(jìn)對(duì)軟件過程的管理來提高軟件生產(chǎn)率和軟件質(zhì)量。敏捷方法是一組敏捷實(shí)踐技術(shù)的總稱,包括極限編程、自適應(yīng)軟件開發(fā)、動(dòng)態(tài)系統(tǒng)開發(fā)和特征驅(qū)動(dòng)開發(fā)等等。軟件工程實(shí)踐包括概念、原則、方法和在整個(gè)軟件開發(fā)過程中所使用的工具。軟件工程實(shí)踐的通用框架活動(dòng)包括溝通實(shí)踐、計(jì)劃實(shí)踐、建模實(shí)踐、構(gòu)造實(shí)踐和部署實(shí)踐。第3章 軟件過程模型(內(nèi)容提要)瀑布模型增量模型螺旋模型協(xié)同開發(fā)模型面向?qū)ο竽P兔嫦蚍矫娴能浖_發(fā)軟件生存周期軟件也有一個(gè)從生到死的過程,這個(gè)過程一般稱之為軟件的軟件生存周期或生命周期(Software Development Life Cycle)軟
48、件生存周期可劃分為定義、開發(fā)和運(yùn)行三個(gè)時(shí)期,每個(gè)時(shí)期又細(xì)分為若干個(gè)階段。把整個(gè)軟件生存周期劃分為若干階段,使得每個(gè)階段有明確的任務(wù),使規(guī)模大,結(jié)構(gòu)復(fù)雜和管理復(fù)雜的軟件開發(fā)變的容易控制和管理。軟件生存周期包括可行性分析、項(xiàng)目計(jì)劃、需求分析、軟件設(shè)計(jì)、編碼與測試、維護(hù)等階段,每個(gè)階段有包含一系列的活動(dòng)。瀑布模型瀑布模型將軟件生命周期劃分為軟件計(jì)劃、需求分析和定義、設(shè)計(jì)、實(shí)現(xiàn)、測試、運(yùn)行和維護(hù)這6個(gè)階段,規(guī)定了它們自上而下、相互銜接的固定次序,如同瀑布流水逐級(jí)下落。從本質(zhì)來講,它是一個(gè)軟件開發(fā)架構(gòu),開發(fā)過程是通過一系列階段順序展開的,從系統(tǒng)需求分析開始直到產(chǎn)品發(fā)布和維護(hù),每個(gè)階段都會(huì)產(chǎn)生循環(huán)反饋.瀑
49、布模型示意圖瀑布模型它是一個(gè)軟件開發(fā)架構(gòu),開發(fā)過程是通過一系列階段順序展開的。每個(gè)階段都會(huì)產(chǎn)生循環(huán)反饋各個(gè)階段產(chǎn)生的文檔是維護(hù)軟件產(chǎn)品時(shí)必不可少的,沒有文檔的軟件幾乎是不可能維護(hù)的。瀑布模型是一種文檔驅(qū)動(dòng)的過程模型瀑布模型特點(diǎn)順序性和依賴性推遲實(shí)現(xiàn)質(zhì)量保證的觀點(diǎn)是一種線性模型強(qiáng)調(diào)文檔的作用增量模型增量模型(Incremental Model)也稱為漸增模型,是在項(xiàng)目的開發(fā)過程中以一系列的增量方式開發(fā)系統(tǒng)。軟件被作為一系列的增量構(gòu)件來設(shè)計(jì)、實(shí)現(xiàn)、集成和測試,每一個(gè)構(gòu)件是由多種相互作用的模塊所形成的提供特定功能的代碼片段構(gòu)成.增量方式包括:增量開發(fā):以一定的時(shí)間間隔開發(fā)部分工作軟件增量提交:以一定
50、的時(shí)間間隔增量方式向用戶提交工作軟件及相應(yīng)文檔增量模型融合了線性順序模型的基本成份和原型實(shí)現(xiàn)模型的迭代特征。增量模型分為漸增模型和原型模型漸增模型是瀑布模型的變種,有兩類漸增模型:增量構(gòu)造模型:它在瀑布模型基礎(chǔ)上,對(duì)一些階段進(jìn)行整體開發(fā)整體開發(fā),對(duì)另一些階段進(jìn)行增量開發(fā)。前面的開發(fā)階段按瀑布模型進(jìn)行整體開發(fā),后面的開發(fā)階段按增量提增量提交交。演化提交模型:它在瀑布模型的基礎(chǔ)上,所有階段都進(jìn)行增量開發(fā)增量開發(fā),也就是說不僅是增量開發(fā),也是增量提交增量提交。增量構(gòu)造模型需求分析設(shè)計(jì)編碼1測試1測試2編碼2編碼3測試3螺旋模型螺旋模型(Spiral Model)是結(jié)合了瀑布模型和快速原型模型的迭代開
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)目開發(fā)的限制條件; 風(fēng)險(xiǎn)分析:分析評(píng)估所選方案,考慮如何識(shí)別和消除風(fēng)險(xiǎn);實(shí)施工程:實(shí)施軟件開發(fā)和驗(yàn)證;客戶評(píng)估:評(píng)價(jià)開發(fā)工作,提出修正建議,制定下一步計(jì)劃。螺旋模型是風(fēng)險(xiǎn)驅(qū)動(dòng)的模型面向?qū)ο筮^程模型面向?qū)ο筮^程模型面向?qū)ο笫且环N的程序設(shè)計(jì)方法,或者說它是一種程序設(shè)計(jì)范型?;舅枷胧鞘褂脤?duì)象,類,繼承,封裝,消息等基本概念來進(jìn)行程序設(shè)計(jì)。面向?qū)ο蟮囊兀?抽象:強(qiáng)調(diào)
52、實(shí)體的本質(zhì)、內(nèi)在的屬性,忽略一些無關(guān)緊要的屬性。類實(shí)現(xiàn)了對(duì)象的數(shù)據(jù)(即狀態(tài))和行為的抽象,是對(duì)象的共性的抽象。封裝性:指所有軟件部件內(nèi)部都有明確的范圍以及清楚的外部邊界。 共享性:面向?qū)ο蟮奶卣鳎簩?duì)象惟一性;分類性;繼承性;多態(tài)性(多形性)。統(tǒng)一過程統(tǒng)一過程A software development process:是一個(gè)將用戶需求轉(zhuǎn)是一個(gè)將用戶需求轉(zhuǎn)化為軟件系統(tǒng)所需要的活動(dòng)的集合?;癁檐浖到y(tǒng)所需要的活動(dòng)的集合。A process framework:一個(gè)簡單的過程,也是一個(gè)通用一個(gè)簡單的過程,也是一個(gè)通用的過程框架。的過程框架。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)一過程是用況驅(qū)動(dòng)的用況模型(use case model)要素:用戶(user)用況(use case)動(dòng)作(action)用況驅(qū)動(dòng)(use-case driven):用況可以驅(qū)動(dòng)開發(fā)過程:用況不只是確定系統(tǒng)需求的工具,還能驅(qū)動(dòng)系統(tǒng)設(shè)計(jì)、實(shí)現(xiàn)和測試的進(jìn)行。不能孤立地選擇用況UC: 吃晚餐 用戶動(dòng)作 系統(tǒng)響應(yīng) 點(diǎn)餐上開胃菜上主餐請上點(diǎn)心上點(diǎn)心買單結(jié)賬開收據(jù)拿走收據(jù)統(tǒng)一過程是以構(gòu)架為中心的軟件構(gòu)架包含了系統(tǒng)中最重要的靜態(tài)和動(dòng)態(tài)特征構(gòu)架刻畫了系統(tǒng)的整體設(shè)計(jì),突出系統(tǒng)的重要特征構(gòu)架的價(jià)值依賴于執(zhí)行該任務(wù)的人的素質(zhì)過程可以幫助構(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)一過程是以構(gòu)架
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Windows Server網(wǎng)絡(luò)管理項(xiàng)目教程(Windows Server 2022)(微課版)3.2 DHCP-任務(wù)1 安裝DHCP服務(wù)器
- 醫(yī)院感控新視野-從理論到實(shí)踐的全面掌握
- 高中語文第4單元古代傳記第11課廉頗藺相如列傳課件新人教版必修
- 2024-2025學(xué)年八年級(jí)上學(xué)期地理期中模擬試卷(湘教版+含答案解析)
- 江蘇省揚(yáng)州市寶應(yīng)縣2023-2024學(xué)年八年級(jí)上學(xué)期期中語文試卷(含答案解析)
- 小學(xué)假期安全教育教案
- 二級(jí)建造師施工管理課件第3章題
- 高中語文第6單元觀察與批判13林教頭風(fēng)雪山神廟裝在套子里的人課件新人教版必修下冊
- 高中語文唐宋詞5第十一課一蓑煙雨任平生-抒志詠懷課件語文版選修唐宋詩詞鑒賞
- 2024至2030年中國擦手紙盒數(shù)據(jù)監(jiān)測研究報(bào)告
- 2024年全國軟件水平考試之高級(jí)網(wǎng)絡(luò)規(guī)劃設(shè)計(jì)師考試重點(diǎn)黑金模擬題(附答案)
- 稀土行業(yè)發(fā)展報(bào)告2024-2025
- 識(shí)字二 《樹之歌》(第二課時(shí))(教案)二年級(jí)上冊語文部編版
- 《特殊學(xué)生綜合素質(zhì)評(píng)價(jià)規(guī)范》編制說明
- 2024年11月北京地區(qū)學(xué)位英語真題及答案
- GB/T 44169-2024民用大中型固定翼無人機(jī)系統(tǒng)地面站通用要求
- NB-T35016-2013土石筑壩材料碾壓試驗(yàn)規(guī)程
- 特種設(shè)備安全風(fēng)險(xiǎn)分級(jí)管控與隱患排查治理體系建設(shè)指導(dǎo)手冊
- 2024年廣東佛山三水區(qū)樂平鎮(zhèn)人民政府政府雇員招聘9人易考易錯(cuò)模擬試題(共500題)試卷后附參考答案
- YC/T 541-2024卷煙主流煙氣中焦油和一氧化碳檢測數(shù)據(jù)修正
- RB/T 121-2023能源管理體系建材企業(yè)認(rèn)證要求(不含水泥、玻璃、陶瓷)
評(píng)論
0/150
提交評(píng)論