版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1.1軟件危機(jī)
軟件Software=Program+Data+Document
軟件(software)是計(jì)算機(jī)系統(tǒng)中與硬件(hardware)相互依存的另一部分,它包括程序(program)、相關(guān)數(shù)據(jù)(data)及其說明文檔(document)。1.1軟件危機(jī)軟件1軟件的發(fā)展早期面向批處理有限的分布自定義軟件第二階段多用戶實(shí)時數(shù)據(jù)庫軟件產(chǎn)品第三階段分布式系統(tǒng)嵌入“智能”低成本硬件消費(fèi)者的影響第四階段強(qiáng)大的桌面系統(tǒng)面向?qū)ο蠹夹g(shù)專家系統(tǒng)人工神經(jīng)網(wǎng)絡(luò)并行計(jì)算網(wǎng)路計(jì)算機(jī)195019601970198019902000軟件的發(fā)展早期第二階段第三階段第四階段195019601972軟件特征軟件是一種邏輯實(shí)體,而不是具體的物理實(shí)體軟件的生產(chǎn)與硬件不同在軟件的運(yùn)行和使用期間,沒有硬件那樣的機(jī)械磨損,老化問題磨合調(diào)整磨損用壞硬件失效率曲線時間失效率修改點(diǎn)實(shí)際曲線理想曲線時間失效率軟件失效率曲線軟件特征軟件是一種邏輯實(shí)體,而不是具體的物理實(shí)體磨合調(diào)整磨損3軟件的成本相當(dāng)昂貴軟件技術(shù)的發(fā)展落后于需求時間軟件復(fù)雜性軟件需求差距軟件技術(shù)硬、軟件成本比例的變化年份成本%軟件1950197019852019硬件軟件的成本相當(dāng)昂貴軟件技術(shù)的發(fā)展落后于需求時間軟件復(fù)雜性軟件4軟件特征軟件是一種邏輯實(shí)體,具有抽象性軟件沒有明顯的制造過程軟件在使用過程中,沒有磨損、老化的問題軟件對硬件和環(huán)境有著不同程度的依賴性軟件的開發(fā)至今尚未完全擺脫手工作坊式的開發(fā)方式,生產(chǎn)效率低軟件是復(fù)雜的,而且以后會更加復(fù)雜軟件的成本相當(dāng)昂貴大多數(shù)軟件是自定的,而不是通過已有的構(gòu)件組裝而來的軟件工作牽涉到很多社會因素軟件特征軟件是一種邏輯實(shí)體,具有抽象性52、軟件危機(jī)過去幾十年的大型軟件系統(tǒng)的開發(fā)就猶如這樣一個焦油坑,很多大型和強(qiáng)壯的動物在其中劇烈地掙扎。拉布雷阿的焦油坑(MuralofLaBreaTarPits)2、軟件危機(jī)過去幾十年的大型軟件系統(tǒng)的開發(fā)就猶如這樣一個焦油6軟件危機(jī)包含兩方面問題:-如何開發(fā)軟件,以滿足不斷增長,日趨復(fù)雜的需求;-如何維護(hù)數(shù)量不斷膨脹的軟件產(chǎn)品。鑒于軟件危機(jī)的長期性和癥狀不明顯的特點(diǎn),近年來有人建議將軟件危機(jī)更名為:Softwaredepression(軟件蕭條)Softwareaffliction(軟件困擾)“慢性的苦惱”軟件危機(jī)包含兩方面問題:7軟件危機(jī)主要有以下表現(xiàn):對軟件開發(fā)成本和進(jìn)度的估計(jì)常常不準(zhǔn)確。開發(fā)成本超出預(yù)算,實(shí)際進(jìn)度比預(yù)定計(jì)劃一再拖延的現(xiàn)象并不罕見。用戶對“已完成”系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。軟件產(chǎn)品的質(zhì)量往往靠不住。Bug一大堆,Patch一個接一個。軟件的可維護(hù)程度非常之低。軟件通常沒有適當(dāng)?shù)奈臋n資料。軟件的成本不斷提高。軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和人們需求的增長。軟件危機(jī)主要有以下表現(xiàn):8軟件危機(jī)的原因
●一方面是與軟件本身的特點(diǎn)有關(guān)●另一方面是由軟件開發(fā)和維護(hù)的方法不正確有關(guān)軟件危機(jī)的原因
●一方面是與軟件本身的特點(diǎn)有關(guān)9軟件開發(fā)工作量分配比例40%~50%10%~20%軟件開發(fā)工作量分配比例40%~50%10%~20%10引入同一變化付出的代價隨時間變化的趨勢引入同一變化付出的代價隨時間變化的趨勢11費(fèi)用分配比例55%~70%費(fèi)用分配比例55%~70%12例:?Windows95有1000萬行代碼
?Windows2000有5000萬行代碼,
3000多個工程師,幾百個小團(tuán)隊(duì)。
Exchange2000和Windows2000開發(fā)人員結(jié)構(gòu)Exchange2000Windows2000項(xiàng)目經(jīng)理25人約250人開發(fā)人員140人約1700人測試人員350人約3200人例:?Windows95有1000萬行代碼
133、消除軟件危機(jī)的途徑對計(jì)算機(jī)軟件有一個正確的認(rèn)識
(軟件≠程序)必須充分認(rèn)識到軟件開發(fā)不是某種個體勞動的神秘技巧,而應(yīng)該是一種組織良好、管理嚴(yán)密、各類人員協(xié)同配合、共同完成的工程項(xiàng)目。推廣使用在實(shí)踐中總結(jié)出來的開發(fā)軟件的成功技術(shù)和方法。開發(fā)和使用更好的軟件工具。3、消除軟件危機(jī)的途徑對計(jì)算機(jī)軟件有一個正確的認(rèn)識141.2軟件工程工程工程是對技術(shù)(或社會)實(shí)體的分析、設(shè)計(jì)、建造、驗(yàn)證和管理。水利工程建筑工程機(jī)械工程……軟件工程傳統(tǒng)工程新興工程氣象工程生物工程1.2軟件工程工程工程是對技術(shù)(或社會)實(shí)體的分析、水利15軟件工程----SoftwareEngineering于1968年NATO組織在德國召開的一次會議上提出是把軟件當(dāng)作一種工業(yè)產(chǎn)品,要求“采用工程化的原理與方法對軟件進(jìn)行計(jì)劃、開發(fā)和維護(hù)”。軟件工程----SoftwareEnginee16圍棋與軟件工程的感想圍棋圍棋棋譜拿過來的時候,大師問“后面應(yīng)該走哪里?”十個初級愛好者選擇的落點(diǎn)散布在棋盤各處……
十個職業(yè)棋手說的落子點(diǎn)都差不多,甚至包括后面的幾步……
這就是高手和低手的差別……軟件工程當(dāng)一個小程序拿過來的時候,項(xiàng)目經(jīng)理讓大家編寫……
十個中國軟件工程師寫出來的程序各有“特色”、千差萬別,十個印度軟件工程師寫出來的程序差不多,以至于懷疑是“抄襲”。項(xiàng)目經(jīng)理也不清楚中國軟件業(yè)和印度軟件業(yè)的差距是多少年只是覺得差了好遠(yuǎn)好遠(yuǎn)……圍棋與軟件工程的感想172、軟件工程定義(1)Theestablishmentanduseofsoundengineeringprinciples(methods)inordertoobtaineconomicallysoftwarethatisreliableandworksonrealmachines.(1968-FritzBauer)軟件工程就是為了經(jīng)濟(jì)地獲得可靠的且能在實(shí)際機(jī)器上高效運(yùn)行的軟件,而建立和使用完善的工程原理。2、軟件工程定義(1)Theestablishmenta18軟件工程定義(2)Softwareengineering.(1)Theapplicationofasystematic,disciplined,quantifiableapproachtothedevelopment,operation,andmaintenanceofsoftware;thatis,theapplicationofengineeringtosoftware.(2)Thestudyofapproachesasin(1).(IEEEStd610-1990.)軟件工程是:(1)把系統(tǒng)的、規(guī)范的、可度量的途徑應(yīng)用于軟件開發(fā)、運(yùn)行和維護(hù)過程,也就是把工程應(yīng)用于軟件;(2)研究(1)中提到的途徑。軟件工程定義(2)Softwareengineering.19Softwareengineering(3)SEIsoftwareengineeringdefinitionfrom1990
SEIReportonUndergraduateSoftwareEngineeringEducation(CMU/SEI-90-TR-003):
Engineeringisthesystematicapplicationofscientificknowledgeincreatingandbuildingcost-effectivesolutionstopracticalproblemsintheserviceofmankind.
Softwareengineeringisthatformofengineeringthatappliestheprinciplesofcomputerscienceandmathematicstoachievingcost-effectivesolutionstosoftwareproblems.Softwareengineering(3)SEIso20總之:軟件工程是應(yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理開發(fā)軟件的工程。它借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量,降低成本為目的??傊?1軟件工程是一門交叉學(xué)科軟件工程的主要研究內(nèi)容軟件開發(fā)技術(shù):軟件開發(fā)方法學(xué)軟件開發(fā)過程軟件工具和軟件工程環(huán)境軟件工程管理:軟件管理學(xué)軟件經(jīng)濟(jì)學(xué)軟件心理學(xué)軟件工程是一門交叉學(xué)科軟件工程的主要研究內(nèi)容22軟件工程:一種層次化技術(shù)質(zhì)量焦點(diǎn)過程方法工具
軟件工程層次圖軟件工程三個要素:方法、工具、過程Softwareengineeringlayers軟件工程:一種層次化技術(shù)質(zhì)量焦點(diǎn)過程方法工具 軟件23軟件工程是一種層次化的技術(shù),以有組織的質(zhì)量保證為基礎(chǔ)。全面的質(zhì)量管理和類似的理念刺激了不斷的過程改進(jìn),正是這種改進(jìn)導(dǎo)致了更加成熟的軟件工程方法的不斷出現(xiàn)。支持軟件工程的根基就在于對質(zhì)量的關(guān)注。軟件工程的基層是過程層。軟件工程過程是將技術(shù)層結(jié)合在一起的凝聚力,使得計(jì)算機(jī)軟件能夠被合理地和及時地開發(fā)出來。過程定義了一組關(guān)鍵過程區(qū)域框架,構(gòu)成了軟件項(xiàng)目的管理控制的基礎(chǔ),并且確立了上下各區(qū)域之間的關(guān)系,規(guī)定了技術(shù)方法的采用、工程產(chǎn)品(模型、文檔、數(shù)據(jù)、報(bào)告、表格等)的產(chǎn)生、李成本的建立、質(zhì)量的保證及變化的適當(dāng)管理。軟件工程的方法層提供里建造軟件在技術(shù)上需要“如何做?”。方法涵蓋了一系列的任務(wù):需求分析、設(shè)計(jì)、編程、測試和維護(hù)。軟件工程方法依賴于一組基本原則,這些原則控制了每一技術(shù)區(qū)域,且包含建模活動和其他描述技術(shù)。軟件工程的工具層對過程和方法提供了自動的或半自動的支持。當(dāng)這些工具被集成起來使得一個工具產(chǎn)生的信息可被另外一個工具使用時,一個支持軟件開發(fā)的系統(tǒng)就建立了,稱為計(jì)算機(jī)輔助軟件工程(CASE)。CASE集成了軟件、硬件和一個軟件工程數(shù)據(jù)庫(一個倉庫,其中包含了分析、設(shè)計(jì)、編程和測試的重要信息)。軟件工程學(xué)概論課件24軟件工程框架可用性性性確正合算選取適宜的開發(fā)模型采用合適的設(shè)計(jì)方法提供高質(zhì)量的工程支持重視軟件工程的管理基本過程原則
目標(biāo)過
程支持過程組織過程軟件工程框架可用性性性確正合算選取適宜的開發(fā)模型采用合適的設(shè)25軟件工程與一般工程的差異軟件是邏輯產(chǎn)品而不是實(shí)物產(chǎn)品軟件的功能依賴于硬件和軟件的運(yùn)行環(huán)境以及人們對它的操作軟件設(shè)計(jì)的復(fù)雜性軟件特征:功能的多樣性實(shí)現(xiàn)的多樣性能見度低軟件結(jié)構(gòu)合理性差智力密集及知識產(chǎn)權(quán)保護(hù)軟件工程與一般工程的差異軟件是邏輯產(chǎn)品而不是實(shí)物產(chǎn)品26軟件工程知識體系指南(2019版)
GuidetotheSoftwareEngineeringBodyofKnowledge2019Version
IEEE計(jì)算機(jī)學(xué)會(IEEEComputerSociety)SWEBOK的10個知識域(KnowledgeAreas,KA),軟件需求SoftwareRequirements軟件設(shè)計(jì)SoftwareDesign軟件構(gòu)造SoftwareConstruction軟件測試SoftwareTesting軟件維護(hù)SoftwareMaintenance軟件配置管理SoftwareConfigurationManagement軟件工程管理SoftwareEngineeringManagement軟件工程過程SoftwareEngineeringProcess軟件工程工具和方法SoftwareEngineeringToolsandMethods軟件質(zhì)量SoftwareQuality軟件工程知識體系指南(2019版)27軟件工程學(xué)概論課件28軟件工程學(xué)概論課件292019軟件工程知識體系指南2019軟件工程知識體系指南30軟件工程相關(guān)學(xué)科計(jì)算機(jī)工程ComputerEngineering計(jì)算機(jī)科學(xué)ComputerScience管理Management數(shù)學(xué)Mathematics項(xiàng)目管理ProjectManagement質(zhì)量管理QualityManagement軟件人類工程學(xué)SoftwareErgonomics系統(tǒng)工程SystemsEngineering軟件工程相關(guān)學(xué)科計(jì)算機(jī)工程ComputerEnginee31軟件工程—本質(zhì)特征軟件工程關(guān)注于大型程序的構(gòu)造軟件工程的中心課題是控制復(fù)雜性軟件經(jīng)常變化開發(fā)軟件的效率非常重要和諧地合作是開發(fā)軟件的關(guān)鍵軟件必須有效地支持它的用戶在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品軟件工程—本質(zhì)特征軟件工程關(guān)注于大型程序的構(gòu)造32軟件工程的基本原理用分階段的生命周期計(jì)劃嚴(yán)格管理堅(jiān)持進(jìn)行階段評審實(shí)行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計(jì)技術(shù)結(jié)果應(yīng)能清楚地審查開發(fā)小組的人員應(yīng)該少而精承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性軟件工程的基本原理用分階段的生命周期計(jì)劃嚴(yán)格管理33軟件工程技術(shù)的兩個明顯特點(diǎn):
強(qiáng)調(diào)規(guī)范化強(qiáng)調(diào)文檔化軟件工程技術(shù)的兩個明顯特點(diǎn):強(qiáng)調(diào)規(guī)范化34軟件產(chǎn)品的標(biāo)準(zhǔn)化軟件開發(fā)過程的標(biāo)準(zhǔn)化軟件產(chǎn)品的標(biāo)準(zhǔn)化軟件開發(fā)過程的標(biāo)準(zhǔn)化35“軟件工程”課程
與其它軟件專業(yè)課的區(qū)別(1)
立足于系統(tǒng)的整體。(2)
講授系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、測試及維護(hù)的理論和方法。(3)
構(gòu)筑一個軟件系統(tǒng),實(shí)踐軟件開發(fā)全過程?!败浖こ獭闭n程
與其它軟件專業(yè)課的區(qū)別(1)立足于系36“軟件工程”課程教學(xué)與實(shí)踐的目標(biāo)轉(zhuǎn)變對軟件開發(fā)的認(rèn)識:
上升程序系統(tǒng)轉(zhuǎn)變思維定式:
上升程序員系統(tǒng)工程師
(系統(tǒng)分析員)
工程化訓(xùn)練“軟件工程”課程教學(xué)與實(shí)踐的目標(biāo)轉(zhuǎn)變對軟件開發(fā)的認(rèn)識:37系統(tǒng)分析員的地位用戶分析員程序員系統(tǒng)分析員的地位用戶分析員程序員38職業(yè)素質(zhì)
ProfessionalPracticeCommunicationskillsHonesty/IntegrityTeamworkskillsInterpersonalskillsMotivation/InitiativeStrongworkethic職業(yè)素質(zhì)ProfessionalPracticeC393、軟件工程方法學(xué)把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué)。
(MethodologyorParadigm)軟件工程方法學(xué)包含3個要素:方法、工具和過程方法
—完成軟件開發(fā)的各項(xiàng)任務(wù)的技術(shù)方法,回答“怎樣做”的問題;工具
—為運(yùn)用方法而提供的自動的或半自動的軟件工程支撐環(huán)境;過程
—為了獲得高質(zhì)量的軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。3、軟件工程方法學(xué)把在軟件生命周期全過程中使用的一整套技術(shù)方40軟件工程方法學(xué)分類:傳統(tǒng)方法學(xué)面向?qū)ο蟮姆椒▽W(xué)軟件工程方法學(xué)分類:傳統(tǒng)方法學(xué)41傳統(tǒng)方法學(xué)(生命周期方法學(xué))仍然是使用十分廣泛的軟件工程方法學(xué)。采用結(jié)構(gòu)化技術(shù)來完成軟件開發(fā)的各項(xiàng)任務(wù),并使用適當(dāng)?shù)能浖ぞ呋蜍浖こ汰h(huán)境來支持結(jié)構(gòu)化技術(shù)的運(yùn)用。從上而下,順序地完成軟件開發(fā)的各階段任務(wù)。傳統(tǒng)方法學(xué)(生命周期方法學(xué))仍然是使用十分廣泛的軟件工程方法42面向?qū)ο蟮姆椒▽W(xué)出發(fā)點(diǎn)和基本原則是盡量模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過程盡可能接近人類認(rèn)識實(shí)踐解決問題的方法與過程,從而使描述問題的問題空間與實(shí)現(xiàn)解法的解空間在結(jié)構(gòu)上盡可能一致。面向?qū)ο蟮姆椒▽W(xué)出發(fā)點(diǎn)和基本原則是盡量模擬人類習(xí)慣的思維方式43面向?qū)ο蟮姆椒▽W(xué)的特點(diǎn)把對象作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一軟件構(gòu)件;把所有對象都劃分成類;按照父類與子類的關(guān)系,把若干個相關(guān)類組成一個層次結(jié)構(gòu)的系統(tǒng);對象彼此間僅能通過發(fā)送消息互相聯(lián)系。面向?qū)ο蟮姆椒▽W(xué)的特點(diǎn)把對象作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行441.3軟件生命周期
問題定義
軟件定義可行性研究
需求分析
總體設(shè)計(jì)詳細(xì)設(shè)計(jì)軟件生命周期軟件開發(fā)編碼
單元測試綜合測試運(yùn)行維護(hù)
持續(xù)滿足用戶需求1.3軟件生命周期451.4軟件過程
軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。工作任務(wù)里程碑、交付物SQA點(diǎn)
過程定義了運(yùn)用方法的順序、應(yīng)該交付的文檔資料、為保證軟件質(zhì)量和協(xié)調(diào)變化所需要采取的管理措施,以及標(biāo)志軟件開發(fā)各個階段任務(wù)完成的里程碑。公共過程框架輔助活動框架活動任務(wù)集合1.4軟件過程軟件過程是為了獲得高質(zhì)量軟件所需要完成46軟件工程學(xué)概論課件47軟件開發(fā)模型軟件開發(fā)模型是軟件開發(fā)全部過程、活動和任務(wù)的結(jié)構(gòu)框架。它能直觀表達(dá)軟件開發(fā)全過程,明確規(guī)定要完成的主要活動、任務(wù)和開發(fā)策略。軟件開發(fā)模型也常稱為:軟件過程模型軟件生存周期模型軟件工程范型軟件開發(fā)模型軟件開發(fā)模型是軟件開發(fā)全部過程、活動和任務(wù)的結(jié)構(gòu)481.瀑布模型(WaterfallModel)軟件工程學(xué)概論課件49——傳統(tǒng)的瀑布模型需求分析驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證編碼測試綜合測試維護(hù)定義時期開發(fā)時期維護(hù)時期——傳統(tǒng)的瀑布模型需求分析驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證編碼測試50傳統(tǒng)瀑布模型開發(fā)軟件的特點(diǎn)1.階段間具有順序性和依賴性。2.推遲實(shí)現(xiàn)的觀點(diǎn)。3.每個階段必須完成規(guī)定的文檔;
每個階段結(jié)束前完成文檔審查,
及早改正錯誤。傳統(tǒng)瀑布模型開發(fā)軟件的特點(diǎn)1.階段間具有順序性和依賴性。51傳統(tǒng)瀑布模型存在什么問題?軟件工程學(xué)概論課件52傳統(tǒng)的瀑布模型過于理想化。事實(shí)上,人在工作過程中不可能不犯錯誤。在設(shè)計(jì)階段可能發(fā)生規(guī)格說明文檔中的錯誤。而設(shè)計(jì)上的缺陷或錯誤可能在實(shí)現(xiàn)過程中顯現(xiàn)出來。在綜合測試階段將發(fā)現(xiàn)需求分析、設(shè)計(jì)或編碼階段的許多錯誤。傳統(tǒng)的瀑布模型過于理想化。事實(shí)上,人在工作過程中不可能不犯錯53——實(shí)際的瀑布模型——實(shí)際的瀑布模型54——瀑布模型的優(yōu)缺點(diǎn)瀑布模型有許多優(yōu)點(diǎn):可強(qiáng)迫開發(fā)人員采用規(guī)范的方法(例如,結(jié)構(gòu)化技術(shù));嚴(yán)格地規(guī)定了每個階段必須提交的文檔;要求每個階段交出的所有產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細(xì)驗(yàn)證。瀑布模型的成功在很大程度上是由于它基本上是一種文檔驅(qū)動的模型?!捌俨寄P褪怯晌臋n驅(qū)動的”這個事實(shí)也是它的一個主要缺點(diǎn)。實(shí)際項(xiàng)目很少按照該模型給出的順序進(jìn)行;用戶常常難以清楚地給出所有需求;用戶必須有耐心,等到系統(tǒng)開發(fā)完成;開發(fā)者常常被不必要地耽擱?!俨寄P偷膬?yōu)缺點(diǎn)瀑布模型有許多優(yōu)點(diǎn):可強(qiáng)迫開發(fā)人員采用552.原型模型---快速原型模型
(RapidPrototypeModel)
快速建立起來的可以在計(jì)算機(jī)上運(yùn)行的程序,他所能完成的功能往往是最終產(chǎn)品能完成的功能的一個子集。2.原型模型---快速原型模型
(RapidPr56快速原型模型工作過程原型模型從需求收集開始。開發(fā)者和用戶在一起定義軟件的總體目標(biāo),標(biāo)識出已知的需求,并規(guī)劃出進(jìn)一步定義的區(qū)域。然后是“快速設(shè)計(jì)”,快速設(shè)計(jì)集中于軟件那些對用戶可見部分的表示?!翱焖僭O(shè)計(jì)”導(dǎo)致原型的建造。原型由用戶評估,并進(jìn)一步精化待開發(fā)軟件的需求,逐步調(diào)整原型使其滿足客戶的要求。同時開發(fā)者對將要做的事情有更好的理解,這個過程是迭代的。按線性模型構(gòu)建軟件系統(tǒng)快速原型模型工作過程原型模型從需求收集開始。開發(fā)者和用戶在57
聽取用戶意見建造/修改原型用戶測試運(yùn)行原型聽取用建造/修改原型用戶測試58快速原型驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證編碼測試綜合測試維護(hù)變化的需求驗(yàn)證維護(hù)過程開發(fā)過程快速原型驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證編碼測試綜合測試維護(hù)變化的需59原型模型—適用情況用戶定義了一組一般性目標(biāo),但不能標(biāo)識出詳細(xì)的輸入、處理及輸出需求;開發(fā)者可能不能確定算法的有效性、操作系統(tǒng)的適應(yīng)性或人機(jī)交互的形式;……
原型模型可能是最好的選擇
原型模型—適用情況用戶定義了一組一般性目標(biāo),但不能標(biāo)識出60原型模型—存在的問題用戶似乎看到的是軟件的工作版本,其實(shí)……開發(fā)者常常需要實(shí)現(xiàn)上的折衷,以使原型能夠盡快工作。原型模型—存在的問題用戶似乎看到的是軟件的工作版本,其實(shí)……613.增量模型(漸增模型)(IncrementalModel)
先完成一個系統(tǒng)子集的開發(fā),再按同樣的開發(fā)步驟增加功能(系統(tǒng)子集),如此遞增下去直至滿足全部系統(tǒng)需求。系統(tǒng)的總體設(shè)計(jì)在初始子集設(shè)計(jì)階段就應(yīng)作出設(shè)想。軟件工程學(xué)概論課件62增量模型需求分析驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證維護(hù)針對每個構(gòu)件完成詳細(xì)設(shè)計(jì)、編碼和集成,經(jīng)測試后交付給用戶增量模型需求分析驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證維護(hù)針對每個構(gòu)件完成63分析分析分析分析設(shè)計(jì)設(shè)計(jì)設(shè)計(jì)設(shè)計(jì)編碼編碼編碼編碼測試測試測試測試增量1增量2增量3增量4交付交付交付交付●●●●●分析分析分析分析設(shè)計(jì)設(shè)計(jì)設(shè)計(jì)設(shè)計(jì)編碼編碼編碼編碼測試測試測試64增量模型的優(yōu)點(diǎn)在較短時間內(nèi)向用戶提交可完成部分工作的產(chǎn)品,并分批、逐步地向用戶提交產(chǎn)品。從第一個構(gòu)件交付之日起,用戶就能做一些有用的工作。整個軟件產(chǎn)品被分解成許多個增量構(gòu)件,開發(fā)人員可以一個構(gòu)件一個構(gòu)件地逐步開發(fā)。逐步增加產(chǎn)品功能可以使用戶有較充裕的時間學(xué)習(xí)和適應(yīng)新產(chǎn)品,從而減少一個全新的軟件可能給客戶組織帶來的沖擊。采用增量模型比采用瀑布模型和快速原型模型需要更精心的設(shè)計(jì),但在設(shè)計(jì)階段多付出的勞動將在維護(hù)階段獲得回報(bào)。增量模型的優(yōu)點(diǎn)在較短時間內(nèi)向用戶提交可完成部分工作的產(chǎn)品,并65使用增量模型的困難在把每個新的增量構(gòu)件集成到現(xiàn)有軟件體系結(jié)構(gòu)中時,必須不破壞原來已經(jīng)開發(fā)出的產(chǎn)品。此外,必須把軟件的體系結(jié)構(gòu)設(shè)計(jì)得便于按這種方式進(jìn)行擴(kuò)充,向現(xiàn)有產(chǎn)品中加入新構(gòu)件的過程必須簡單、方便,也就是說,軟件體系結(jié)構(gòu)必須是開放的。開發(fā)人員既要把軟件系統(tǒng)看作整體。又要看成可獨(dú)立的構(gòu)件,相互矛盾。多個構(gòu)件并行開發(fā),具有無法集成的風(fēng)險(xiǎn)。使用增量模型的困難在把每個新的增量構(gòu)件集成到現(xiàn)有軟件體系結(jié)構(gòu)664.螺旋模型(SpiralModel)4.螺旋模型67產(chǎn)品交付給用戶后用戶可能不滿意;到了預(yù)定的交付日期軟件可能還未開發(fā)出來;實(shí)際的開發(fā)成本可能超過預(yù)算;產(chǎn)品完成前一些關(guān)鍵的開發(fā)人員“跳槽”了;產(chǎn)品投入市場之前競爭對手發(fā)布了一個功能相近、價格更低的軟件等。軟件風(fēng)險(xiǎn)是任何軟件開發(fā)項(xiàng)目中都普遍存在的實(shí)際問題,項(xiàng)目越大,軟件越復(fù)雜,承擔(dān)該項(xiàng)目所冒的風(fēng)險(xiǎn)也越大。例如:產(chǎn)品交付給用戶后用戶可能不滿意;軟件風(fēng)險(xiǎn)是任何軟件開發(fā)項(xiàng)目中68螺旋模型的基本思想使用原型及其他方法來盡量降低風(fēng)險(xiǎn)。螺旋模型的基本思想69快速原型驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證編碼測試綜合測試維護(hù)變化的需求驗(yàn)證風(fēng)險(xiǎn)分析風(fēng)險(xiǎn)分析風(fēng)險(xiǎn)分析風(fēng)險(xiǎn)分析風(fēng)險(xiǎn)分析風(fēng)險(xiǎn)分析可看作在每個階段之前都增加了風(fēng)險(xiǎn)分析過程的快速原型模型。簡化的螺旋模型快速原型驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證編碼測試綜合測試維護(hù)變化的需70圖1.8完整的螺旋模型圖1.8完整的螺旋模型71螺旋模型風(fēng)險(xiǎn)分析工程實(shí)施用戶通信用戶評估產(chǎn)品維護(hù)項(xiàng)目產(chǎn)品增強(qiáng)項(xiàng)目新產(chǎn)品開發(fā)項(xiàng)目概念開發(fā)項(xiàng)目計(jì)劃建造及發(fā)布螺旋模型風(fēng)險(xiǎn)工程用戶通信用戶產(chǎn)品維護(hù)項(xiàng)目產(chǎn)品增強(qiáng)項(xiàng)目新產(chǎn)品72螺旋模型優(yōu)點(diǎn)對可選方案和約束條件的強(qiáng)調(diào)有利于已有軟件的重用,也有助于把軟件質(zhì)量作為軟件開發(fā)的一個重要目標(biāo);減少了過多測試或測試不足;維護(hù)和開發(fā)之間并沒有本質(zhì)區(qū)別。特點(diǎn)風(fēng)險(xiǎn)驅(qū)動主要適用于內(nèi)部開發(fā)的大規(guī)模軟件項(xiàng)目要有具有豐富風(fēng)險(xiǎn)評估專門知識的開發(fā)人員,否則風(fēng)險(xiǎn)更大。螺旋模型優(yōu)點(diǎn)735.面向?qū)ο竽P蛧娙P?FountainModel)可重用部件組裝模型(構(gòu)件集成模型)(ComponentIntegrationModel)5.面向?qū)ο竽P蛧娙P?45.面向?qū)ο竽P蛧娙P?FountainModel)可重用部件組裝模型(構(gòu)件集成模型)
(ComponentIntegrationModel)5.面向?qū)ο竽P蛧娙P?FountainModel)75
噴泉模型分析設(shè)計(jì)實(shí)現(xiàn)測試集成演化噴泉模型分析設(shè)計(jì)實(shí)現(xiàn)測試集成演化76噴泉模型特點(diǎn)
主要用于支持面向?qū)ο箝_發(fā)過程體現(xiàn)了軟件創(chuàng)建所固有的迭代和無間隙的特征噴泉模型特點(diǎn)主要用于支持面向?qū)ο箝_發(fā)過程體現(xiàn)了軟件創(chuàng)77可重用部件組裝模型(構(gòu)件集成模型)使用重用技術(shù)的軟件工程模型構(gòu)件(components):可重用的軟件成份可復(fù)用性(Reusability)集成化軟件開發(fā)環(huán)境(ISEE)可重用部件組裝模型(構(gòu)件集成模型)使用重用技術(shù)的軟件工程模型78可重用部件組裝模型用戶通信計(jì)劃產(chǎn)品開發(fā)及發(fā)布用戶評估風(fēng)險(xiǎn)分析標(biāo)志候選構(gòu)件查找構(gòu)件若存在則提取構(gòu)件若不存在則構(gòu)造構(gòu)件進(jìn)行下一次迭代將新構(gòu)件存入庫中可重用部件組裝模型用戶計(jì)劃產(chǎn)品開發(fā)及發(fā)布用戶風(fēng)險(xiǎn)標(biāo)志候查找若79基于構(gòu)件的軟件工程(CBSE)過程模型構(gòu)件開發(fā)分析設(shè)計(jì)編程測試領(lǐng)域分析系統(tǒng)測試構(gòu)件提交領(lǐng)域?qū)<医?jīng)驗(yàn)現(xiàn)有系統(tǒng)資料領(lǐng)域構(gòu)件需求構(gòu)件/構(gòu)架庫領(lǐng)域構(gòu)架領(lǐng)域構(gòu)件系統(tǒng)開發(fā)系統(tǒng)專用構(gòu)件應(yīng)用系統(tǒng)構(gòu)件生產(chǎn)線領(lǐng)域構(gòu)架領(lǐng)域構(gòu)件問題域用戶需求系統(tǒng)生產(chǎn)線系統(tǒng)組裝分析設(shè)計(jì)編程構(gòu)架細(xì)化專用構(gòu)件開發(fā)分析設(shè)計(jì)編程測試基于構(gòu)件的軟件工程(CBSE)過程模型構(gòu)件開80
軟件生產(chǎn)線應(yīng)用構(gòu)件提取車間構(gòu)件生產(chǎn)車間標(biāo)準(zhǔn)規(guī)范與質(zhì)量保證1基礎(chǔ)構(gòu)件,2功能構(gòu)件3接口構(gòu)件,4用戶界面構(gòu)件
應(yīng)用構(gòu)件庫
構(gòu)件庫組裝車間領(lǐng)域
1領(lǐng)域
2應(yīng)用系統(tǒng)
...1234軟件生產(chǎn)線應(yīng)用構(gòu)件構(gòu)件生標(biāo)準(zhǔn)規(guī)范816.形式化方法模型轉(zhuǎn)換模型(TransformationalModel)凈室模型(CleanroomModel)6.形式化方法模型轉(zhuǎn)換模型(Transformationa82轉(zhuǎn)換模型形式化規(guī)格說明與需求比較后修正形式化開發(fā)記錄變換n變換2變換1測試系統(tǒng)需求目標(biāo)系統(tǒng)
……轉(zhuǎn)換模型形式化與需求比形式化開發(fā)記錄變換n變換2變換1測試系83形式化規(guī)格語言及其變換技術(shù)基于模型的規(guī)格說明及其變換技術(shù)基于代數(shù)結(jié)構(gòu)及其變換技術(shù)基于時序邏輯的規(guī)格說明和驗(yàn)證技術(shù)基于可視形式化技術(shù)形式化規(guī)格語言及其變換技術(shù)基于模型的規(guī)格說明及其變換技術(shù)84
凈室模型(形式化的增量開發(fā)模型)基于思想:力求在分析和設(shè)計(jì)階段就消除錯誤,確保正確,然后在無缺陷或“潔凈”的狀態(tài)下實(shí)現(xiàn)軟件的制作。三個關(guān)鍵技術(shù):置于統(tǒng)計(jì)過程控制之下的增量開發(fā)基于函數(shù)的規(guī)范、設(shè)計(jì)、驗(yàn)證統(tǒng)計(jì)測試和軟件認(rèn)證凈室模型(形式化的增量開發(fā)模型)基于思想:85
凈室模型盒結(jié)構(gòu)規(guī)約需求收集形式化設(shè)計(jì)正確性驗(yàn)證代碼檢查測試計(jì)劃統(tǒng)計(jì)性使用測試驗(yàn)證增量#1盒結(jié)構(gòu)規(guī)約需求收集形式化設(shè)計(jì)正確性驗(yàn)證代碼檢查測試計(jì)劃統(tǒng)計(jì)性使用測試驗(yàn)證增量#2盒結(jié)構(gòu)規(guī)約需求收集形式化設(shè)計(jì)正確性驗(yàn)證代碼檢查測試計(jì)劃統(tǒng)計(jì)性使用測試驗(yàn)證增量#1............凈室模型盒結(jié)構(gòu)需求形式化正確性代碼測試計(jì)劃統(tǒng)計(jì)性驗(yàn)證86軟件工程學(xué)概論課件87謝謝!供婁浪頹藍(lán)辣襖駒靴鋸瀾互慌仲寫繹衰斡染圾明將呆則孰盆瘸砒腥悉漠塹脊髓灰質(zhì)炎(講課2019)脊髓灰質(zhì)炎(講課2019)謝謝!供婁浪頹藍(lán)辣襖駒靴鋸瀾互慌仲寫繹衰斡染圾明將呆則孰盆瘸88供婁浪頹藍(lán)辣襖駒靴鋸瀾互慌仲寫繹衰斡染圾明將呆則孰盆瘸砒腥悉漠塹脊髓灰質(zhì)炎(講課2019)脊髓灰質(zhì)炎(講課2019)供婁浪頹藍(lán)辣襖駒靴鋸瀾互慌仲寫繹衰斡染圾明將呆則孰盆瘸砒腥悉891.1軟件危機(jī)
軟件Software=Program+Data+Document
軟件(software)是計(jì)算機(jī)系統(tǒng)中與硬件(hardware)相互依存的另一部分,它包括程序(program)、相關(guān)數(shù)據(jù)(data)及其說明文檔(document)。1.1軟件危機(jī)軟件90軟件的發(fā)展早期面向批處理有限的分布自定義軟件第二階段多用戶實(shí)時數(shù)據(jù)庫軟件產(chǎn)品第三階段分布式系統(tǒng)嵌入“智能”低成本硬件消費(fèi)者的影響第四階段強(qiáng)大的桌面系統(tǒng)面向?qū)ο蠹夹g(shù)專家系統(tǒng)人工神經(jīng)網(wǎng)絡(luò)并行計(jì)算網(wǎng)路計(jì)算機(jī)195019601970198019902000軟件的發(fā)展早期第二階段第三階段第四階段1950196019791軟件特征軟件是一種邏輯實(shí)體,而不是具體的物理實(shí)體軟件的生產(chǎn)與硬件不同在軟件的運(yùn)行和使用期間,沒有硬件那樣的機(jī)械磨損,老化問題磨合調(diào)整磨損用壞硬件失效率曲線時間失效率修改點(diǎn)實(shí)際曲線理想曲線時間失效率軟件失效率曲線軟件特征軟件是一種邏輯實(shí)體,而不是具體的物理實(shí)體磨合調(diào)整磨損92軟件的成本相當(dāng)昂貴軟件技術(shù)的發(fā)展落后于需求時間軟件復(fù)雜性軟件需求差距軟件技術(shù)硬、軟件成本比例的變化年份成本%軟件1950197019852019硬件軟件的成本相當(dāng)昂貴軟件技術(shù)的發(fā)展落后于需求時間軟件復(fù)雜性軟件93軟件特征軟件是一種邏輯實(shí)體,具有抽象性軟件沒有明顯的制造過程軟件在使用過程中,沒有磨損、老化的問題軟件對硬件和環(huán)境有著不同程度的依賴性軟件的開發(fā)至今尚未完全擺脫手工作坊式的開發(fā)方式,生產(chǎn)效率低軟件是復(fù)雜的,而且以后會更加復(fù)雜軟件的成本相當(dāng)昂貴大多數(shù)軟件是自定的,而不是通過已有的構(gòu)件組裝而來的軟件工作牽涉到很多社會因素軟件特征軟件是一種邏輯實(shí)體,具有抽象性942、軟件危機(jī)過去幾十年的大型軟件系統(tǒng)的開發(fā)就猶如這樣一個焦油坑,很多大型和強(qiáng)壯的動物在其中劇烈地掙扎。拉布雷阿的焦油坑(MuralofLaBreaTarPits)2、軟件危機(jī)過去幾十年的大型軟件系統(tǒng)的開發(fā)就猶如這樣一個焦油95軟件危機(jī)包含兩方面問題:-如何開發(fā)軟件,以滿足不斷增長,日趨復(fù)雜的需求;-如何維護(hù)數(shù)量不斷膨脹的軟件產(chǎn)品。鑒于軟件危機(jī)的長期性和癥狀不明顯的特點(diǎn),近年來有人建議將軟件危機(jī)更名為:Softwaredepression(軟件蕭條)Softwareaffliction(軟件困擾)“慢性的苦惱”軟件危機(jī)包含兩方面問題:96軟件危機(jī)主要有以下表現(xiàn):對軟件開發(fā)成本和進(jìn)度的估計(jì)常常不準(zhǔn)確。開發(fā)成本超出預(yù)算,實(shí)際進(jìn)度比預(yù)定計(jì)劃一再拖延的現(xiàn)象并不罕見。用戶對“已完成”系統(tǒng)不滿意的現(xiàn)象經(jīng)常發(fā)生。軟件產(chǎn)品的質(zhì)量往往靠不住。Bug一大堆,Patch一個接一個。軟件的可維護(hù)程度非常之低。軟件通常沒有適當(dāng)?shù)奈臋n資料。軟件的成本不斷提高。軟件開發(fā)生產(chǎn)率的提高趕不上硬件的發(fā)展和人們需求的增長。軟件危機(jī)主要有以下表現(xiàn):97軟件危機(jī)的原因
●一方面是與軟件本身的特點(diǎn)有關(guān)●另一方面是由軟件開發(fā)和維護(hù)的方法不正確有關(guān)軟件危機(jī)的原因
●一方面是與軟件本身的特點(diǎn)有關(guān)98軟件開發(fā)工作量分配比例40%~50%10%~20%軟件開發(fā)工作量分配比例40%~50%10%~20%99引入同一變化付出的代價隨時間變化的趨勢引入同一變化付出的代價隨時間變化的趨勢100費(fèi)用分配比例55%~70%費(fèi)用分配比例55%~70%101例:?Windows95有1000萬行代碼
?Windows2000有5000萬行代碼,
3000多個工程師,幾百個小團(tuán)隊(duì)。
Exchange2000和Windows2000開發(fā)人員結(jié)構(gòu)Exchange2000Windows2000項(xiàng)目經(jīng)理25人約250人開發(fā)人員140人約1700人測試人員350人約3200人例:?Windows95有1000萬行代碼
1023、消除軟件危機(jī)的途徑對計(jì)算機(jī)軟件有一個正確的認(rèn)識
(軟件≠程序)必須充分認(rèn)識到軟件開發(fā)不是某種個體勞動的神秘技巧,而應(yīng)該是一種組織良好、管理嚴(yán)密、各類人員協(xié)同配合、共同完成的工程項(xiàng)目。推廣使用在實(shí)踐中總結(jié)出來的開發(fā)軟件的成功技術(shù)和方法。開發(fā)和使用更好的軟件工具。3、消除軟件危機(jī)的途徑對計(jì)算機(jī)軟件有一個正確的認(rèn)識1031.2軟件工程工程工程是對技術(shù)(或社會)實(shí)體的分析、設(shè)計(jì)、建造、驗(yàn)證和管理。水利工程建筑工程機(jī)械工程……軟件工程傳統(tǒng)工程新興工程氣象工程生物工程1.2軟件工程工程工程是對技術(shù)(或社會)實(shí)體的分析、水利104軟件工程----SoftwareEngineering于1968年NATO組織在德國召開的一次會議上提出是把軟件當(dāng)作一種工業(yè)產(chǎn)品,要求“采用工程化的原理與方法對軟件進(jìn)行計(jì)劃、開發(fā)和維護(hù)”。軟件工程----SoftwareEnginee105圍棋與軟件工程的感想圍棋圍棋棋譜拿過來的時候,大師問“后面應(yīng)該走哪里?”十個初級愛好者選擇的落點(diǎn)散布在棋盤各處……
十個職業(yè)棋手說的落子點(diǎn)都差不多,甚至包括后面的幾步……
這就是高手和低手的差別……軟件工程當(dāng)一個小程序拿過來的時候,項(xiàng)目經(jīng)理讓大家編寫……
十個中國軟件工程師寫出來的程序各有“特色”、千差萬別,十個印度軟件工程師寫出來的程序差不多,以至于懷疑是“抄襲”。項(xiàng)目經(jīng)理也不清楚中國軟件業(yè)和印度軟件業(yè)的差距是多少年只是覺得差了好遠(yuǎn)好遠(yuǎn)……圍棋與軟件工程的感想1062、軟件工程定義(1)Theestablishmentanduseofsoundengineeringprinciples(methods)inordertoobtaineconomicallysoftwarethatisreliableandworksonrealmachines.(1968-FritzBauer)軟件工程就是為了經(jīng)濟(jì)地獲得可靠的且能在實(shí)際機(jī)器上高效運(yùn)行的軟件,而建立和使用完善的工程原理。2、軟件工程定義(1)Theestablishmenta107軟件工程定義(2)Softwareengineering.(1)Theapplicationofasystematic,disciplined,quantifiableapproachtothedevelopment,operation,andmaintenanceofsoftware;thatis,theapplicationofengineeringtosoftware.(2)Thestudyofapproachesasin(1).(IEEEStd610-1990.)軟件工程是:(1)把系統(tǒng)的、規(guī)范的、可度量的途徑應(yīng)用于軟件開發(fā)、運(yùn)行和維護(hù)過程,也就是把工程應(yīng)用于軟件;(2)研究(1)中提到的途徑。軟件工程定義(2)Softwareengineering.108Softwareengineering(3)SEIsoftwareengineeringdefinitionfrom1990
SEIReportonUndergraduateSoftwareEngineeringEducation(CMU/SEI-90-TR-003):
Engineeringisthesystematicapplicationofscientificknowledgeincreatingandbuildingcost-effectivesolutionstopracticalproblemsintheserviceofmankind.
Softwareengineeringisthatformofengineeringthatappliestheprinciplesofcomputerscienceandmathematicstoachievingcost-effectivesolutionstosoftwareproblems.Softwareengineering(3)SEIso109總之:軟件工程是應(yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理開發(fā)軟件的工程。它借鑒傳統(tǒng)工程的原則、方法,以提高質(zhì)量,降低成本為目的??傊?10軟件工程是一門交叉學(xué)科軟件工程的主要研究內(nèi)容軟件開發(fā)技術(shù):軟件開發(fā)方法學(xué)軟件開發(fā)過程軟件工具和軟件工程環(huán)境軟件工程管理:軟件管理學(xué)軟件經(jīng)濟(jì)學(xué)軟件心理學(xué)軟件工程是一門交叉學(xué)科軟件工程的主要研究內(nèi)容111軟件工程:一種層次化技術(shù)質(zhì)量焦點(diǎn)過程方法工具
軟件工程層次圖軟件工程三個要素:方法、工具、過程Softwareengineeringlayers軟件工程:一種層次化技術(shù)質(zhì)量焦點(diǎn)過程方法工具 軟件112軟件工程是一種層次化的技術(shù),以有組織的質(zhì)量保證為基礎(chǔ)。全面的質(zhì)量管理和類似的理念刺激了不斷的過程改進(jìn),正是這種改進(jìn)導(dǎo)致了更加成熟的軟件工程方法的不斷出現(xiàn)。支持軟件工程的根基就在于對質(zhì)量的關(guān)注。軟件工程的基層是過程層。軟件工程過程是將技術(shù)層結(jié)合在一起的凝聚力,使得計(jì)算機(jī)軟件能夠被合理地和及時地開發(fā)出來。過程定義了一組關(guān)鍵過程區(qū)域框架,構(gòu)成了軟件項(xiàng)目的管理控制的基礎(chǔ),并且確立了上下各區(qū)域之間的關(guān)系,規(guī)定了技術(shù)方法的采用、工程產(chǎn)品(模型、文檔、數(shù)據(jù)、報(bào)告、表格等)的產(chǎn)生、李成本的建立、質(zhì)量的保證及變化的適當(dāng)管理。軟件工程的方法層提供里建造軟件在技術(shù)上需要“如何做?”。方法涵蓋了一系列的任務(wù):需求分析、設(shè)計(jì)、編程、測試和維護(hù)。軟件工程方法依賴于一組基本原則,這些原則控制了每一技術(shù)區(qū)域,且包含建模活動和其他描述技術(shù)。軟件工程的工具層對過程和方法提供了自動的或半自動的支持。當(dāng)這些工具被集成起來使得一個工具產(chǎn)生的信息可被另外一個工具使用時,一個支持軟件開發(fā)的系統(tǒng)就建立了,稱為計(jì)算機(jī)輔助軟件工程(CASE)。CASE集成了軟件、硬件和一個軟件工程數(shù)據(jù)庫(一個倉庫,其中包含了分析、設(shè)計(jì)、編程和測試的重要信息)。軟件工程學(xué)概論課件113軟件工程框架可用性性性確正合算選取適宜的開發(fā)模型采用合適的設(shè)計(jì)方法提供高質(zhì)量的工程支持重視軟件工程的管理基本過程原則
目標(biāo)過
程支持過程組織過程軟件工程框架可用性性性確正合算選取適宜的開發(fā)模型采用合適的設(shè)114軟件工程與一般工程的差異軟件是邏輯產(chǎn)品而不是實(shí)物產(chǎn)品軟件的功能依賴于硬件和軟件的運(yùn)行環(huán)境以及人們對它的操作軟件設(shè)計(jì)的復(fù)雜性軟件特征:功能的多樣性實(shí)現(xiàn)的多樣性能見度低軟件結(jié)構(gòu)合理性差智力密集及知識產(chǎn)權(quán)保護(hù)軟件工程與一般工程的差異軟件是邏輯產(chǎn)品而不是實(shí)物產(chǎn)品115軟件工程知識體系指南(2019版)
GuidetotheSoftwareEngineeringBodyofKnowledge2019Version
IEEE計(jì)算機(jī)學(xué)會(IEEEComputerSociety)SWEBOK的10個知識域(KnowledgeAreas,KA),軟件需求SoftwareRequirements軟件設(shè)計(jì)SoftwareDesign軟件構(gòu)造SoftwareConstruction軟件測試SoftwareTesting軟件維護(hù)SoftwareMaintenance軟件配置管理SoftwareConfigurationManagement軟件工程管理SoftwareEngineeringManagement軟件工程過程SoftwareEngineeringProcess軟件工程工具和方法SoftwareEngineeringToolsandMethods軟件質(zhì)量SoftwareQuality軟件工程知識體系指南(2019版)116軟件工程學(xué)概論課件117軟件工程學(xué)概論課件1182019軟件工程知識體系指南2019軟件工程知識體系指南119軟件工程相關(guān)學(xué)科計(jì)算機(jī)工程ComputerEngineering計(jì)算機(jī)科學(xué)ComputerScience管理Management數(shù)學(xué)Mathematics項(xiàng)目管理ProjectManagement質(zhì)量管理QualityManagement軟件人類工程學(xué)SoftwareErgonomics系統(tǒng)工程SystemsEngineering軟件工程相關(guān)學(xué)科計(jì)算機(jī)工程ComputerEnginee120軟件工程—本質(zhì)特征軟件工程關(guān)注于大型程序的構(gòu)造軟件工程的中心課題是控制復(fù)雜性軟件經(jīng)常變化開發(fā)軟件的效率非常重要和諧地合作是開發(fā)軟件的關(guān)鍵軟件必須有效地支持它的用戶在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品軟件工程—本質(zhì)特征軟件工程關(guān)注于大型程序的構(gòu)造121軟件工程的基本原理用分階段的生命周期計(jì)劃嚴(yán)格管理堅(jiān)持進(jìn)行階段評審實(shí)行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計(jì)技術(shù)結(jié)果應(yīng)能清楚地審查開發(fā)小組的人員應(yīng)該少而精承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性軟件工程的基本原理用分階段的生命周期計(jì)劃嚴(yán)格管理122軟件工程技術(shù)的兩個明顯特點(diǎn):
強(qiáng)調(diào)規(guī)范化強(qiáng)調(diào)文檔化軟件工程技術(shù)的兩個明顯特點(diǎn):強(qiáng)調(diào)規(guī)范化123軟件產(chǎn)品的標(biāo)準(zhǔn)化軟件開發(fā)過程的標(biāo)準(zhǔn)化軟件產(chǎn)品的標(biāo)準(zhǔn)化軟件開發(fā)過程的標(biāo)準(zhǔn)化124“軟件工程”課程
與其它軟件專業(yè)課的區(qū)別(1)
立足于系統(tǒng)的整體。(2)
講授系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、測試及維護(hù)的理論和方法。(3)
構(gòu)筑一個軟件系統(tǒng),實(shí)踐軟件開發(fā)全過程。“軟件工程”課程
與其它軟件專業(yè)課的區(qū)別(1)立足于系125“軟件工程”課程教學(xué)與實(shí)踐的目標(biāo)轉(zhuǎn)變對軟件開發(fā)的認(rèn)識:
上升程序系統(tǒng)轉(zhuǎn)變思維定式:
上升程序員系統(tǒng)工程師
(系統(tǒng)分析員)
工程化訓(xùn)練“軟件工程”課程教學(xué)與實(shí)踐的目標(biāo)轉(zhuǎn)變對軟件開發(fā)的認(rèn)識:126系統(tǒng)分析員的地位用戶分析員程序員系統(tǒng)分析員的地位用戶分析員程序員127職業(yè)素質(zhì)
ProfessionalPracticeCommunicationskillsHonesty/IntegrityTeamworkskillsInterpersonalskillsMotivation/InitiativeStrongworkethic職業(yè)素質(zhì)ProfessionalPracticeC1283、軟件工程方法學(xué)把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué)。
(MethodologyorParadigm)軟件工程方法學(xué)包含3個要素:方法、工具和過程方法
—完成軟件開發(fā)的各項(xiàng)任務(wù)的技術(shù)方法,回答“怎樣做”的問題;工具
—為運(yùn)用方法而提供的自動的或半自動的軟件工程支撐環(huán)境;過程
—為了獲得高質(zhì)量的軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。3、軟件工程方法學(xué)把在軟件生命周期全過程中使用的一整套技術(shù)方129軟件工程方法學(xué)分類:傳統(tǒng)方法學(xué)面向?qū)ο蟮姆椒▽W(xué)軟件工程方法學(xué)分類:傳統(tǒng)方法學(xué)130傳統(tǒng)方法學(xué)(生命周期方法學(xué))仍然是使用十分廣泛的軟件工程方法學(xué)。采用結(jié)構(gòu)化技術(shù)來完成軟件開發(fā)的各項(xiàng)任務(wù),并使用適當(dāng)?shù)能浖ぞ呋蜍浖こ汰h(huán)境來支持結(jié)構(gòu)化技術(shù)的運(yùn)用。從上而下,順序地完成軟件開發(fā)的各階段任務(wù)。傳統(tǒng)方法學(xué)(生命周期方法學(xué))仍然是使用十分廣泛的軟件工程方法131面向?qū)ο蟮姆椒▽W(xué)出發(fā)點(diǎn)和基本原則是盡量模擬人類習(xí)慣的思維方式,使開發(fā)軟件的方法與過程盡可能接近人類認(rèn)識實(shí)踐解決問題的方法與過程,從而使描述問題的問題空間與實(shí)現(xiàn)解法的解空間在結(jié)構(gòu)上盡可能一致。面向?qū)ο蟮姆椒▽W(xué)出發(fā)點(diǎn)和基本原則是盡量模擬人類習(xí)慣的思維方式132面向?qū)ο蟮姆椒▽W(xué)的特點(diǎn)把對象作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行為的統(tǒng)一軟件構(gòu)件;把所有對象都劃分成類;按照父類與子類的關(guān)系,把若干個相關(guān)類組成一個層次結(jié)構(gòu)的系統(tǒng);對象彼此間僅能通過發(fā)送消息互相聯(lián)系。面向?qū)ο蟮姆椒▽W(xué)的特點(diǎn)把對象作為融合了數(shù)據(jù)及在數(shù)據(jù)上的操作行1331.3軟件生命周期
問題定義
軟件定義可行性研究
需求分析
總體設(shè)計(jì)詳細(xì)設(shè)計(jì)軟件生命周期軟件開發(fā)編碼
單元測試綜合測試運(yùn)行維護(hù)
持續(xù)滿足用戶需求1.3軟件生命周期1341.4軟件過程
軟件過程是為了獲得高質(zhì)量軟件所需要完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。工作任務(wù)里程碑、交付物SQA點(diǎn)
過程定義了運(yùn)用方法的順序、應(yīng)該交付的文檔資料、為保證軟件質(zhì)量和協(xié)調(diào)變化所需要采取的管理措施,以及標(biāo)志軟件開發(fā)各個階段任務(wù)完成的里程碑。公共過程框架輔助活動框架活動任務(wù)集合1.4軟件過程軟件過程是為了獲得高質(zhì)量軟件所需要完成135軟件工程學(xué)概論課件136軟件開發(fā)模型軟件開發(fā)模型是軟件開發(fā)全部過程、活動和任務(wù)的結(jié)構(gòu)框架。它能直觀表達(dá)軟件開發(fā)全過程,明確規(guī)定要完成的主要活動、任務(wù)和開發(fā)策略。軟件開發(fā)模型也常稱為:軟件過程模型軟件生存周期模型軟件工程范型軟件開發(fā)模型軟件開發(fā)模型是軟件開發(fā)全部過程、活動和任務(wù)的結(jié)構(gòu)1371.瀑布模型(WaterfallModel)軟件工程學(xué)概論課件138——傳統(tǒng)的瀑布模型需求分析驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證編碼測試綜合測試維護(hù)定義時期開發(fā)時期維護(hù)時期——傳統(tǒng)的瀑布模型需求分析驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證編碼測試139傳統(tǒng)瀑布模型開發(fā)軟件的特點(diǎn)1.階段間具有順序性和依賴性。2.推遲實(shí)現(xiàn)的觀點(diǎn)。3.每個階段必須完成規(guī)定的文檔;
每個階段結(jié)束前完成文檔審查,
及早改正錯誤。傳統(tǒng)瀑布模型開發(fā)軟件的特點(diǎn)1.階段間具有順序性和依賴性。140傳統(tǒng)瀑布模型存在什么問題?軟件工程學(xué)概論課件141傳統(tǒng)的瀑布模型過于理想化。事實(shí)上,人在工作過程中不可能不犯錯誤。在設(shè)計(jì)階段可能發(fā)生規(guī)格說明文檔中的錯誤。而設(shè)計(jì)上的缺陷或錯誤可能在實(shí)現(xiàn)過程中顯現(xiàn)出來。在綜合測試階段將發(fā)現(xiàn)需求分析、設(shè)計(jì)或編碼階段的許多錯誤。傳統(tǒng)的瀑布模型過于理想化。事實(shí)上,人在工作過程中不可能不犯錯142——實(shí)際的瀑布模型——實(shí)際的瀑布模型143——瀑布模型的優(yōu)缺點(diǎn)瀑布模型有許多優(yōu)點(diǎn):可強(qiáng)迫開發(fā)人員采用規(guī)范的方法(例如,結(jié)構(gòu)化技術(shù));嚴(yán)格地規(guī)定了每個階段必須提交的文檔;要求每個階段交出的所有產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細(xì)驗(yàn)證。瀑布模型的成功在很大程度上是由于它基本上是一種文檔驅(qū)動的模型?!捌俨寄P褪怯晌臋n驅(qū)動的”這個事實(shí)也是它的一個主要缺點(diǎn)。實(shí)際項(xiàng)目很少按照該模型給出的順序進(jìn)行;用戶常常難以清楚地給出所有需求;用戶必須有耐心,等到系統(tǒng)開發(fā)完成;開發(fā)者常常被不必要地耽擱。——瀑布模型的優(yōu)缺點(diǎn)瀑布模型有許多優(yōu)點(diǎn):可強(qiáng)迫開發(fā)人員采用1442.原型模型---快速原型模型
(RapidPrototypeModel)
快速建立起來的可以在計(jì)算機(jī)上運(yùn)行的程序,他所能完成的功能往往是最終產(chǎn)品能完成的功能的一個子集。2.原型模型---快速原型模型
(RapidPr145快速原型模型工作過程原型模型從需求收集開始。開發(fā)者和用戶在一起定義軟件的總體目標(biāo),標(biāo)識出已知的需求,并規(guī)劃出進(jìn)一步定義的區(qū)域。然后是“快速設(shè)計(jì)”,快速設(shè)計(jì)集中于軟件那些對用戶可見部分的表示。“快速設(shè)計(jì)”導(dǎo)致原型的建造。原型由用戶評估,并進(jìn)一步精化待開發(fā)軟件的需求,逐步調(diào)整原型使其滿足客戶的要求。同時開發(fā)者對將要做的事情有更好的理解,這個過程是迭代的。按線性模型構(gòu)建軟件系統(tǒng)快速原型模型工作過程原型模型從需求收集開始。開發(fā)者和用戶在146
聽取用戶意見建造/修改原型用戶測試運(yùn)行原型聽取用建造/修改原型用戶測試147快速原型驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證編碼測試綜合測試維護(hù)變化的需求驗(yàn)證維護(hù)過程開發(fā)過程快速原型驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證編碼測試綜合測試維護(hù)變化的需148原型模型—適用情況用戶定義了一組一般性目標(biāo),但不能標(biāo)識出詳細(xì)的輸入、處理及輸出需求;開發(fā)者可能不能確定算法的有效性、操作系統(tǒng)的適應(yīng)性或人機(jī)交互的形式;……
原型模型可能是最好的選擇
原型模型—適用情況用戶定義了一組一般性目標(biāo),但不能標(biāo)識出149原型模型—存在的問題用戶似乎看到的是軟件的工作版本,其實(shí)……開發(fā)者常常需要實(shí)現(xiàn)上的折衷,以使原型能夠盡快工作。原型模型—存在的問題用戶似乎看到的是軟件的工作版本,其實(shí)……1503.增量模型(漸增模型)(IncrementalModel)
先完成一個系統(tǒng)子集的開發(fā),再按同樣的開發(fā)步驟增加功能(系統(tǒng)子集),如此遞增下去直至滿足全部系統(tǒng)需求。系統(tǒng)的總體設(shè)計(jì)在初始子集設(shè)計(jì)階段就應(yīng)作出設(shè)想。軟件工程學(xué)概論課件151增量模型需求分析驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證維護(hù)針對每個構(gòu)件完成詳細(xì)設(shè)計(jì)、編碼和集成,經(jīng)測試后交付給用戶增量模型需求分析驗(yàn)證規(guī)格說明驗(yàn)證設(shè)計(jì)驗(yàn)證維護(hù)針對每個構(gòu)件完成152分析分析分析分析設(shè)計(jì)設(shè)計(jì)設(shè)計(jì)設(shè)計(jì)編碼編碼編碼編碼測試測試測試測試增量1增量2增量3增量4交付交付交付交付●●●●●分析分析分析分析設(shè)計(jì)設(shè)計(jì)設(shè)計(jì)設(shè)計(jì)編碼編碼編碼編碼測試測試測試153增量模型的優(yōu)點(diǎn)在較短時間內(nèi)向用戶提交可完成部分工作的產(chǎn)品,并分批、逐步地向用戶提交產(chǎn)品。從第一個構(gòu)件交付之日起,用戶就能做一些有用的工作。整個軟件產(chǎn)品被分解成許多個增量構(gòu)件,開發(fā)人員可以一個構(gòu)件一個構(gòu)件地逐步開發(fā)。逐步增加產(chǎn)品功能可以使用戶有較充裕的時間學(xué)習(xí)和適應(yīng)新產(chǎn)品,從而減少一個全新的軟件可能給客戶組織帶來的沖擊。采用增量模型比采用瀑布模型和快速原型模型需要更精心的設(shè)計(jì),但在設(shè)計(jì)階段多付出的勞動將在維護(hù)階段獲得回報(bào)。增量模型的優(yōu)點(diǎn)在較短時間內(nèi)向用戶提交可完成部分工作的產(chǎn)品,并154使用增量模型的困難在把每個新的增量構(gòu)件集成到現(xiàn)有軟件體系結(jié)構(gòu)中時,必須不破壞原來已經(jīng)開發(fā)出的產(chǎn)品。此外,必須把軟件的體系結(jié)構(gòu)設(shè)計(jì)得便于按這種方式進(jìn)行擴(kuò)充,向現(xiàn)有產(chǎn)品中加入新構(gòu)件的過程必須簡單、方便,也就是說,軟件體系結(jié)構(gòu)必須是開放的。開發(fā)人員既要把軟件系統(tǒng)看作整體。又要看成可獨(dú)立的構(gòu)件,相互矛盾。多個構(gòu)件并行開發(fā),具有無法集成的風(fēng)險(xiǎn)。使用增量模型的困難在把每個新的增量構(gòu)件集成到現(xiàn)有軟件體系結(jié)構(gòu)1554.螺旋模型(Sp
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年年企業(yè)增長分析與總結(jié)
- 2025年大學(xué)二年級(測繪工程)測繪數(shù)據(jù)處理試題及答案
- 2025年中職(農(nóng)村電氣技術(shù))低壓電路維修基礎(chǔ)試題及答案
- 2025年大學(xué)第二學(xué)年(教育學(xué))教育心理學(xué)模擬測試試題及答案
- 2025年高職酒店管理(智慧酒店運(yùn)營)試題及答案
- 2025年中職測繪工程技術(shù)(地形測量)試題及答案
- 2025年中職建筑工程造價(工程預(yù)算)試題及答案
- 2025年高職(高分子材料工程技術(shù))塑料模具設(shè)計(jì)綜合測試試題及答案
- 2025年高職農(nóng)產(chǎn)品質(zhì)量檢測(質(zhì)量檢測)試題及答案
- 2025年大學(xué)大四(戲劇影視文學(xué))影視導(dǎo)演基礎(chǔ)綜合測試試題及答案
- 廣西出版?zhèn)髅郊瘓F(tuán)有限公司2026年招聘備考題庫附答案詳解
- 陶瓷工藝品彩繪師改進(jìn)水平考核試卷含答案
- 2025廣東百萬英才匯南粵惠州市市直事業(yè)單位招聘急需緊缺人才31人(公共基礎(chǔ)知識)測試題附答案
- 事業(yè)單位考察材料范文
- DB36-T 1158-2019 風(fēng)化殼離子吸附型稀土礦產(chǎn)地質(zhì)勘查規(guī)范
- 周圍神經(jīng)損傷及炎癥康復(fù)診療規(guī)范
- 青海工程建設(shè)監(jiān)理統(tǒng)一用表
- 城市道路照明路燈工程施工組織方案資料
- GA 38-2021銀行安全防范要求
- 上海市復(fù)旦附中2022年數(shù)學(xué)高三上期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
評論
0/150
提交評論