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