




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第1章軟件開發(fā)方法(二)軟件工程計(jì)算機(jī)教學(xué)實(shí)驗(yàn)中心
1第1章軟件開發(fā)方法計(jì)算機(jī)教學(xué)實(shí)驗(yàn)中心1問題的提出什么是軟件工程?為什么提出軟件工程?主要研究哪些問題?軟件工程的目標(biāo)、原理軟件開發(fā)活動(dòng)……2問題的提出什么是軟件工程?21.了解軟件工程的基本概念、基本原則2.理解軟件工程的主要定義3.理解軟件過程及模型4.了解軟件工程方法學(xué)31.了解軟件工程的基本概念、基本原則3一、軟件工程概述什么是軟件工程?為什么要學(xué)習(xí)軟件工程?軟件工程包括哪些內(nèi)容?……4一、軟件工程概述什么是軟件工程?4“軟件工程是一種描述規(guī)范?!? MichaelJackson軟件工程?“軟件工程是一種描述規(guī)范?!避浖こ??軟件工程的定義軟件工程專家Boehm定義IEEE給出的定義教科書給出的定義6軟件工程的定義軟件工程專家Boehm定義6軟件工程專家Boehm定義著名軟件工程專家B.W.Boehm為軟件工程的定義是:運(yùn)用現(xiàn)代科學(xué)技術(shù)知識(shí)來設(shè)計(jì)并構(gòu)造計(jì)算機(jī)程序及為開發(fā)、運(yùn)行和維護(hù)這些程序所必需的相關(guān)文件資料。7軟件工程專家Boehm定義著名軟件工程專家B.W.BoehmIEEE給出的定義1983年IEEE給出的定義為:以優(yōu)質(zhì)、高效、低成本為目標(biāo),研究開發(fā)、運(yùn)行和維護(hù)軟件以及使之退役的系統(tǒng)方法。其中,“軟件”的定義為:計(jì)算機(jī)程序、方法、規(guī)則、相關(guān)的文檔資料以及在計(jì)算機(jī)上運(yùn)行時(shí)所必需的數(shù)據(jù)。8IEEE給出的定義1983年IEEE給出的定義為:8教科書給出的定義教科書中定義為:運(yùn)用系統(tǒng)的、規(guī)范的和可定量的方法來開發(fā)、運(yùn)行和維護(hù)軟件。9教科書給出的定義教科書中定義為:9關(guān)于軟件工程學(xué)軟件工程是一門交叉學(xué)科,涉及到計(jì)算機(jī)科學(xué)、管理科學(xué)、工程學(xué)和數(shù)學(xué)。軟件工程的理論、方法、技術(shù)都是建立在計(jì)算機(jī)科學(xué)的基礎(chǔ)上;它是用管理學(xué)的原理、方法進(jìn)行軟件生產(chǎn)管理;用工程學(xué)的觀點(diǎn)進(jìn)行費(fèi)用估算、制定進(jìn)度和實(shí)施方案;用數(shù)學(xué)方法建立軟件可靠性模型以及分析各種算法。10關(guān)于軟件工程學(xué)軟件工程是一門交叉學(xué)科,涉及到計(jì)算機(jī)科學(xué)、管理了解并掌握軟件的開發(fā)步驟、方法、準(zhǔn)則。為了:克服、解決“軟件危機(jī)”改進(jìn)“軟件生產(chǎn)”方法、工具提高軟件的生產(chǎn)率為什么學(xué)習(xí)軟件工程?了解并掌握軟件的開發(fā)步驟、方法、準(zhǔn)則。為了:為什么學(xué)軟件工程的目標(biāo)開發(fā)生產(chǎn)盡可能多的軟件產(chǎn)品;提高軟件的生產(chǎn)效率;滿足應(yīng)用的功能需要和具有較好的軟件性能;能按時(shí)、按質(zhì)完成軟件開發(fā)任務(wù);降低軟件開發(fā)成本。12軟件工程的目標(biāo)開發(fā)生產(chǎn)盡可能多的軟件產(chǎn)品;12目標(biāo)的實(shí)現(xiàn)是矛盾的在實(shí)際開發(fā)過程中,企圖讓以上幾個(gè)目標(biāo)都達(dá)到理想的程度是非常困難的。例如,如果過于追求提高軟件的性能,可能造成開發(fā)出的軟件對(duì)硬件有較大的依賴,從而直接影響到軟件的通用性和可移植性。實(shí)際上軟件工程就是要解決如何在用戶要求的功能、質(zhì)量、成本、進(jìn)度之間取得平衡,才能真正滿足應(yīng)用的實(shí)際需要。13目標(biāo)的實(shí)現(xiàn)是矛盾的在實(shí)際開發(fā)過程中,企圖讓以上幾個(gè)目標(biāo)都達(dá)到軟件工程具體目標(biāo)保護(hù)公眾安全、健康和幸福建立、健全開發(fā)軟件產(chǎn)品的學(xué)科識(shí)別新軟件或修改現(xiàn)行軟件的需求風(fēng)險(xiǎn)避免開發(fā)失敗的軟件鼓勵(lì)尋求開發(fā)和采購軟件產(chǎn)品的替代方法促進(jìn)軟件生存期所有方面生產(chǎn)率的改進(jìn)通過不斷更新軟件,發(fā)現(xiàn)新的用途便于開發(fā)具有“魯棒性”的軟件通過對(duì)引起故障或有影響的元素的不斷檢測(cè)以促進(jìn)軟件過程和產(chǎn)品的改進(jìn)。14軟件工程具體目標(biāo)保護(hù)公眾安全、健康和幸福14軟件工程的本質(zhì)特征軟件工程關(guān)注于大型程序的構(gòu)造軟件工程的中心課題是控制復(fù)雜度軟件經(jīng)常變化開發(fā)軟件的效率非常重要和諧地合作是開發(fā)軟件的關(guān)鍵軟件必須有效地支持它的用戶在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品15軟件工程的本質(zhì)特征軟件工程關(guān)注于大型程序的構(gòu)造15軟件工程原理自1968年提出“軟件工程”的概念以來,專家學(xué)者又陸續(xù)提出了100多條關(guān)于軟件工程的準(zhǔn)則。著名軟件工程專家B.W.Boehm于1983年發(fā)表的一篇論文中提出了軟件工程的七條基本原理。他認(rèn)為這七條原理是確保軟件產(chǎn)品質(zhì)量和開發(fā)效率的最小準(zhǔn)則集合。16軟件工程原理自1968年提出“軟件工程”的概念以來,專家學(xué)者軟件工程七條基本原理用分階段的生命周期計(jì)劃嚴(yán)格管理堅(jiān)持進(jìn)行階段評(píng)審實(shí)行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計(jì)技術(shù)結(jié)果應(yīng)能清楚地審查開發(fā)小組人員少而精承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性17軟件工程七條基本原理用分階段的生命周期計(jì)劃嚴(yán)格管理17①用分階段生命周期計(jì)劃嚴(yán)格管理據(jù)統(tǒng)計(jì)發(fā)現(xiàn):不成功軟件項(xiàng)目中半數(shù)是因計(jì)劃不周造成的。在軟件的整個(gè)生命周期中應(yīng)該制定并嚴(yán)格執(zhí)行六類計(jì)劃:項(xiàng)目概要、項(xiàng)目進(jìn)度表、項(xiàng)目控制、產(chǎn)品控制、驗(yàn)證及運(yùn)行維護(hù)計(jì)劃。不同層次的管理人員必須嚴(yán)格按照計(jì)劃各盡其職地去管理軟件開發(fā)與維護(hù)工作,絕不能受客戶或上級(jí)的影響而擅自背離預(yù)定計(jì)劃。18①用分階段生命周期計(jì)劃嚴(yán)格管理據(jù)統(tǒng)計(jì)發(fā)現(xiàn):不成功軟件項(xiàng)目中半②堅(jiān)持進(jìn)行階段評(píng)審軟件的質(zhì)量保證工作不能等到編碼階段結(jié)束之后再進(jìn)行。這是因?yàn)椋捍蟛糠皱e(cuò)誤是在編碼之前造成的(根據(jù)Boehm統(tǒng)計(jì),設(shè)計(jì)錯(cuò)誤占軟件錯(cuò)誤的63%,編碼錯(cuò)誤占37%)。錯(cuò)誤發(fā)現(xiàn)與改正得越晚,所付出的代價(jià)也越高。因此,在每個(gè)階段進(jìn)行嚴(yán)格的評(píng)審,盡早發(fā)現(xiàn)并修正各個(gè)階段中所犯的錯(cuò)誤是一條必須遵循的重要原則。19②堅(jiān)持進(jìn)行階段評(píng)審軟件的質(zhì)量保證工作不能等到編碼階段結(jié)束之后示意圖關(guān)于階段評(píng)審作用
20示意圖關(guān)于階段評(píng)審作用20③實(shí)行嚴(yán)格的產(chǎn)品控制在軟件開發(fā)過程中不應(yīng)隨意改變需求,但不能禁止更改需求。當(dāng)必須修改時(shí),為了保持軟件各配置成分的一致性,必須實(shí)行嚴(yán)格的產(chǎn)品控制。一切有關(guān)修改軟件的建議都必須按照嚴(yán)格的規(guī)程進(jìn)行評(píng)審,獲準(zhǔn)后才能實(shí)施修改。絕對(duì)不能誰想修改就隨意進(jìn)行修改的行為。21③實(shí)行嚴(yán)格的產(chǎn)品控制在軟件開發(fā)過程中不應(yīng)隨意改變需求,但不能④采用現(xiàn)代程序設(shè)計(jì)技術(shù)以前的結(jié)構(gòu)化程序設(shè)計(jì)技術(shù),如今的面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)都被實(shí)踐證明是各個(gè)不同歷史階段的優(yōu)秀程序設(shè)計(jì)技術(shù)和方法。采用先進(jìn)的技術(shù)既可以提高軟件開發(fā)的效率,又可以提高軟件維護(hù)的效率。22④采用現(xiàn)代程序設(shè)計(jì)技術(shù)以前的結(jié)構(gòu)化程序設(shè)計(jì)技術(shù),如今的面向?qū)Β萁Y(jié)果應(yīng)能清楚地審查軟件產(chǎn)品是看不見、摸不著的邏輯產(chǎn)品,軟件開發(fā)人員的工作進(jìn)展情況可見性差。為了提高開發(fā)過程的可見性,應(yīng)根據(jù)軟件開發(fā)項(xiàng)目中的目標(biāo)完成期限,規(guī)定開發(fā)組織的責(zé)任和產(chǎn)品標(biāo)準(zhǔn),使得到的結(jié)果能夠清楚的審查。23⑤結(jié)果應(yīng)能清楚地審查軟件產(chǎn)品是看不見、摸不著的邏輯產(chǎn)品,軟件⑥開發(fā)小組人員少而精開發(fā)小組成員的素質(zhì)應(yīng)該高,人員不宜過多。人員素質(zhì)和數(shù)量是影響產(chǎn)品質(zhì)量和開發(fā)效率的重要因素。素質(zhì)高的人開發(fā)效率比低的人高幾倍甚至幾十倍,而錯(cuò)誤則明顯得少;人數(shù)增加,管理難度也增加。24⑥開發(fā)小組人員少而精開發(fā)小組成員的素質(zhì)應(yīng)該高,人員不宜過多。⑦承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性要積極主動(dòng)地采納新的軟件技術(shù),要不斷總結(jié)經(jīng)驗(yàn);不能自以為是,固步自封,唯我獨(dú)好。大千世界,錯(cuò)綜復(fù)雜,只有不斷學(xué)習(xí),才能不斷進(jìn)取,不斷進(jìn)步。25⑦承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性要積極主動(dòng)地采納新的軟件技軟件開發(fā)活動(dòng)軟件工程過程是由一系列軟件工程的階段任務(wù)和活動(dòng)組成。1995年ISO將軟件生存周期的活動(dòng)和任務(wù)劃分為3個(gè)過程:主要過程(需求、設(shè)計(jì)、構(gòu)造、測(cè)試和維護(hù))支持過程(軟件配置、軟件工程管理、軟件過程和軟件質(zhì)量)組織過程(基礎(chǔ)設(shè)施建設(shè)、工具和方法、改進(jìn)、培訓(xùn))26軟件開發(fā)活動(dòng)軟件工程過程是由一系列軟件工程的階段任務(wù)和活動(dòng)組主要過程主要過程包括的軟件開發(fā)活動(dòng)和任務(wù)是:軟件需求軟件設(shè)計(jì)軟件構(gòu)造軟件測(cè)試軟件維護(hù)27主要過程主要過程包括的軟件開發(fā)活動(dòng)和任務(wù)是:271、軟件需求任務(wù):收集、分析、理解、確定用戶的要求;然后把用戶的要求精確、完整地描述表達(dá)出來。目的:要回答“要解決什么問題?”,既系統(tǒng)”做什么?“。分兩步驟:可行性研究、制定軟件開發(fā)計(jì)劃結(jié)果:可行性報(bào)告、軟件計(jì)劃、需求說明書需求說明書是讓用戶理解:“什么是他們真正需要的”。281、軟件需求任務(wù):收集、分析、理解、確定用戶的要求;然后把用了解用戶需求有關(guān)的問題什么是需求?希望,功能,限制,必需品,任何必要的東西;什么時(shí)候?從確定方案開始;為什么?用戶的需求是開發(fā)需要的依據(jù);來自哪里?來自用戶,工業(yè)標(biāo)準(zhǔn),和實(shí)踐經(jīng)驗(yàn);如何實(shí)現(xiàn)?使所有相關(guān)的人參與需求分析活動(dòng),通過有效的交流實(shí)現(xiàn);誰來做?用戶,工程管理人員,開發(fā)人員,維護(hù)人員。29了解用戶需求有關(guān)的問題什么是需求?希望,功能,限制,必需品,用戶參與需求分析的重要性根據(jù)StandishGroup1994年發(fā)表的一份研究報(bào)告統(tǒng)計(jì),延遲的、超出預(yù)算的、未完成的工程的最普遍的原因是:⑴缺少用戶參與;⑵不完備的需求規(guī)范;⑶改變需求規(guī)范。30用戶參與需求分析的重要性根據(jù)StandishGroup1需求分析的難點(diǎn)⑴問題的復(fù)雜性。
涉及因素多而;如運(yùn)行環(huán)境和系統(tǒng)功能等。⑵交流障礙。
涉及不同類型人員較多,知識(shí)背景、角度、角色的不同;⑶不完備性和不一致性。
用戶對(duì)問題的陳述有矛盾、片面性等造成。⑷需求易變性。
需求是變化的。31需求分析的難點(diǎn)⑴問題的復(fù)雜性。31需求工作的重要性IBM公司有關(guān)研究的結(jié)果表明:有效的需求管理可以降低開發(fā)成本。通常改正需求錯(cuò)誤需要付出改正其他錯(cuò)誤10倍以上的代價(jià)。需求錯(cuò)誤通常導(dǎo)致軟件工程中全部錯(cuò)誤的25-40%。改正很少的需求錯(cuò)誤可以避免大量耗費(fèi)在返工上的成本和時(shí)間。32需求工作的重要性IBM公司有關(guān)研究的結(jié)果表明:32需求活動(dòng)⑴識(shí)別問題通過調(diào)研和收集資料,了解用戶的確切需求,并將用戶提出的功能行為和特殊要求等用雙方都能理解的表達(dá)方式逐條列出。在整個(gè)分析期間要和用戶充分協(xié)商。⑵可行性研究對(duì)于大型復(fù)雜問題,要對(duì)用戶的要求及實(shí)現(xiàn)環(huán)境從技術(shù)、經(jīng)濟(jì)和社會(huì)因素三個(gè)方面進(jìn)行可行性研究,以確定問題是否可解。⑶分析建模建立軟件求解模型;信息、行為和表示。⑷需求規(guī)格化及編寫文檔需求規(guī)格說明書、初步用戶使用手冊(cè)等。33需求活動(dòng)⑴識(shí)別問題332、軟件設(shè)計(jì)任務(wù):給出實(shí)現(xiàn)系統(tǒng)的實(shí)施藍(lán)圖。目的:要回答“如何解決該問題?”,既系統(tǒng)“怎樣做?”。步驟:概要設(shè)計(jì):解決系統(tǒng)的模塊劃分、模塊的層次結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計(jì)。詳細(xì)設(shè)計(jì):解決每個(gè)摸塊內(nèi)部算法和數(shù)據(jù)結(jié)構(gòu)。結(jié)果:系統(tǒng)設(shè)計(jì)說明書和模塊功能說明書342、軟件設(shè)計(jì)任務(wù):給出實(shí)現(xiàn)系統(tǒng)的實(shí)施藍(lán)圖。34軟件設(shè)計(jì)工作軟件設(shè)計(jì)要做的工作總的可以歸結(jié)為:軟件系統(tǒng)結(jié)構(gòu)(軟件結(jié)構(gòu))設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、界面設(shè)計(jì)和過程設(shè)計(jì)。設(shè)計(jì)辦法是功能分解,包括:⑴采用某種設(shè)計(jì)方法,將一個(gè)復(fù)雜的系統(tǒng)按功能劃分成模塊;⑵確定每個(gè)模塊的功能;⑶確定模塊之間的接口,即模塊之間傳遞的信息;⑸評(píng)價(jià)模塊結(jié)構(gòu)的質(zhì)量。35軟件設(shè)計(jì)工作軟件設(shè)計(jì)要做的工作總的可以歸結(jié)為:軟件系統(tǒng)結(jié)構(gòu)(軟件設(shè)計(jì)準(zhǔn)則(1)軟件結(jié)構(gòu)準(zhǔn)則;分層結(jié)構(gòu)、便于控制;軟件結(jié)構(gòu)的深度和寬度要適中;具有合理的扇出和扇入數(shù)。(2)模塊化準(zhǔn)則;分解復(fù)雜問題;(3)模塊獨(dú)立性準(zhǔn)則;應(yīng)使模塊之間和與外部環(huán)境之間接口的復(fù)雜性盡量地減小;模塊應(yīng)具有低耦合、高內(nèi)聚;(4)數(shù)據(jù)和過程描述清晰、可區(qū)分(表達(dá)式);(5)成果可重復(fù)。36軟件設(shè)計(jì)準(zhǔn)則(1)軟件結(jié)構(gòu)準(zhǔn)則;分層結(jié)構(gòu)、便于控制;軟件結(jié)構(gòu)軟件設(shè)計(jì)方法⑴面向數(shù)據(jù)流的設(shè)計(jì)方法;又進(jìn)一步細(xì)分為變換流和事務(wù)流方法;⑵結(jié)構(gòu)化設(shè)計(jì)方法;⑶面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法;Jackson方法;⑷Warnier方法⑸面向?qū)ο蠓椒?7軟件設(shè)計(jì)方法⑴面向數(shù)據(jù)流的設(shè)計(jì)方法;又進(jìn)一步細(xì)分為變換流和使用的開發(fā)工具⑴層次圖、HIPO圖、結(jié)構(gòu)圖⑵程序流程圖、N-S圖、問題分析圖PAD(ProgramAnalysisDiagram)⑶類語言、過程設(shè)計(jì)語言PDL(ProceduralDesignLanguage)等⑷統(tǒng)一建模語言UML(UnifiedModelingLanguage)38使用的開發(fā)工具⑴層次圖、HIPO圖、結(jié)構(gòu)圖383、軟件構(gòu)造任務(wù):根據(jù)設(shè)計(jì)說明書中每個(gè)模塊的控制流程編寫出相應(yīng)的源程序。目的:寫出高質(zhì)量的代碼和相應(yīng)餓文檔。構(gòu)造要注意使系統(tǒng)更易于使用和系統(tǒng)的可重用性。選擇合適的開發(fā)工具及系統(tǒng)軟件、數(shù)據(jù)庫軟件、中間件等。制定編程規(guī)范。
結(jié)果:源程序和文檔393、軟件構(gòu)造任務(wù):根據(jù)設(shè)計(jì)說明書中每個(gè)模塊的控制流程編寫出相編程風(fēng)格編程風(fēng)格主要體現(xiàn)在如何描述源程序文件、數(shù)據(jù)說明、輸入輸出等。(1)源程序文件;變量名的命名、源程序中的注解以及源程序的書寫格式;(2)數(shù)據(jù)說明;按不同類型數(shù)據(jù)的順序以及字典順序說明、對(duì)數(shù)據(jù)結(jié)構(gòu)加注釋說明;(3)語句構(gòu)造;語句構(gòu)造一般規(guī)則;(4)輸入輸出語句;輸入輸出語句的規(guī)則。40編程風(fēng)格編程風(fēng)格主要體現(xiàn)在如何描述源程序文件、數(shù)據(jù)說明、輸入語句構(gòu)造規(guī)則不要為節(jié)省空間而把多個(gè)語句寫在同一行;盡量避免復(fù)雜的條件測(cè)試;盡量減少對(duì)“非”條件的測(cè)試;避免使用多層嵌套的循環(huán)和重復(fù);利用括號(hào)使表達(dá)式的運(yùn)算順序清晰直觀。41語句構(gòu)造規(guī)則不要為節(jié)省空間而把多個(gè)語句寫在同一行;41I/O語句規(guī)則保持輸入格式簡(jiǎn)單;對(duì)所有輸入數(shù)據(jù)都進(jìn)行校驗(yàn);使用數(shù)據(jù)結(jié)束標(biāo)記,不要要求用戶指定數(shù)據(jù)的數(shù)目;當(dāng)程序設(shè)計(jì)語言對(duì)格式有嚴(yán)格要求時(shí),應(yīng)保持輸入格式的一致性;檢查輸入項(xiàng)中重要組合的合法性;給所有的輸出數(shù)據(jù)加標(biāo)記,并設(shè)計(jì)良好的輸出報(bào)表;用標(biāo)記標(biāo)明交互的輸入請(qǐng)求,應(yīng)規(guī)定可以使用的選擇值或邊界值;要根據(jù)用戶的不同類型、特點(diǎn)和要求設(shè)計(jì)輸入方案,輸入數(shù)據(jù)的格式要簡(jiǎn)單,應(yīng)具有完備的出錯(cuò)檢查和出錯(cuò)恢復(fù)措施。42I/O語句規(guī)則保持輸入格式簡(jiǎn)單;42程序設(shè)計(jì)語言選用程序設(shè)計(jì)語言時(shí)要考慮它的三種特性:(1)心理特性對(duì)人-機(jī)通信質(zhì)量有重要影響。例如,人們習(xí)慣使用已熟悉的程序設(shè)計(jì)語言,由此產(chǎn)生的惰性影響人們學(xué)習(xí)新語言。(2)工程特性它涉及到軟件的可移植性、開發(fā)工具的可利用性等。(3)技術(shù)特性它對(duì)設(shè)計(jì)質(zhì)量、人和整個(gè)軟件工程有影響。例如,對(duì)數(shù)據(jù)結(jié)構(gòu)復(fù)雜性要求很高的系統(tǒng),考慮選用C及C++等語言;若對(duì)高性能和實(shí)時(shí)功能要求高,可考慮選用Ada語言。43程序設(shè)計(jì)語言選用程序設(shè)計(jì)語言時(shí)要考慮它的三種特性:434、軟件測(cè)試任務(wù):檢查、發(fā)現(xiàn)程序中的錯(cuò)誤,提高系統(tǒng)可靠性。目的:保證系統(tǒng)的正確性、可靠性和可用性?;卮穑骸霸撓到y(tǒng)是否能實(shí)現(xiàn)規(guī)定的操作?”。方式:模塊測(cè)試、組裝測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試結(jié)果:測(cè)試報(bào)告和軟件修改報(bào)告等。444、軟件測(cè)試任務(wù):檢查、發(fā)現(xiàn)程序中的錯(cuò)誤,提高系統(tǒng)可靠性。4測(cè)試包括⑴單元測(cè)試。對(duì)一個(gè)模塊的測(cè)試,一般以白盒法測(cè)試為主,多個(gè)模塊可以并行進(jìn)行。⑵集成測(cè)試。最終將本項(xiàng)目所有模塊集成在一起測(cè)試,交出完整程序產(chǎn)品。⑶確認(rèn)測(cè)試。以用戶為主的測(cè)試。證實(shí)系統(tǒng)能否正確地實(shí)現(xiàn)其功能。⑷系統(tǒng)測(cè)試。軟件只是整個(gè)應(yīng)用系統(tǒng)的一部分。最后要集成為一個(gè)整體,包括硬件、軟件以及相關(guān)的其它設(shè)備。此時(shí)的測(cè)試稱系統(tǒng)測(cè)試。45測(cè)試包括⑴單元測(cè)試。對(duì)一個(gè)模塊的測(cè)試,一般以白盒法測(cè)試為α測(cè)試與β測(cè)試阿爾法測(cè)試:對(duì)于商品軟件在研制方有客戶(訂貨方)參與的確認(rèn)測(cè)試叫阿爾法測(cè)試。貝塔測(cè)試:指在若干客戶場(chǎng)地由客戶組織,最終用戶參與的測(cè)試,此時(shí)所有文檔均予凍結(jié),作為本軟件版本的基線。對(duì)于新軟件,改版則為里程碑。46α測(cè)試與β測(cè)試阿爾法測(cè)試:46設(shè)計(jì)測(cè)試用例應(yīng)考慮的問題①界面:內(nèi)界面主要檢查參數(shù)個(gè)數(shù)及類型匹配。外界面主要檢查I/O文件、數(shù)據(jù)格式、類型匹配。②模塊的數(shù)據(jù)結(jié)構(gòu):類型是否不正確或不一致?初始化、缺省值使用情況;變量名拼錯(cuò);上、下界溢出等數(shù)據(jù)異常,測(cè)試能否正確處理等。③邊界條件:保證在邊界值的情況下模塊依然可以正確操作,值出界時(shí)要有正確反應(yīng)。④獨(dú)立路徑:保證至少所有語句都要執(zhí)行一次,每個(gè)條件或子條件都執(zhí)行一次更好。⑤錯(cuò)誤處理路徑:不管程序有無異常處理都要察看出錯(cuò)處理路徑。特別要考察是否死機(jī)。47設(shè)計(jì)測(cè)試用例應(yīng)考慮的問題①界面:內(nèi)界面主要檢查參數(shù)個(gè)數(shù)及類程序調(diào)試調(diào)試是在測(cè)試發(fā)現(xiàn)錯(cuò)誤之后排除錯(cuò)誤的過程。調(diào)試過程會(huì)發(fā)生兩種結(jié)果:找到原因并把問題排除;沒找到問題的原因。調(diào)試是軟件開發(fā)過程中最艱苦的腦力勞動(dòng)。在調(diào)試過程中遇到的錯(cuò)誤有所不同,錯(cuò)誤的后果越嚴(yán)重,查找錯(cuò)誤原因的壓力也越大。通常,壓力會(huì)導(dǎo)致軟件開發(fā)人員在改正一個(gè)錯(cuò)誤的同時(shí)可能引入更多的錯(cuò)誤。48程序調(diào)試調(diào)試是在測(cè)試發(fā)現(xiàn)錯(cuò)誤之后排除錯(cuò)誤的過程。調(diào)試過程會(huì)發(fā)調(diào)試技術(shù)①輸出存儲(chǔ)器內(nèi)容;特點(diǎn)是效率低、難定位、輸出的是靜止?fàn)顟B(tài)的程序內(nèi)容。②加打印語句;特點(diǎn)是顯示的是程序的動(dòng)態(tài)信息,但大量的輸出,時(shí)間慢,可能引出新的問題。③用調(diào)試工具;特點(diǎn)是動(dòng)態(tài)調(diào)試,可自動(dòng)執(zhí)行,是目前廣泛采用的一種調(diào)試技術(shù)。49調(diào)試技術(shù)①輸出存儲(chǔ)器內(nèi)容;特點(diǎn)是效率低、難定位、輸出的是靜調(diào)試策略①試探法。大概分析、估計(jì)錯(cuò)誤的位置。②回溯法。確定最先出現(xiàn)“癥狀”的地方,然后沿程序的控制流程往回追蹤源程序,直到找出錯(cuò)誤源為止。③對(duì)分查找法。若已知程序中若干個(gè)關(guān)鍵點(diǎn)的正確值,然后用調(diào)試工具在關(guān)鍵點(diǎn)附近處輸入正確值;若輸出正確,則故障在前半部分;否則,再查后半部分。④歸納法。從線索出發(fā),通過分析線索之間的關(guān)系而找出故障。主要步驟為:收集有關(guān)數(shù)據(jù),組織數(shù)據(jù),導(dǎo)出假設(shè),證明假設(shè)。50調(diào)試策略①試探法。大概分析、估計(jì)錯(cuò)誤的位置。50調(diào)試的啟發(fā)性原則這部分內(nèi)容大多是心理學(xué)的問題:要思考,不要盲目地修改程序,至使錯(cuò)誤越改越多;如陷入困境,放到第2天去解決;陷入絕境后,要與別人交談你的問題,或許對(duì)你有所啟發(fā);避免用試驗(yàn)法。不要在問題沒有搞清楚之前,就改動(dòng)程序,這樣對(duì)找出錯(cuò)誤不利,程序越改越亂,以致于面目全非。51調(diào)試的啟發(fā)性原則這部分內(nèi)容大多是心理學(xué)的問題:515、軟件維護(hù)任務(wù):改正軟件系統(tǒng)在使用過程中發(fā)現(xiàn)的隱含錯(cuò)誤,擴(kuò)充在使用過程中新的功能要求。目的:維護(hù)軟件系統(tǒng)的正常運(yùn)行?;卮穑合到y(tǒng)是否滿足用戶的應(yīng)用要求。階段結(jié)果:軟件系統(tǒng)的問題報(bào)告和軟件修改報(bào)告。525、軟件維護(hù)任務(wù):改正軟件系統(tǒng)在使用過程中發(fā)現(xiàn)的隱含錯(cuò)誤,擴(kuò)軟件維護(hù)的原因⑴軟件的原有功能和性能可能不再適應(yīng)用戶的要求;⑵軟件的工作環(huán)境改變了(例如,增加了新的外部設(shè)備),軟件也要做相應(yīng)的變更;⑶軟件運(yùn)行中發(fā)現(xiàn)錯(cuò)誤,需要修改。53軟件維護(hù)的原因⑴軟件的原有功能和性能可能不再適應(yīng)用戶的要求維護(hù)活動(dòng)分類⑴校正性維護(hù):指為了識(shí)別和糾正錯(cuò)誤,修改軟件性能上的缺陷,進(jìn)行確定和修改錯(cuò)誤的過程。占整個(gè)維護(hù)工作的15%。⑵適應(yīng)性維護(hù):為了使本軟件適應(yīng)硬件和軟件的變化而修改軟件的過程稱為適應(yīng)性維護(hù)。占整個(gè)維護(hù)活動(dòng)的25%。⑶完善性維護(hù):增加軟件功能、增強(qiáng)軟件性能、提高運(yùn)行效率而進(jìn)行的維護(hù)活動(dòng)稱為完善性維護(hù)。占整個(gè)維護(hù)工作的55%。⑷預(yù)防性維護(hù):為了提高軟件的可維護(hù)性和可靠性而對(duì)軟件進(jìn)行的修改稱為預(yù)防性維護(hù)。只占整個(gè)維護(hù)活動(dòng)的5%。54維護(hù)活動(dòng)分類⑴校正性維護(hù):指為了識(shí)別和糾正錯(cuò)誤,修改軟件性維護(hù)活動(dòng)的特點(diǎn)⑴非結(jié)構(gòu)化維護(hù)和結(jié)構(gòu)化維護(hù)。主要區(qū)別是開發(fā)過程是否用軟件工程方法,若各階段均有相應(yīng)的文檔記錄,系統(tǒng)則容易維護(hù)。采用結(jié)構(gòu)化維護(hù)可以大大提高軟件維護(hù)效率。⑵軟件維護(hù)的困難性。是由于軟件需求分析和開發(fā)方法的缺陷。⑶軟件維護(hù)的費(fèi)用在總費(fèi)用中的比重不斷增加,已經(jīng)上升到了70%~80%或更多,我們看到的軟件不斷升級(jí)就是維護(hù)的具體體現(xiàn)。55維護(hù)活動(dòng)的特點(diǎn)⑴非結(jié)構(gòu)化維護(hù)和結(jié)構(gòu)化維護(hù)。主要區(qū)別是開發(fā)過維護(hù)活動(dòng)流程建立維護(hù)機(jī)構(gòu),組織維護(hù)活動(dòng):⑴制定維護(hù)申請(qǐng)報(bào)告;⑵審查維護(hù)申請(qǐng)報(bào)告并批準(zhǔn);⑶進(jìn)行維護(hù)并做詳細(xì)記錄;⑷復(fù)審。56維護(hù)活動(dòng)流程建立維護(hù)機(jī)構(gòu),組織維護(hù)活動(dòng):56軟件的可維護(hù)性軟件可維護(hù)性是指維護(hù)人員理解、修改軟件的難易程度。⑴可維護(hù)性因素軟件的可維護(hù)性因素主要包括:可理解性、可測(cè)試性、可修改性、可靠性和可使用性。⑵提高可維護(hù)性的方法提高軟件的可維護(hù)性必須從軟件生存周期各個(gè)階段的工作入手,每個(gè)階段都把可維護(hù)性貫徹到階段的開發(fā)活動(dòng)過程中,并按規(guī)范對(duì)階段工作進(jìn)行評(píng)估,以保證個(gè)階段的工作按質(zhì)按量完成。⑶文檔文檔是影響軟件可維護(hù)性的決定性因素。文檔分為用戶文檔和系統(tǒng)文檔兩類。57軟件的可維護(hù)性軟件可維護(hù)性是指維護(hù)人員理解、修改軟件的難易程支持過程支持過程包括的軟件開發(fā)活動(dòng)和任務(wù)是:軟件配置管理軟件工程管理軟件過程軟件質(zhì)量58支持過程支持過程包括的軟件開發(fā)活動(dòng)和任務(wù)是:58軟件配置管理軟件修改后會(huì)發(fā)生什么呢?同步更新——當(dāng)兩個(gè)或兩個(gè)以上的角色各自工作在同一產(chǎn)物上時(shí),最后一個(gè)修改者會(huì)破壞前者的工作。通知不達(dá)——當(dāng)被若干開發(fā)者共享的產(chǎn)品中的問題被解決時(shí),修改未被通知到一些開發(fā)者。多個(gè)版本——軟件修改與文檔不一致。新版本公布的管理和監(jiān)控。配置和變更管理提供了準(zhǔn)則管理演化系統(tǒng)中的多個(gè)變體,跟蹤給定軟件創(chuàng)建過程中的版本。59軟件配置管理軟件修改后會(huì)發(fā)生什么呢?59軟件工程管理軟件工程管理是一門藝術(shù)。其主要活動(dòng)有:管理項(xiàng)目的框架、計(jì)劃配備執(zhí)行監(jiān)控項(xiàng)目的實(shí)踐準(zhǔn)則、管理風(fēng)險(xiǎn)的框架。項(xiàng)目管理是過程管理的主要體現(xiàn):(1)建立與客戶的通信;(2)作計(jì)劃,定義資源、時(shí)限、落實(shí)到開發(fā)組;(3)風(fēng)險(xiǎn)分析,評(píng)估所采用的技術(shù)和管理帶來的風(fēng)險(xiǎn);(4)工程,即軟件分析與設(shè)計(jì);(5)構(gòu)造和發(fā)布,即編碼、測(cè)試、交付、安裝、文檔、培訓(xùn);(6)客戶評(píng)審,獲得客戶的反饋。60軟件工程管理軟件工程管理是一門藝術(shù)。其主要活動(dòng)有:管理項(xiàng)目的軟件過程軟件過程是生產(chǎn)軟件的一系列可預(yù)測(cè)、可控制活動(dòng)的步驟,即把用戶要求轉(zhuǎn)化為軟件產(chǎn)品的一系列有序開發(fā)活動(dòng)的集合。軟件過程給出了軟件開發(fā)所要遵循的基本路線,它的重要性在于它使一組開發(fā)活動(dòng)具有了一致性和結(jié)構(gòu),從而使在軟件開發(fā)過程中人們能夠使用自己熟悉的技術(shù)和工具設(shè)計(jì)和開發(fā)軟件,并能保持軟件產(chǎn)品和服務(wù)在一定程度上的一致性和質(zhì)量。過程的重要性還在于它能夠獲取經(jīng)驗(yàn)并將這些經(jīng)驗(yàn)傳授給別人。但是,Wasserman在1996年提出:“應(yīng)用類型和組織文化之間的巨大差別使得過程本身規(guī)范化是不可能的”。相反,他建議不同類型的軟件,使用不同的過程。61軟件過程軟件過程是生產(chǎn)軟件的一系列可預(yù)測(cè)、可控制活動(dòng)的步驟,軟件質(zhì)量軟件質(zhì)量保證SQA活動(dòng),貫穿于軟件過程始終。開發(fā)單位成立SQA小組負(fù)責(zé)全面質(zhì)量管理。在開發(fā)項(xiàng)目計(jì)劃時(shí)就要做出SQA計(jì)劃。其工作:各種測(cè)試測(cè)試軟件是否滿足規(guī)格說明要求。各種評(píng)審為多種人員參與的討論會(huì),以規(guī)格說明或各種標(biāo)準(zhǔn),規(guī)范為準(zhǔn)評(píng)價(jià)各項(xiàng)軟件工作。各種審計(jì)以職能人員為主審,審查軟件過程產(chǎn)物是否符合標(biāo)準(zhǔn)或規(guī)格說明書。報(bào)告和記錄所有測(cè)試、評(píng)審、審計(jì)都要詳細(xì)記錄并寫出報(bào)告,報(bào)告和記錄均要整理、歸檔。以上活動(dòng)均應(yīng)在軟件質(zhì)量保證計(jì)劃中列出。62軟件質(zhì)量軟件質(zhì)量保證SQA活動(dòng),貫穿于軟件過程始終。開發(fā)單位組織過程組織過程包括的軟件開發(fā)活動(dòng)和任務(wù)是:基礎(chǔ)設(shè)施建設(shè)軟件工程工具和方法改進(jìn)培訓(xùn)63組織過程組織過程包括的軟件開發(fā)活動(dòng)和任務(wù)是:63基礎(chǔ)設(shè)施建設(shè)建立、維護(hù)和管理用于軟件開發(fā)過程中其他活動(dòng)的硬件和軟件的基礎(chǔ)設(shè)施;建立、維護(hù)和管理用于軟件開發(fā)過程中其他活動(dòng)的軟件開發(fā)工具和方法;建立、維護(hù)和管理用于軟件開發(fā)過程中其他活動(dòng)的開發(fā)技術(shù)、技術(shù)規(guī)范和標(biāo)準(zhǔn);建立、維護(hù)和管理用于軟件開發(fā)過程中其他活動(dòng)的其他基礎(chǔ)設(shè)施。64基礎(chǔ)設(shè)施建設(shè)建立、維護(hù)和管理用于軟件開發(fā)過程中其他活動(dòng)的硬件軟件工程工具和方法程序的開發(fā)、運(yùn)行都是在支持軟件的基礎(chǔ)上作出的。支持軟件的總和稱之為軟件開發(fā)環(huán)境。早期的環(huán)境只有最必要的軟件工具;例如語言的編譯器、連接器、加載和運(yùn)行工具、排錯(cuò)、信息顯示及編輯工具。稱為最小環(huán)境工具集。70年代中期,軟件工程師迫于軟件危機(jī)的壓力,提出了計(jì)算機(jī)輔助軟件工程(CASE)的設(shè)想,開發(fā)出一系列工具盡量使軟件過程的各項(xiàng)活動(dòng)自動(dòng)化、半自動(dòng)化。相應(yīng)問題:工具日益增多,給使用者帶來不便,例如,各工具的使用方法、格式、參數(shù)等差異的問題。這就在客觀上產(chǎn)生了對(duì)于集成的CASE工具的需求。65軟件工程工具和方法程序的開發(fā)、運(yùn)行都是在支持軟件的基礎(chǔ)上作出計(jì)算機(jī)輔助軟件工程CASE人們期望,借助CASE工具,有朝一日軟件開發(fā)人員可以像在自動(dòng)流水線上生產(chǎn)計(jì)算機(jī)那樣生產(chǎn)軟件。CASE工具具有如下特征:支持專用的個(gè)人計(jì)算環(huán)境;使用圖形功能對(duì)軟件系統(tǒng)進(jìn)行說明并建立文檔;將生命周期各階段的工作連接在一起;收集和連接軟件系統(tǒng)從最初的軟件需求到軟件維護(hù)各個(gè)環(huán)節(jié)的所有信息;用人工智能實(shí)現(xiàn)軟件開發(fā)和維護(hù)工作的自動(dòng)化。66計(jì)算機(jī)輔助軟件工程CASE人們期望,借助CASE工具,有朝一軟件工程工具信息工程工具過程模型和管理工具項(xiàng)目計(jì)劃工具風(fēng)險(xiǎn)分析工具項(xiàng)目管理工具需求追蹤工具度量和管理工具文檔工具系統(tǒng)軟件工具質(zhì)量保證工具數(shù)據(jù)庫管理工具67軟件工程工具信息工程工具67改進(jìn)軟件開發(fā)技術(shù)會(huì)隨著軟件開發(fā)工程實(shí)踐活動(dòng)的不斷開展而發(fā)展。改進(jìn)活動(dòng)就負(fù)有總結(jié)經(jīng)驗(yàn)、不斷改進(jìn)開發(fā)技術(shù)和開發(fā)方法的職能。改進(jìn)活動(dòng)的基本內(nèi)容有:對(duì)整個(gè)軟件生存過程進(jìn)行評(píng)估;對(duì)現(xiàn)行過程進(jìn)行度量;對(duì)現(xiàn)行過程進(jìn)行改進(jìn)。68改進(jìn)軟件開發(fā)技術(shù)會(huì)隨著軟件開發(fā)工程實(shí)踐活動(dòng)的不斷開展而發(fā)展。培訓(xùn)為了使用戶能夠盡快掌握使用軟件系統(tǒng),要對(duì)用戶進(jìn)行培訓(xùn)。活動(dòng)包括:制定培訓(xùn)計(jì)劃。編寫培訓(xùn)教材。實(shí)施培訓(xùn)計(jì)劃。69培訓(xùn)為了使用戶能夠盡快掌握使用軟件系統(tǒng),要對(duì)用戶進(jìn)行培訓(xùn)。6軟件工程方法學(xué)通常把在軟件生命周期全過程中使用的一整套技術(shù)方法的集合稱為方法學(xué),也稱為范型。軟件工程方法學(xué)包括3個(gè)要素:方法、工具和過程。這三者之間是相互聯(lián)系的。方法是完成軟件開發(fā)過程中各項(xiàng)任務(wù)的技術(shù)方法,回答“怎樣做”的問題;工具是為運(yùn)用方法而提供的自動(dòng)或半自動(dòng)的軟件支撐環(huán)境;過程是為了獲得高質(zhì)量的軟件所需完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。70軟件工程方法學(xué)通常把在軟件生命周期全過程中使用的一整套技術(shù)方軟件工程的基本問題軟件工程開發(fā)技術(shù)的角度軟件工程開發(fā)技術(shù)思想與原則過程方法工具解決軟件工程的三目標(biāo)質(zhì)量成本進(jìn)度71軟件工程的基本問題軟件工程開發(fā)技術(shù)的角度軟件工程開發(fā)技術(shù)傳統(tǒng)方法學(xué)傳統(tǒng)方法學(xué)是建立在軟件生存周期方法學(xué)和結(jié)構(gòu)化方法學(xué)的基礎(chǔ)上。因此,具有明顯的那個(gè)時(shí)代的特點(diǎn)。70年代,計(jì)算機(jī)技術(shù)水平不高,開發(fā)工具少而且性能差。對(duì)于大型復(fù)雜問題的求解,人們不得不采用“將大化小“、“將難化簡(jiǎn)”,最后“分而治之”的開發(fā)策略。72傳統(tǒng)方法學(xué)傳統(tǒng)方法學(xué)是建立在軟件生存周期方法學(xué)和結(jié)構(gòu)化方法學(xué)結(jié)構(gòu)化方法概述結(jié)構(gòu)化方法是由結(jié)構(gòu)化分析方法SA、結(jié)構(gòu)化設(shè)計(jì)方法SD和結(jié)構(gòu)化程序設(shè)計(jì)方法SP組成的,該方法的核心是基于功能分解的模塊化層次結(jié)構(gòu)方法。73結(jié)構(gòu)化方法概述結(jié)構(gòu)化方法是由結(jié)構(gòu)化分析方法SA、結(jié)構(gòu)化設(shè)計(jì)方結(jié)構(gòu)化分析SA自頂向下逐步求精模塊化設(shè)計(jì)結(jié)構(gòu)化分析的要點(diǎn)是:將大問題化為小問題,找出關(guān)鍵點(diǎn)、難點(diǎn),定量描述;核心是:分解;手段是:模塊化。74結(jié)構(gòu)化分析SA自頂向下74結(jié)構(gòu)化設(shè)計(jì)SD模塊化結(jié)構(gòu)模塊獨(dú)立性結(jié)構(gòu)化設(shè)計(jì)方法的要點(diǎn)是:將系統(tǒng)設(shè)計(jì)成由相對(duì)獨(dú)立、單一功能的模塊組成的軟件結(jié)構(gòu)。模塊獨(dú)立性用模塊內(nèi)的內(nèi)聚性和模塊間的耦合性來衡量。75結(jié)構(gòu)化設(shè)計(jì)SD模塊化結(jié)構(gòu)75結(jié)構(gòu)化程序設(shè)計(jì)SP自頂向下逐步加細(xì);模塊只有一個(gè)入口,一個(gè)出口;三種基本結(jié)構(gòu);開發(fā)支持庫;主程序員組結(jié)構(gòu)化程序設(shè)計(jì)方法SP的要點(diǎn)是用三種基本結(jié)構(gòu)的語句編寫只有一個(gè)入口和一個(gè)出口的模塊程序,盡可能地采用重用程序,開發(fā)組織形式為主程序員組。76結(jié)構(gòu)化程序設(shè)計(jì)SP自頂向下逐步加細(xì);76傳統(tǒng)方法學(xué)的缺點(diǎn)過分強(qiáng)調(diào)了分階段實(shí)施,使得開發(fā)過程各個(gè)階段之間存在嚴(yán)重的順序性和依賴性;很難將一個(gè)復(fù)雜的問題化簡(jiǎn)、分解;設(shè)計(jì)方法存在很大的主觀隨意性;基于功能分解的系統(tǒng)結(jié)構(gòu)難于修改和擴(kuò)充;思維成果的可重用性很差;數(shù)據(jù)和對(duì)數(shù)據(jù)的處理是分離的;忽視了人在軟件開發(fā)過程中的地位和作用。77傳統(tǒng)方法學(xué)的缺點(diǎn)過分強(qiáng)調(diào)了分階段實(shí)施,使得開發(fā)過程各個(gè)階段之現(xiàn)代方法學(xué)現(xiàn)代方法學(xué)是在傳統(tǒng)方法學(xué)的基礎(chǔ)上,為了強(qiáng)調(diào)人在軟件開發(fā)中的作用,同時(shí)為了適應(yīng)軟件新技術(shù)的發(fā)展趨勢(shì)而提出的。其基本要點(diǎn)是:⑴軟件開發(fā)過程是以人為主,充分利用軟件開發(fā)方法及軟件開發(fā)工具;⑵開發(fā)人員的組織管理對(duì)軟件開發(fā)成功與否至關(guān)重要;⑶基于軟件組件的軟件開發(fā)技術(shù)。⑷由于軟件組件是標(biāo)準(zhǔn)化設(shè)計(jì)、成品化生產(chǎn)的,極易構(gòu)造使用,從而大大簡(jiǎn)化了設(shè)計(jì)、編程、測(cè)試各個(gè)環(huán)節(jié)的工作量,提高了生產(chǎn)效率和產(chǎn)品質(zhì)量。78現(xiàn)代方法學(xué)現(xiàn)代方法學(xué)是在傳統(tǒng)方法學(xué)的基礎(chǔ)上,為了強(qiáng)調(diào)人在軟件現(xiàn)代方法學(xué)中生命周期在現(xiàn)代方法學(xué)中軟件生命周期的階段劃分:系統(tǒng)分析系統(tǒng)構(gòu)造系統(tǒng)測(cè)試軟件組件79現(xiàn)代方法學(xué)中生命周期在現(xiàn)代方法學(xué)中軟件生命周期的階段劃分:7系統(tǒng)開發(fā)人員的組織管理一個(gè)復(fù)雜的系統(tǒng)開發(fā)過程,涉及到眾多的以人為主的各種開發(fā)活動(dòng),通過這些活動(dòng)的有機(jī)配合與協(xié)調(diào)才能保證系統(tǒng)開發(fā)的成功。因此,系統(tǒng)開發(fā)人員的組織管理是現(xiàn)代軟件工程中的重要方面。組織管理方法有以下幾個(gè)要點(diǎn):①明確系統(tǒng)開發(fā)人員與用戶之間的責(zé)任與義務(wù);②明確各類開發(fā)人員的主要工作及責(zé)任;③制定或選擇工程開發(fā)規(guī)范。80系統(tǒng)開發(fā)人員的組織管理一個(gè)復(fù)雜的系統(tǒng)開發(fā)過程,涉及到眾多的以面向?qū)ο蠓椒▽W(xué)由于傳統(tǒng)方法學(xué)無法從根本上克服“軟件危機(jī)”帶來的災(zāi)難性影響,業(yè)界人士不得不研究、探索新的方法。而當(dāng)面向?qū)ο螅∣O)思想和方法一經(jīng)出現(xiàn),就引起計(jì)算機(jī)業(yè)界的極大關(guān)注,使得對(duì)這種新方法的研究和應(yīng)用得到迅速發(fā)展。OO方法是人類借助計(jì)算機(jī)認(rèn)識(shí)和模擬客觀世界的一種方法。它將客觀世界看成是由許多不同種類的對(duì)象構(gòu)成。通過分析、研究客觀世界中的實(shí)體、實(shí)體的屬性及其相互關(guān)系,從中抽象出求解問題的對(duì)象,最后求解這些對(duì)象,得到問題的解。這一過程更接近人類認(rèn)識(shí)問題、解決問題的思維方式,使得計(jì)算機(jī)求解的對(duì)象與客觀事物具有一一對(duì)應(yīng)的關(guān)系。81面向?qū)ο蠓椒▽W(xué)由于傳統(tǒng)方法學(xué)無法從根本上克服“軟件危機(jī)”帶來什么是OO方法現(xiàn)在比較一致的看法是:OO方法是基于“對(duì)象、類、繼承性、消息機(jī)制、多態(tài)性等技術(shù)特征”的構(gòu)造軟件系統(tǒng)的開發(fā)方法。OO方法具有以下幾個(gè)要點(diǎn):⑴把對(duì)象作為一種統(tǒng)一的軟件構(gòu)件,它將數(shù)據(jù)及在數(shù)據(jù)上的操作行為融合為一體。OO方法處理的基本元素是對(duì)象;程序是由對(duì)象組成的,復(fù)雜的對(duì)象是由簡(jiǎn)單的對(duì)象組合而形成的。OO方法學(xué)用對(duì)象分解代替了傳統(tǒng)方法的功能分解。⑵把所有對(duì)象都用類來表示;每個(gè)類都有自己的屬性和方法,具體的對(duì)象只是類中的一個(gè)實(shí)例。⑶類具有層次結(jié)構(gòu),子類可以繼承父類的特性和方法(繼承性);⑷對(duì)象之間只能通過傳遞消息構(gòu)成相互之間的聯(lián)系(消息機(jī)制)。82什么是OO方法現(xiàn)在比較一致的看法是:OO方法是基于“對(duì)象、類面向?qū)ο蠓治觯∣OA)OOA強(qiáng)調(diào)根據(jù)問題域中客觀存在的實(shí)體創(chuàng)建OOA模型中的對(duì)象。具體表現(xiàn)在:用對(duì)象的屬性和服務(wù)分別描述事物的靜態(tài)特征和行為;問題域中有哪些值得考慮的事物,就在OOA模型中創(chuàng)建哪些對(duì)象;對(duì)象及其服務(wù)的命名盡量與客觀實(shí)體一致。OOA模型應(yīng)盡量保留問題域中實(shí)體之間關(guān)系的原貌。包括:把具有相同屬性和相同服務(wù)的對(duì)象歸結(jié)為類;用一般-特殊結(jié)構(gòu)(分類結(jié)構(gòu))描述一般類與特殊類之間的關(guān)系(繼承關(guān)系);用整體-部分結(jié)構(gòu)(組裝結(jié)構(gòu))描述實(shí)體間的組成關(guān)系;用實(shí)例連接和消息連接表示實(shí)體之間的靜態(tài)聯(lián)系和動(dòng)態(tài)聯(lián)系。83面向?qū)ο蠓治觯∣OA)OOA強(qiáng)調(diào)根據(jù)問題域中客觀存在的實(shí)體創(chuàng)面向?qū)ο笤O(shè)計(jì)(OOD)OOD包括兩方面的工作:①把OOA模型直接搬到OOD中來,作為OOD的一個(gè)部分;②針對(duì)具體實(shí)現(xiàn)中的人機(jī)界面、數(shù)據(jù)存儲(chǔ)、任務(wù)管理等因素補(bǔ)充一些與實(shí)現(xiàn)有關(guān)的內(nèi)容,這些內(nèi)容與OOA采用相同的表示法和模型結(jié)構(gòu)。在分析和設(shè)計(jì)階段采用一致的表示法是OO方法與傳統(tǒng)方法重要的區(qū)別之一。這使得從OOA到OOD不存在轉(zhuǎn)換,只需進(jìn)行局部的修改或調(diào)整,并增加幾個(gè)與實(shí)現(xiàn)有關(guān)的獨(dú)立部分即可。因此OOA與OOD之間不存在傳統(tǒng)方法中分析與設(shè)計(jì)之間的鴻溝,可以自然地實(shí)現(xiàn)無縫銜接,從而大大降低了從OOA過渡到OOD的難度、工作量和出錯(cuò)率。84面向?qū)ο笤O(shè)計(jì)(OOD)OOD包括兩方面的工作:84面向?qū)ο缶幊蹋∣OP)OOP也稱為面向?qū)ο蟮膶?shí)現(xiàn)。在OOA和OOD理論出現(xiàn)之前,程序員要寫一個(gè)好的OO程序,首先要學(xué)會(huì)運(yùn)用OO方法來認(rèn)識(shí)問題域,因此把OOP看作比較高深的技術(shù)。現(xiàn)在,在“OOA→OOD→OOP”的設(shè)計(jì)模式中,OOP的分工相對(duì)簡(jiǎn)單多了;認(rèn)識(shí)問題域與設(shè)計(jì)系統(tǒng)元素的工作在OOA和OOD階段已經(jīng)完成,OOP的工作就是用一種OO程序設(shè)計(jì)語言把OOD模型中的每個(gè)元素描述出來而已。85面向?qū)ο缶幊蹋∣OP)OOP也稱為面向?qū)ο蟮膶?shí)現(xiàn)。在OOA和面向?qū)ο鬁y(cè)試(OOT)OOT的主要特點(diǎn)是:利用對(duì)象的封裝性。測(cè)試以類為基本單位進(jìn)行。測(cè)試只需針對(duì)類定義范圍內(nèi)的屬性和服務(wù)、以及有限的對(duì)外接口所涉及到的部分即可。利用對(duì)象的繼承性。若父類已被測(cè)試或父類是可重用構(gòu)件,則對(duì)子類的測(cè)試重點(diǎn)只是那些新定義的屬性和服務(wù)。對(duì)于用OOA、OOD和OOP實(shí)現(xiàn)的軟件,OOT通過捕捉OOA、OOD模型信息,檢查程序與模型不匹配的錯(cuò)誤,可以極大地提高測(cè)試效率。這一點(diǎn)是傳統(tǒng)程序設(shè)計(jì)方法是無法達(dá)到的。86面向?qū)ο鬁y(cè)試(OOT)OOT的主要特點(diǎn)是:86面向?qū)ο蟮能浖S護(hù)OO方法為改進(jìn)軟件維護(hù)提供了有效的途徑。主要表現(xiàn)在:因?yàn)镺O方法在各個(gè)階段表示的一致性,使得實(shí)現(xiàn)的程序與問題域是一致的,便于理解和閱讀,也為糾錯(cuò)和功能擴(kuò)充提供了便利。系統(tǒng)維護(hù)過程中的老大難問題是系統(tǒng)功能的變化并由此產(chǎn)生的影響。在OO方法中,由于對(duì)象的封裝性,使一個(gè)對(duì)象的修改對(duì)其它對(duì)象的影響很小,從而可以減少錯(cuò)誤傳播所產(chǎn)生的“波動(dòng)效應(yīng)”,使得用OO方法開發(fā)的軟件易維護(hù)。87面向?qū)ο蟮能浖S護(hù)OO方法為改進(jìn)軟件維護(hù)提供了有效的途徑。主OO方法的主要優(yōu)點(diǎn)⑴與人類習(xí)慣的思維方式一致OO方法順應(yīng)人認(rèn)識(shí)過程的這個(gè)規(guī)律,從尋找要求解的對(duì)象“是什么?”開始,認(rèn)識(shí)事物及其本質(zhì)規(guī)律,主觀隨意性受到限制。⑵穩(wěn)定性好傳統(tǒng)方法以“過程為中心”,以功能分解為基本方法。當(dāng)功能需求發(fā)生變化時(shí),將引起對(duì)軟件整體結(jié)構(gòu)的修改,導(dǎo)致系統(tǒng)不穩(wěn)定。OO方法以“對(duì)象為中心”,采用對(duì)象技術(shù)。不管需求如何變化,其內(nèi)在規(guī)律不變,不會(huì)引起軟件結(jié)構(gòu)的整體變化,所以系統(tǒng)的穩(wěn)定性影響不大。⑶可重用性好⑷可維護(hù)性好88OO方法的主要優(yōu)點(diǎn)⑴與人類習(xí)慣的思維方式一致88軟件工程模型1瀑布模型2增量模型3螺旋模型4噴泉模型5基于知識(shí)的模型6面向?qū)ο竽P?9軟件工程模型1瀑布模型89①瀑布模型瀑布模型是上個(gè)世紀(jì)80年代廣泛應(yīng)用的一種模型,至今仍然是最廣泛使用的過程模型之一。在應(yīng)用程的應(yīng)用模式也稱為軟件生存周期模式(B.W.Boehm提出的該模型)。90①瀑布模型瀑布模型是上個(gè)世紀(jì)80年代廣泛應(yīng)用的一種模型,至今瀑布模型示意圖
需求分析7%系統(tǒng)設(shè)計(jì)6%軟件編程7%軟件測(cè)試13%軟件維護(hù)67%用戶要求分析報(bào)告系統(tǒng)設(shè)計(jì)報(bào)告源程序測(cè)試報(bào)告更改要求UAMATMMPUTPUAMPA系統(tǒng)分析員M項(xiàng)目管理員P程序員T高級(jí)程序員U
用戶91瀑布模型示意圖需求分析7%系統(tǒng)設(shè)計(jì)6%軟件編程7%軟件測(cè)試瀑布模型的特點(diǎn)瀑布模型具有順序性和依賴性,即后一階段工作必須在前一階段工作完成后才能開始。推遲實(shí)現(xiàn)的觀點(diǎn);把邏輯設(shè)計(jì)與物理設(shè)計(jì)清楚地劃分開,盡可能推遲物理模型的實(shí)現(xiàn),這是瀑布模型的重要指導(dǎo)思想。質(zhì)量保證的觀點(diǎn)。瀑布模型強(qiáng)調(diào)的是優(yōu)質(zhì),即每一步都循序漸進(jìn),及早消除隱患,從而保證軟件質(zhì)量。致命缺點(diǎn)是只有做出精確的需求分析,才能取得預(yù)期的結(jié)果。由于各種客觀、主觀的原因,需求分析往往不很精確,常常給日后的開發(fā)帶來隱患。92瀑布模型的特點(diǎn)瀑布模型具有順序性和依賴性,即后一階段工作必須②原型模型—樣品模型原型模型的主要思想:先借用已有系統(tǒng)作為原型模型,通過“樣品”不斷改進(jìn),使得最后的產(chǎn)品就是用戶所需要的。原形模型的特點(diǎn):⑴開發(fā)人員和用戶在“原型”上達(dá)成一致。這樣可以減少設(shè)計(jì)中的錯(cuò)誤和開發(fā)中的風(fēng)險(xiǎn),以及對(duì)用戶培訓(xùn)的時(shí)間,而提高了系統(tǒng)的實(shí)用、正確性以及用戶的滿意程度。⑵縮短開發(fā)周期,加快工程進(jìn)度。⑶降低成本。原型模型的缺點(diǎn):當(dāng)告訴用戶,還必須重新生產(chǎn)該產(chǎn)品時(shí),用戶是很難接受的。這往往給工程繼續(xù)開展帶來不利因素。93②原型模型—樣品模型原型模型的主要思想:93快速原型模型
分析原型樣品模型設(shè)計(jì)編程測(cè)試使用修改與改進(jìn)在系統(tǒng)分析與設(shè)計(jì)中,采用交互式,反復(fù)修改與不斷改進(jìn)的方式進(jìn)行。還有的把原型模式嵌套在瀑布模型中運(yùn)用。94快速原型模型分析原型設(shè)計(jì)編程測(cè)試使用修改在系統(tǒng)分析與還有的③增量模型也稱漸增模型。它把軟件產(chǎn)品作為一系列的增量構(gòu)件來設(shè)計(jì)、編碼、集成和測(cè)試。增量模型是一種非整體開發(fā)的模型。軟件在該模型中是“逐漸”開發(fā)出來的,開發(fā)出一部分,向用戶展示一部分,讓用戶及早看到部分軟件,及早發(fā)現(xiàn)問題?;蛘呦乳_發(fā)一個(gè)“原型”軟件,完成部分主要功能,展示給用戶征求意見,然后逐步完善,最終后的滿意的軟件產(chǎn)品。該模型具有較大的靈活性,適合于軟件需求不明確、設(shè)計(jì)方案有一定風(fēng)險(xiǎn)的軟件項(xiàng)目。缺點(diǎn):要求軟件具有開放的結(jié)構(gòu)是這種模型固有的困難。95③增量模型也稱漸增模型。它把軟件產(chǎn)品作為一系列的增量構(gòu)件來設(shè)④螺旋模型將工程劃分為4個(gè)主要活動(dòng):制定計(jì)劃、風(fēng)險(xiǎn)分析、實(shí)現(xiàn)工程和用戶評(píng)價(jià)。4個(gè)活動(dòng)螺旋式地重復(fù)執(zhí)行,直到最終得到用戶認(rèn)可的產(chǎn)品。制定計(jì)劃:確定軟件目標(biāo),選定實(shí)施方案,弄清項(xiàng)目開發(fā)限制條件。風(fēng)險(xiǎn)分析:分析可選方案,分析識(shí)別風(fēng)險(xiǎn),研究解決化解風(fēng)險(xiǎn)的辦法。實(shí)現(xiàn)工程:實(shí)施軟件產(chǎn)品的開發(fā)。用戶評(píng)價(jià):對(duì)當(dāng)前工作結(jié)果進(jìn)行評(píng)價(jià),提出改進(jìn)產(chǎn)品的建議。螺旋模型的缺點(diǎn):很難讓用戶確信這種演化方法的結(jié)果是可以控制的。96④螺旋模型將工程劃分為4個(gè)主要活動(dòng):制定計(jì)劃、風(fēng)險(xiǎn)分析、實(shí)現(xiàn)螺旋模型的缺陷建立在風(fēng)險(xiǎn)分析的基礎(chǔ)上需要有一個(gè)非常有經(jīng)驗(yàn)的小組來準(zhǔn)確地分析和檢測(cè)風(fēng)險(xiǎn)絕對(duì)依賴人的素質(zhì)(本身就是冒險(xiǎn)!)不適合新手開發(fā)中的每一層都很有彈性,并不是很明確的界限每一層的目標(biāo)和計(jì)劃都是由小組本身來制定。要求有經(jīng)驗(yàn)的人來組成。97螺旋模型的缺陷建立在風(fēng)險(xiǎn)分析的基礎(chǔ)上97
⑤智能模型也稱基于知識(shí)的軟件開發(fā)模型,它與專家系統(tǒng)結(jié)合在一起。該模型在實(shí)施過程中要建立知識(shí)庫,將模型本身、軟件工程知識(shí)與特定領(lǐng)域的知識(shí)分別存入數(shù)據(jù)庫。以軟件工程知識(shí)為基礎(chǔ)的生成規(guī)則構(gòu)成的專家系統(tǒng)與含應(yīng)用領(lǐng)域知識(shí)規(guī)則的其他專家系統(tǒng)相結(jié)合,構(gòu)成這一應(yīng)用領(lǐng)域的軟件開發(fā)系統(tǒng)。98⑤智能模型也稱基于知識(shí)的軟件開發(fā)模型,它與專家系統(tǒng)結(jié)合在⑥面向?qū)ο蟮拈_發(fā)模型其主導(dǎo)思想是:在整個(gè)軟件開發(fā)過程中將面向?qū)ο蠹夹g(shù)貫穿于整個(gè)生存周期。當(dāng)然,還要結(jié)合傳統(tǒng)開發(fā)模式中好的、已被無數(shù)成功開發(fā)活動(dòng)證明是可行的經(jīng)驗(yàn)和技術(shù)。具備3個(gè)主要的階段:分析:模擬“關(guān)鍵系統(tǒng)”來表示用戶要求,并設(shè)計(jì)獨(dú)立實(shí)現(xiàn)的“關(guān)鍵類”。設(shè)計(jì):限制并優(yōu)化關(guān)鍵類,在特定的環(huán)境中實(shí)現(xiàn),得到另外的類。實(shí)現(xiàn):定義類的接口和實(shí)現(xiàn)方法,然后編寫并統(tǒng)一測(cè)試所有的類。99⑥面向?qū)ο蟮拈_發(fā)模型其主導(dǎo)思想是:在整個(gè)軟件開發(fā)過程中將面向面向?qū)ο箝_發(fā)的缺陷還不成熟幾個(gè)有影響的面向?qū)ο箝_發(fā)的過程對(duì)不同的步驟意見不一。在大的項(xiàng)目上經(jīng)驗(yàn)不多,在小項(xiàng)目上尚可。在每個(gè)過程步上細(xì)節(jié)少,新手難于理解。晚期的測(cè)試開發(fā)過程沒有中間的版本,幾乎所有的測(cè)試都留在最后的實(shí)現(xiàn)階段。結(jié)構(gòu)上的死板假設(shè)所有的結(jié)構(gòu)設(shè)計(jì)都定義好在要求階段,對(duì)于設(shè)計(jì)和實(shí)現(xiàn)階段基本上沒有結(jié)構(gòu)上變化的余地。.
100面向?qū)ο箝_發(fā)的缺陷還不成熟100開發(fā)流程模型的比較線性有序模型(瀑布模型)結(jié)構(gòu)性好基于原型模型需要在短時(shí)間內(nèi)建立原型系統(tǒng)在系統(tǒng)要求模糊或者未知時(shí)較有效重復(fù)使用模型假如條件適合,是開發(fā)速度最快的模型積累模型
容許早期測(cè)試和用戶反饋螺旋模型適于大規(guī)模系統(tǒng)101開發(fā)流程模型的比較線性有序模型(瀑布模型)101軟件工程前景軟件學(xué)科的核心問題是“如何提高軟件的生產(chǎn)效率和運(yùn)行效率”。在對(duì)提高運(yùn)行效率問題的研究上,人們已經(jīng)探索出一條有效的途徑并取得重大成果。表現(xiàn)在:⑴集成電路技術(shù)、計(jì)算機(jī)體系結(jié)構(gòu)技術(shù)和計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)的發(fā)展,為軟件系統(tǒng)的運(yùn)行提供了日益強(qiáng)大的硬件基礎(chǔ)設(shè)施,極大地提高了軟件運(yùn)行的效率。在此方面目前的研究熱點(diǎn)是高性能計(jì)算和高性能網(wǎng)絡(luò)。⑵軟件學(xué)科的并行計(jì)算和分布計(jì)算理論的新進(jìn)展也在很大程度上解決了提高運(yùn)行效率的問題。近十年來研究的熱點(diǎn)是系統(tǒng)軟件技術(shù)和中間件技術(shù)。102軟件工程前景軟件學(xué)科的核心問題是“如何提高軟件的生產(chǎn)效率和運(yùn)提高軟件生產(chǎn)效率的方法研究途徑分分理論方法和技術(shù)方法:技術(shù)方法主要是以美國軟件產(chǎn)業(yè)為代表。它以“軟件工廠”為目標(biāo)來提高軟件的生產(chǎn)效率。主要辦法是提高軟件的可重用性。面向?qū)ο蠓椒ㄊ墙鉀Q軟件危機(jī),提高軟件開發(fā)效率和質(zhì)量的有效途徑,是一種社會(huì)化的方法,有助于軟件工程化、工廠化生產(chǎn)的實(shí)現(xiàn)。這種方法在近二十年來處于主導(dǎo)地位,也使美國的軟件業(yè)在全球領(lǐng)先。理論方法是以西歐的學(xué)術(shù)界為首的形式化方法,即純自動(dòng)化方法。它以精確的語義描述軟件系統(tǒng),在此基礎(chǔ)上進(jìn)行自動(dòng)生成、轉(zhuǎn)化及驗(yàn)證。此方法提出來很早,但難度很大,大部分處于原型討論,離實(shí)用還有很大差距。這兩種方法的優(yōu)、缺點(diǎn)很明顯。技術(shù)的方法實(shí)用性很強(qiáng),得到了產(chǎn)業(yè)界的大力擁護(hù)。但是隨著軟件的規(guī)模越來越大,復(fù)雜度越來越高,很難保證軟件的可靠性和軟件的開發(fā)效率。理論的方法則實(shí)用性差,很難投入實(shí)際應(yīng)用。103提高軟件生產(chǎn)效率的方法研究途徑分分理論方法和技術(shù)方法:103軟件工程主要技術(shù)發(fā)展趨勢(shì)1.基于軟件復(fù)用庫的軟件重用2.面向?qū)ο蠹夹g(shù)3.針對(duì)幾種中間件平臺(tái)開發(fā)組件交互的標(biāo)準(zhǔn)和基于組件的軟件開發(fā)104軟件工程主要技術(shù)發(fā)展趨勢(shì)1.基于軟件復(fù)用庫的軟件重用104歡迎參加計(jì)教中心網(wǎng)站的學(xué)習(xí)討論。中心網(wǎng)址:
http://課件下載地址:
ftp://我的E-mail地址:
fcliu@
謝謝,再見!105歡迎參加計(jì)教中心網(wǎng)站的學(xué)習(xí)討論。105第1章軟件開發(fā)方法(二)軟件工程計(jì)算機(jī)教學(xué)實(shí)驗(yàn)中心
106第1章軟件開發(fā)方法計(jì)算機(jī)教學(xué)實(shí)驗(yàn)中心1問題的提出什么是軟件工程?為什么提出軟件工程?主要研究哪些問題?軟件工程的目標(biāo)、原理軟件開發(fā)活動(dòng)……107問題的提出什么是軟件工程?21.了解軟件工程的基本概念、基本原則2.理解軟件工程的主要定義3.理解軟件過程及模型4.了解軟件工程方法學(xué)1081.了解軟件工程的基本概念、基本原則3一、軟件工程概述什么是軟件工程?為什么要學(xué)習(xí)軟件工程?軟件工程包括哪些內(nèi)容?……109一、軟件工程概述什么是軟件工程?4“軟件工程是一種描述規(guī)范?!? MichaelJackson軟件工程?“軟件工程是一種描述規(guī)范?!避浖こ??軟件工程的定義軟件工程專家Boehm定義IEEE給出的定義教科書給出的定義111軟件工程的定義軟件工程專家Boehm定義6軟件工程專家Boehm定義著名軟件工程專家B.W.Boehm為軟件工程的定義是:運(yùn)用現(xiàn)代科學(xué)技術(shù)知識(shí)來設(shè)計(jì)并構(gòu)造計(jì)算機(jī)程序及為開發(fā)、運(yùn)行和維護(hù)這些程序所必需的相關(guān)文件資料。112軟件工程專家Boehm定義著名軟件工程專家B.W.BoehmIEEE給出的定義1983年IEEE給出的定義為:以優(yōu)質(zhì)、高效、低成本為目標(biāo),研究開發(fā)、運(yùn)行和維護(hù)軟件以及使之退役的系統(tǒng)方法。其中,“軟件”的定義為:計(jì)算機(jī)程序、方法、規(guī)則、相關(guān)的文檔資料以及在計(jì)算機(jī)上運(yùn)行時(shí)所必需的數(shù)據(jù)。113IEEE給出的定義1983年IEEE給出的定義為:8教科書給出的定義教科書中定義為:運(yùn)用系統(tǒng)的、規(guī)范的和可定量的方法來開發(fā)、運(yùn)行和維護(hù)軟件。114教科書給出的定義教科書中定義為:9關(guān)于軟件工程學(xué)軟件工程是一門交叉學(xué)科,涉及到計(jì)算機(jī)科學(xué)、管理科學(xué)、工程學(xué)和數(shù)學(xué)。軟件工程的理論、方法、技術(shù)都是建立在計(jì)算機(jī)科學(xué)的基礎(chǔ)上;它是用管理學(xué)的原理、方法進(jìn)行軟件生產(chǎn)管理;用工程學(xué)的觀點(diǎn)進(jìn)行費(fèi)用估算、制定進(jìn)度和實(shí)施方案;用數(shù)學(xué)方法建立軟件可靠性模型以及分析各種算法。115關(guān)于軟件工程學(xué)軟件工程是一門交叉學(xué)科,涉及到計(jì)算機(jī)科學(xué)、管理了解并掌握軟件的開發(fā)步驟、方法、準(zhǔn)則。為了:克服、解決“軟件危機(jī)”改進(jìn)“軟件生產(chǎn)”方法、工具提高軟件的生產(chǎn)率為什么學(xué)習(xí)軟件工程?了解并掌握軟件的開發(fā)步驟、方法、準(zhǔn)則。為了:為什么學(xué)軟件工程的目標(biāo)開發(fā)生產(chǎn)盡可能多的軟件產(chǎn)品;提高軟件的生產(chǎn)效率;滿足應(yīng)用的功能需要和具有較好的軟件性能;能按時(shí)、按質(zhì)完成軟件開發(fā)任務(wù);降低軟件開發(fā)成本。117軟件工程的目標(biāo)開發(fā)生產(chǎn)盡可能多的軟件產(chǎn)品;12目標(biāo)的實(shí)現(xiàn)是矛盾的在實(shí)際開發(fā)過程中,企圖讓以上幾個(gè)目標(biāo)都達(dá)到理想的程度是非常困難的。例如,如果過于追求提高軟件的性能,可能造成開發(fā)出的軟件對(duì)硬件有較大的依賴,從而直接影響到軟件的通用性和可移植性。實(shí)際上軟件工程就是要解決如何在用戶要求的功能、質(zhì)量、成本、進(jìn)度之間取得平衡,才能真正滿足應(yīng)用的實(shí)際需要。118目標(biāo)的實(shí)現(xiàn)是矛盾的在實(shí)際開發(fā)過程中,企圖讓以上幾個(gè)目標(biāo)都達(dá)到軟件工程具體目標(biāo)保護(hù)公眾安全、健康和幸福建立、健全開發(fā)軟件產(chǎn)品的學(xué)科識(shí)別新軟件或修改現(xiàn)行軟件的需求風(fēng)險(xiǎn)避免開發(fā)失敗的軟件鼓勵(lì)尋求開發(fā)和采購軟件產(chǎn)品的替代方法促進(jìn)軟件生存期所有方面生產(chǎn)率的改進(jìn)通過不斷更新軟件,發(fā)現(xiàn)新的用途便于開發(fā)具有“魯棒性”的軟件通過對(duì)引起故障或有影響的元素的不斷檢測(cè)以促進(jìn)軟件過程和產(chǎn)品的改進(jìn)。119軟件工程具體目標(biāo)保護(hù)公眾安全、健康和幸福14軟件工程的本質(zhì)特征軟件工程關(guān)注于大型程序的構(gòu)造軟件工程的中心課題是控制復(fù)雜度軟件經(jīng)常變化開發(fā)軟件的效率非常重要和諧地合作是開發(fā)軟件的關(guān)鍵軟件必須有效地支持它的用戶在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品120軟件工程的本質(zhì)特征軟件工程關(guān)注于大型程序的構(gòu)造15軟件工程原理自1968年提出“軟件工程”的概念以來,專家學(xué)者又陸續(xù)提出了100多條關(guān)于軟件工程的準(zhǔn)則。著名軟件工程專家B.W.Boehm于1983年發(fā)表的一篇論文中提出了軟件工程的七條基本原理。他認(rèn)為這七條原理是確保軟件產(chǎn)品質(zhì)量和開發(fā)效率的最小準(zhǔn)則集合。121軟件工程原理自1968年提出“軟件工程”的概念以來,專家學(xué)者軟件工程七條基本原理用分階段的生命周期計(jì)劃嚴(yán)格管理堅(jiān)持進(jìn)行階段評(píng)審實(shí)行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計(jì)技術(shù)結(jié)果應(yīng)能清楚地審查開發(fā)小組人員少而精承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性122軟件工程七條基本原理用分階段的生命周期計(jì)劃嚴(yán)格管理17①用分階段生命周期計(jì)劃嚴(yán)格管理據(jù)統(tǒng)計(jì)發(fā)現(xiàn):不成功軟件項(xiàng)目中半數(shù)是因計(jì)劃不周造成的。在軟件的整個(gè)生命周期中應(yīng)該制定并嚴(yán)格執(zhí)行六類計(jì)劃:項(xiàng)目概要、項(xiàng)目進(jìn)度表、項(xiàng)目控制、產(chǎn)品控制、驗(yàn)證及運(yùn)行維護(hù)計(jì)劃。不同層次的管理人員必須嚴(yán)格按照計(jì)劃各盡其職地去管理軟件開發(fā)與維護(hù)工作,絕不能受客戶或上級(jí)的影響而擅自背離預(yù)定計(jì)劃。123①用分階段生命周期計(jì)劃嚴(yán)格管理據(jù)統(tǒng)計(jì)發(fā)現(xiàn):不成功軟件項(xiàng)目中半②堅(jiān)持進(jìn)行階段評(píng)審軟件的質(zhì)量保證工作不能等到編碼階段結(jié)束之后再進(jìn)行。這是因?yàn)椋捍蟛糠皱e(cuò)誤是在編碼之前造成的(根據(jù)Boehm統(tǒng)計(jì),設(shè)計(jì)錯(cuò)誤占軟件錯(cuò)誤的63%,編碼錯(cuò)誤占37%)。錯(cuò)誤發(fā)現(xiàn)與改正得越晚,所付出的代價(jià)也越高。因此,在每個(gè)階段進(jìn)行嚴(yán)格的評(píng)審,盡早發(fā)現(xiàn)并修正各個(gè)階段中所犯的錯(cuò)誤是一條必須遵循的重要原則。124②堅(jiān)持進(jìn)行階段評(píng)審軟件的質(zhì)量保證工作不能等到編碼階段結(jié)束之后示意圖關(guān)于階段評(píng)審作用
125示意圖關(guān)于階段評(píng)審作用20③實(shí)行嚴(yán)格的產(chǎn)品控制在軟件開發(fā)過程中不應(yīng)隨意改變需求,但不能禁止更改需求。當(dāng)必須修改時(shí),為了保持軟件各配置成分的一致性,必須實(shí)行嚴(yán)格的產(chǎn)品控制。一切有關(guān)修改軟件的建議都必須按照嚴(yán)格的規(guī)程進(jìn)行評(píng)審,獲準(zhǔn)后才能實(shí)施修改。絕對(duì)不能誰想修改就隨意進(jìn)行修改的行為。126③實(shí)行嚴(yán)格的產(chǎn)品控制在軟件開發(fā)過程中不應(yīng)隨意改變需求,但不能④采用現(xiàn)代程序設(shè)計(jì)技術(shù)以前的結(jié)構(gòu)化程序設(shè)計(jì)技術(shù),如今的面向?qū)ο蟪绦蛟O(shè)計(jì)技術(shù)都被實(shí)踐證明是各個(gè)不同歷史階段的優(yōu)秀程序設(shè)計(jì)技術(shù)和方法。采用先進(jìn)的技術(shù)既可以提高軟件開發(fā)的效率,又可以提高軟件維護(hù)的效率。127④采用現(xiàn)代程序設(shè)計(jì)技術(shù)以前的結(jié)構(gòu)化程序設(shè)計(jì)技術(shù),如今的面向?qū)Β萁Y(jié)果應(yīng)能清楚地審查軟件產(chǎn)品是看不見、摸不著的邏輯產(chǎn)品,軟件開發(fā)人員的工作進(jìn)展情況可見性差。為了提高開發(fā)過程的可見性,應(yīng)根據(jù)軟件開發(fā)項(xiàng)目中的目標(biāo)完成期限,規(guī)定開發(fā)組織的責(zé)任和產(chǎn)品標(biāo)準(zhǔn),使得到的結(jié)果能夠清楚的審查。128⑤結(jié)果應(yīng)能清楚地審查軟件產(chǎn)品是看不見、摸不著的邏輯產(chǎn)品,軟件⑥開發(fā)小組人員少而精開發(fā)小組成員的素質(zhì)應(yīng)該高,人員不宜過多。人員素質(zhì)和數(shù)量是影響產(chǎn)品質(zhì)量和開發(fā)效率的重要因素。素質(zhì)高的人開發(fā)效率比低的人高幾倍甚至幾十倍,而錯(cuò)誤則明顯得少;人數(shù)增加,管理難度也增加。129⑥開發(fā)小組人員少而精開發(fā)小組成員的素質(zhì)應(yīng)該高,人員不宜過多。⑦承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性要積極主動(dòng)地采納新的軟件技術(shù),要不斷總結(jié)經(jīng)驗(yàn);不能自以為是,固步自封,唯我獨(dú)好。大千世界,錯(cuò)綜復(fù)雜,只有不斷學(xué)習(xí),才能不斷進(jìn)取,不斷進(jìn)步。130⑦承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性要積極主動(dòng)地采納新的軟件技軟件開發(fā)活動(dòng)軟件工程過程是由一系列軟件工程的階段任務(wù)和活動(dòng)組成。1995年ISO將軟件生存周期的活動(dòng)和任務(wù)劃分為3個(gè)過程:主要過程(需求、設(shè)計(jì)、構(gòu)造、測(cè)試和維護(hù))支持過程(軟件配置、軟件工程管理、軟件過程和軟件質(zhì)量)組織過程(基礎(chǔ)設(shè)施建設(shè)、工具和方法、改進(jìn)、培訓(xùn))131軟件開發(fā)活動(dòng)軟件工程過程是由一系列軟件工程的階段任務(wù)和活動(dòng)組主要過程主要過程包括的軟件開發(fā)活動(dòng)和任務(wù)是:軟件需求軟件設(shè)計(jì)軟件構(gòu)造軟件測(cè)試軟件維護(hù)132主要過程主要過程包括的軟件開發(fā)活動(dòng)和任務(wù)是:271、軟件需求任務(wù):收集、分析、理解、確定用戶的要求;然后把用戶的要求精確、完整地描述表達(dá)出來。目的:要回答“要解決什么問題?”,既系統(tǒng)”做什么?“。分兩步驟:可行性研究、制定軟件開發(fā)計(jì)劃結(jié)果:可行性報(bào)告、軟件計(jì)劃、需求說明書需求說明書是讓用戶理解:“什么是他們真正需要的”。1331、軟件需求任務(wù):收集、分析、理解、確定用戶的要求;然后把用了解用戶需求有關(guān)的問題什么是需求?希望,功能,限制,必需品,任何必要的東西;什么時(shí)候?從確定方案開始;為什么?用戶的需求是開發(fā)需要的依據(jù);來自哪里?來自用戶,工業(yè)標(biāo)準(zhǔn),和實(shí)踐經(jīng)驗(yàn);如何實(shí)現(xiàn)?使所有相關(guān)的人參與需求分析活動(dòng),通過有效的交流實(shí)現(xiàn);誰來做?用戶,工程管理人員,開發(fā)人員,維護(hù)人員。134了解用戶需求有關(guān)的問題什么是需求?希望,功能,限制,必需品,用戶參與需求分析的重要性根據(jù)StandishGroup1994年發(fā)表的一份研究報(bào)告統(tǒng)計(jì),延遲的、超出預(yù)算的、未完成的工程的最普遍的原因是:⑴缺少用戶參與;⑵不完備的需求規(guī)范;⑶改變需求規(guī)范。135用戶參與需求分析的重要性根據(jù)StandishGroup1需求分析的難點(diǎn)⑴問題的復(fù)雜性。
涉及因素多而;如運(yùn)行環(huán)境和系統(tǒng)功能等。⑵交流障礙。
涉及不同類型人員較多,知識(shí)背景、角度、角色的不同;⑶不完備性和不一致性。
用戶對(duì)問題的陳述有矛盾、片面性等造成。⑷需求易變性。
需求是變化的。136需求分析的難點(diǎn)⑴問題的復(fù)雜性。31需求工作的重要性IBM公司有關(guān)研究的結(jié)果表明:有效的需求管理可以降低開發(fā)成本。通常改正需求錯(cuò)誤需要付出改正其他錯(cuò)誤10倍以上的代價(jià)。需求錯(cuò)誤通常導(dǎo)致軟件工程中全部錯(cuò)誤的25-40%。改正很少的需求錯(cuò)誤可以避免大量耗費(fèi)在返工上的成本和時(shí)間。137需求工作的重要性IBM公司有關(guān)研究的結(jié)果表明:32需求活動(dòng)⑴識(shí)別問題通過調(diào)研和收集資料,了解用戶的確切需求,并將用戶提出的功能行為和特殊要求等用雙方都能理解的表達(dá)方式逐條列出。在整個(gè)分析期間要和用戶充分協(xié)商。⑵可行性研究對(duì)于大型復(fù)雜問題,要對(duì)用戶的要求及實(shí)現(xiàn)環(huán)境從技術(shù)、經(jīng)濟(jì)和社會(huì)因素三個(gè)方面進(jìn)行可行性研究,以確定問題是否可解。⑶分析建模建立軟件求解模型;信息、行為和表示。⑷需求規(guī)格化及編寫文檔需求規(guī)格說明書、初步用戶使用手冊(cè)等。138需求活動(dòng)⑴識(shí)別問題332、軟件設(shè)計(jì)任務(wù):給出實(shí)現(xiàn)系統(tǒng)的實(shí)施藍(lán)圖。目的:要回答“如何解決該問題?”,既系統(tǒng)“怎樣做?”。步驟:概要設(shè)計(jì):解決系統(tǒng)的模塊劃分、模塊的層次結(jié)構(gòu)及數(shù)據(jù)庫設(shè)計(jì)。詳細(xì)設(shè)計(jì):解決每個(gè)摸塊內(nèi)部算法和數(shù)據(jù)結(jié)構(gòu)。結(jié)果:系統(tǒng)設(shè)計(jì)說明書和模塊功能說明書1392、軟件設(shè)計(jì)任務(wù):給出實(shí)現(xiàn)系統(tǒng)的實(shí)施藍(lán)圖。34軟件設(shè)計(jì)工作軟件設(shè)計(jì)要做的工作總的可以歸結(jié)為:軟件系統(tǒng)結(jié)構(gòu)(軟件結(jié)構(gòu))設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、界面設(shè)計(jì)和過程設(shè)計(jì)。設(shè)計(jì)辦法是功能分解,包括:⑴采用某種設(shè)計(jì)方法,將一個(gè)復(fù)雜的系統(tǒng)按功能劃分成模塊;⑵確定每個(gè)模塊的功能;⑶確定模塊之間的接口,即模塊之間傳遞的信息;⑸評(píng)價(jià)模塊結(jié)構(gòu)的質(zhì)量。140軟件設(shè)計(jì)工作軟件設(shè)計(jì)要做的工作總的可以歸結(jié)為:軟件系統(tǒng)結(jié)構(gòu)(軟件設(shè)計(jì)準(zhǔn)則(1)軟件結(jié)構(gòu)準(zhǔn)則;分層結(jié)構(gòu)、便于控制;軟件結(jié)構(gòu)的深度和寬度要適中;具有合理的扇出和扇入數(shù)。(2)模塊化準(zhǔn)則;分解復(fù)雜問題;(3)模塊獨(dú)立性準(zhǔn)則;應(yīng)使模塊之間和與外部環(huán)境之間接口的復(fù)雜性盡量地減小;模塊應(yīng)具有低耦合、高內(nèi)聚;(4)數(shù)據(jù)和過程描述清晰、可區(qū)分(表達(dá)式);(5)成果可重復(fù)。141軟件設(shè)計(jì)準(zhǔn)則(1)軟件結(jié)構(gòu)準(zhǔn)則;分層結(jié)構(gòu)、便于控制;軟件結(jié)構(gòu)軟件設(shè)計(jì)方法⑴面向數(shù)據(jù)流的設(shè)計(jì)方法;又進(jìn)一步細(xì)分為變換流和事務(wù)流方法;⑵結(jié)構(gòu)化設(shè)計(jì)方法;⑶面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法;Jackson方法;⑷Warnier方法⑸面向?qū)ο蠓椒?42軟件設(shè)計(jì)方法⑴面向數(shù)據(jù)流的設(shè)計(jì)方法;又進(jìn)一步細(xì)分為變換流和使用的開發(fā)工具⑴層次圖、HIPO圖、結(jié)構(gòu)圖⑵程序流程圖、N-S圖、問題分析圖PAD(ProgramAnalysisDiagram)⑶類語言、過程設(shè)計(jì)語言PDL(ProceduralDesignLanguage)等⑷統(tǒng)一建模語言UML(UnifiedModelingLanguage)143使用的開發(fā)工具⑴層次圖、HIPO圖、結(jié)構(gòu)圖383、軟件構(gòu)造任務(wù):根據(jù)設(shè)計(jì)說明書中每個(gè)模塊的控制流程編寫出相應(yīng)的源程序。目的:寫出高質(zhì)量的代碼和相應(yīng)餓文檔。構(gòu)造要注意使系統(tǒng)更易于使用和系統(tǒng)的可重用性。選擇合適的開發(fā)工具及系統(tǒng)軟件、數(shù)據(jù)庫軟件、中間件等。制定編程規(guī)范。
結(jié)果:源程序和文檔1443、軟件構(gòu)造任務(wù):根據(jù)設(shè)計(jì)說明書中每個(gè)模塊的控制流程編寫出相編程風(fēng)格編程風(fēng)格主要體現(xiàn)在如何描述源程序文件、數(shù)據(jù)說明、輸入輸出等。(1)源程序文件;變量名的命名、源程序中的注解以及源程序的書寫格式;(2)數(shù)據(jù)說明;按不同類型數(shù)據(jù)的順序以及字典順序說明、對(duì)數(shù)據(jù)結(jié)構(gòu)加注釋說明;(3)語句構(gòu)造;語句構(gòu)造一般規(guī)則;(4)輸入輸出語句;輸入輸出語句的規(guī)則。145編程風(fēng)格編程風(fēng)格主要體現(xiàn)在如何描述源程序文件、數(shù)據(jù)說明、輸入語句構(gòu)造規(guī)則不要為節(jié)省空間而把多個(gè)語句寫在同一行;盡量避免復(fù)雜的條件測(cè)試;盡量減少對(duì)“非”條件的測(cè)試;避免使用多層嵌套的循環(huán)和重復(fù);利用括號(hào)使表達(dá)式的運(yùn)算順序清晰直觀。146語句構(gòu)造規(guī)則不要為節(jié)省空間而把多個(gè)語句寫在同一行;41I/O語句規(guī)則保持輸入格式簡(jiǎn)單;對(duì)所有輸入數(shù)據(jù)都進(jìn)行校驗(yàn);使用數(shù)據(jù)結(jié)束標(biāo)記,不要要求用戶指定數(shù)據(jù)的數(shù)目;當(dāng)程序設(shè)計(jì)語言對(duì)格式有嚴(yán)格要求時(shí),應(yīng)保持輸入格式的一致性;檢查輸入項(xiàng)中重要組合的合法性;給所有的輸出數(shù)據(jù)加標(biāo)記,并設(shè)計(jì)良好的輸出報(bào)表;用標(biāo)記標(biāo)明交互的輸入請(qǐng)求,應(yīng)規(guī)定可以使用的選擇值或邊界值;要根據(jù)用戶的不同類型、特點(diǎn)和要求設(shè)計(jì)輸入方案,輸入數(shù)據(jù)的格式要簡(jiǎn)單,應(yīng)具有完備的出錯(cuò)檢查和出錯(cuò)恢復(fù)措施。147I/O語句規(guī)則保持輸入格式簡(jiǎn)單;42程序設(shè)計(jì)語言選用程序設(shè)計(jì)語言時(shí)要考慮它的三種特性:(1)心理特性對(duì)人-機(jī)通信質(zhì)量有重要影響。例如,人們習(xí)慣使用已熟悉的程序設(shè)計(jì)語言,由此產(chǎn)生的惰性影響人們學(xué)習(xí)新語言。(2)工程特性它涉及到軟件的可移植性、開發(fā)工具的可利用性等。(3)技術(shù)特性它對(duì)設(shè)計(jì)質(zhì)量、人和整個(gè)軟件工程有影響。例如,對(duì)數(shù)據(jù)結(jié)構(gòu)復(fù)雜性要求很高的系統(tǒng),考慮選用C及C++等語言;若對(duì)高性能和實(shí)時(shí)功能要求高,可考慮選用Ada語言。148程序設(shè)計(jì)語言選用程序設(shè)計(jì)語言時(shí)要考慮它的三種特性:434、軟件測(cè)試任務(wù):檢查、發(fā)現(xiàn)程序中的錯(cuò)誤,提高系統(tǒng)可靠性。目的:保證系統(tǒng)的正確性、可靠性和可用性。回答:“該系統(tǒng)是否能實(shí)現(xiàn)規(guī)定的操作?”。方式:模塊測(cè)試、組裝測(cè)試、確認(rèn)測(cè)試和系統(tǒng)測(cè)試結(jié)果:測(cè)試報(bào)告和軟件修改報(bào)告等。1494、軟件測(cè)試任務(wù):檢查、發(fā)現(xiàn)程序中的錯(cuò)誤,提高系統(tǒng)可靠性。4測(cè)試包括⑴單元測(cè)試。對(duì)一個(gè)模塊的測(cè)試,一般以白盒法測(cè)試為主,多個(gè)模塊可以并行進(jìn)行。⑵集成測(cè)試。最終將本項(xiàng)目所有模塊集成在一起測(cè)試,交出完整程序產(chǎn)品。⑶確認(rèn)測(cè)試。以用戶為主的測(cè)試。證實(shí)系統(tǒng)能否正確地實(shí)現(xiàn)其功能。⑷系統(tǒng)測(cè)試。軟件只是整個(gè)應(yīng)用系統(tǒng)的一部分。最后要集成為一個(gè)整體,包括硬件、軟件以及相關(guān)的其它設(shè)備。此時(shí)的測(cè)試稱系統(tǒng)測(cè)試。150測(cè)試包括⑴單元測(cè)試。對(duì)一個(gè)模塊的測(cè)試,一般以白盒法測(cè)試為α測(cè)試與β測(cè)試阿爾法測(cè)試:對(duì)于商品軟件在研制方有客戶(訂貨方)參與的確認(rèn)測(cè)試叫阿爾法測(cè)試。貝塔測(cè)試:指在若干客戶場(chǎng)地由客戶組織,最終用戶參與的測(cè)試,此時(shí)所有文檔均予凍結(jié),作為本軟件版本的基線。對(duì)于新軟件,改版則為里程碑。151α測(cè)試與β測(cè)試阿爾法測(cè)試:46設(shè)計(jì)測(cè)試用例應(yīng)考慮的問題①界面:內(nèi)界面主要檢查參數(shù)個(gè)數(shù)及類型匹配。外界面主要檢查I/O文件、數(shù)據(jù)格式、類型匹配。②模塊的數(shù)據(jù)結(jié)構(gòu):類型是否不正確或不一致?初始化、缺省值使用情況;變量名拼錯(cuò);上、下界溢出等數(shù)據(jù)異常,測(cè)試能否正確處理等。③邊界條件:保證在邊界值的情況下模塊依然可以正確操作,值出界時(shí)要有正確反應(yīng)。④獨(dú)立路徑:保證至少所有語句都要執(zhí)行一次,每個(gè)條件或子條件都執(zhí)行一次更好。⑤錯(cuò)誤處理路徑:不管程序有無異常處理都要察看出錯(cuò)處理路徑。特別要考察是否死機(jī)。152設(shè)計(jì)測(cè)試用例應(yīng)考慮的問題①界面:內(nèi)界面主要檢查參數(shù)個(gè)數(shù)及類程序調(diào)試調(diào)試是在測(cè)試發(fā)現(xiàn)錯(cuò)誤之后排除錯(cuò)誤的過程。調(diào)試過程會(huì)發(fā)生兩種結(jié)果:找到原因并把問題排除;沒找到問題的原因。調(diào)試是軟件開發(fā)過程中最艱苦的腦力勞動(dòng)。在調(diào)試過程中遇到的錯(cuò)誤有所不同,錯(cuò)誤的后果越嚴(yán)重,查找錯(cuò)誤原因的壓力也越大。通常,壓力會(huì)導(dǎo)致軟件開發(fā)人員在改正一個(gè)錯(cuò)誤的同時(shí)可能引入更多的錯(cuò)誤。153程序調(diào)試調(diào)試是在測(cè)試發(fā)現(xiàn)錯(cuò)誤之后排除錯(cuò)誤的過程。調(diào)試過程會(huì)發(fā)調(diào)試技術(shù)①輸出存儲(chǔ)器內(nèi)容;特點(diǎn)是效率低、難定位、輸出的是靜止?fàn)顟B(tài)的程序內(nèi)容。②加打印語句;特點(diǎn)是顯示的是程序的動(dòng)態(tài)信息,但大量的輸出,時(shí)間慢,可能引出新的問題。③用調(diào)試工具;特點(diǎn)是動(dòng)態(tài)調(diào)試,可自動(dòng)執(zhí)行,是目前廣泛采用的一種調(diào)試技術(shù)。154調(diào)試技術(shù)①輸出存儲(chǔ)器內(nèi)容;特點(diǎn)是效率低、難定位、輸出的是靜調(diào)試策略①試探法。大概分析、估計(jì)錯(cuò)誤的位置。②回溯法。確定最先出現(xiàn)“癥狀”的地方,然后沿程序的控制流程往回追蹤源程序,直到找出錯(cuò)誤源為止。③對(duì)分查找法。若已知程序中若干個(gè)關(guān)鍵點(diǎn)的正確值,然后用調(diào)試工具在關(guān)鍵點(diǎn)附近處輸入正確值;若輸出正確,則故障在前半部分;否則,再查后半部分。④歸納法。從線索出發(fā),通過分析線索之間的關(guān)系而找出故障。主要步驟為:收集有關(guān)數(shù)據(jù),組織數(shù)據(jù),導(dǎo)出假設(shè),證明假設(shè)。155調(diào)試策略①試探法。大概分析、估計(jì)錯(cuò)誤的位置。50調(diào)試的啟發(fā)性原則這部分內(nèi)容大多是心理學(xué)的問題:要思考,不要盲目地修改程序,至使錯(cuò)誤越改越多;如陷入困境,放到第2天去解決;陷入絕境后,要與別人交談你的問題,或許對(duì)你有所啟發(fā);避免用試驗(yàn)法。不要在問題沒有搞清楚之前,就改動(dòng)程序,這樣對(duì)找出錯(cuò)誤不利,程序越改越亂,以致于面目全非。156調(diào)試的啟發(fā)性原則這部分內(nèi)容大多是心理學(xué)的問題:515、軟件維護(hù)任務(wù):改正軟件系統(tǒng)在使用過程中發(fā)現(xiàn)的隱含錯(cuò)誤,擴(kuò)充在使用過程中新的功能要求。目的:維護(hù)軟件系統(tǒng)的正常運(yùn)行?;卮穑合到y(tǒng)是否滿足用戶的應(yīng)用要求。階段結(jié)果:軟件系統(tǒng)的問題報(bào)告和軟件修改報(bào)告。1575、軟件維護(hù)任務(wù):改正軟件系統(tǒng)在使用過程中發(fā)現(xiàn)的隱含錯(cuò)誤,擴(kuò)軟件維護(hù)的原因⑴軟件的原有功能和性能可能不再適應(yīng)用戶的要求;⑵軟件的工作環(huán)境改變了(例如,增加了新的外部設(shè)備),軟件也要做相應(yīng)的變更;⑶軟件運(yùn)行中發(fā)現(xiàn)錯(cuò)誤,需要修改。158軟件維護(hù)的原因⑴軟件的原有功能和性能可能不再適應(yīng)用戶的要求維護(hù)活動(dòng)分類⑴校正性維護(hù):指為了識(shí)別和糾正錯(cuò)誤,修改軟件性能上的缺陷,進(jìn)行確定和修改錯(cuò)誤的過程。占整個(gè)維護(hù)工作的15%。⑵適應(yīng)性維護(hù):為了使本軟件適應(yīng)硬件和軟件的變化而修改軟件的過程稱為適應(yīng)性維護(hù)。占整個(gè)維護(hù)活動(dòng)的25%。⑶完善性維護(hù):增加軟件功能、增強(qiáng)軟件性能、提高運(yùn)行效率而進(jìn)行的維護(hù)活動(dòng)稱為完善性維護(hù)。占整個(gè)維護(hù)工作的55%。⑷預(yù)防性維護(hù):為了提高軟件的可維護(hù)性和可靠性而對(duì)軟件進(jìn)行的修改稱為預(yù)防性維護(hù)。只占整個(gè)維護(hù)活動(dòng)的5%。159維護(hù)活動(dòng)分類⑴校正性維護(hù):指為了識(shí)別和糾正錯(cuò)誤,修改軟件性維護(hù)活動(dòng)的特點(diǎn)⑴非結(jié)構(gòu)化維護(hù)和結(jié)構(gòu)化維護(hù)。主要區(qū)別是開發(fā)過程是否用軟件工程方法,若各階段均有相應(yīng)的文檔記錄,系統(tǒng)則容易維護(hù)。采用結(jié)構(gòu)化維護(hù)可以大大提高軟件維護(hù)效率。⑵軟件維護(hù)的困難性。是由于軟件需求分析和開發(fā)方法的缺陷。⑶軟件維護(hù)的費(fèi)用在總費(fèi)用中的比重不斷增加,已經(jīng)上升到了70%~80%或更多,我們看到的軟件不斷升級(jí)就是維護(hù)的具體體現(xiàn)。160維護(hù)活動(dòng)的特點(diǎn)⑴非結(jié)構(gòu)化維護(hù)和結(jié)構(gòu)化維護(hù)。主要區(qū)別是開發(fā)過維護(hù)活動(dòng)流程建立維護(hù)機(jī)構(gòu),組織維護(hù)活動(dòng):⑴制定維護(hù)申請(qǐng)報(bào)告;⑵審查維護(hù)申請(qǐng)報(bào)告并批準(zhǔn);⑶進(jìn)行維護(hù)并做詳細(xì)記錄;⑷復(fù)審。161維護(hù)活動(dòng)流程建立維護(hù)機(jī)構(gòu),組織維護(hù)活動(dòng):56軟件的可維護(hù)性軟件可維護(hù)性是指維護(hù)人員理解、修改軟件的難易程度。⑴可維護(hù)性因素軟件的可維護(hù)性因素主要包括:可
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東省汕頭市潮南實(shí)驗(yàn)學(xué)校2025屆高考化學(xué)一模試卷含解析
- 2025屆陜西省西安市西北工業(yè)大學(xué)高考適應(yīng)性考試化學(xué)試卷含解析
- 急危重癥病人管理
- 廣東省肇慶第四中學(xué)2025屆高三下學(xué)期聯(lián)考化學(xué)試題含解析
- 2025年飛機(jī)空調(diào)車ACM項(xiàng)目合作計(jì)劃書
- 2025屆甘肅省天水市清水縣第四中學(xué)高三第二次模擬考試化學(xué)試卷含解析
- 做自己和他人的“安全衛(wèi)士”倡議書
- 心理信息融合課件
- 天津市五校2025屆高考沖刺化學(xué)模擬試題含解析
- 中考數(shù)學(xué)高頻考點(diǎn)專項(xiàng)練習(xí):專題14 考點(diǎn)29 多邊形和平行四邊形及答案
- 樓梯踏步抹灰標(biāo)準(zhǔn)合同7篇
- 【廈門大學(xué)】DeepSeek大模型賦能高校教學(xué)和科研
- 巧手包出小混沌(課件)三年級(jí)下冊(cè)勞動(dòng)人民版
- 2025-2030中國IC卡讀寫器行業(yè)市場(chǎng)現(xiàn)狀分析及競(jìng)爭(zhēng)格局與投資發(fā)展研究報(bào)告
- 2024-2025學(xué)年人教版初中地理七年級(jí)下冊(cè)課件 第8章 第4節(jié) 俄羅斯
- 2025年南京秦淮區(qū)一中七年級(jí)下3月份月考英語試卷
- 2025屆高三化學(xué)二輪復(fù)習(xí) 化學(xué)工藝流程 課件
- 2024廣東深圳市龍崗區(qū)產(chǎn)服集團(tuán)“春雨”第二批招聘筆試筆試參考題庫附帶答案詳解
- 2025年河南經(jīng)貿(mào)職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫帶答案
- 《清華大學(xué)介紹》課件
- 硫磺安全技術(shù)說明書MSDS
評(píng)論
0/150
提交評(píng)論