




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件工程
方法與實(shí)踐竇萬(wàn)峰計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院南京師范大學(xué)2009年8月軟件工程
方法與實(shí)踐竇萬(wàn)峰1第一部分:軟件工程與過(guò)程什么是軟件工程?什么是工程化思想?什么是軟件過(guò)程?有哪些過(guò)程模型?如何建立過(guò)程模型?什么是統(tǒng)一過(guò)程?什么是敏捷過(guò)程?有哪些模型?什么是軟件工程實(shí)踐?注:本部分的實(shí)驗(yàn)課參照實(shí)驗(yàn)教材實(shí)驗(yàn)1和實(shí)驗(yàn)2進(jìn)行第一部分:軟件工程與過(guò)程什么是軟件工程?2第1章概述(主要內(nèi)容)軟件工程的基本概念軟件工程化思想軟件工程兩大范型軟件工程思想與基本原理軟件工程活動(dòng)第1章概述(主要內(nèi)容)軟件工程的基本概念3軟件工程定義B.W.Boehm的定義:運(yùn)用現(xiàn)代科學(xué)技術(shù)知識(shí)來(lái)設(shè)計(jì)并構(gòu)造計(jì)算機(jī)程序及為開(kāi)發(fā)、運(yùn)行和維護(hù)這些程序所必須的相關(guān)文件資料。FritzBauer的定義:軟件工程是為了經(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ù)。軟件工程定義B.W.Boehm的定義:運(yùn)用現(xiàn)代科學(xué)技術(shù)知識(shí)來(lái)4什么是軟件?三要素:程序文檔數(shù)據(jù)特性:復(fù)雜性一致性不會(huì)磨損和“老化”易變性移植性成本高什么是軟件?三要素:5軟件演化第一代:程序設(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ò)程中,用工程化的原則、方法和標(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)占有舉足輕重的地位。軟件演化第一代:程序設(shè)計(jì)階段。1946年到60年代初,其主要6軟件危機(jī)兩個(gè)方面的問(wèn)題:如何開(kāi)發(fā)如何維護(hù)表現(xiàn):軟件的規(guī)模大復(fù)雜度增加軟件的需求量增大價(jià)格昂貴供需差增大開(kāi)發(fā)速度慢質(zhì)量難以保證軟件危機(jī)兩個(gè)方面的問(wèn)題:7軟件危機(jī)解決途徑重視需求分析,明確與確切表達(dá)需求重視與客戶溝通與交流統(tǒng)一的、公認(rèn)的方法論和規(guī)范指導(dǎo)重視設(shè)計(jì)和實(shí)現(xiàn)過(guò)程的資料充分的檢測(cè)工作軟件危機(jī)解決途徑重視需求分析,明確與確切表達(dá)需求8軟件工程化思想把軟件看作是一個(gè)工程產(chǎn)品軟件工程學(xué)分成兩個(gè)方面:軟件開(kāi)發(fā)技術(shù)軟件工程管理工程化管理思想:很多問(wèn)題的出現(xiàn)是因?yàn)槿狈浖^(guò)程控制能力能力成熟模型(CapabilityMaturityModel)軟件工程化思想把軟件看作是一個(gè)工程產(chǎn)品9軟件工程兩大范型傳統(tǒng)的結(jié)構(gòu)化范型特征:結(jié)構(gòu)化技術(shù)要么面向行為,要么面向數(shù)據(jù)構(gòu)成結(jié)構(gòu)化范型的技術(shù)包括:結(jié)構(gòu)化分析結(jié)構(gòu)化設(shè)計(jì)結(jié)構(gòu)化編程結(jié)構(gòu)化測(cè)試結(jié)構(gòu)化維護(hù)軟件工程兩大范型傳統(tǒng)的結(jié)構(gòu)化范型10軟件工程兩大范型面向?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ù)容易軟件工程兩大范型面向?qū)ο蠓缎?1軟件工程基本原理分階段的軟件生存周期堅(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ò)程軟件工程基本原理分階段的軟件生存周期12軟件工程思想推遲實(shí)現(xiàn)的觀點(diǎn)逐步求精的觀點(diǎn)分解與抽象的觀點(diǎn)信息隱蔽觀點(diǎn)質(zhì)量保證觀點(diǎn)軟件工程思想推遲實(shí)現(xiàn)的觀點(diǎn)13軟件工程活動(dòng)開(kāi)發(fā)活動(dòng)軟件生命周期模型項(xiàng)目管理活動(dòng)項(xiàng)目的范圍(要做的內(nèi)容)進(jìn)度(要花費(fèi)的時(shí)間)成本(要耗費(fèi)的資源)過(guò)程改進(jìn)活動(dòng)關(guān)注質(zhì)量軟件開(kāi)發(fā)的最佳實(shí)踐過(guò)程定義和改進(jìn)軟件工程活動(dòng)開(kāi)發(fā)活動(dòng)14小結(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)。小結(jié)軟件工程的主旨是以工程化的思想進(jìn)行軟件開(kāi)發(fā),以生產(chǎn)高質(zhì)量15第2章軟件過(guò)程(內(nèi)容提要)什么是軟件過(guò)程?什么軟件生命周期?能力成熟度模型敏捷過(guò)程軟件過(guò)程實(shí)踐第2章軟件過(guò)程(內(nèi)容提要)什么是軟件過(guò)程?16軟件過(guò)程定義:軟件過(guò)程是為了開(kāi)發(fā)出軟件產(chǎn)品,或者是為了完成軟件工程項(xiàng)目而需要完成的有關(guān)軟件工程的活動(dòng)通常使用生命周期模型簡(jiǎn)潔地描述軟件過(guò)程層次:軟件工程是一門建立在以質(zhì)量焦點(diǎn)為基礎(chǔ),分過(guò)程、方法和工具三個(gè)研究層次的綜合技術(shù)軟件過(guò)程定義:17過(guò)程方法與工具工具
方法
過(guò)程
質(zhì)量焦點(diǎn)過(guò)程方法與工具工具方法過(guò)程質(zhì)量焦點(diǎn)18軟件過(guò)程框架定義:框架是實(shí)現(xiàn)整個(gè)軟件開(kāi)發(fā)活動(dòng)的基礎(chǔ),并且那些與過(guò)程有關(guān)的角色、職責(zé)的定義以及實(shí)現(xiàn)也都離不開(kāi)框架的支持兩個(gè)方面組織及管理框架技術(shù)及工具框架軟件過(guò)程框架定義:19軟件過(guò)程模型把軟件生命周期中各項(xiàng)開(kāi)發(fā)活動(dòng)的流程用一個(gè)合理的框架—開(kāi)發(fā)模型來(lái)規(guī)范描述,這就是軟件過(guò)程模型。軟件生命周期模型軟件生命周期劃分為定義、開(kāi)發(fā)和運(yùn)行三個(gè)階段細(xì)分為六個(gè)階段:?jiǎn)栴}的定義及規(guī)劃需求分析軟件設(shè)計(jì)程序編碼軟件測(cè)試運(yùn)行維護(hù)軟件過(guò)程模型把軟件生命周期中各項(xiàng)開(kāi)發(fā)活動(dòng)的流程用一個(gè)合理的框20能力成熟度模型集成CMM(CapabilityMaturityModel)是指“能力成熟度模型”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è)階梯式的改進(jìn)框架,它基于過(guò)去所有軟件工程過(guò)程改進(jìn)的成果,吸取了以往軟件工程的經(jīng)驗(yàn)教訓(xùn),提供了一個(gè)基于過(guò)程改進(jìn)的框架。能力成熟度模型集成(CMMI--CapabilityMaturityModelIntegration)是CMM模型的最新版本。能力成熟度模型集成CMM(CapabilityMaturi21CMM概述為企業(yè)的發(fā)展規(guī)定過(guò)程成熟級(jí)別,分為5級(jí)(Version1.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ú)序到有序、從特殊到一般、從定性管理到定量管理、最終達(dá)到動(dòng)態(tài)優(yōu)化CMM概述為企業(yè)的發(fā)展規(guī)定過(guò)程成熟級(jí)別,分為5級(jí)(Versi22CMM概述(續(xù))2.Repeatable1.Initial3.Defined4.ManagedDisciplinedProcessStandard,ConsistentProcessPredictableProcessContinuouslyImprovingProcessUnpredictableandpoorlycontrolledCanrepeatpreviouslymasteredtasksProcesscharacterized,fairlywellunderstoodProcessmeasuredandcontrolledFocusonprocessimprovement5.OptimizingProjectManagementIntegratedEngineeringProcessProductandProcessQualityManagingChangeDisorder
Disciplined
Predictable
Immature
Mature
CMM概述(續(xù))2.Repeatable1.Initia23CMM的概念模型關(guān)鍵過(guò)程域KPA:代表一組相關(guān)的工作(活動(dòng))。每個(gè)KPA都有一個(gè)確定的目標(biāo),完成該目標(biāo)即認(rèn)為過(guò)程能力的提高。一般特性CF(CommonFeatures):進(jìn)一步細(xì)分KPA的工作。五個(gè)特性:承諾(commitment)準(zhǔn)備(ability)執(zhí)行(activity)度量分析(measurement&analysis)驗(yàn)證(verifyingimplementation)CMM的概念模型關(guān)鍵過(guò)程域KPA:代表一組相關(guān)的工作(活動(dòng))24CMM的五個(gè)級(jí)別Level1:初始級(jí)過(guò)程無(wú)序且不可見(jiàn)OutInCMM的五個(gè)級(jí)別Level1:初始級(jí)OutIn25CMM的五個(gè)級(jí)別Level2:可重復(fù)級(jí)Milestone(里程碑)可見(jiàn),按計(jì)劃開(kāi)發(fā)CMM的五個(gè)級(jí)別Level2:可重復(fù)級(jí)26CMM的五個(gè)級(jí)別Level2的6個(gè)KPA:側(cè)重于管理需求管理(RequirementsManagement)軟件項(xiàng)目計(jì)劃(SoftwareProjectPlanning)軟件項(xiàng)目的跟蹤和監(jiān)控(SoftwareProjectTackingandOversight)軟件子合同管理(SoftwareSubcontractManagement)軟件質(zhì)量保證(SoftwareQualityAssurance)軟件配置管理(SoftwareConfigurationManagement)CMM的五個(gè)級(jí)別Level2的6個(gè)KPA:側(cè)重于管理27CMM的五個(gè)級(jí)別Level3:定義級(jí)每個(gè)階段的內(nèi)部活動(dòng)可見(jiàn)標(biāo)準(zhǔn)過(guò)程和項(xiàng)目定義過(guò)程裁剪CMM的五個(gè)級(jí)別Level3:定義級(jí)28CMM的五個(gè)級(jí)別Level3的7個(gè)KPA:工程過(guò)程+企業(yè)理念機(jī)構(gòu)過(guò)程關(guān)注(OrganizationProcessFocus)機(jī)構(gòu)過(guò)程定義(OrganizationProcessDefinition)培訓(xùn)計(jì)劃(TrainingProgram)集成軟件管理(IntegratedSoftwareManagement)-過(guò)程裁剪和定義軟件產(chǎn)品工程(SoftwareProductEngineering)-過(guò)程執(zhí)行組間協(xié)調(diào)(IntergroupCoordination)對(duì)等審查(PeerReviews)CMM的五個(gè)級(jí)別Level3的7個(gè)KPA:工程過(guò)程+企業(yè)理29CMM的五個(gè)級(jí)別Level4管理級(jí)過(guò)程可度量,預(yù)測(cè)值與結(jié)果之間的偏差可控CMM的五個(gè)級(jí)別Level4管理級(jí)30CMM的五個(gè)級(jí)別Level4的2個(gè)KPA:預(yù)測(cè)+量化管理定量過(guò)程管理(QuantitativeProcessManagement)-過(guò)程度量軟件質(zhì)量管理(SoftwareQualityManagement)-產(chǎn)品度量CMM的五個(gè)級(jí)別Level4的2個(gè)KPA:預(yù)測(cè)+量化管理31CMM的五個(gè)級(jí)別Level5優(yōu)化級(jí)過(guò)程動(dòng)態(tài)調(diào)整、新技術(shù)的采用CMM的五個(gè)級(jí)別Level5優(yōu)化級(jí)32CMM的五個(gè)級(jí)別Level5的3個(gè)KPA:動(dòng)態(tài)優(yōu)化缺陷預(yù)防(DefectPrevention)技術(shù)改變管理(TechnologyChangeManagement)過(guò)程改變管理(ProcessChangeManagement)CMM的五個(gè)級(jí)別Level5的3個(gè)KPA:動(dòng)態(tài)優(yōu)化33能力成熟度模型集成CMMI--CapabilityMaturityModelIntegration是CMM模型的最新版本。CMMI有兩種表示方法:和軟件CMM一樣的階段式表現(xiàn)方法連續(xù)式的表現(xiàn)方法過(guò)程管理項(xiàng)目管理工程支持CMMI的目標(biāo)是質(zhì)量、時(shí)間表和最低的成本能力成熟度模型集成CMMI--CapabilityMatu34敏捷過(guò)程敏捷不是一個(gè)過(guò)程,是一類過(guò)程的統(tǒng)稱。敏捷方法的兩大主要特征:對(duì)“適應(yīng)性”的強(qiáng)調(diào)對(duì)“人”的關(guān)注做法:引入迭代式的開(kāi)發(fā)手段將整個(gè)軟件生命周期分解為若干個(gè)小的迭代周期獲取切實(shí)有效的客戶反饋提出12條基本原則敏捷過(guò)程敏捷不是一個(gè)過(guò)程,是一類過(guò)程的統(tǒng)稱。35極限編程極限編程(eXtremeProgramming,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ì)。極限編程極限編程(eXtremeProgramming,X36極限編程特點(diǎn):XP模型是“輕量型”或“靈活”的軟件過(guò)程模型與面向?qū)ο笳Z(yǔ)言結(jié)合的開(kāi)發(fā)方案“專家協(xié)作”的開(kāi)發(fā)方式,解決難點(diǎn)問(wèn)題核心有四個(gè)要點(diǎn):交流簡(jiǎn)單反饋勇氣極限編程特點(diǎn):37結(jié)對(duì)編程結(jié)對(duì)編程(Pair-Programming)是XP中非常重要的實(shí)踐之一。定義:兩個(gè)人坐在同一臺(tái)計(jì)算機(jī)前面,使用相同的鍵盤和鼠標(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)換。結(jié)對(duì)編程結(jié)對(duì)編程(Pair-Programming)是XP38結(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ì)編程優(yōu)勢(shì):39結(jié)對(duì)編程研究教育學(xué)研究結(jié)對(duì)編程學(xué)習(xí)效果研究結(jié)對(duì)雙方的相容性研究結(jié)對(duì)編程過(guò)程研究軟件工業(yè)界結(jié)對(duì)編程實(shí)踐方式社會(huì)動(dòng)力學(xué)研究個(gè)人編程能力的增強(qiáng)分布式結(jié)對(duì)編程結(jié)對(duì)編程開(kāi)發(fā)環(huán)境研究開(kāi)發(fā)結(jié)對(duì)編程工具的需求適合開(kāi)展分布式結(jié)對(duì)編程的工具研究結(jié)對(duì)編程研究教育學(xué)研究40自適應(yīng)軟件開(kāi)發(fā)自適應(yīng)軟件開(kāi)發(fā)(AdaptiveSoftwareDevelopment)由JimHighsmith提出著眼于人員協(xié)作和團(tuán)隊(duì)自我組織,類似于收集人們創(chuàng)意的容器生命周期三個(gè)階段包括:思考:?jiǎn)?dòng)項(xiàng)目并完成自適應(yīng)循環(huán)計(jì)劃協(xié)作:溝通與信任學(xué)習(xí):改進(jìn)真正的理解水平,通過(guò)焦點(diǎn)組、正式技術(shù)評(píng)審和事后剖析方式進(jìn)行學(xué)習(xí)自適應(yīng)軟件開(kāi)發(fā)自適應(yīng)軟件開(kāi)發(fā)(AdaptiveSoftwa41動(dòng)態(tài)系統(tǒng)開(kāi)發(fā)動(dòng)態(tài)系統(tǒng)開(kāi)發(fā)(DynamicSystemDevelopmentMethod)是一種使用增量原型開(kāi)發(fā)模式完全滿足對(duì)時(shí)間約束的系統(tǒng)構(gòu)建和維護(hù)的敏捷軟件開(kāi)發(fā)方法。借用Pareto(佩瑞多)原則:即如果交付整個(gè)應(yīng)用系統(tǒng)需用100%時(shí)間,那么80%的應(yīng)用系統(tǒng)可以用20%的時(shí)間交付建議使用迭代軟件過(guò)程動(dòng)態(tài)系統(tǒng)開(kāi)發(fā)生命周期的敏捷過(guò)程模型:可行性研究業(yè)務(wù)研究功能模型迭代設(shè)計(jì)和構(gòu)建迭代實(shí)現(xiàn)動(dòng)態(tài)系統(tǒng)開(kāi)發(fā)動(dòng)態(tài)系統(tǒng)開(kāi)發(fā)(DynamicSystemDe42特征驅(qū)動(dòng)開(kāi)發(fā)特征驅(qū)動(dòng)開(kāi)發(fā)(Feature-Drivendevelopment)把軟件開(kāi)發(fā)項(xiàng)目作為一個(gè)系統(tǒng),即生產(chǎn)軟件的系統(tǒng)定義六種關(guān)鍵項(xiàng)目角色:項(xiàng)目經(jīng)理,負(fù)責(zé)報(bào)告進(jìn)度情況、管理預(yù)算、籌措人員,以及管理設(shè)備、辦公場(chǎng)地和資源等主設(shè)計(jì)師,負(fù)責(zé)系統(tǒng)的整體設(shè)計(jì)開(kāi)發(fā)經(jīng)理,負(fù)責(zé)領(lǐng)導(dǎo)日常開(kāi)發(fā)活動(dòng),解決主程序員們自己無(wú)法解決的日常的資源沖突問(wèn)題。主程序員,參與高層的需求分析和設(shè)計(jì)活動(dòng),領(lǐng)導(dǎo)3-6人開(kāi)發(fā)小組負(fù)責(zé)新軟件特征的底層分析、設(shè)計(jì)和開(kāi)發(fā)工具。類的所有者,是主程序員領(lǐng)導(dǎo)的開(kāi)發(fā)小組的成員,對(duì)新軟件系統(tǒng)所需要的特征進(jìn)行設(shè)計(jì)、編碼、測(cè)試和編寫文檔。領(lǐng)域?qū)<?,是客戶、用戶、業(yè)主、業(yè)務(wù)分析專家或者所有這些的混合。特征驅(qū)動(dòng)開(kāi)發(fā)特征驅(qū)動(dòng)開(kāi)發(fā)(Feature-Drivende43軟件工程實(shí)踐軟件工程實(shí)踐的精髓是理解問(wèn)題、計(jì)劃解決方案、實(shí)施計(jì)劃和檢查結(jié)果的精確度等方面通用的框架活動(dòng)包括:溝通計(jì)劃建模部署普適性活動(dòng)軟件工程實(shí)踐軟件工程實(shí)踐的精髓是理解問(wèn)題、計(jì)劃解決方案、實(shí)施44軟件工程實(shí)踐核心原則:存在價(jià)值保持簡(jiǎn)潔維護(hù)視圖生產(chǎn)者要讓消費(fèi)者理解面向未來(lái)計(jì)劃復(fù)用認(rèn)真思考軟件工程實(shí)踐核心原則:45軟件工程實(shí)踐溝通實(shí)踐:包括決定項(xiàng)目涉及人的信息和溝通需求計(jì)劃實(shí)踐:是軟件開(kāi)發(fā)過(guò)程的準(zhǔn)備階段,包括定義問(wèn)題、可行性分析、制定計(jì)劃建立模型實(shí)踐:創(chuàng)建分析模型和設(shè)計(jì)模型軟件工程實(shí)踐溝通實(shí)踐:包括決定項(xiàng)目涉及人的信息和溝通需求46小結(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)建和部署。能力成熟度模型(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í)踐。小結(jié)軟件工程是一種層次化技術(shù),包括過(guò)程、技術(shù)和工具。47第3章軟件過(guò)程模型(內(nèi)容提要)瀑布模型增量模型螺旋模型協(xié)同開(kāi)發(fā)模型面向?qū)ο竽P兔嫦蚍矫娴能浖_(kāi)發(fā)第3章軟件過(guò)程模型(內(nèi)容提要)瀑布模型48瀑布模型瀑布模型提供了軟件開(kāi)發(fā)的基本框架。瀑布模型將軟件生命周期劃分為軟件計(jì)劃、需求分析和定義、軟件設(shè)計(jì)、軟件實(shí)現(xiàn)、軟件測(cè)試、軟件運(yùn)行和維護(hù)這6個(gè)階段,規(guī)定了它們自上而下、相互銜接的固定次序,如同瀑布流水逐級(jí)下落而得名它是一個(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ù)的。瀑布模型瀑布模型提供了軟件開(kāi)發(fā)的基本框架。49瀑布模型示意圖系統(tǒng)需求軟件需求需求分析設(shè)計(jì)編碼維護(hù)測(cè)試瀑布模型示意圖系統(tǒng)需求軟件需求需求分析設(shè)計(jì)編碼維護(hù)測(cè)試50瀑布模型特點(diǎn)順序性和依賴性推遲實(shí)現(xiàn)質(zhì)量保證的觀點(diǎn)是一種線性模型強(qiáng)調(diào)文檔的作用瀑布模型特點(diǎn)順序性和依賴性51增量模型增量模型(IncrementalModel)也稱為漸增模型,是在項(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ā)部分工作軟件增量提交:以一定的時(shí)間間隔增量方式向用戶提交工作軟件及相應(yīng)文檔增量模型融合了線性順序模型的基本成份和原型實(shí)現(xiàn)模型的迭代特征。增量模型增量模型(IncrementalModel)也稱為52增量模型分為漸增模型和原型模型漸增模型是瀑布模型的變種,有兩類漸增模型:增量構(gòu)造模型:它在瀑布模型基礎(chǔ)上,對(duì)一些階段進(jìn)行整體開(kāi)發(fā),對(duì)另一些階段進(jìn)行增量開(kāi)發(fā)。前面的開(kāi)發(fā)階段按瀑布模型進(jìn)行整體開(kāi)發(fā),后面的開(kāi)發(fā)階段按增量方式開(kāi)發(fā)。演化提交模型:它在瀑布模型的基礎(chǔ)上,所有階段都進(jìn)行增量開(kāi)發(fā),也就是說(shuō)不僅是增量開(kāi)發(fā),也是增量提交。增量模型分為漸增模型和原型模型53增量構(gòu)造模型需求分析設(shè)計(jì)編碼1測(cè)試1測(cè)試2編碼2編碼3測(cè)試3增量構(gòu)造模型需求分析設(shè)計(jì)編碼1測(cè)試1測(cè)試2編碼2編碼3測(cè)試354螺旋模型螺旋模型(SpiralModel)是結(jié)合了瀑布模型和快速原型模型的迭代開(kāi)發(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)審螺旋模型螺旋模型(SpiralModel)是結(jié)合了瀑布模型55螺旋模型示意圖螺旋模型示意圖56螺旋模型活動(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)的模型螺旋模型活動(dòng)四個(gè)象限分別代表了以下活動(dòng):57協(xié)同開(kāi)發(fā)模型協(xié)同開(kāi)發(fā)模型(CollaborativeDevelopmentModel,簡(jiǎn)稱CDM),有時(shí)也叫做協(xié)同工程,可以表示為一系列框架活動(dòng)、軟件工程動(dòng)作和任務(wù)以及相應(yīng)的狀態(tài)。在某一特定時(shí)間,建?;顒?dòng)可能處于任何一種狀態(tài)。協(xié)同開(kāi)發(fā)模型定義了一系列事件,這些事件將觸發(fā)軟件工程活動(dòng)、動(dòng)作或任務(wù)的狀態(tài)轉(zhuǎn)換。協(xié)同開(kāi)發(fā)模型協(xié)同開(kāi)發(fā)模型(CollaborativeDev58協(xié)同開(kāi)發(fā)模型空狀態(tài)開(kāi)發(fā)狀態(tài)等待變更狀態(tài)評(píng)審狀態(tài)修改狀態(tài)建立基線狀態(tài)結(jié)束狀態(tài)建?;顒?dòng)協(xié)同開(kāi)發(fā)模型空狀態(tài)開(kāi)發(fā)狀態(tài)等待變更狀態(tài)評(píng)審狀態(tài)修改狀態(tài)建立基59面向?qū)ο筮^(guò)程模型面向?qū)ο笫且环N的程序設(shè)計(jì)方法,或者說(shuō)它是一種程序設(shè)計(jì)范型?;舅枷胧鞘褂脤?duì)象,類,繼承,封裝,消息等基本概念來(lái)進(jìn)行程序設(shè)計(jì)。面向?qū)ο蟮囊兀撼橄螅簭?qiáng)調(diào)實(shí)體的本質(zhì)、內(nèi)在的屬性,忽略一些無(wú)關(guān)緊要的屬性。類實(shí)現(xiàn)了對(duì)象的數(shù)據(jù)(即狀態(tài))和行為的抽象,是對(duì)象的共性的抽象。封裝性:指所有軟件部件內(nèi)部都有明確的范圍以及清楚的外部邊界。共享性:面向?qū)ο蟮奶卣鳎簩?duì)象惟一性;分類性;繼承性;多態(tài)性(多形性)。面向?qū)ο筮^(guò)程模型面向?qū)ο笫且环N的程序設(shè)計(jì)方法,或者說(shuō)它是一種60統(tǒng)一過(guò)程模型統(tǒng)一過(guò)程(UnifiedProcess,UP)是風(fēng)險(xiǎn)驅(qū)動(dòng)的、基于用例技術(shù)的、以架構(gòu)為中心的、迭代的、可配置的軟件開(kāi)發(fā)流程。統(tǒng)一過(guò)程是以用例驅(qū)動(dòng)的,以架構(gòu)為中心,迭代和增量的過(guò)程。統(tǒng)一過(guò)程是一個(gè)軟件開(kāi)發(fā)過(guò)程,是一個(gè)通用的過(guò)程框架:初始細(xì)化構(gòu)造移交統(tǒng)一過(guò)程模型統(tǒng)一過(guò)程(UnifiedProcess,UP)61統(tǒng)一過(guò)程的四個(gè)階段統(tǒng)一過(guò)程的四個(gè)階段62統(tǒng)一過(guò)程五個(gè)核心工作流需求(RequirementsCapture):致力于開(kāi)發(fā)正確的系統(tǒng)分析(Analysis):更精確地理解需求設(shè)計(jì)(Design):深入理解與非功能性需求和約束相聯(lián)系的問(wèn)題實(shí)現(xiàn)(Implementation):實(shí)現(xiàn)系統(tǒng)與集成測(cè)試(Test):驗(yàn)證實(shí)現(xiàn)的結(jié)構(gòu)統(tǒng)一過(guò)程五個(gè)核心工作流需求(RequirementsCap63核心工作流核心工作流64統(tǒng)一過(guò)程準(zhǔn)則準(zhǔn)則迭代的開(kāi)發(fā)軟件需求管理基于構(gòu)件的體系結(jié)構(gòu)可視化軟件建模驗(yàn)證軟件質(zhì)量控制軟件的變更統(tǒng)一過(guò)程主要的優(yōu)點(diǎn)是提高了團(tuán)隊(duì)生產(chǎn)力統(tǒng)一過(guò)程準(zhǔn)則準(zhǔn)則65構(gòu)件集成模型構(gòu)件集成模型是基于構(gòu)件的開(kāi)發(fā)模型構(gòu)件集成模型:整個(gè)系統(tǒng)模塊化復(fù)用構(gòu)件庫(kù)中的軟件構(gòu)件構(gòu)件集成模型是演化形的,開(kāi)發(fā)過(guò)程是迭代的5個(gè)階段:軟件的需求分析和定義體系結(jié)構(gòu)設(shè)計(jì)構(gòu)件庫(kù)建立應(yīng)用軟件構(gòu)建測(cè)試和發(fā)布構(gòu)件集成模型構(gòu)件集成模型是基于構(gòu)件的開(kāi)發(fā)模型66構(gòu)件集成模型需求分析和定義體系結(jié)構(gòu)設(shè)計(jì)構(gòu)件庫(kù)建立測(cè)試和發(fā)布應(yīng)用軟件構(gòu)建1:N構(gòu)件集成模型需求分析和定義體系結(jié)構(gòu)設(shè)計(jì)構(gòu)件庫(kù)建立測(cè)試和發(fā)布應(yīng)67面向方面的軟件開(kāi)發(fā)面向方面的軟件開(kāi)發(fā)(Aspect-OrientedSoftwareDevelopment,簡(jiǎn)稱AOSP)是一系列新興技術(shù),用以尋找軟件系統(tǒng)中新的模塊化特性。強(qiáng)調(diào)獨(dú)立描述關(guān)注點(diǎn)方面需求(AspectualRequirement)定義了那些對(duì)整個(gè)軟件體系結(jié)構(gòu)產(chǎn)生影響的橫切關(guān)注點(diǎn):對(duì)等關(guān)注點(diǎn),這種關(guān)注點(diǎn)是相互獨(dú)立的,沒(méi)有任何一個(gè)對(duì)等關(guān)注點(diǎn)比另一個(gè)更重要。如ATM的取款、轉(zhuǎn)帳和存款等擴(kuò)展(extension),是在基礎(chǔ)組件(base)之上定義的組件,它用來(lái)表示附加的服務(wù)或功能。如在圖書館系統(tǒng)中,當(dāng)還書時(shí)發(fā)現(xiàn)該書已經(jīng)超期,那么系統(tǒng)就要計(jì)算罰金。計(jì)算罰金功能就是還書的擴(kuò)展。面向方面的軟件開(kāi)發(fā)面向方面的軟件開(kāi)發(fā)(Aspect-Orie68對(duì)等關(guān)注點(diǎn)對(duì)等關(guān)注點(diǎn)69對(duì)等關(guān)注點(diǎn)(分離限制)對(duì)等關(guān)注點(diǎn)(分離限制)70擴(kuò)展擴(kuò)展71對(duì)等關(guān)注點(diǎn)(分離限制)問(wèn)題:纏繞(tangling),各個(gè)組件包含滿足不同關(guān)注點(diǎn)的實(shí)現(xiàn)(也就是編碼)分散(Scattering),某個(gè)特定關(guān)注點(diǎn)的實(shí)現(xiàn)是分散在多個(gè)組件中。分離擴(kuò)展是一種使復(fù)雜問(wèn)題易于理解的技術(shù)。對(duì)等關(guān)注點(diǎn)(分離限制)問(wèn)題:72關(guān)注點(diǎn)分離技術(shù)關(guān)注點(diǎn)分離技術(shù)(ConcernSeparationTechnique)對(duì)關(guān)注點(diǎn)進(jìn)行建模和結(jié)構(gòu)化。用例技術(shù)關(guān)注點(diǎn)分離技術(shù)關(guān)注點(diǎn)分離技術(shù)(ConcernSeparat73關(guān)注點(diǎn)合成機(jī)制關(guān)注點(diǎn)合成機(jī)制(ConcernCompositionMechanism)將關(guān)注點(diǎn)合成發(fā)生在編譯時(shí)、編譯后,甚至是運(yùn)行時(shí)關(guān)注點(diǎn)合成機(jī)制關(guān)注點(diǎn)合成機(jī)制(ConcernComposi74擴(kuò)展相互分離擴(kuò)展相互分離Jacobson早在1986發(fā)表的論文“支持易于變化的實(shí)時(shí)系統(tǒng)的語(yǔ)言”術(shù)語(yǔ):表示原有程序、擴(kuò)展基礎(chǔ)的術(shù)語(yǔ)existion;表示添加到existion的新功能的術(shù)語(yǔ)extensions。擴(kuò)展相互分離擴(kuò)展相互分離75擴(kuò)展在編譯或運(yùn)行階段,而非編碼階段,往existion中插入extensions(擴(kuò)展)原有系統(tǒng)的源代碼甚至二進(jìn)制代碼都與任何擴(kuò)展之間保持了清晰性和無(wú)關(guān)性優(yōu)點(diǎn):擴(kuò)展更為簡(jiǎn)單系統(tǒng)將更易于理解擴(kuò)展在編譯或運(yùn)行階段,而非編碼階段,往existion中插入76序列變化器序列變化器77小結(jié)軟件開(kāi)發(fā)模型是指軟件開(kāi)發(fā)全部過(guò)程、活動(dòng)和任務(wù)的結(jié)構(gòu)框架,能清晰、直觀地表達(dá)軟件開(kāi)發(fā)全過(guò)程,明確規(guī)定了要完成的主要活動(dòng)和任務(wù),用來(lái)作為軟件項(xiàng)目工作的基礎(chǔ)。瀑布模型是一種線性模型,文檔驅(qū)動(dòng)的模型。增量提交模型采用一系列的增量方式開(kāi)發(fā)系統(tǒng)。螺旋模型結(jié)合瀑布模型和快速原型,是一種風(fēng)險(xiǎn)驅(qū)動(dòng)的開(kāi)發(fā)模型協(xié)同開(kāi)發(fā)模型是一種時(shí)間驅(qū)動(dòng)的活動(dòng)網(wǎng)絡(luò)模型。統(tǒng)一過(guò)程模型是以用例驅(qū)動(dòng)的,以架構(gòu)為中心,迭代和增量的過(guò)程。構(gòu)件集成模型利用模塊化方法將整個(gè)系統(tǒng)模塊化,復(fù)用構(gòu)件庫(kù)中的軟件構(gòu)件,通過(guò)組合手段提高應(yīng)用軟件系統(tǒng)過(guò)程的效率和質(zhì)量。面向方面的軟件開(kāi)發(fā)是一系列新興技術(shù),用以尋找軟件系統(tǒng)中新的模塊化特性,允許對(duì)軟件系統(tǒng)中多種關(guān)注點(diǎn)進(jìn)行獨(dú)立描述,同時(shí)又能自動(dòng)統(tǒng)一組合到工作系統(tǒng)之中。小結(jié)軟件開(kāi)發(fā)模型是指軟件開(kāi)發(fā)全部過(guò)程、活動(dòng)和任務(wù)的結(jié)構(gòu)框架,78第4章案例研究出卷系統(tǒng)短信系統(tǒng)POS機(jī)系統(tǒng)ATM機(jī)系統(tǒng)圖書館系統(tǒng)第4章案例研究出卷系統(tǒng)79出卷系統(tǒng)系統(tǒng)支持人工輔助和自動(dòng)出卷。系統(tǒng)應(yīng)能夠進(jìn)行題庫(kù)管理系統(tǒng)能夠進(jìn)行試卷管理,應(yīng)完成試卷修改、刪除和打印等。試卷能夠按照給定的樣式進(jìn)行輸入。系統(tǒng)應(yīng)能支持不同的科目。系統(tǒng)能夠在所有流行的技術(shù)環(huán)境下運(yùn)行,優(yōu)好的圖形界面。系統(tǒng)應(yīng)該具有很好的可擴(kuò)展性。試題不允許重復(fù)出現(xiàn),至少三次不能重復(fù)。試卷符合要求的96%以上即可結(jié)束,允許教師調(diào)整。應(yīng)能進(jìn)行試卷分析。出卷系統(tǒng)系統(tǒng)支持人工輔助和自動(dòng)出卷。80短信系統(tǒng)短信發(fā)送:客戶選擇一個(gè)或多個(gè)目標(biāo)人員、編輯內(nèi)容、立即或定時(shí)發(fā)送通知信息。短信人工應(yīng)答:用戶察看收到的短信內(nèi)容,并確定回復(fù)內(nèi)容回復(fù)詢問(wèn)者。短信自動(dòng)應(yīng)答:根據(jù)短信詢問(wèn)內(nèi)容,并依據(jù)規(guī)則自動(dòng)回復(fù)詢問(wèn)者。短信接收:接收外部短信。短信確認(rèn):確認(rèn)接收方是否接收??蛻糍Y料維護(hù):添加、刪除和更新用戶。短信息維護(hù):預(yù)設(shè)短消息內(nèi)容接口要求:支持移動(dòng)終端通過(guò)串口通信;支持與移動(dòng)網(wǎng)關(guān)通信。短信系統(tǒng)短信發(fā)送:客戶選擇一個(gè)或多個(gè)目標(biāo)人員、編輯內(nèi)容、立即81POS機(jī)系統(tǒng)收銀員可以記錄銷售商品信息,系統(tǒng)計(jì)算總價(jià)。收銀員能夠通過(guò)系統(tǒng)處理支持,包括現(xiàn)金支付、信用卡支付和支票支付。經(jīng)理還能處理顧客退貨。系統(tǒng)要求具有一定的容錯(cuò)性,即如果遠(yuǎn)程服務(wù)(如庫(kù)存系統(tǒng))暫時(shí)中斷,系統(tǒng)必須仍然能夠獲取銷售信息并且至少能夠處理現(xiàn)金付款。POS機(jī)必須支持日益增多的各種的客戶終端和接口,比如多種形式的用戶圖形界面、觸摸屏輸入裝置、無(wú)線PDA等。系統(tǒng)需要一種機(jī)制提供靈活的處理不同客戶獨(dú)特的業(yè)務(wù)邏輯規(guī)則和定制能力。POS機(jī)系統(tǒng)收銀員可以記錄銷售商品信息,系統(tǒng)計(jì)算總價(jià)。82ATM機(jī)系統(tǒng)ATM機(jī)處理銀行儲(chǔ)戶的各種操作,并與分行計(jì)算機(jī)通信;各分理處的計(jì)算機(jī)保存各自的帳戶,負(fù)責(zé)錄入帳戶和事務(wù)數(shù)據(jù);分行計(jì)算機(jī)與撥款分理處結(jié)帳;ATM機(jī)與用戶接口接受現(xiàn)金卡,與分行計(jì)算機(jī)通信完成事務(wù),發(fā)放現(xiàn)金,打印票據(jù);系統(tǒng)需要記錄保管和安全措施;系統(tǒng)必須正確處理同一帳戶的并發(fā)訪問(wèn)。ATM機(jī)系統(tǒng)ATM機(jī)處理銀行儲(chǔ)戶的各種操作,并與分行計(jì)算機(jī)通83圖書館系統(tǒng)圖書館系統(tǒng)有借書者、管理員、系統(tǒng)管理員和一般瀏覽者四種角色。借書者是圖書館的會(huì)員,擁有自己的帳戶,可以借閱圖書;一般瀏覽者是非圖書館會(huì)員,只能通過(guò)網(wǎng)絡(luò)瀏覽圖書館的基本信息,如瀏覽者通過(guò)查詢可以獲取圖書館提供的各種服務(wù)信息;借書者能夠從圖書館系統(tǒng)中借、還、續(xù)借和預(yù)約圖書,還可查詢自己的借書信息和系統(tǒng)情況等;普通管理員協(xié)助借書者完成借書、還書、續(xù)借服務(wù);系統(tǒng)管理員負(fù)責(zé)圖書管理如圖書編目和圖書登記、借書者管理和普通管理員管理等任務(wù)。圖書館系統(tǒng)能夠處理藏書200萬(wàn)左右的圖書和4萬(wàn)左右的會(huì)員;圖書館系統(tǒng)處理圖書流通每次事務(wù)時(shí)間應(yīng)小于8秒以內(nèi);借書者可以通過(guò)網(wǎng)絡(luò)進(jìn)行續(xù)借和預(yù)約圖書。圖書館系統(tǒng)圖書館系統(tǒng)有借書者、管理員、系統(tǒng)管理員和一般瀏覽者84小結(jié)在結(jié)構(gòu)化分析與設(shè)計(jì)和面向?qū)ο蠓治雠c設(shè)計(jì)中選擇相應(yīng)的系統(tǒng)介紹。圖書館系統(tǒng)、出卷系統(tǒng)重點(diǎn)在結(jié)構(gòu)化范型中介紹ATM機(jī)系統(tǒng)、POS機(jī)系統(tǒng)和短信系統(tǒng)重點(diǎn)在面向?qū)ο蠓缎椭薪榻B。POS機(jī)系統(tǒng)在兩個(gè)范型中都有介紹,以便對(duì)照分析。小結(jié)在結(jié)構(gòu)化分析與設(shè)計(jì)和面向?qū)ο蠓治雠c設(shè)計(jì)中選擇相應(yīng)的系統(tǒng)介85實(shí)驗(yàn)說(shuō)明軟件工程環(huán)境、工具和文檔規(guī)范與標(biāo)準(zhǔn):1、軟件工程CASE工具加深理解軟件工程環(huán)境及其原理,了解現(xiàn)在市場(chǎng)上發(fā)布的各類軟件工程CASE工具。2、軟件工程標(biāo)準(zhǔn)化文檔理解軟件工程各階段文檔的作用與意義,了解軟件軟件工程國(guó)家標(biāo)準(zhǔn)及其規(guī)范。實(shí)驗(yàn)說(shuō)明軟件工程環(huán)境、工具和文檔規(guī)范與標(biāo)準(zhǔn):86實(shí)驗(yàn)1:軟件工程CASE工具實(shí)驗(yàn)?zāi)康呐c要求:理解軟件工程的基本概念,熟悉軟件、軟件生存周期、軟件危機(jī)和軟件工程基本原理。理解軟件工程環(huán)境和工具,熟悉軟件工程環(huán)境組成和軟件工具分類等。通過(guò)Internet了解軟件工程技術(shù)網(wǎng)站和主流的軟件工程工具等。實(shí)驗(yàn)內(nèi)容:上網(wǎng)了解查詢軟件工程網(wǎng)站和相關(guān)軟件工程知識(shí)了解軟件工程環(huán)境概念、層次、組成和開(kāi)發(fā)要求查詢現(xiàn)有主流的軟件工程工具及其功能、用途和特點(diǎn)及適用范圍瀏覽CASE工具,通過(guò)互聯(lián)網(wǎng)了解現(xiàn)有軟件工程主流工具實(shí)驗(yàn)1:軟件工程CASE工具實(shí)驗(yàn)?zāi)康呐c要求:87實(shí)驗(yàn)2:軟件工程標(biāo)準(zhǔn)化文檔目的理解軟件工程各階段文檔的作用與意義,了解軟件軟件工程國(guó)家標(biāo)準(zhǔn)及其規(guī)范。內(nèi)容國(guó)內(nèi)外軟件工程標(biāo)準(zhǔn)及網(wǎng)站;軟件生存周期各階段中的文件編制大綱和要點(diǎn)實(shí)驗(yàn)2:軟件工程標(biāo)準(zhǔn)化文檔目的88軟件工程
方法與實(shí)踐竇萬(wàn)峰計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院南京師范大學(xué)2009年8月軟件工程
方法與實(shí)踐竇萬(wàn)峰89第一部分:軟件工程與過(guò)程什么是軟件工程?什么是工程化思想?什么是軟件過(guò)程?有哪些過(guò)程模型?如何建立過(guò)程模型?什么是統(tǒng)一過(guò)程?什么是敏捷過(guò)程?有哪些模型?什么是軟件工程實(shí)踐?注:本部分的實(shí)驗(yàn)課參照實(shí)驗(yàn)教材實(shí)驗(yàn)1和實(shí)驗(yàn)2進(jìn)行第一部分:軟件工程與過(guò)程什么是軟件工程?90第1章概述(主要內(nèi)容)軟件工程的基本概念軟件工程化思想軟件工程兩大范型軟件工程思想與基本原理軟件工程活動(dòng)第1章概述(主要內(nèi)容)軟件工程的基本概念91軟件工程定義B.W.Boehm的定義:運(yùn)用現(xiàn)代科學(xué)技術(shù)知識(shí)來(lái)設(shè)計(jì)并構(gòu)造計(jì)算機(jī)程序及為開(kāi)發(fā)、運(yùn)行和維護(hù)這些程序所必須的相關(guān)文件資料。FritzBauer的定義:軟件工程是為了經(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ù)。軟件工程定義B.W.Boehm的定義:運(yùn)用現(xiàn)代科學(xué)技術(shù)知識(shí)來(lái)92什么是軟件?三要素:程序文檔數(shù)據(jù)特性:復(fù)雜性一致性不會(huì)磨損和“老化”易變性移植性成本高什么是軟件?三要素:93軟件演化第一代:程序設(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ò)程中,用工程化的原則、方法和標(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)占有舉足輕重的地位。軟件演化第一代:程序設(shè)計(jì)階段。1946年到60年代初,其主要94軟件危機(jī)兩個(gè)方面的問(wèn)題:如何開(kāi)發(fā)如何維護(hù)表現(xiàn):軟件的規(guī)模大復(fù)雜度增加軟件的需求量增大價(jià)格昂貴供需差增大開(kāi)發(fā)速度慢質(zhì)量難以保證軟件危機(jī)兩個(gè)方面的問(wèn)題:95軟件危機(jī)解決途徑重視需求分析,明確與確切表達(dá)需求重視與客戶溝通與交流統(tǒng)一的、公認(rèn)的方法論和規(guī)范指導(dǎo)重視設(shè)計(jì)和實(shí)現(xiàn)過(guò)程的資料充分的檢測(cè)工作軟件危機(jī)解決途徑重視需求分析,明確與確切表達(dá)需求96軟件工程化思想把軟件看作是一個(gè)工程產(chǎn)品軟件工程學(xué)分成兩個(gè)方面:軟件開(kāi)發(fā)技術(shù)軟件工程管理工程化管理思想:很多問(wèn)題的出現(xiàn)是因?yàn)槿狈浖^(guò)程控制能力能力成熟模型(CapabilityMaturityModel)軟件工程化思想把軟件看作是一個(gè)工程產(chǎn)品97軟件工程兩大范型傳統(tǒng)的結(jié)構(gòu)化范型特征:結(jié)構(gòu)化技術(shù)要么面向行為,要么面向數(shù)據(jù)構(gòu)成結(jié)構(gòu)化范型的技術(shù)包括:結(jié)構(gòu)化分析結(jié)構(gòu)化設(shè)計(jì)結(jié)構(gòu)化編程結(jié)構(gòu)化測(cè)試結(jié)構(gòu)化維護(hù)軟件工程兩大范型傳統(tǒng)的結(jié)構(gòu)化范型98軟件工程兩大范型面向?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ù)容易軟件工程兩大范型面向?qū)ο蠓缎?9軟件工程基本原理分階段的軟件生存周期堅(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ò)程軟件工程基本原理分階段的軟件生存周期100軟件工程思想推遲實(shí)現(xiàn)的觀點(diǎn)逐步求精的觀點(diǎn)分解與抽象的觀點(diǎn)信息隱蔽觀點(diǎn)質(zhì)量保證觀點(diǎn)軟件工程思想推遲實(shí)現(xiàn)的觀點(diǎn)101軟件工程活動(dòng)開(kāi)發(fā)活動(dòng)軟件生命周期模型項(xiàng)目管理活動(dòng)項(xiàng)目的范圍(要做的內(nèi)容)進(jìn)度(要花費(fèi)的時(shí)間)成本(要耗費(fèi)的資源)過(guò)程改進(jìn)活動(dòng)關(guān)注質(zhì)量軟件開(kāi)發(fā)的最佳實(shí)踐過(guò)程定義和改進(jìn)軟件工程活動(dòng)開(kāi)發(fā)活動(dòng)102小結(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)。小結(jié)軟件工程的主旨是以工程化的思想進(jìn)行軟件開(kāi)發(fā),以生產(chǎn)高質(zhì)量103第2章軟件過(guò)程(內(nèi)容提要)什么是軟件過(guò)程?什么軟件生命周期?能力成熟度模型敏捷過(guò)程軟件過(guò)程實(shí)踐第2章軟件過(guò)程(內(nèi)容提要)什么是軟件過(guò)程?104軟件過(guò)程定義:軟件過(guò)程是為了開(kāi)發(fā)出軟件產(chǎn)品,或者是為了完成軟件工程項(xiàng)目而需要完成的有關(guān)軟件工程的活動(dòng)通常使用生命周期模型簡(jiǎn)潔地描述軟件過(guò)程層次:軟件工程是一門建立在以質(zhì)量焦點(diǎn)為基礎(chǔ),分過(guò)程、方法和工具三個(gè)研究層次的綜合技術(shù)軟件過(guò)程定義:105過(guò)程方法與工具工具
方法
過(guò)程
質(zhì)量焦點(diǎn)過(guò)程方法與工具工具方法過(guò)程質(zhì)量焦點(diǎn)106軟件過(guò)程框架定義:框架是實(shí)現(xiàn)整個(gè)軟件開(kāi)發(fā)活動(dòng)的基礎(chǔ),并且那些與過(guò)程有關(guān)的角色、職責(zé)的定義以及實(shí)現(xiàn)也都離不開(kāi)框架的支持兩個(gè)方面組織及管理框架技術(shù)及工具框架軟件過(guò)程框架定義:107軟件過(guò)程模型把軟件生命周期中各項(xiàng)開(kāi)發(fā)活動(dòng)的流程用一個(gè)合理的框架—開(kāi)發(fā)模型來(lái)規(guī)范描述,這就是軟件過(guò)程模型。軟件生命周期模型軟件生命周期劃分為定義、開(kāi)發(fā)和運(yùn)行三個(gè)階段細(xì)分為六個(gè)階段:?jiǎn)栴}的定義及規(guī)劃需求分析軟件設(shè)計(jì)程序編碼軟件測(cè)試運(yùn)行維護(hù)軟件過(guò)程模型把軟件生命周期中各項(xiàng)開(kāi)發(fā)活動(dòng)的流程用一個(gè)合理的框108能力成熟度模型集成CMM(CapabilityMaturityModel)是指“能力成熟度模型”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è)階梯式的改進(jìn)框架,它基于過(guò)去所有軟件工程過(guò)程改進(jìn)的成果,吸取了以往軟件工程的經(jīng)驗(yàn)教訓(xùn),提供了一個(gè)基于過(guò)程改進(jìn)的框架。能力成熟度模型集成(CMMI--CapabilityMaturityModelIntegration)是CMM模型的最新版本。能力成熟度模型集成CMM(CapabilityMaturi109CMM概述為企業(yè)的發(fā)展規(guī)定過(guò)程成熟級(jí)別,分為5級(jí)(Version1.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ú)序到有序、從特殊到一般、從定性管理到定量管理、最終達(dá)到動(dòng)態(tài)優(yōu)化CMM概述為企業(yè)的發(fā)展規(guī)定過(guò)程成熟級(jí)別,分為5級(jí)(Versi110CMM概述(續(xù))2.Repeatable1.Initial3.Defined4.ManagedDisciplinedProcessStandard,ConsistentProcessPredictableProcessContinuouslyImprovingProcessUnpredictableandpoorlycontrolledCanrepeatpreviouslymasteredtasksProcesscharacterized,fairlywellunderstoodProcessmeasuredandcontrolledFocusonprocessimprovement5.OptimizingProjectManagementIntegratedEngineeringProcessProductandProcessQualityManagingChangeDisorder
Disciplined
Predictable
Immature
Mature
CMM概述(續(xù))2.Repeatable1.Initia111CMM的概念模型關(guān)鍵過(guò)程域KPA:代表一組相關(guān)的工作(活動(dòng))。每個(gè)KPA都有一個(gè)確定的目標(biāo),完成該目標(biāo)即認(rèn)為過(guò)程能力的提高。一般特性CF(CommonFeatures):進(jìn)一步細(xì)分KPA的工作。五個(gè)特性:承諾(commitment)準(zhǔn)備(ability)執(zhí)行(activity)度量分析(measurement&analysis)驗(yàn)證(verifyingimplementation)CMM的概念模型關(guān)鍵過(guò)程域KPA:代表一組相關(guān)的工作(活動(dòng))112CMM的五個(gè)級(jí)別Level1:初始級(jí)過(guò)程無(wú)序且不可見(jiàn)OutInCMM的五個(gè)級(jí)別Level1:初始級(jí)OutIn113CMM的五個(gè)級(jí)別Level2:可重復(fù)級(jí)Milestone(里程碑)可見(jiàn),按計(jì)劃開(kāi)發(fā)CMM的五個(gè)級(jí)別Level2:可重復(fù)級(jí)114CMM的五個(gè)級(jí)別Level2的6個(gè)KPA:側(cè)重于管理需求管理(RequirementsManagement)軟件項(xiàng)目計(jì)劃(SoftwareProjectPlanning)軟件項(xiàng)目的跟蹤和監(jiān)控(SoftwareProjectTackingandOversight)軟件子合同管理(SoftwareSubcontractManagement)軟件質(zhì)量保證(SoftwareQualityAssurance)軟件配置管理(SoftwareConfigurationManagement)CMM的五個(gè)級(jí)別Level2的6個(gè)KPA:側(cè)重于管理115CMM的五個(gè)級(jí)別Level3:定義級(jí)每個(gè)階段的內(nèi)部活動(dòng)可見(jiàn)標(biāo)準(zhǔn)過(guò)程和項(xiàng)目定義過(guò)程裁剪CMM的五個(gè)級(jí)別Level3:定義級(jí)116CMM的五個(gè)級(jí)別Level3的7個(gè)KPA:工程過(guò)程+企業(yè)理念機(jī)構(gòu)過(guò)程關(guān)注(OrganizationProcessFocus)機(jī)構(gòu)過(guò)程定義(OrganizationProcessDefinition)培訓(xùn)計(jì)劃(TrainingProgram)集成軟件管理(IntegratedSoftwareManagement)-過(guò)程裁剪和定義軟件產(chǎn)品工程(SoftwareProductEngineering)-過(guò)程執(zhí)行組間協(xié)調(diào)(IntergroupCoordination)對(duì)等審查(PeerReviews)CMM的五個(gè)級(jí)別Level3的7個(gè)KPA:工程過(guò)程+企業(yè)理117CMM的五個(gè)級(jí)別Level4管理級(jí)過(guò)程可度量,預(yù)測(cè)值與結(jié)果之間的偏差可控CMM的五個(gè)級(jí)別Level4管理級(jí)118CMM的五個(gè)級(jí)別Level4的2個(gè)KPA:預(yù)測(cè)+量化管理定量過(guò)程管理(QuantitativeProcessManagement)-過(guò)程度量軟件質(zhì)量管理(SoftwareQualityManagement)-產(chǎn)品度量CMM的五個(gè)級(jí)別Level4的2個(gè)KPA:預(yù)測(cè)+量化管理119CMM的五個(gè)級(jí)別Level5優(yōu)化級(jí)過(guò)程動(dòng)態(tài)調(diào)整、新技術(shù)的采用CMM的五個(gè)級(jí)別Level5優(yōu)化級(jí)120CMM的五個(gè)級(jí)別Level5的3個(gè)KPA:動(dòng)態(tài)優(yōu)化缺陷預(yù)防(DefectPrevention)技術(shù)改變管理(TechnologyChangeManagement)過(guò)程改變管理(ProcessChangeManagement)CMM的五個(gè)級(jí)別Level5的3個(gè)KPA:動(dòng)態(tài)優(yōu)化121能力成熟度模型集成CMMI--CapabilityMaturityModelIntegration是CMM模型的最新版本。CMMI有兩種表示方法:和軟件CMM一樣的階段式表現(xiàn)方法連續(xù)式的表現(xiàn)方法過(guò)程管理項(xiàng)目管理工程支持CMMI的目標(biāo)是質(zhì)量、時(shí)間表和最低的成本能力成熟度模型集成CMMI--CapabilityMatu122敏捷過(guò)程敏捷不是一個(gè)過(guò)程,是一類過(guò)程的統(tǒng)稱。敏捷方法的兩大主要特征:對(duì)“適應(yīng)性”的強(qiáng)調(diào)對(duì)“人”的關(guān)注做法:引入迭代式的開(kāi)發(fā)手段將整個(gè)軟件生命周期分解為若干個(gè)小的迭代周期獲取切實(shí)有效的客戶反饋提出12條基本原則敏捷過(guò)程敏捷不是一個(gè)過(guò)程,是一類過(guò)程的統(tǒng)稱。123極限編程極限編程(eXtremeProgramming,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ì)。極限編程極限編程(eXtremeProgramming,X124極限編程特點(diǎn):XP模型是“輕量型”或“靈活”的軟件過(guò)程模型與面向?qū)ο笳Z(yǔ)言結(jié)合的開(kāi)發(fā)方案“專家協(xié)作”的開(kāi)發(fā)方式,解決難點(diǎn)問(wèn)題核心有四個(gè)要點(diǎn):交流簡(jiǎn)單反饋勇氣極限編程特點(diǎn):125結(jié)對(duì)編程結(jié)對(duì)編程(Pair-Programming)是XP中非常重要的實(shí)踐之一。定義:兩個(gè)人坐在同一臺(tái)計(jì)算機(jī)前面,使用相同的鍵盤和鼠標(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)換。結(jié)對(duì)編程結(jié)對(duì)編程(Pair-Programming)是XP126結(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ì)編程優(yōu)勢(shì):127結(jié)對(duì)編程研究教育學(xué)研究結(jié)對(duì)編程學(xué)習(xí)效果研究結(jié)對(duì)雙方的相容性研究結(jié)對(duì)編程過(guò)程研究軟件工業(yè)界結(jié)對(duì)編程實(shí)踐方式社會(huì)動(dòng)力學(xué)研究個(gè)人編程能力的增強(qiáng)分布式結(jié)對(duì)編程結(jié)對(duì)編程開(kāi)發(fā)環(huán)境研究開(kāi)發(fā)結(jié)對(duì)編程工具的需求適合開(kāi)展分布式結(jié)對(duì)編程的工具研究結(jié)對(duì)編程研究教育學(xué)研究128自適應(yīng)軟件開(kāi)發(fā)自適應(yīng)軟件開(kāi)發(fā)(AdaptiveSoftwareDevelopment)由JimHighsmith提出著眼于人員協(xié)作和團(tuán)隊(duì)自我組織,類似于收集人們創(chuàng)意的容器生命周期三個(gè)階段包括:思考:?jiǎn)?dòng)項(xiàng)目并完成自適應(yīng)循環(huán)計(jì)劃協(xié)作:溝通與信任學(xué)習(xí):改進(jìn)真正的理解水平,通過(guò)焦點(diǎn)組、正式技術(shù)評(píng)審和事后剖析方式進(jìn)行學(xué)習(xí)自適應(yīng)軟件開(kāi)發(fā)自適應(yīng)軟件開(kāi)發(fā)(AdaptiveSoftwa129動(dòng)態(tài)系統(tǒng)開(kāi)發(fā)動(dòng)態(tài)系統(tǒng)開(kāi)發(fā)(DynamicSystemDevelopmentMethod)是一種使用增量原型開(kāi)發(fā)模式完全滿足對(duì)時(shí)間約束的系統(tǒng)構(gòu)建和維護(hù)的敏捷軟件開(kāi)發(fā)方法。借用Pareto(佩瑞多)原則:即如果交付整個(gè)應(yīng)用系統(tǒng)需用100%時(shí)間,那么80%的應(yīng)用系統(tǒng)可以用20%的時(shí)間交付建議使用迭代軟件過(guò)程動(dòng)態(tài)系統(tǒng)開(kāi)發(fā)生命周期的敏捷過(guò)程模型:可行性研究業(yè)務(wù)研究功能模型迭代設(shè)計(jì)和構(gòu)建迭代實(shí)現(xiàn)動(dòng)態(tài)系統(tǒng)開(kāi)發(fā)動(dòng)態(tài)系統(tǒng)開(kāi)發(fā)(DynamicSystemDe130特征驅(qū)動(dòng)開(kāi)發(fā)特征驅(qū)動(dòng)開(kāi)發(fā)(Feature-Drivendevelopment)把軟件開(kāi)發(fā)項(xiàng)目作為一個(gè)系統(tǒng),即生產(chǎn)軟件的系統(tǒng)定義六種關(guān)鍵項(xiàng)目角色:項(xiàng)目經(jīng)理,負(fù)責(zé)報(bào)告進(jìn)度情況、管理預(yù)算、籌措人員,以及管理設(shè)備、辦公場(chǎng)地和資源等主設(shè)計(jì)師,負(fù)責(zé)系統(tǒng)的整體設(shè)計(jì)開(kāi)發(fā)經(jīng)理,負(fù)責(zé)領(lǐng)導(dǎo)日常開(kāi)發(fā)活動(dòng),解決主程序員們自己無(wú)法解決的日常的資源沖突問(wèn)題。主程序員,參與高層的需求分析和設(shè)計(jì)活動(dòng),領(lǐng)導(dǎo)3-6人開(kāi)發(fā)小組負(fù)責(zé)新軟件特征的底層分析、設(shè)計(jì)和開(kāi)發(fā)工具。類的所有者,是主程序員領(lǐng)導(dǎo)的開(kāi)發(fā)小組的成員,對(duì)新軟件系統(tǒng)所需要的特征進(jìn)行設(shè)計(jì)、編碼、測(cè)試和編寫文檔。領(lǐng)域?qū)<?,是客戶、用戶、業(yè)主、業(yè)務(wù)分析專家或者所有這些的混合。特征驅(qū)動(dòng)開(kāi)發(fā)特征驅(qū)動(dòng)開(kāi)發(fā)(Feature-Drivende131軟件工程實(shí)踐軟件工程實(shí)踐的精髓是理解問(wèn)題、計(jì)劃解決方案、實(shí)施計(jì)劃和檢查結(jié)果的精確度等方面通用的框架活動(dòng)包括:溝通計(jì)劃建模部署普適性活動(dòng)軟件工程實(shí)踐軟件工程實(shí)踐的精髓是理解問(wèn)題、計(jì)劃解決方案、實(shí)施132軟件工程實(shí)踐核心原則:存在價(jià)值保持簡(jiǎn)潔維護(hù)視圖生產(chǎn)者要讓消費(fèi)者理解面向未來(lái)計(jì)劃復(fù)用認(rèn)真思考軟件工程實(shí)踐核心原則:133軟件工程實(shí)踐溝通實(shí)踐:包括決定項(xiàng)目涉及人的信息和溝通需求計(jì)劃實(shí)踐:是軟件開(kāi)發(fā)過(guò)程的準(zhǔn)備階段,包括定義問(wèn)題、可行性分析、制定計(jì)劃建立模型實(shí)踐:創(chuàng)建分析模型和設(shè)計(jì)模型軟件工程實(shí)踐溝通實(shí)踐:包括決定項(xiàng)目涉及人的信息和溝通需求134小結(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)建和部署。能力成熟度模型(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í)踐。小結(jié)軟件工程是一種層次化技術(shù),包括過(guò)程、技術(shù)和工具。135第3章軟件過(guò)程模型(內(nèi)容提要)瀑布模型增量模型螺旋模型協(xié)同開(kāi)發(fā)模型面向?qū)ο竽P兔嫦蚍矫娴能浖_(kāi)發(fā)第3章軟件過(guò)程模型(內(nèi)容提要)瀑布模型136瀑布模型瀑布模型提供了軟件開(kāi)發(fā)的基本框架。瀑布模型將軟件生命周期劃分為軟件計(jì)劃、需求分析和定義、軟件設(shè)計(jì)、軟件實(shí)現(xiàn)、軟件測(cè)試、軟件運(yùn)行和維護(hù)這6個(gè)階段,規(guī)定了它們自上而下、相互銜接的固定次序,如同瀑布流水逐級(jí)下落而得名它是一個(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ù)的。瀑布模型瀑布模型提供了軟件開(kāi)發(fā)的基本框架。137瀑布模型示意圖系統(tǒng)需求軟件需求需求分析設(shè)計(jì)編碼維護(hù)測(cè)試瀑布模型示意圖系統(tǒng)需求軟件需求需求分析設(shè)計(jì)編碼維護(hù)測(cè)試138瀑布模型特點(diǎn)順序性和依賴性推遲實(shí)現(xiàn)質(zhì)量保證的觀點(diǎn)是一種線性模型強(qiáng)調(diào)文檔的作用瀑布模型特點(diǎn)順序性和依賴性139增量模型增量模型(IncrementalModel)也稱為漸增模型,是在項(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ā)部分工作軟件增量提交:以一定的時(shí)間間隔增量方式向用戶提交工作軟件及相應(yīng)文檔增量模型融合了線性順序模型的基本成份和原型實(shí)現(xiàn)模型的迭代特征。增量模型增量模型(IncrementalModel)也稱為140增量模型分為漸增模型和原型模型漸增模型是瀑布模型的變種,有兩類漸增模型:增量構(gòu)造模型:它在瀑布模型基礎(chǔ)上,對(duì)一些階段進(jìn)行整體開(kāi)發(fā),對(duì)另一些階段進(jìn)行增量開(kāi)發(fā)。前面的開(kāi)發(fā)階段按瀑布模型進(jìn)行整體開(kāi)發(fā),后面的開(kāi)發(fā)階段按增量方式開(kāi)發(fā)。演化提交模型:它在瀑布模型的基礎(chǔ)上,所有階段都進(jìn)行增量開(kāi)發(fā),也就是說(shuō)不僅是增量開(kāi)發(fā),也是增量提交。增量模型分為漸增模型和原型模型141增量構(gòu)造模型需求分析設(shè)計(jì)編碼1測(cè)試1測(cè)試2編碼2編碼3測(cè)試3增量構(gòu)造模型需求分析設(shè)計(jì)編碼1測(cè)試1測(cè)試2編碼2編碼3測(cè)試3142螺旋模型螺旋模型(SpiralModel)是結(jié)合了瀑布模型和快速原型模型的迭代開(kāi)發(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)審螺旋模型螺旋模型(SpiralModel)是結(jié)合了瀑布模型143螺旋模型示意圖螺旋模型示意圖144螺旋模型活動(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)的模型螺旋模型活動(dòng)四個(gè)象限分別代表了以下活動(dòng):145協(xié)同開(kāi)發(fā)模型協(xié)同開(kāi)發(fā)模型(CollaborativeDevelopmentModel,簡(jiǎn)稱CDM),有時(shí)也叫做協(xié)同工程,可以表示為一系列框架活動(dòng)、軟件工程動(dòng)作和任務(wù)以及相應(yīng)的狀態(tài)。在某一特定時(shí)間,建?;顒?dòng)可能處于任何一種狀態(tài)。協(xié)同開(kāi)發(fā)模型定義了一系列事件,這些事件將觸發(fā)軟件工程活動(dòng)、動(dòng)作或任務(wù)的狀態(tài)轉(zhuǎn)換。協(xié)同開(kāi)發(fā)模型協(xié)同開(kāi)發(fā)模型(CollaborativeDev146協(xié)同開(kāi)發(fā)模型空狀態(tài)開(kāi)發(fā)狀態(tài)等待變更狀態(tài)評(píng)審狀態(tài)修改狀態(tài)建立基線狀態(tài)結(jié)束狀態(tài)建?;顒?dòng)協(xié)同開(kāi)發(fā)模型空狀態(tài)開(kāi)發(fā)狀態(tài)等待變更狀態(tài)評(píng)審狀態(tài)修改狀態(tài)建立基147面向?qū)ο筮^(guò)程模型面向?qū)ο笫且环N的程序設(shè)計(jì)方法,或者說(shuō)它是一種程序設(shè)計(jì)范型?;舅枷胧鞘褂脤?duì)象,類,繼承,封裝,消息等基本概念來(lái)進(jìn)行程序設(shè)計(jì)。面向?qū)ο蟮囊兀撼橄螅簭?qiáng)調(diào)實(shí)體的本質(zhì)、內(nèi)在的屬性,忽略一些無(wú)關(guān)緊要的屬性。類實(shí)現(xiàn)了對(duì)象的數(shù)據(jù)(即狀態(tài))和行為的抽象,是對(duì)象的共性的抽象。封裝性:指所有軟件部件內(nèi)部都有明確的范圍以及清楚的外部邊界。共享性:面向?qū)ο蟮奶卣鳎簩?duì)象惟一性;分類性;繼承性;多態(tài)性(多形性)。面向?qū)ο筮^(guò)程模型面向?qū)ο笫且环N的程序設(shè)計(jì)方法,或者說(shuō)它是一種148統(tǒng)一過(guò)程模型統(tǒng)一過(guò)程(UnifiedProcess,UP)是風(fēng)險(xiǎn)驅(qū)動(dòng)的、基于用例技術(shù)的、以架構(gòu)為中心的、迭代的、可配置的軟件開(kāi)發(fā)流程。統(tǒng)一過(guò)程是以用例驅(qū)動(dòng)的,以架構(gòu)為中心,迭代和增量的過(guò)程。統(tǒng)一過(guò)程是一個(gè)軟件開(kāi)發(fā)過(guò)程,是一個(gè)通用的過(guò)程框架:初始細(xì)化構(gòu)造移交統(tǒng)一過(guò)程模型統(tǒng)一過(guò)程(UnifiedProcess,UP)149統(tǒng)一過(guò)程的四個(gè)階段統(tǒng)一過(guò)程的四個(gè)階段150統(tǒng)一過(guò)程五個(gè)核心工作流需求(RequirementsCapture):致力于開(kāi)發(fā)正確的系統(tǒng)分析(Analysis):更精確地理解需求設(shè)計(jì)(Design):深入理解與非功能性需求和約束相聯(lián)系的問(wèn)題實(shí)現(xiàn)(Implementation):實(shí)現(xiàn)系統(tǒng)與集成測(cè)試(Test):驗(yàn)證實(shí)現(xiàn)的結(jié)構(gòu)統(tǒng)一過(guò)程五個(gè)核心工作流需求(RequirementsCap151核心工作流核心工作流152統(tǒng)一過(guò)程準(zhǔn)則準(zhǔn)則迭代的開(kāi)發(fā)軟件需求管理基于構(gòu)件的體系結(jié)構(gòu)可視化軟件建模驗(yàn)證軟件質(zhì)量控制軟件的變更統(tǒng)一過(guò)程主要的優(yōu)點(diǎn)是提高了團(tuán)隊(duì)生產(chǎn)力統(tǒng)一過(guò)程準(zhǔn)則準(zhǔn)則153構(gòu)件集成模型構(gòu)件集成模型是基于構(gòu)件的開(kāi)發(fā)模型構(gòu)件集成模型:整個(gè)系統(tǒng)模塊化復(fù)用構(gòu)件庫(kù)中的軟件構(gòu)件構(gòu)件集成模型是演化形的,開(kāi)發(fā)過(guò)程是迭代的5個(gè)階段:軟件的需求分析和定義體系結(jié)構(gòu)設(shè)計(jì)構(gòu)件庫(kù)建立應(yīng)用軟件構(gòu)建測(cè)試和發(fā)布構(gòu)件集成模型構(gòu)件集成模型是基于構(gòu)件的開(kāi)發(fā)模型154構(gòu)件集成模型需求分析和定義體系結(jié)構(gòu)設(shè)計(jì)構(gòu)件庫(kù)建立測(cè)試和發(fā)布應(yīng)用軟件構(gòu)建1:N構(gòu)件集成模型需求分析和定義體系結(jié)構(gòu)設(shè)計(jì)構(gòu)件庫(kù)建立測(cè)試和發(fā)布應(yīng)155面向方面的軟件開(kāi)發(fā)面向方面的軟件開(kāi)發(fā)(Aspect-OrientedSoftwareDevelopment,簡(jiǎn)稱AOSP)是一系列新興技術(shù),用以尋找軟件系統(tǒng)中新的模塊化特性。強(qiáng)調(diào)獨(dú)立描述關(guān)注點(diǎn)方面需求(AspectualRequirement)定義了那些對(duì)整個(gè)軟件體系結(jié)構(gòu)產(chǎn)生影響的橫切關(guān)注點(diǎn):對(duì)等關(guān)注點(diǎn),這種關(guān)注點(diǎn)是相互獨(dú)立的,沒(méi)有任何一個(gè)對(duì)等關(guān)注點(diǎn)比另一個(gè)更重要。如ATM的取款、轉(zhuǎn)帳和存款等擴(kuò)展(extension),是在基礎(chǔ)組件(base)之上定義的組件,它用來(lái)表示附加的服務(wù)或功能。如在圖書館系統(tǒng)中,當(dāng)還書時(shí)發(fā)現(xiàn)該書已經(jīng)超期,那么系統(tǒng)就要計(jì)算罰金。計(jì)算罰金功能就是還書的擴(kuò)展。面向方面的軟件開(kāi)發(fā)面向方面的軟件開(kāi)發(fā)(Aspect-Orie156對(duì)等關(guān)注點(diǎn)對(duì)等關(guān)注點(diǎn)157對(duì)等關(guān)注點(diǎn)(分離限制)對(duì)等關(guān)注點(diǎn)(分離限制)158擴(kuò)展擴(kuò)展159對(duì)等關(guān)注點(diǎn)(分離限制)問(wèn)題:纏繞(tangling),各個(gè)組件包含滿足不同關(guān)注點(diǎn)的實(shí)現(xiàn)(也就是編碼)分散(Scattering),某個(gè)特定關(guān)注點(diǎn)的實(shí)現(xiàn)是分散在多個(gè)組件中。分離擴(kuò)展是一種使復(fù)雜問(wèn)題易于理解的技術(shù)。對(duì)等關(guān)注點(diǎn)(分離限制)問(wèn)題:160關(guān)注點(diǎn)分離技術(shù)關(guān)注點(diǎn)分離技術(shù)(ConcernSeparationTechnique)對(duì)關(guān)注點(diǎn)進(jìn)行建模和結(jié)構(gòu)化。用例技術(shù)關(guān)注點(diǎn)分離技術(shù)關(guān)注點(diǎn)分離技術(shù)(ConcernSeparat161關(guān)注點(diǎn)合成機(jī)制關(guān)注點(diǎn)合成機(jī)制(ConcernComposit
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基本知識(shí)培訓(xùn)內(nèi)容課件
- 從“零”起步:韓國(guó)光州金龜初中漢語(yǔ)零基礎(chǔ)學(xué)生漢字偏誤剖析與教學(xué)策略構(gòu)建
- 一類線性雙曲型方程N(yùn)eumann邊值問(wèn)題高階差分格式的構(gòu)建與分析
- 八年級(jí)數(shù)學(xué)等腰三角形判定試卷及答案
- 八年級(jí)數(shù)學(xué)解方程組單元試卷及答案
- 基層公文處理與寫作課件
- 新解讀《GB-T 39699-2020橡膠 聚合物的鑒定 裂解氣相色譜-質(zhì)譜法》
- 新解讀《GB-T 20671.3-2020非金屬墊片材料分類體系及試驗(yàn)方法 第3部分-墊片材料耐液性試驗(yàn)方法》
- 著名口紅測(cè)試題及答案
- 煤礦筆試題目及答案
- 慢性阻塞性肺疾病的護(hù)理措施
- CT機(jī)拆裝協(xié)議書
- 抖音官方個(gè)人協(xié)議書
- 診所股權(quán)分紅協(xié)議書
- 亞行貸款資金管理辦法
- 2025年動(dòng)車組機(jī)械師(技師)職業(yè)技能鑒定參考試題庫(kù)(含答案)
- DB34T 4839-2024一體化智能泵站應(yīng)用技術(shù)規(guī)范
- 2025至2030中國(guó)燕麥奶市場(chǎng)銷售渠道與投資商機(jī)盈利性報(bào)告
- 東北抗聯(lián)精神在文化教育中的地位與實(shí)踐路徑研究
- 2025中美關(guān)稅戰(zhàn)時(shí)政述評(píng)-初中《道法》25年時(shí)政述評(píng)課件
- 家裝返修協(xié)議合同書模板
評(píng)論
0/150
提交評(píng)論