第1章-軟件開(kāi)發(fā)方法二軟件工程課件_第1頁(yè)
第1章-軟件開(kāi)發(fā)方法二軟件工程課件_第2頁(yè)
第1章-軟件開(kāi)發(fā)方法二軟件工程課件_第3頁(yè)
第1章-軟件開(kāi)發(fā)方法二軟件工程課件_第4頁(yè)
第1章-軟件開(kāi)發(fā)方法二軟件工程課件_第5頁(yè)
已閱讀5頁(yè),還剩100頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第1章軟件開(kāi)發(fā)方法(二)軟件工程計(jì)算機(jī)教學(xué)實(shí)驗(yàn)中心

1問(wèn)題的提出什么是軟件工程?為什么提出軟件工程?主要研究哪些問(wèn)題?軟件工程的目標(biāo)、原理軟件開(kāi)發(fā)活動(dòng)……21.了解軟件工程的基本概念、基本原則2.理解軟件工程的主要定義3.理解軟件過(guò)程及模型4.了解軟件工程方法學(xué)3一、軟件工程概述什么是軟件工程?為什么要學(xué)習(xí)軟件工程?軟件工程包括哪些內(nèi)容?……4“軟件工程是一種描述規(guī)范?!? MichaelJackson軟件工程?軟件工程的定義軟件工程專(zhuān)家Boehm定義IEEE給出的定義教科書(shū)給出的定義6軟件工程專(zhuān)家Boehm定義著名軟件工程專(zhuān)家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)文件資料。7IEEE給出的定義1983年IEEE給出的定義為:以?xún)?yōu)質(zhì)、高效、低成本為目標(biāo),研究開(kāi)發(fā)、運(yùn)行和維護(hù)軟件以及使之退役的系統(tǒng)方法。其中,“軟件”的定義為:計(jì)算機(jī)程序、方法、規(guī)則、相關(guān)的文檔資料以及在計(jì)算機(jī)上運(yùn)行時(shí)所必需的數(shù)據(jù)。8教科書(shū)給出的定義教科書(shū)中定義為:運(yùn)用系統(tǒng)的、規(guī)范的和可定量的方法來(lái)開(kāi)發(fā)、運(yùn)行和維護(hù)軟件。9關(guān)于軟件工程學(xué)軟件工程是一門(mén)交叉學(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了解并掌握軟件的開(kāi)發(fā)步驟、方法、準(zhǔn)則。為了:克服、解決“軟件危機(jī)”改進(jìn)“軟件生產(chǎn)”方法、工具提高軟件的生產(chǎn)率為什么學(xué)習(xí)軟件工程?軟件工程的目標(biāo)開(kāi)發(fā)生產(chǎn)盡可能多的軟件產(chǎn)品;提高軟件的生產(chǎn)效率;滿(mǎn)足應(yīng)用的功能需要和具有較好的軟件性能;能按時(shí)、按質(zhì)完成軟件開(kāi)發(fā)任務(wù);降低軟件開(kāi)發(fā)成本。12目標(biāo)的實(shí)現(xiàn)是矛盾的在實(shí)際開(kāi)發(fā)過(guò)程中,企圖讓以上幾個(gè)目標(biāo)都達(dá)到理想的程度是非常困難的。例如,如果過(guò)于追求提高軟件的性能,可能造成開(kāi)發(fā)出的軟件對(duì)硬件有較大的依賴(lài),從而直接影響到軟件的通用性和可移植性。實(shí)際上軟件工程就是要解決如何在用戶(hù)要求的功能、質(zhì)量、成本、進(jìn)度之間取得平衡,才能真正滿(mǎn)足應(yīng)用的實(shí)際需要。13軟件工程具體目標(biāo)保護(hù)公眾安全、健康和幸福建立、健全開(kāi)發(fā)軟件產(chǎn)品的學(xué)科識(shí)別新軟件或修改現(xiàn)行軟件的需求風(fēng)險(xiǎn)避免開(kāi)發(fā)失敗的軟件鼓勵(lì)尋求開(kāi)發(fā)和采購(gòu)軟件產(chǎn)品的替代方法促進(jìn)軟件生存期所有方面生產(chǎn)率的改進(jìn)通過(guò)不斷更新軟件,發(fā)現(xiàn)新的用途便于開(kāi)發(fā)具有“魯棒性”的軟件通過(guò)對(duì)引起故障或有影響的元素的不斷檢測(cè)以促進(jìn)軟件過(guò)程和產(chǎn)品的改進(jìn)。14軟件工程的本質(zhì)特征軟件工程關(guān)注于大型程序的構(gòu)造軟件工程的中心課題是控制復(fù)雜度軟件經(jīng)常變化開(kāi)發(fā)軟件的效率非常重要和諧地合作是開(kāi)發(fā)軟件的關(guān)鍵軟件必須有效地支持它的用戶(hù)在軟件工程領(lǐng)域中是由具有一種文化背景的人替具有另一種文化背景的人創(chuàng)造產(chǎn)品15軟件工程原理自1968年提出“軟件工程”的概念以來(lái),專(zhuān)家學(xué)者又陸續(xù)提出了100多條關(guān)于軟件工程的準(zhǔn)則。著名軟件工程專(zhuān)家B.W.Boehm于1983年發(fā)表的一篇論文中提出了軟件工程的七條基本原理。他認(rèn)為這七條原理是確保軟件產(chǎn)品質(zhì)量和開(kāi)發(fā)效率的最小準(zhǔn)則集合。16軟件工程七條基本原理用分階段的生命周期計(jì)劃嚴(yán)格管理堅(jiān)持進(jìn)行階段評(píng)審實(shí)行嚴(yán)格的產(chǎn)品控制采用現(xiàn)代程序設(shè)計(jì)技術(shù)結(jié)果應(yīng)能清楚地審查開(kāi)發(fā)小組人員少而精承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性17①用分階段生命周期計(jì)劃嚴(yán)格管理?yè)?jù)統(tǒng)計(jì)發(fā)現(xiàn):不成功軟件項(xiàng)目中半數(shù)是因計(jì)劃不周造成的。在軟件的整個(gè)生命周期中應(yīng)該制定并嚴(yán)格執(zhí)行六類(lèi)計(jì)劃:項(xiàng)目概要、項(xiàng)目進(jìn)度表、項(xiàng)目控制、產(chǎn)品控制、驗(yàn)證及運(yùn)行維護(hù)計(jì)劃。不同層次的管理人員必須嚴(yán)格按照計(jì)劃各盡其職地去管理軟件開(kāi)發(fā)與維護(hù)工作,絕不能受客戶(hù)或上級(jí)的影響而擅自背離預(yù)定計(jì)劃。18②堅(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示意圖關(guān)于階段評(píng)審作用

20③實(shí)行嚴(yán)格的產(chǎn)品控制在軟件開(kāi)發(fā)過(guò)程中不應(yīng)隨意改變需求,但不能禁止更改需求。當(dāng)必須修改時(shí),為了保持軟件各配置成分的一致性,必須實(shí)行嚴(yán)格的產(chǎn)品控制。一切有關(guān)修改軟件的建議都必須按照嚴(yán)格的規(guī)程進(jìn)行評(píng)審,獲準(zhǔn)后才能實(shí)施修改。絕對(duì)不能誰(shuí)想修改就隨意進(jìn)行修改的行為。21④采用現(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ù)既可以提高軟件開(kāi)發(fā)的效率,又可以提高軟件維護(hù)的效率。22⑤結(jié)果應(yīng)能清楚地審查軟件產(chǎn)品是看不見(jiàn)、摸不著的邏輯產(chǎn)品,軟件開(kāi)發(fā)人員的工作進(jìn)展情況可見(jiàn)性差。為了提高開(kāi)發(fā)過(guò)程的可見(jiàn)性,應(yīng)根據(jù)軟件開(kāi)發(fā)項(xiàng)目中的目標(biāo)完成期限,規(guī)定開(kāi)發(fā)組織的責(zé)任和產(chǎn)品標(biāo)準(zhǔn),使得到的結(jié)果能夠清楚的審查。23⑥開(kāi)發(fā)小組人員少而精開(kāi)發(fā)小組成員的素質(zhì)應(yīng)該高,人員不宜過(guò)多。人員素質(zhì)和數(shù)量是影響產(chǎn)品質(zhì)量和開(kāi)發(fā)效率的重要因素。素質(zhì)高的人開(kāi)發(fā)效率比低的人高幾倍甚至幾十倍,而錯(cuò)誤則明顯得少;人數(shù)增加,管理難度也增加。24⑦承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性要積極主動(dòng)地采納新的軟件技術(shù),要不斷總結(jié)經(jīng)驗(yàn);不能自以為是,固步自封,唯我獨(dú)好。大千世界,錯(cuò)綜復(fù)雜,只有不斷學(xué)習(xí),才能不斷進(jìn)取,不斷進(jìn)步。25軟件開(kāi)發(fā)活動(dòng)軟件工程過(guò)程是由一系列軟件工程的階段任務(wù)和活動(dòng)組成。1995年ISO將軟件生存周期的活動(dòng)和任務(wù)劃分為3個(gè)過(guò)程:主要過(guò)程(需求、設(shè)計(jì)、構(gòu)造、測(cè)試和維護(hù))支持過(guò)程(軟件配置、軟件工程管理、軟件過(guò)程和軟件質(zhì)量)組織過(guò)程(基礎(chǔ)設(shè)施建設(shè)、工具和方法、改進(jìn)、培訓(xùn))26主要過(guò)程主要過(guò)程包括的軟件開(kāi)發(fā)活動(dòng)和任務(wù)是:軟件需求軟件設(shè)計(jì)軟件構(gòu)造軟件測(cè)試軟件維護(hù)271、軟件需求任務(wù):收集、分析、理解、確定用戶(hù)的要求;然后把用戶(hù)的要求精確、完整地描述表達(dá)出來(lái)。目的:要回答“要解決什么問(wèn)題?”,既系統(tǒng)”做什么?“。分兩步驟:可行性研究、制定軟件開(kāi)發(fā)計(jì)劃結(jié)果:可行性報(bào)告、軟件計(jì)劃、需求說(shuō)明書(shū)需求說(shuō)明書(shū)是讓用戶(hù)理解:“什么是他們真正需要的”。28了解用戶(hù)需求有關(guān)的問(wèn)題什么是需求?希望,功能,限制,必需品,任何必要的東西;什么時(shí)候?從確定方案開(kāi)始;為什么?用戶(hù)的需求是開(kāi)發(fā)需要的依據(jù);來(lái)自哪里?來(lái)自用戶(hù),工業(yè)標(biāo)準(zhǔn),和實(shí)踐經(jīng)驗(yàn);如何實(shí)現(xiàn)?使所有相關(guān)的人參與需求分析活動(dòng),通過(guò)有效的交流實(shí)現(xiàn);誰(shuí)來(lái)做?用戶(hù),工程管理人員,開(kāi)發(fā)人員,維護(hù)人員。29用戶(hù)參與需求分析的重要性根據(jù)StandishGroup1994年發(fā)表的一份研究報(bào)告統(tǒng)計(jì),延遲的、超出預(yù)算的、未完成的工程的最普遍的原因是:⑴缺少用戶(hù)參與;⑵不完備的需求規(guī)范;⑶改變需求規(guī)范。30需求分析的難點(diǎn)⑴問(wèn)題的復(fù)雜性。

涉及因素多而;如運(yùn)行環(huán)境和系統(tǒng)功能等。⑵交流障礙。

涉及不同類(lèi)型人員較多,知識(shí)背景、角度、角色的不同;⑶不完備性和不一致性。

用戶(hù)對(duì)問(wèn)題的陳述有矛盾、片面性等造成。⑷需求易變性。

需求是變化的。31需求工作的重要性IBM公司有關(guān)研究的結(jié)果表明:有效的需求管理可以降低開(kāi)發(fā)成本。通常改正需求錯(cuò)誤需要付出改正其他錯(cuò)誤10倍以上的代價(jià)。需求錯(cuò)誤通常導(dǎo)致軟件工程中全部錯(cuò)誤的25-40%。改正很少的需求錯(cuò)誤可以避免大量耗費(fèi)在返工上的成本和時(shí)間。32需求活動(dòng)⑴識(shí)別問(wèn)題通過(guò)調(diào)研和收集資料,了解用戶(hù)的確切需求,并將用戶(hù)提出的功能行為和特殊要求等用雙方都能理解的表達(dá)方式逐條列出。在整個(gè)分析期間要和用戶(hù)充分協(xié)商。⑵可行性研究對(duì)于大型復(fù)雜問(wèn)題,要對(duì)用戶(hù)的要求及實(shí)現(xiàn)環(huán)境從技術(shù)、經(jīng)濟(jì)和社會(huì)因素三個(gè)方面進(jìn)行可行性研究,以確定問(wèn)題是否可解。⑶分析建模建立軟件求解模型;信息、行為和表示。⑷需求規(guī)格化及編寫(xiě)文檔需求規(guī)格說(shuō)明書(shū)、初步用戶(hù)使用手冊(cè)等。332、軟件設(shè)計(jì)任務(wù):給出實(shí)現(xiàn)系統(tǒng)的實(shí)施藍(lán)圖。目的:要回答“如何解決該問(wèn)題?”,既系統(tǒng)“怎樣做?”。步驟:概要設(shè)計(jì):解決系統(tǒng)的模塊劃分、模塊的層次結(jié)構(gòu)及數(shù)據(jù)庫(kù)設(shè)計(jì)。詳細(xì)設(shè)計(jì):解決每個(gè)摸塊內(nèi)部算法和數(shù)據(jù)結(jié)構(gòu)。結(jié)果:系統(tǒng)設(shè)計(jì)說(shuō)明書(shū)和模塊功能說(shuō)明書(shū)34軟件設(shè)計(jì)工作軟件設(shè)計(jì)要做的工作總的可以歸結(jié)為:軟件系統(tǒng)結(jié)構(gòu)(軟件結(jié)構(gòu))設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、界面設(shè)計(jì)和過(guò)程設(shè)計(jì)。設(shè)計(jì)辦法是功能分解,包括:⑴采用某種設(shè)計(jì)方法,將一個(gè)復(fù)雜的系統(tǒng)按功能劃分成模塊;⑵確定每個(gè)模塊的功能;⑶確定模塊之間的接口,即模塊之間傳遞的信息;⑸評(píng)價(jià)模塊結(jié)構(gòu)的質(zhì)量。35軟件設(shè)計(jì)準(zhǔn)則(1)軟件結(jié)構(gòu)準(zhǔn)則;分層結(jié)構(gòu)、便于控制;軟件結(jié)構(gòu)的深度和寬度要適中;具有合理的扇出和扇入數(shù)。(2)模塊化準(zhǔn)則;分解復(fù)雜問(wèn)題;(3)模塊獨(dú)立性準(zhǔn)則;應(yīng)使模塊之間和與外部環(huán)境之間接口的復(fù)雜性盡量地減??;模塊應(yīng)具有低耦合、高內(nèi)聚;(4)數(shù)據(jù)和過(guò)程描述清晰、可區(qū)分(表達(dá)式);(5)成果可重復(fù)。36軟件設(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使用的開(kāi)發(fā)工具⑴層次圖、HIPO圖、結(jié)構(gòu)圖⑵程序流程圖、N-S圖、問(wèn)題分析圖PAD(ProgramAnalysisDiagram)⑶類(lèi)語(yǔ)言、過(guò)程設(shè)計(jì)語(yǔ)言PDL(ProceduralDesignLanguage)等⑷統(tǒng)一建模語(yǔ)言UML(UnifiedModelingLanguage)383、軟件構(gòu)造任務(wù):根據(jù)設(shè)計(jì)說(shuō)明書(shū)中每個(gè)模塊的控制流程編寫(xiě)出相應(yīng)的源程序。目的:寫(xiě)出高質(zhì)量的代碼和相應(yīng)餓文檔。構(gòu)造要注意使系統(tǒng)更易于使用和系統(tǒng)的可重用性。選擇合適的開(kāi)發(fā)工具及系統(tǒng)軟件、數(shù)據(jù)庫(kù)軟件、中間件等。制定編程規(guī)范。

結(jié)果:源程序和文檔39編程風(fēng)格編程風(fēng)格主要體現(xiàn)在如何描述源程序文件、數(shù)據(jù)說(shuō)明、輸入輸出等。(1)源程序文件;變量名的命名、源程序中的注解以及源程序的書(shū)寫(xiě)格式;(2)數(shù)據(jù)說(shuō)明;按不同類(lèi)型數(shù)據(jù)的順序以及字典順序說(shuō)明、對(duì)數(shù)據(jù)結(jié)構(gòu)加注釋說(shuō)明;(3)語(yǔ)句構(gòu)造;語(yǔ)句構(gòu)造一般規(guī)則;(4)輸入輸出語(yǔ)句;輸入輸出語(yǔ)句的規(guī)則。40語(yǔ)句構(gòu)造規(guī)則不要為節(jié)省空間而把多個(gè)語(yǔ)句寫(xiě)在同一行;盡量避免復(fù)雜的條件測(cè)試;盡量減少對(duì)“非”條件的測(cè)試;避免使用多層嵌套的循環(huán)和重復(fù);利用括號(hào)使表達(dá)式的運(yùn)算順序清晰直觀。41I/O語(yǔ)句規(guī)則保持輸入格式簡(jiǎn)單;對(duì)所有輸入數(shù)據(jù)都進(jìn)行校驗(yàn);使用數(shù)據(jù)結(jié)束標(biāo)記,不要要求用戶(hù)指定數(shù)據(jù)的數(shù)目;當(dāng)程序設(shè)計(jì)語(yǔ)言對(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ù)用戶(hù)的不同類(lèi)型、特點(diǎn)和要求設(shè)計(jì)輸入方案,輸入數(shù)據(jù)的格式要簡(jiǎn)單,應(yīng)具有完備的出錯(cuò)檢查和出錯(cuò)恢復(fù)措施。42程序設(shè)計(jì)語(yǔ)言選用程序設(shè)計(jì)語(yǔ)言時(shí)要考慮它的三種特性:(1)心理特性對(duì)人-機(jī)通信質(zhì)量有重要影響。例如,人們習(xí)慣使用已熟悉的程序設(shè)計(jì)語(yǔ)言,由此產(chǎn)生的惰性影響人們學(xué)習(xí)新語(yǔ)言。(2)工程特性它涉及到軟件的可移植性、開(kāi)發(fā)工具的可利用性等。(3)技術(shù)特性它對(duì)設(shè)計(jì)質(zhì)量、人和整個(gè)軟件工程有影響。例如,對(duì)數(shù)據(jù)結(jié)構(gòu)復(fù)雜性要求很高的系統(tǒng),考慮選用C及C++等語(yǔ)言;若對(duì)高性能和實(shí)時(shí)功能要求高,可考慮選用Ada語(yǔ)言。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)告等。44測(cè)試包括⑴單元測(cè)試。對(duì)一個(gè)模塊的測(cè)試,一般以白盒法測(cè)試為主,多個(gè)模塊可以并行進(jìn)行。⑵集成測(cè)試。最終將本項(xiàng)目所有模塊集成在一起測(cè)試,交出完整程序產(chǎn)品。⑶確認(rèn)測(cè)試。以用戶(hù)為主的測(cè)試。證實(shí)系統(tǒng)能否正確地實(shí)現(xiàn)其功能。⑷系統(tǒng)測(cè)試。軟件只是整個(gè)應(yīng)用系統(tǒng)的一部分。最后要集成為一個(gè)整體,包括硬件、軟件以及相關(guān)的其它設(shè)備。此時(shí)的測(cè)試稱(chēng)系統(tǒng)測(cè)試。45α測(cè)試與β測(cè)試阿爾法測(cè)試:對(duì)于商品軟件在研制方有客戶(hù)(訂貨方)參與的確認(rèn)測(cè)試叫阿爾法測(cè)試。貝塔測(cè)試:指在若干客戶(hù)場(chǎng)地由客戶(hù)組織,最終用戶(hù)參與的測(cè)試,此時(shí)所有文檔均予凍結(jié),作為本軟件版本的基線。對(duì)于新軟件,改版則為里程碑。46設(shè)計(jì)測(cè)試用例應(yīng)考慮的問(wèn)題①界面:內(nèi)界面主要檢查參數(shù)個(gè)數(shù)及類(lèi)型匹配。外界面主要檢查I/O文件、數(shù)據(jù)格式、類(lèi)型匹配。②模塊的數(shù)據(jù)結(jié)構(gòu):類(lèi)型是否不正確或不一致?初始化、缺省值使用情況;變量名拼錯(cuò);上、下界溢出等數(shù)據(jù)異常,測(cè)試能否正確處理等。③邊界條件:保證在邊界值的情況下模塊依然可以正確操作,值出界時(shí)要有正確反應(yīng)。④獨(dú)立路徑:保證至少所有語(yǔ)句都要執(zhí)行一次,每個(gè)條件或子條件都執(zhí)行一次更好。⑤錯(cuò)誤處理路徑:不管程序有無(wú)異常處理都要察看出錯(cuò)處理路徑。特別要考察是否死機(jī)。47程序調(diào)試調(diào)試是在測(cè)試發(fā)現(xiàn)錯(cuò)誤之后排除錯(cuò)誤的過(guò)程。調(diào)試過(guò)程會(huì)發(fā)生兩種結(jié)果:找到原因并把問(wèn)題排除;沒(méi)找到問(wèn)題的原因。調(diào)試是軟件開(kāi)發(fā)過(guò)程中最艱苦的腦力勞動(dòng)。在調(diào)試過(guò)程中遇到的錯(cuò)誤有所不同,錯(cuò)誤的后果越嚴(yán)重,查找錯(cuò)誤原因的壓力也越大。通常,壓力會(huì)導(dǎo)致軟件開(kāi)發(fā)人員在改正一個(gè)錯(cuò)誤的同時(shí)可能引入更多的錯(cuò)誤。48調(diào)試技術(shù)①輸出存儲(chǔ)器內(nèi)容;特點(diǎn)是效率低、難定位、輸出的是靜止?fàn)顟B(tài)的程序內(nèi)容。②加打印語(yǔ)句;特點(diǎn)是顯示的是程序的動(dòng)態(tài)信息,但大量的輸出,時(shí)間慢,可能引出新的問(wèn)題。③用調(diào)試工具;特點(diǎn)是動(dòng)態(tài)調(diào)試,可自動(dòng)執(zhí)行,是目前廣泛采用的一種調(diào)試技術(shù)。49調(diào)試策略①試探法。大概分析、估計(jì)錯(cuò)誤的位置。②回溯法。確定最先出現(xiàn)“癥狀”的地方,然后沿程序的控制流程往回追蹤源程序,直到找出錯(cuò)誤源為止。③對(duì)分查找法。若已知程序中若干個(gè)關(guān)鍵點(diǎn)的正確值,然后用調(diào)試工具在關(guān)鍵點(diǎn)附近處輸入正確值;若輸出正確,則故障在前半部分;否則,再查后半部分。④歸納法。從線索出發(fā),通過(guò)分析線索之間的關(guān)系而找出故障。主要步驟為:收集有關(guān)數(shù)據(jù),組織數(shù)據(jù),導(dǎo)出假設(shè),證明假設(shè)。50調(diào)試的啟發(fā)性原則這部分內(nèi)容大多是心理學(xué)的問(wèn)題:要思考,不要盲目地修改程序,至使錯(cuò)誤越改越多;如陷入困境,放到第2天去解決;陷入絕境后,要與別人交談你的問(wèn)題,或許對(duì)你有所啟發(fā);避免用試驗(yàn)法。不要在問(wèn)題沒(méi)有搞清楚之前,就改動(dòng)程序,這樣對(duì)找出錯(cuò)誤不利,程序越改越亂,以致于面目全非。515、軟件維護(hù)任務(wù):改正軟件系統(tǒng)在使用過(guò)程中發(fā)現(xiàn)的隱含錯(cuò)誤,擴(kuò)充在使用過(guò)程中新的功能要求。目的:維護(hù)軟件系統(tǒng)的正常運(yùn)行?;卮穑合到y(tǒng)是否滿(mǎn)足用戶(hù)的應(yīng)用要求。階段結(jié)果:軟件系統(tǒng)的問(wèn)題報(bào)告和軟件修改報(bào)告。52軟件維護(hù)的原因⑴軟件的原有功能和性能可能不再適應(yīng)用戶(hù)的要求;⑵軟件的工作環(huán)境改變了(例如,增加了新的外部設(shè)備),軟件也要做相應(yīng)的變更;⑶軟件運(yùn)行中發(fā)現(xiàn)錯(cuò)誤,需要修改。53維護(hù)活動(dòng)分類(lèi)⑴校正性維護(hù):指為了識(shí)別和糾正錯(cuò)誤,修改軟件性能上的缺陷,進(jìn)行確定和修改錯(cuò)誤的過(guò)程。占整個(gè)維護(hù)工作的15%。⑵適應(yīng)性維護(hù):為了使本軟件適應(yīng)硬件和軟件的變化而修改軟件的過(guò)程稱(chēng)為適應(yīng)性維護(hù)。占整個(gè)維護(hù)活動(dòng)的25%。⑶完善性維護(hù):增加軟件功能、增強(qiáng)軟件性能、提高運(yùn)行效率而進(jìn)行的維護(hù)活動(dòng)稱(chēng)為完善性維護(hù)。占整個(gè)維護(hù)工作的55%。⑷預(yù)防性維護(hù):為了提高軟件的可維護(hù)性和可靠性而對(duì)軟件進(jìn)行的修改稱(chēng)為預(yù)防性維護(hù)。只占整個(gè)維護(hù)活動(dòng)的5%。54維護(hù)活動(dòng)的特點(diǎn)⑴非結(jié)構(gòu)化維護(hù)和結(jié)構(gòu)化維護(hù)。主要區(qū)別是開(kāi)發(fā)過(guò)程是否用軟件工程方法,若各階段均有相應(yīng)的文檔記錄,系統(tǒng)則容易維護(hù)。采用結(jié)構(gòu)化維護(hù)可以大大提高軟件維護(hù)效率。⑵軟件維護(hù)的困難性。是由于軟件需求分析和開(kāi)發(fā)方法的缺陷。⑶軟件維護(hù)的費(fèi)用在總費(fèi)用中的比重不斷增加,已經(jīng)上升到了70%~80%或更多,我們看到的軟件不斷升級(jí)就是維護(hù)的具體體現(xiàn)。55維護(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ù)性軟件可維護(hù)性是指維護(hù)人員理解、修改軟件的難易程度。⑴可維護(hù)性因素軟件的可維護(hù)性因素主要包括:可理解性、可測(cè)試性、可修改性、可靠性和可使用性。⑵提高可維護(hù)性的方法提高軟件的可維護(hù)性必須從軟件生存周期各個(gè)階段的工作入手,每個(gè)階段都把可維護(hù)性貫徹到階段的開(kāi)發(fā)活動(dòng)過(guò)程中,并按規(guī)范對(duì)階段工作進(jìn)行評(píng)估,以保證個(gè)階段的工作按質(zhì)按量完成。⑶文檔文檔是影響軟件可維護(hù)性的決定性因素。文檔分為用戶(hù)文檔和系統(tǒng)文檔兩類(lèi)。57支持過(guò)程支持過(guò)程包括的軟件開(kāi)發(fā)活動(dòng)和任務(wù)是:軟件配置管理軟件工程管理軟件過(guò)程軟件質(zhì)量58軟件配置管理軟件修改后會(huì)發(fā)生什么呢?同步更新——當(dāng)兩個(gè)或兩個(gè)以上的角色各自工作在同一產(chǎn)物上時(shí),最后一個(gè)修改者會(huì)破壞前者的工作。通知不達(dá)——當(dāng)被若干開(kāi)發(fā)者共享的產(chǎn)品中的問(wèn)題被解決時(shí),修改未被通知到一些開(kāi)發(fā)者。多個(gè)版本——軟件修改與文檔不一致。新版本公布的管理和監(jiān)控。配置和變更管理提供了準(zhǔn)則管理演化系統(tǒng)中的多個(gè)變體,跟蹤給定軟件創(chuàng)建過(guò)程中的版本。59軟件工程管理軟件工程管理是一門(mén)藝術(shù)。其主要活動(dòng)有:管理項(xiàng)目的框架、計(jì)劃配備執(zhí)行監(jiān)控項(xiàng)目的實(shí)踐準(zhǔn)則、管理風(fēng)險(xiǎn)的框架。項(xiàng)目管理是過(guò)程管理的主要體現(xiàn):(1)建立與客戶(hù)的通信;(2)作計(jì)劃,定義資源、時(shí)限、落實(shí)到開(kāi)發(fā)組;(3)風(fēng)險(xiǎn)分析,評(píng)估所采用的技術(shù)和管理帶來(lái)的風(fēng)險(xiǎn);(4)工程,即軟件分析與設(shè)計(jì);(5)構(gòu)造和發(fā)布,即編碼、測(cè)試、交付、安裝、文檔、培訓(xùn);(6)客戶(hù)評(píng)審,獲得客戶(hù)的反饋。60軟件過(guò)程軟件過(guò)程是生產(chǎn)軟件的一系列可預(yù)測(cè)、可控制活動(dòng)的步驟,即把用戶(hù)要求轉(zhuǎn)化為軟件產(chǎn)品的一系列有序開(kāi)發(fā)活動(dòng)的集合。軟件過(guò)程給出了軟件開(kāi)發(fā)所要遵循的基本路線,它的重要性在于它使一組開(kāi)發(fā)活動(dòng)具有了一致性和結(jié)構(gòu),從而使在軟件開(kāi)發(fā)過(guò)程中人們能夠使用自己熟悉的技術(shù)和工具設(shè)計(jì)和開(kāi)發(fā)軟件,并能保持軟件產(chǎn)品和服務(wù)在一定程度上的一致性和質(zhì)量。過(guò)程的重要性還在于它能夠獲取經(jīng)驗(yàn)并將這些經(jīng)驗(yàn)傳授給別人。但是,Wasserman在1996年提出:“應(yīng)用類(lèi)型和組織文化之間的巨大差別使得過(guò)程本身規(guī)范化是不可能的”。相反,他建議不同類(lèi)型的軟件,使用不同的過(guò)程。61軟件質(zhì)量軟件質(zhì)量保證SQA活動(dòng),貫穿于軟件過(guò)程始終。開(kāi)發(fā)單位成立SQA小組負(fù)責(zé)全面質(zhì)量管理。在開(kāi)發(fā)項(xiàng)目計(jì)劃時(shí)就要做出SQA計(jì)劃。其工作:各種測(cè)試測(cè)試軟件是否滿(mǎn)足規(guī)格說(shuō)明要求。各種評(píng)審為多種人員參與的討論會(huì),以規(guī)格說(shuō)明或各種標(biāo)準(zhǔn),規(guī)范為準(zhǔn)評(píng)價(jià)各項(xiàng)軟件工作。各種審計(jì)以職能人員為主審,審查軟件過(guò)程產(chǎn)物是否符合標(biāo)準(zhǔn)或規(guī)格說(shuō)明書(shū)。報(bào)告和記錄所有測(cè)試、評(píng)審、審計(jì)都要詳細(xì)記錄并寫(xiě)出報(bào)告,報(bào)告和記錄均要整理、歸檔。以上活動(dòng)均應(yīng)在軟件質(zhì)量保證計(jì)劃中列出。62組織過(guò)程組織過(guò)程包括的軟件開(kāi)發(fā)活動(dòng)和任務(wù)是:基礎(chǔ)設(shè)施建設(shè)軟件工程工具和方法改進(jìn)培訓(xùn)63基礎(chǔ)設(shè)施建設(shè)建立、維護(hù)和管理用于軟件開(kāi)發(fā)過(guò)程中其他活動(dòng)的硬件和軟件的基礎(chǔ)設(shè)施;建立、維護(hù)和管理用于軟件開(kāi)發(fā)過(guò)程中其他活動(dòng)的軟件開(kāi)發(fā)工具和方法;建立、維護(hù)和管理用于軟件開(kāi)發(fā)過(guò)程中其他活動(dòng)的開(kāi)發(fā)技術(shù)、技術(shù)規(guī)范和標(biāo)準(zhǔn);建立、維護(hù)和管理用于軟件開(kāi)發(fā)過(guò)程中其他活動(dòng)的其他基礎(chǔ)設(shè)施。64軟件工程工具和方法程序的開(kāi)發(fā)、運(yùn)行都是在支持軟件的基礎(chǔ)上作出的。支持軟件的總和稱(chēng)之為軟件開(kāi)發(fā)環(huán)境。早期的環(huán)境只有最必要的軟件工具;例如語(yǔ)言的編譯器、連接器、加載和運(yùn)行工具、排錯(cuò)、信息顯示及編輯工具。稱(chēng)為最小環(huán)境工具集。70年代中期,軟件工程師迫于軟件危機(jī)的壓力,提出了計(jì)算機(jī)輔助軟件工程(CASE)的設(shè)想,開(kāi)發(fā)出一系列工具盡量使軟件過(guò)程的各項(xiàng)活動(dòng)自動(dòng)化、半自動(dòng)化。相應(yīng)問(wèn)題:工具日益增多,給使用者帶來(lái)不便,例如,各工具的使用方法、格式、參數(shù)等差異的問(wèn)題。這就在客觀上產(chǎn)生了對(duì)于集成的CASE工具的需求。65計(jì)算機(jī)輔助軟件工程CASE人們期望,借助CASE工具,有朝一日軟件開(kāi)發(fā)人員可以像在自動(dòng)流水線上生產(chǎn)計(jì)算機(jī)那樣生產(chǎn)軟件。CASE工具具有如下特征:支持專(zhuān)用的個(gè)人計(jì)算環(huán)境;使用圖形功能對(duì)軟件系統(tǒng)進(jìn)行說(shuō)明并建立文檔;將生命周期各階段的工作連接在一起;收集和連接軟件系統(tǒng)從最初的軟件需求到軟件維護(hù)各個(gè)環(huán)節(jié)的所有信息;用人工智能實(shí)現(xiàn)軟件開(kāi)發(fā)和維護(hù)工作的自動(dòng)化。66軟件工程工具信息工程工具過(guò)程模型和管理工具項(xiàng)目計(jì)劃工具風(fēng)險(xiǎn)分析工具項(xiàng)目管理工具需求追蹤工具度量和管理工具文檔工具系統(tǒng)軟件工具質(zhì)量保證工具數(shù)據(jù)庫(kù)管理工具67改進(jìn)軟件開(kāi)發(fā)技術(shù)會(huì)隨著軟件開(kāi)發(fā)工程實(shí)踐活動(dòng)的不斷開(kāi)展而發(fā)展。改進(jìn)活動(dòng)就負(fù)有總結(jié)經(jīng)驗(yàn)、不斷改進(jìn)開(kāi)發(fā)技術(shù)和開(kāi)發(fā)方法的職能。改進(jìn)活動(dòng)的基本內(nèi)容有:對(duì)整個(gè)軟件生存過(guò)程進(jìn)行評(píng)估;對(duì)現(xiàn)行過(guò)程進(jìn)行度量;對(duì)現(xiàn)行過(guò)程進(jìn)行改進(jìn)。68培訓(xùn)為了使用戶(hù)能夠盡快掌握使用軟件系統(tǒng),要對(duì)用戶(hù)進(jìn)行培訓(xùn)?;顒?dòng)包括:制定培訓(xùn)計(jì)劃。編寫(xiě)培訓(xùn)教材。實(shí)施培訓(xùn)計(jì)劃。69軟件工程方法學(xué)通常把在軟件生命周期全過(guò)程中使用的一整套技術(shù)方法的集合稱(chēng)為方法學(xué),也稱(chēng)為范型。軟件工程方法學(xué)包括3個(gè)要素:方法、工具和過(guò)程。這三者之間是相互聯(lián)系的。方法是完成軟件開(kāi)發(fā)過(guò)程中各項(xiàng)任務(wù)的技術(shù)方法,回答“怎樣做”的問(wèn)題;工具是為運(yùn)用方法而提供的自動(dòng)或半自動(dòng)的軟件支撐環(huán)境;過(guò)程是為了獲得高質(zhì)量的軟件所需完成的一系列任務(wù)的框架,它規(guī)定了完成各項(xiàng)任務(wù)的工作步驟。70軟件工程的基本問(wèn)題

軟件工程開(kāi)發(fā)技術(shù)的角度軟件工程開(kāi)發(fā)技術(shù)思想與原則過(guò)程方法工具解決軟件工程的三目標(biāo)質(zhì)量成本進(jìn)度71傳統(tǒng)方法學(xué)傳統(tǒng)方法學(xué)是建立在軟件生存周期方法學(xué)和結(jié)構(gòu)化方法學(xué)的基礎(chǔ)上。因此,具有明顯的那個(gè)時(shí)代的特點(diǎn)。70年代,計(jì)算機(jī)技術(shù)水平不高,開(kāi)發(fā)工具少而且性能差。對(duì)于大型復(fù)雜問(wèn)題的求解,人們不得不采用“將大化小“、“將難化簡(jiǎn)”,最后“分而治之”的開(kāi)發(fā)策略。72結(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)化分析SA自頂向下逐步求精模塊化設(shè)計(jì)結(jié)構(gòu)化分析的要點(diǎn)是:將大問(wèn)題化為小問(wèn)題,找出關(guān)鍵點(diǎn)、難點(diǎn),定量描述;核心是:分解;手段是:模塊化。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)聚性和模塊間的耦合性來(lái)衡量。75結(jié)構(gòu)化程序設(shè)計(jì)SP自頂向下逐步加細(xì);模塊只有一個(gè)入口,一個(gè)出口;三種基本結(jié)構(gòu);開(kāi)發(fā)支持庫(kù);主程序員組結(jié)構(gòu)化程序設(shè)計(jì)方法SP的要點(diǎn)是用三種基本結(jié)構(gòu)的語(yǔ)句編寫(xiě)只有一個(gè)入口和一個(gè)出口的模塊程序,盡可能地采用重用程序,開(kāi)發(fā)組織形式為主程序員組。76傳統(tǒng)方法學(xué)的缺點(diǎn)過(guò)分強(qiáng)調(diào)了分階段實(shí)施,使得開(kāi)發(fā)過(guò)程各個(gè)階段之間存在嚴(yán)重的順序性和依賴(lài)性;很難將一個(gè)復(fù)雜的問(wèn)題化簡(jiǎn)、分解;設(shè)計(jì)方法存在很大的主觀隨意性;基于功能分解的系統(tǒng)結(jié)構(gòu)難于修改和擴(kuò)充;思維成果的可重用性很差;數(shù)據(jù)和對(duì)數(shù)據(jù)的處理是分離的;忽視了人在軟件開(kāi)發(fā)過(guò)程中的地位和作用。77現(xiàn)代方法學(xué)現(xiàn)代方法學(xué)是在傳統(tǒng)方法學(xué)的基礎(chǔ)上,為了強(qiáng)調(diào)人在軟件開(kāi)發(fā)中的作用,同時(shí)為了適應(yīng)軟件新技術(shù)的發(fā)展趨勢(shì)而提出的。其基本要點(diǎn)是:⑴軟件開(kāi)發(fā)過(guò)程是以人為主,充分利用軟件開(kāi)發(fā)方法及軟件開(kāi)發(fā)工具;⑵開(kāi)發(fā)人員的組織管理對(duì)軟件開(kāi)發(fā)成功與否至關(guān)重要;⑶基于軟件組件的軟件開(kāi)發(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)分析系統(tǒng)構(gòu)造系統(tǒng)測(cè)試軟件組件79系統(tǒng)開(kāi)發(fā)人員的組織管理一個(gè)復(fù)雜的系統(tǒng)開(kāi)發(fā)過(guò)程,涉及到眾多的以人為主的各種開(kāi)發(fā)活動(dòng),通過(guò)這些活動(dòng)的有機(jī)配合與協(xié)調(diào)才能保證系統(tǒng)開(kāi)發(fā)的成功。因此,系統(tǒng)開(kāi)發(fā)人員的組織管理是現(xiàn)代軟件工程中的重要方面。組織管理方法有以下幾個(gè)要點(diǎn):①明確系統(tǒng)開(kāi)發(fā)人員與用戶(hù)之間的責(zé)任與義務(wù);②明確各類(lèi)開(kāi)發(fā)人員的主要工作及責(zé)任;③制定或選擇工程開(kāi)發(fā)規(guī)范。80面向?qū)ο蠓椒▽W(xué)由于傳統(tǒng)方法學(xué)無(wú)法從根本上克服“軟件危機(jī)”帶來(lái)的災(zāi)難性影響,業(yè)界人士不得不研究、探索新的方法。而當(dāng)面向?qū)ο螅∣O)思想和方法一經(jīng)出現(xiàn),就引起計(jì)算機(jī)業(yè)界的極大關(guān)注,使得對(duì)這種新方法的研究和應(yīng)用得到迅速發(fā)展。OO方法是人類(lèi)借助計(jì)算機(jī)認(rèn)識(shí)和模擬客觀世界的一種方法。它將客觀世界看成是由許多不同種類(lèi)的對(duì)象構(gòu)成。通過(guò)分析、研究客觀世界中的實(shí)體、實(shí)體的屬性及其相互關(guān)系,從中抽象出求解問(wèn)題的對(duì)象,最后求解這些對(duì)象,得到問(wèn)題的解。這一過(guò)程更接近人類(lèi)認(rèn)識(shí)問(wèn)題、解決問(wèn)題的思維方式,使得計(jì)算機(jī)求解的對(duì)象與客觀事物具有一一對(duì)應(yīng)的關(guān)系。81什么是OO方法現(xiàn)在比較一致的看法是:OO方法是基于“對(duì)象、類(lèi)、繼承性、消息機(jī)制、多態(tài)性等技術(shù)特征”的構(gòu)造軟件系統(tǒng)的開(kāi)發(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ì)象都用類(lèi)來(lái)表示;每個(gè)類(lèi)都有自己的屬性和方法,具體的對(duì)象只是類(lèi)中的一個(gè)實(shí)例。⑶類(lèi)具有層次結(jié)構(gòu),子類(lèi)可以繼承父類(lèi)的特性和方法(繼承性);⑷對(duì)象之間只能通過(guò)傳遞消息構(gòu)成相互之間的聯(lián)系(消息機(jī)制)。82面向?qū)ο蠓治觯∣OA)OOA強(qiáng)調(diào)根據(jù)問(wèn)題域中客觀存在的實(shí)體創(chuàng)建OOA模型中的對(duì)象。具體表現(xiàn)在:用對(duì)象的屬性和服務(wù)分別描述事物的靜態(tài)特征和行為;問(wèn)題域中有哪些值得考慮的事物,就在OOA模型中創(chuàng)建哪些對(duì)象;對(duì)象及其服務(wù)的命名盡量與客觀實(shí)體一致。OOA模型應(yīng)盡量保留問(wèn)題域中實(shí)體之間關(guān)系的原貌。包括:把具有相同屬性和相同服務(wù)的對(duì)象歸結(jié)為類(lèi);用一般-特殊結(jié)構(gòu)(分類(lèi)結(jié)構(gòu))描述一般類(lèi)與特殊類(lèi)之間的關(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ū)ο笤O(shè)計(jì)(OOD)OOD包括兩方面的工作:①把OOA模型直接搬到OOD中來(lái),作為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)無(wú)縫銜接,從而大大降低了從OOA過(guò)渡到OOD的難度、工作量和出錯(cuò)率。84面向?qū)ο缶幊蹋∣OP)OOP也稱(chēng)為面向?qū)ο蟮膶?shí)現(xiàn)。在OOA和OOD理論出現(xiàn)之前,程序員要寫(xiě)一個(gè)好的OO程序,首先要學(xué)會(huì)運(yùn)用OO方法來(lái)認(rèn)識(shí)問(wèn)題域,因此把OOP看作比較高深的技術(shù)?,F(xiàn)在,在“OOA→OOD→OOP”的設(shè)計(jì)模式中,OOP的分工相對(duì)簡(jiǎn)單多了;認(rèn)識(shí)問(wèn)題域與設(shè)計(jì)系統(tǒng)元素的工作在OOA和OOD階段已經(jīng)完成,OOP的工作就是用一種OO程序設(shè)計(jì)語(yǔ)言把OOD模型中的每個(gè)元素描述出來(lái)而已。85面向?qū)ο鬁y(cè)試(OOT)OOT的主要特點(diǎn)是:利用對(duì)象的封裝性。測(cè)試以類(lèi)為基本單位進(jìn)行。測(cè)試只需針對(duì)類(lèi)定義范圍內(nèi)的屬性和服務(wù)、以及有限的對(duì)外接口所涉及到的部分即可。利用對(duì)象的繼承性。若父類(lèi)已被測(cè)試或父類(lèi)是可重用構(gòu)件,則對(duì)子類(lèi)的測(cè)試重點(diǎn)只是那些新定義的屬性和服務(wù)。對(duì)于用OOA、OOD和OOP實(shí)現(xiàn)的軟件,OOT通過(guò)捕捉OOA、OOD模型信息,檢查程序與模型不匹配的錯(cuò)誤,可以極大地提高測(cè)試效率。這一點(diǎn)是傳統(tǒng)程序設(shè)計(jì)方法是無(wú)法達(dá)到的。86面向?qū)ο蟮能浖S護(hù)OO方法為改進(jìn)軟件維護(hù)提供了有效的途徑。主要表現(xiàn)在:因?yàn)镺O方法在各個(gè)階段表示的一致性,使得實(shí)現(xiàn)的程序與問(wèn)題域是一致的,便于理解和閱讀,也為糾錯(cuò)和功能擴(kuò)充提供了便利。系統(tǒng)維護(hù)過(guò)程中的老大難問(wèn)題是系統(tǒng)功能的變化并由此產(chǎn)生的影響。在OO方法中,由于對(duì)象的封裝性,使一個(gè)對(duì)象的修改對(duì)其它對(duì)象的影響很小,從而可以減少錯(cuò)誤傳播所產(chǎn)生的“波動(dòng)效應(yīng)”,使得用OO方法開(kāi)發(fā)的軟件易維護(hù)。87OO方法的主要優(yōu)點(diǎn)⑴與人類(lèi)習(xí)慣的思維方式一致

OO方法順應(yīng)人認(rèn)識(shí)過(guò)程的這個(gè)規(guī)律,從尋找要求解的對(duì)象“是什么?”開(kāi)始,認(rèn)識(shí)事物及其本質(zhì)規(guī)律,主觀隨意性受到限制。⑵穩(wěn)定性好傳統(tǒng)方法以“過(guò)程為中心”,以功能分解為基本方法。當(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ù)性好88軟件工程模型1瀑布模型2增量模型3螺旋模型4噴泉模型5基于知識(shí)的模型6面向?qū)ο竽P?9①瀑布模型瀑布模型是上個(gè)世紀(jì)80年代廣泛應(yīng)用的一種模型,至今仍然是最廣泛使用的過(guò)程模型之一。在應(yīng)用程的應(yīng)用模式也稱(chēng)為軟件生存周期模式(B.W.Boehm提出的該模型)。90瀑布模型示意圖

需求分析7%系統(tǒng)設(shè)計(jì)6%軟件編程7%軟件測(cè)試13%軟件維護(hù)67%用戶(hù)要求分析報(bào)告系統(tǒng)設(shè)計(jì)報(bào)告源程序測(cè)試報(bào)告更改要求UAMATMMPUTPUAMPA系統(tǒng)分析員M項(xiàng)目管理員P程序員T高級(jí)程序員U

用戶(hù)91瀑布模型的特點(diǎn)瀑布模型具有順序性和依賴(lài)性,即后一階段工作必須在前一階段工作完成后才能開(kāi)始。推遲實(shí)現(xiàn)的觀點(diǎn);把邏輯設(shè)計(jì)與物理設(shè)計(jì)清楚地劃分開(kāi),盡可能推遲物理模型的實(shí)現(xiàn),這是瀑布模型的重要指導(dǎo)思想。質(zhì)量保證的觀點(diǎn)。瀑布模型強(qiáng)調(diào)的是優(yōu)質(zhì),即每一步都循序漸進(jìn),及早消除隱患,從而保證軟件質(zhì)量。致命缺點(diǎn)是只有做出精確的需求分析,才能取得預(yù)期的結(jié)果。由于各種客觀、主觀的原因,需求分析往往不很精確,常常給日后的開(kāi)發(fā)帶來(lái)隱患。92②原型模型—樣品模型原型模型的主要思想:先借用已有系統(tǒng)作為原型模型,通過(guò)“樣品”不斷改進(jìn),使得最后的產(chǎn)品就是用戶(hù)所需要的。原形模型的特點(diǎn):⑴開(kāi)發(fā)人員和用戶(hù)在“原型”上達(dá)成一致。這樣可以減少設(shè)計(jì)中的錯(cuò)誤和開(kāi)發(fā)中的風(fēng)險(xiǎn),以及對(duì)用戶(hù)培訓(xùn)的時(shí)間,而提高了系統(tǒng)的實(shí)用、正確性以及用戶(hù)的滿(mǎn)意程度。⑵縮短開(kāi)發(fā)周期,加快工程進(jìn)度。⑶降低成本。原型模型的缺點(diǎn):當(dāng)告訴用戶(hù),還必須重新生產(chǎn)該產(chǎn)品時(shí),用戶(hù)是很難接受的。這往往給工程繼續(xù)開(kāi)展帶來(lái)不利因素。93快速原型模型

分析原型樣品模型設(shè)計(jì)編程測(cè)試使用修改與改進(jìn)在系統(tǒng)分析與設(shè)計(jì)中,采用交互式,反復(fù)修改與不斷改進(jìn)的方式進(jìn)行。還有的把原型模式嵌套在瀑布模型中運(yùn)用。94③增量模型也稱(chēng)漸增模型。它把軟件產(chǎn)品作為一系列的增量構(gòu)件來(lái)設(shè)計(jì)、編碼、集成和測(cè)試。增量模型是一種非整體開(kāi)發(fā)的模型。軟件在該模型中是“逐漸”開(kāi)發(fā)出來(lái)的,開(kāi)發(fā)出一部分,向用戶(hù)展示一部分,讓用戶(hù)及早看到部分軟件,及早發(fā)現(xiàn)問(wèn)題?;蛘呦乳_(kāi)發(fā)一個(gè)“原型”軟件,完成部分主要功能,展示給用戶(hù)征求意見(jiàn),然后逐步完善,最終后的滿(mǎn)意的軟件產(chǎn)品。該模型具有較大的靈活性,適合于軟件需求不明確、設(shè)計(jì)方案有一定風(fēng)險(xiǎn)的軟件項(xiàng)目。缺點(diǎn):要求軟件具有開(kāi)放的結(jié)構(gòu)是這種模型固有的困難。95④螺旋模型將工程劃分為4個(gè)主要活動(dòng):制定計(jì)劃、風(fēng)險(xiǎn)分析、實(shí)現(xiàn)工程和用戶(hù)評(píng)價(jià)。4個(gè)活動(dòng)螺旋式地重復(fù)執(zhí)行,直到最終得到用戶(hù)認(rèn)可的產(chǎn)品。制定計(jì)劃:確定軟件目標(biāo),選定實(shí)施方案,弄清項(xiàng)目開(kāi)發(fā)限制條件。風(fēng)險(xiǎn)分析:分析可選方案,分析識(shí)別風(fēng)險(xiǎn),研究解決化解風(fēng)險(xiǎn)的辦法。實(shí)現(xiàn)工程:實(shí)施軟件產(chǎn)品的開(kāi)發(fā)。用戶(hù)評(píng)價(jià):對(duì)當(dāng)前工作結(jié)果進(jìn)行評(píng)價(jià),提出改進(jìn)產(chǎn)品的建議。螺旋模型的缺點(diǎn):很難讓用戶(hù)確信這種演化方法的結(jié)果是可以控制的。96螺旋模型的缺陷建立在風(fēng)險(xiǎn)分析的基礎(chǔ)上需要有一個(gè)非常有經(jīng)驗(yàn)的小組來(lái)準(zhǔn)確地分析和檢測(cè)風(fēng)險(xiǎn)絕對(duì)依賴(lài)人的素質(zhì)(本身就是冒險(xiǎn)!)不適合新手開(kāi)發(fā)中的每一層都很有彈性,并

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論