軟件工程復(fù)習(xí)資料.doc_第1頁(yè)
軟件工程復(fù)習(xí)資料.doc_第2頁(yè)
軟件工程復(fù)習(xí)資料.doc_第3頁(yè)
軟件工程復(fù)習(xí)資料.doc_第4頁(yè)
軟件工程復(fù)習(xí)資料.doc_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

軟件工程復(fù)習(xí)資料2014軟件概念:是計(jì)算機(jī)系統(tǒng)中的一個(gè)重要組成部分,從系統(tǒng)工程的角度來(lái)看,它作為系統(tǒng)元素,與計(jì)算機(jī)硬件、人、數(shù)據(jù)庫(kù)、過程等共同構(gòu)成計(jì)算機(jī)系統(tǒng)。它由兩部分組成,計(jì)算機(jī)程序及其相關(guān)文檔。其中,計(jì)算機(jī)程序是按事先設(shè)汁的功能和性能要求執(zhí)行的指令序列,文檔是與程序開發(fā)、維護(hù)和使用有關(guān)的圖文資料,它又可以分為系統(tǒng)文檔,用戶文檔和web站點(diǎn)。系統(tǒng)文檔用于描述系統(tǒng)的結(jié)構(gòu),用戶文檔針對(duì)軟件產(chǎn)品解釋如何使用系統(tǒng),web站點(diǎn)用于下載系統(tǒng)信息。軟件也是用戶與硬件之間的接口。軟件危機(jī):軟件危機(jī)是指軟件在開發(fā)和維護(hù)過程中遇到的一系統(tǒng)嚴(yán)重問題,主要包含二方面的問題,一是如何開發(fā)利用軟件,二是如何維護(hù)數(shù)量不斷膨脹的已有軟件。主要體現(xiàn)在軟件開發(fā)進(jìn)度無(wú)法預(yù)測(cè),成本增長(zhǎng)無(wú)法控制,軟件可靠性沒有保證,軟件維護(hù)費(fèi)用大幅上升,開發(fā)人員無(wú)限增多,軟件產(chǎn)品無(wú)法滿足用戶的要求。解決辦法:采用先進(jìn)的開發(fā)技術(shù)和方法;使用好的軟件開發(fā)工具,提高軟件生產(chǎn)率,有良好的組織,嚴(yán)密的管理,各類人員相互配合共同完成任務(wù)??傊浖C(jī),既要有技術(shù)措施(方法和工具),又要有必要的組織管理措施。軟件工程正是從管理和技術(shù)兩方面研究如何更好地開發(fā)和維護(hù)計(jì)算機(jī)軟件的一門新興學(xué)科。原因:(1)軟件的規(guī)模越來(lái)越大,結(jié)構(gòu)越來(lái)越復(fù)雜。(2)軟件開發(fā)管理困難而復(fù)雜。(3)軟件開發(fā)費(fèi)用不斷增加。(4)軟件開發(fā)技術(shù)落后。(5)生產(chǎn)方式落后。(6)開發(fā)工具落后,生產(chǎn)率提高緩慢。軟件的發(fā)展階段:a.程序設(shè)計(jì)階段(19461956)b.程序系統(tǒng)階段(19561968)c.軟件工程階段(1968年以來(lái))。軟件工程定義:應(yīng)用計(jì)算機(jī)科學(xué)理論和技術(shù)以及工程管理原則和方法,按預(yù)算和進(jìn)度,實(shí)現(xiàn)滿足用戶要求的軟件產(chǎn)品的定義開發(fā)發(fā)布和維護(hù)的工程或進(jìn)行研究的學(xué)科。是指導(dǎo)軟件開發(fā)和維護(hù)的工程性學(xué)科,它以計(jì)算機(jī)科學(xué)理論和其他相關(guān)學(xué)科的理論為指導(dǎo),采用工程化的概念原理技術(shù)和方法進(jìn)行軟件的開發(fā)與維護(hù),把經(jīng)過時(shí)間考驗(yàn)而證明是正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來(lái),以較少的代價(jià)獲得高質(zhì)量的軟件并維護(hù)它。軟件工程的框架:可用一個(gè)三元組刻畫,即SE=(G,P,Q),其中SE表示軟件工程,G為目標(biāo),P為原則,Q為活動(dòng)。目標(biāo):生產(chǎn)具有正確性,可用性,開銷適宜的產(chǎn)品?;顒?dòng):需求分析,設(shè)計(jì),實(shí)現(xiàn),V&V(驗(yàn)證與確認(rèn)),支持。原則:選取適宜的開發(fā)范型,采用合適的設(shè)計(jì)方法,提供高質(zhì)量的工具支持,重視開發(fā)過程的管理(工程管理)。軟件的生存周期:是軟件產(chǎn)品的一系列相關(guān)活動(dòng)的整個(gè)生命期,即從形成概念開始,經(jīng)過開發(fā),交付使用,在使用中不斷修改和演進(jìn),直到最終被廢棄,讓位于新的軟件產(chǎn)品位置的整個(gè)時(shí)期。三個(gè)時(shí)期的基本任務(wù):軟件定義(任務(wù):?jiǎn)栴}定義與可行性研究;需求分析)、軟件開發(fā)(軟件設(shè)計(jì)是技術(shù)核心,分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì);程序編碼與單元測(cè)試;綜合測(cè)試)、運(yùn)行維護(hù)(軟件維護(hù):使軟件持久地滿足用戶的需要)。瀑布模型:定義:規(guī)定了這些活動(dòng),并且規(guī)定了這些活動(dòng)按自上而下,相互銜接的固定次序,如同瀑布流水,逐級(jí)下落?;净顒?dòng):需求分析與定義;系統(tǒng)與軟件設(shè)計(jì);實(shí)現(xiàn)和單元測(cè)試;集成和系統(tǒng)測(cè)試;運(yùn)行和維護(hù)。特點(diǎn):階段間具有順序性和依賴性:必須等前一階段的工作完成之后,才能開始后一階段的工作;前一階段的輸出文檔就是后一階段的輸入文檔,因此,只有前一階段的輸出文檔正確,后一階段的工作才能獲得正確的結(jié)果。缺點(diǎn):各個(gè)階段的劃分固定,缺乏靈活性,階段之間產(chǎn)生大量的文檔,極大地增加了工作量;由于開發(fā)模型基本是線性的,用戶只有等到過程的末期才能見到開花結(jié)果,從而增加了開發(fā)的風(fēng)險(xiǎn);早期的錯(cuò)誤可能要等到開發(fā)后期的測(cè)試階段才能發(fā)現(xiàn),今兒帶來(lái)嚴(yán)重的后果??焖僭湍P停憾x(基本思想):基于快速開發(fā)一個(gè)滿足構(gòu)想的模型的想法提出來(lái)的。先開發(fā)一個(gè)“原型”軟件,完成部分主要功能,展示給用戶并征求意見,然后逐步完善,最終獲得滿意的軟件產(chǎn)品。優(yōu)點(diǎn):可以滿足客戶直接的要求,可以增量式地開發(fā)出需求規(guī)格說(shuō)明,有較大的靈活性,適合軟件需求不明確,設(shè)計(jì)方案有一定風(fēng)險(xiǎn)的軟件項(xiàng)目。缺點(diǎn):過程不可見,系統(tǒng)常常構(gòu)造的不合理,可能要求特殊的工具和技術(shù)。類型:演進(jìn)開發(fā)和廢棄原型。計(jì)算機(jī)系統(tǒng)的系統(tǒng)元素:軟件(計(jì)算機(jī)程序、數(shù)據(jù)結(jié)構(gòu)、相關(guān)文檔)、硬件(電子計(jì)算設(shè)備和外部機(jī)電設(shè)備)人(硬件和軟件的用戶)數(shù)據(jù)庫(kù)(一個(gè)大型的有組織的信息集合)文檔(手冊(cè)、表格和其它用以描述系統(tǒng)使用和操作的信息)過程(定義每一種系統(tǒng)元素的特定使用步驟,或系統(tǒng)駐留的過程性環(huán)境)系統(tǒng)(中心)SCD環(huán)境圖:定義:確定了系統(tǒng)所使用信息的所有外部生產(chǎn)者,系統(tǒng)所生產(chǎn)信息的所有外部消費(fèi)者,所有通過接口交流或者執(zhí)行維護(hù)和自檢的實(shí)體。什么是需求分析:指開發(fā)人員要準(zhǔn)確地理解用戶的要求,進(jìn)行細(xì)致的調(diào)查分析,將用戶非形式化的需求陳述轉(zhuǎn)化為完整的需求定義,再由需求定義轉(zhuǎn)化為相應(yīng)的軟件需求規(guī)格說(shuō)明書(即需求分析的結(jié)果)的過程。該階段的基本任務(wù):?jiǎn)栴}識(shí)別分析與綜合,導(dǎo)出軟件的邏輯模型編寫文檔軟件需求層次:1.業(yè)務(wù)需求:反映了組織或客戶高層次的目標(biāo)要求,描述了組織的愿景。2.用戶需求:描述了要求系統(tǒng)必須完成的任務(wù),即用戶對(duì)系統(tǒng)的目標(biāo)要求,一般采用自然語(yǔ)言和直觀圖形相結(jié)合的方式描述。例如采用用例、文檔或場(chǎng)景、等方式說(shuō)明。3.功能需求和非功能需求:功能需求定義了開發(fā)者應(yīng)提供的軟件功能或服務(wù),但不涉及這些功能或服務(wù)的實(shí)現(xiàn)。非功能需求則是對(duì)功能需求的補(bǔ)充,包括了對(duì)系統(tǒng)的各種限制和用戶對(duì)系統(tǒng)的質(zhì)量要求。4.系統(tǒng)需求:來(lái)自于系統(tǒng)分析和結(jié)構(gòu)設(shè)計(jì)。充分描述了軟件系統(tǒng)應(yīng)具有的外部行為。各種需求的關(guān)系:所有的用戶需求必須與業(yè)務(wù)需求一致。功能需求必須從用戶需求中提取,以滿足用戶對(duì)產(chǎn)品的要求從而完成其任務(wù)。開發(fā)人員應(yīng)根據(jù)功能需求來(lái)設(shè)計(jì)軟件以實(shí)現(xiàn)必須的功能。功能需求從外部(用戶角度)描述了軟件系統(tǒng)所應(yīng)具有的行為。 對(duì)一個(gè)復(fù)雜產(chǎn)品來(lái)說(shuō),軟件功能需求也許只是系統(tǒng)需求的一個(gè)子集。非功能需求作為功能需求的補(bǔ)充,包括產(chǎn)品必須遵從的標(biāo)準(zhǔn)、規(guī)范和合約;外部接口的具體細(xì)節(jié);性能要求;設(shè)計(jì)或?qū)崿F(xiàn)的約束條件及質(zhì)量屬性。約束是指在軟件產(chǎn)品設(shè)計(jì)和構(gòu)造上的限制。質(zhì)量屬性是通過多種角度對(duì)產(chǎn)品的特點(diǎn)進(jìn)行描述,從而反映產(chǎn)品功能。多角度描述產(chǎn)品對(duì)用戶和開發(fā)者都極為重要。軟件設(shè)計(jì)的目標(biāo):軟件設(shè)計(jì)的基本目標(biāo)是用比較抽象概括的方式確定目標(biāo)系統(tǒng)如何完成預(yù)定的任務(wù),即軟件設(shè)計(jì)是確定系統(tǒng)的物理模型。準(zhǔn)則:性能準(zhǔn)則(包括對(duì)系統(tǒng)速度和空間的需求,例如:響應(yīng)時(shí)間,吞吐量,內(nèi)存)??煽啃詼?zhǔn)則(決定了對(duì)減少系統(tǒng)崩潰及隨后所造成危害所做的努力程度。有健壯性,可靠性,可用性,容錯(cuò)性,保密性,安全性)成本準(zhǔn)則、維護(hù)準(zhǔn)則、最終用戶準(zhǔn)則。任務(wù):是基于需求分析的結(jié)果建立各種設(shè)計(jì)模型,給出問題解決的方案。它將用戶需求準(zhǔn)確地轉(zhuǎn)化成為最終的軟件產(chǎn)品的唯一途徑,在需求到實(shí)現(xiàn)之間起到了橋梁作用。概念:軟件設(shè)計(jì)包括一套原理,概念和實(shí)踐,可以指導(dǎo)高質(zhì)量的系統(tǒng)或產(chǎn)品開發(fā)。為程序正確提供了必要的框架。軟件設(shè)計(jì)的階段和任務(wù):從工程管理的角度,可以將軟件設(shè)計(jì)分為兩個(gè)階段:概要設(shè)計(jì)階段(概念:把一個(gè)軟件需求轉(zhuǎn)換為軟件表示時(shí),首先設(shè)計(jì)出軟件總的體系結(jié)構(gòu)。稱為概要設(shè)計(jì)或結(jié)構(gòu)設(shè)計(jì)。任務(wù):將需求轉(zhuǎn)化為數(shù)據(jù)結(jié)構(gòu)和軟件的系統(tǒng)結(jié)構(gòu),要完成體系結(jié)構(gòu)設(shè)計(jì),數(shù)據(jù)設(shè)計(jì)及接口設(shè)計(jì))和詳細(xì)設(shè)計(jì)階段(要完成過程設(shè)計(jì),是通過對(duì)結(jié)構(gòu)表示進(jìn)行細(xì)化,得到軟件詳細(xì)的數(shù)據(jù)結(jié)構(gòu)和算法)。從技術(shù)的角度,采用的方法不同會(huì)有所不同:傳統(tǒng)的結(jié)構(gòu)化方法將軟件設(shè)計(jì)劃分為體系結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)及過程設(shè)計(jì)四部分;面向?qū)ο蠓椒▌t將軟件設(shè)計(jì)劃分為體系結(jié)構(gòu)設(shè)計(jì)、類設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)、接口設(shè)計(jì)、構(gòu)件級(jí)設(shè)計(jì)四部分。 創(chuàng)建良好設(shè)計(jì)的原則:1.分而治之:將大型復(fù)雜的問題分解為許多容易解決的小問題。(例:軟件的體系結(jié)構(gòu)設(shè)計(jì)和模塊化設(shè)計(jì))2.模塊化:將程序劃分成獨(dú)立命名且可獨(dú)立訪問的模塊,不同的模塊通常具有不同的功能或職責(zé)(面向?qū)ο笾?,?duì)象是模塊;結(jié)構(gòu)化方法中,模塊是過程、函數(shù)和子程序)3.模塊獨(dú)立性(好的話是高內(nèi)聚低耦合):概念:模塊化,抽象,逐步求精和信息隱藏等概念的直接結(jié)果,也是完成有效模塊設(shè)計(jì)得基本標(biāo)準(zhǔn)。軟件系統(tǒng)中每個(gè)模塊只涉及軟件要求的具體的子功能,而和軟件系統(tǒng)中其他模塊的接口是簡(jiǎn)單的。3.1一般用兩個(gè)準(zhǔn)則獨(dú)立模塊獨(dú)立性,模塊之間的耦合(模塊之間相互連接的緊密程度的度量,之間的連接越緊密,聯(lián)系越多,耦合性就越高,模塊獨(dú)立性就越弱)和模塊的內(nèi)聚(模塊內(nèi)部各個(gè)元素彼此結(jié)合的緊密程度的度量,模塊內(nèi)部各個(gè)元素之間的聯(lián)系越緊密,則它的內(nèi)聚性越高,相對(duì)地,他與其他模塊間的耦合性就會(huì)降低,模塊獨(dú)立性就越強(qiáng))模塊類型與模塊獨(dú)立性間關(guān)系(耦合性緊密到松散):內(nèi)容耦合,公共耦合,控制耦合,標(biāo)記耦合,數(shù)據(jù)耦合,例程調(diào)用耦合,類型使用耦合,包含/引入耦合,外部耦合內(nèi)聚類型與模塊獨(dú)立性間關(guān)系(內(nèi)聚性高到低):功能內(nèi)聚,層內(nèi)聚,通信內(nèi)聚,順序內(nèi)聚,過程內(nèi)聚,時(shí)間內(nèi)聚,實(shí)用程序內(nèi)聚。接口設(shè)計(jì):系統(tǒng)的接口設(shè)計(jì)包括用戶界面設(shè)計(jì)及系統(tǒng)的接口設(shè)計(jì),是由穿越邊界的數(shù)據(jù)流定義的,包括三方面內(nèi)容:模塊或軟件構(gòu)件之間的接口設(shè)計(jì);軟件與其他軟硬件系統(tǒng)之間的接口設(shè)計(jì);軟件與人之間的交互設(shè)計(jì)。處理過程設(shè)計(jì):要決定各個(gè)模塊的功能及模型的實(shí)現(xiàn)算法,并精確地表達(dá)這些算法。PAD圖:用結(jié)構(gòu)化程序設(shè)計(jì)思想表現(xiàn)程序邏輯結(jié)構(gòu)的圖形工具,由程序流程圖演化而來(lái)。優(yōu)點(diǎn):1.PAD所表達(dá)的程序,結(jié)構(gòu)清晰且結(jié)構(gòu)化程度高;2.PAD的執(zhí)行順序從最左主干線的上端的節(jié)點(diǎn)開始,自上而下依次執(zhí)行;3.由于PAD的樹形特點(diǎn),使他比流程圖更容易在計(jì)算機(jī)上處理。HIPO圖:由可視目錄表(給出系統(tǒng)的功能分層關(guān)系)和IPO圖組成(為系統(tǒng)的各部分提供具體地工作細(xì)節(jié))數(shù)據(jù)字典:關(guān)于數(shù)據(jù)的信息的集合,也就是對(duì)數(shù)據(jù)流圖中包含的所有元素的定義的集合。體系結(jié)構(gòu)概念:軟件被分成許多模塊,模塊之間相互作用,組合起來(lái)就有了整體的屬性,就具有了體系結(jié)構(gòu)。一個(gè)程序或計(jì)算機(jī)系統(tǒng)的軟件體系結(jié)構(gòu)是指系統(tǒng)的一個(gè)或者多個(gè)結(jié)構(gòu)。結(jié)構(gòu)中包括軟件的構(gòu)件、構(gòu)件的外部可見屬性以及它們間的相互關(guān)系。外部可見屬性則是指軟件構(gòu)件提供的服務(wù)、性能、使用特性、錯(cuò)誤處理、共享資源使用等?;締挝皇擒浖?gòu)件。體系結(jié)構(gòu)的結(jié)構(gòu)風(fēng)格:定義一個(gè)詞匯表和一組約束。1.數(shù)據(jù)流風(fēng)格:例管道和過濾器結(jié)構(gòu)。2.調(diào)用返回風(fēng)格:主程序子程序體系結(jié)構(gòu) ;面向?qū)ο箫L(fēng)格;層次結(jié)構(gòu)風(fēng)格。3.數(shù)據(jù)倉(cāng)庫(kù)風(fēng)格:如數(shù)據(jù)庫(kù)系統(tǒng),超文本系統(tǒng),黑板系統(tǒng)。結(jié)構(gòu)化程序設(shè)計(jì):原則:使用語(yǔ)言中的順序、選擇、重復(fù)等有限的基本控制結(jié)構(gòu)表示程序邏輯;選用的控制結(jié)構(gòu)只準(zhǔn)許有一個(gè)入口和一個(gè)出口;程序語(yǔ)句組成容易識(shí)別的塊(Block),每塊只有一個(gè)入口和一個(gè)出口;復(fù)雜結(jié)構(gòu)應(yīng)該用基本控制結(jié)構(gòu)進(jìn)行組合嵌套來(lái)實(shí)現(xiàn);語(yǔ)言中沒有的控制結(jié)構(gòu),可用一段等價(jià)的程序段模擬, 但要求該程序段在整個(gè)系統(tǒng)中應(yīng)前后一致;嚴(yán)格控制GOTO語(yǔ)句,僅在下列情形才可使用:用一個(gè)非結(jié)構(gòu)化的編程語(yǔ)言去實(shí)現(xiàn)一個(gè)結(jié)構(gòu)化的構(gòu)造,在某種可以改善而不是損害程序可讀性的情況下。包括兩個(gè)方面:1.在程序設(shè)計(jì)過程中,盡量采用自頂向下和逐步細(xì)化的原則,由粗到細(xì),一步步展開。方法:以自頂向下逐步求精的方式編寫程序:把模塊功能逐步分解,細(xì)化為一系列具體的步驟,進(jìn)而翻譯成一系列用某種編程語(yǔ)言寫成的程序。用先全局后局部,先整體后細(xì)節(jié),先抽象后具體的逐步求精的過程開發(fā)出來(lái)的程序具有清晰的層次結(jié)構(gòu),程序容易閱讀和理解。2.在編寫程序時(shí)強(qiáng)調(diào)使用幾種基本控制結(jié)構(gòu),通過組合嵌套,形成程序的控制結(jié)構(gòu)。盡可能避免使用會(huì)使程序質(zhì)量受到影響的GOTO語(yǔ)句。方法:使用基本控制結(jié)構(gòu)構(gòu)造程序 結(jié)構(gòu)化設(shè)計(jì)方法的設(shè)計(jì)步驟:對(duì)DFD圖進(jìn)行復(fù)審,必要時(shí)修改或細(xì)化;根據(jù)數(shù)據(jù)流圖確定問題的類型,針對(duì)不同的類型分別進(jìn)行分析處理;由DFD映射成初始SC圖;改進(jìn)SC圖,直至得到符合要求的結(jié)構(gòu)圖。軟件測(cè)試的目的:從用戶的角度出發(fā),普遍希望通過軟件測(cè)試暴露軟件中隱藏的錯(cuò)誤和缺陷,以考慮是否可接受該產(chǎn)品。從軟件開發(fā)者的角度出發(fā),則希望測(cè)試成為表明軟件產(chǎn)品中不存在錯(cuò)誤的過程,驗(yàn)證該軟件已正確地實(shí)現(xiàn)了用戶的要求。 對(duì)一個(gè)軟件系統(tǒng),尤其是規(guī)模大、復(fù)雜性高的大型軟件系統(tǒng),雖經(jīng)過了分析、設(shè)計(jì)和編程階段但仍會(huì)存在錯(cuò)誤。為了保證軟件系統(tǒng)的質(zhì)量,就要對(duì)軟件系統(tǒng)進(jìn)行檢驗(yàn)和測(cè)試。軟件測(cè)試手段有三類:動(dòng)態(tài)檢查、靜態(tài)檢查和正確性證明軟件測(cè)試的定義:使用人工操作或者軟件自動(dòng)運(yùn)行的方式來(lái)檢驗(yàn)它是否滿足規(guī)定的需求或弄清預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別的過程。它是幫助識(shí)別開發(fā)完成的計(jì)算機(jī)軟件的正確度、完全度和質(zhì)量的軟件過程;是的重要子域。軟件測(cè)試的基本原則:1)測(cè)試用例應(yīng)該由以下兩部分組成:輸入數(shù)據(jù)。預(yù)期的輸出結(jié)果。2)不僅要選用合理的輸入數(shù)據(jù)作為測(cè)試用例,還應(yīng)選用不合理的輸入數(shù)據(jù)作為測(cè)試用例。3)除了檢查程序是否做了它應(yīng)做的工作之外,還應(yīng)檢查程序是否還做了它不應(yīng)做的事情。4)應(yīng)該長(zhǎng)期保留所有的測(cè)試用例,直至這個(gè)程序系統(tǒng)被廢棄不用為止。軟件測(cè)試步驟:說(shuō)明這些步驟的測(cè)試對(duì)象是什么?答:(1)單元測(cè)試,測(cè)試對(duì)象為單元模塊(2)集成測(cè)試,測(cè)試對(duì)象為組裝后的程序模塊(3)確認(rèn)測(cè)試,測(cè)試對(duì)象為可運(yùn)行的目標(biāo)軟件系統(tǒng)(4)最后一步是系統(tǒng)測(cè)試,檢查軟件與系統(tǒng)中其他元素是否協(xié)調(diào)錯(cuò)誤分類:1.按錯(cuò)誤的影響和后果分類:微小錯(cuò)誤,一般錯(cuò)誤,較嚴(yán)重錯(cuò)誤、嚴(yán)重錯(cuò)誤,非常嚴(yán)重的錯(cuò)誤,最嚴(yán)重的錯(cuò)誤。2.按錯(cuò)誤的性質(zhì)和范圍分類:功能錯(cuò)誤、系統(tǒng)錯(cuò)誤、加工錯(cuò)誤、數(shù)據(jù)錯(cuò)誤、代碼錯(cuò)誤。3.按軟件生存周期階段分類:需求錯(cuò)誤、功能與性能、程序結(jié)構(gòu)、數(shù)據(jù)錯(cuò)誤、實(shí)現(xiàn)和編碼錯(cuò)誤、集成錯(cuò)誤、系統(tǒng)結(jié)構(gòu)錯(cuò)誤、測(cè)試定義與測(cè)試執(zhí)行錯(cuò)誤。單元測(cè)試定義:是針對(duì)軟件設(shè)計(jì)的最小單位程序模塊,進(jìn)行正確性檢驗(yàn)的測(cè)試工作,是在模塊源程序代碼編寫完成之后進(jìn)行的測(cè)試。對(duì)于傳統(tǒng)的結(jié)構(gòu)化程序而言,程序單元是指程序中定義的函數(shù)或子程序,單元測(cè)試就是對(duì)函數(shù)或予程序進(jìn)行的測(cè)試。對(duì)于面向?qū)ο蟮某绦蚨?,程序單元是指特定的一個(gè)具體的類或相關(guān)的多個(gè)類,單元測(cè)試是對(duì)類的測(cè)試;但有時(shí)候,在一個(gè)類特別復(fù)雜時(shí),就會(huì)把方法作為一個(gè)單元進(jìn)行測(cè)試。目的:驗(yàn)證代碼是與設(shè)計(jì)相符合的;跟蹤需求和設(shè)計(jì)的實(shí)現(xiàn);發(fā)現(xiàn)設(shè)計(jì)和需求中存在的缺陷;發(fā)現(xiàn)在編碼過程中引入的錯(cuò)誤。步驟:人工檢查和動(dòng)態(tài)執(zhí)行跟蹤。人工檢查主要是保證代碼算法的邏輯正確性、清晰性、規(guī)范性、一致性、算法高效性,并盡可能地發(fā)現(xiàn)程序中沒有發(fā)現(xiàn)的錯(cuò)誤。動(dòng)態(tài)執(zhí)行跟蹤就是通過設(shè)計(jì)測(cè)試用例,執(zhí)行待測(cè)程序來(lái)跟蹤比較實(shí)際結(jié)果與預(yù)期結(jié)果來(lái)發(fā)現(xiàn)錯(cuò)誤。環(huán)境:由于一個(gè)模塊或一個(gè)方法并不是一個(gè)獨(dú)立的程序,考慮測(cè)試時(shí)要同時(shí)考慮它和外界的聯(lián)系,因此要用到一些輔助模塊,來(lái)模擬與被測(cè)模塊相聯(lián)系的其他模塊。這些被測(cè)試模塊和與它相關(guān)的驅(qū)動(dòng)模塊及樁模塊共同構(gòu)成了測(cè)試環(huán)境。單元測(cè)試的基本內(nèi)容:測(cè)試構(gòu)造軟件系統(tǒng)的模塊(對(duì)象和子系統(tǒng))1、模塊接口:主要檢查數(shù)據(jù)能否正確通過模塊;屬性及對(duì)應(yīng)關(guān)系是否一致。2、局部數(shù)據(jù)結(jié)構(gòu):說(shuō)明不正確或不一致;初始化或缺省值錯(cuò)誤;變量名未定義或拼寫錯(cuò)誤;數(shù)據(jù)類型不相容;上溢下溢或地址錯(cuò)誤等3、重要的執(zhí)行路徑:重要模塊要進(jìn)行基本路徑測(cè)試,仔細(xì)地選擇測(cè)試路徑是單元測(cè)試的一項(xiàng)基本任務(wù)。4、錯(cuò)誤處理:主要測(cè)試程序?qū)﹀e(cuò)誤處理的能力,應(yīng)檢查是否不能正確處理外部輸入錯(cuò)誤或內(nèi)部處理引起的錯(cuò)誤;對(duì)發(fā)生的錯(cuò)誤不能正確描述的內(nèi)容,難以理解;在錯(cuò)誤處理之前,系統(tǒng)已經(jīng)進(jìn)行干預(yù)。5、邊界條件:程序最容易在邊界上出錯(cuò),如輸入輸出數(shù)據(jù)的等價(jià)類邊界,選擇條件和循環(huán)條件的邊界,復(fù)雜數(shù)據(jù)結(jié)構(gòu)的邊界等都應(yīng)進(jìn)行測(cè)試單元測(cè)試策略:1.自頂向下的單元測(cè)試策略:從最頂層的單元開始,把頂層調(diào)用的單元用樁模塊代替,對(duì)頂層模塊做單元測(cè)試。對(duì)下一層單元進(jìn)行測(cè)試時(shí),使用上面已測(cè)試的單元做驅(qū)動(dòng)模塊,并為被測(cè)模塊編寫新的樁模塊。依次類推,直到全部單元測(cè)試結(jié)束。優(yōu)點(diǎn)是:可以在集成測(cè)試之前為系統(tǒng)提供早期的集成途徑。缺點(diǎn)是:?jiǎn)卧獪y(cè)試被樁模塊控制,隨著單元測(cè)試的不斷進(jìn)行,測(cè)試過程也會(huì)變得越來(lái)越復(fù)雜。2.自底向上的單元測(cè)試策略:先對(duì)調(diào)用圖的最底層單元進(jìn)行測(cè)試,使用驅(qū)動(dòng)模塊來(lái)代替調(diào)用它的上層單元。對(duì)上一層單元進(jìn)行測(cè)試時(shí),用已經(jīng)被測(cè)試過的模塊做樁模塊,并為被測(cè)單元編寫新的驅(qū)動(dòng)模塊。依次類推,直到全部單元測(cè)試結(jié)束。優(yōu)點(diǎn)是:不需要單獨(dú)設(shè)計(jì)樁模塊;無(wú)需依賴結(jié)構(gòu)設(shè)計(jì),可以直接從功能設(shè)計(jì)中獲取測(cè)試用例,可以為系統(tǒng)提供早期的集成途徑。缺點(diǎn)是:自底向上的單元測(cè)試不能和詳細(xì)設(shè)計(jì)、編碼同步進(jìn)行。3.孤立測(cè)試:分別為每個(gè)模塊單獨(dú)設(shè)計(jì)樁模塊和驅(qū)動(dòng)模塊,逐一完成所有單元模塊的測(cè)試。優(yōu)點(diǎn)是:方法簡(jiǎn)單、易操作,能夠達(dá)到高覆蓋率。各模塊之間不存在依賴性,所以單元測(cè)試可以并行進(jìn)行。缺點(diǎn)是:不能為集成測(cè)試提供早期的集成途徑。依賴結(jié)構(gòu)設(shè)計(jì)信息,需要設(shè)計(jì)多個(gè)樁模塊和驅(qū)動(dòng)模塊,增加了額外的測(cè)試成本。4.綜合測(cè)試:單元測(cè)試分析:目的是要根據(jù)可能的各種情況,確定測(cè)試內(nèi)容。要確認(rèn)這段代碼是否在任何情況下都和期望的一致。1.模塊接口測(cè)試(參數(shù)表、全局變量、文件)2.局部數(shù)據(jù)結(jié)構(gòu):3.路徑測(cè)試4.錯(cuò)誤處理測(cè)試5.邊界測(cè)試。集成測(cè)試:定義:根據(jù)實(shí)際情況對(duì)程序模塊采用適當(dāng)?shù)募蓽y(cè)試策略組裝起來(lái),對(duì)系統(tǒng)的接口以及集成后的功能進(jìn)行正確性檢驗(yàn)的測(cè)試工作。目的:根據(jù)實(shí)際情況對(duì)程序模塊采用適當(dāng)?shù)募蓽y(cè)試策略組裝起來(lái),對(duì)系統(tǒng)的接口以及集成后的功能進(jìn)行正確性檢驗(yàn)的測(cè)試工作。對(duì)于傳統(tǒng)軟件來(lái)說(shuō),按集成程度不同,可以把集成測(cè)試分為 3 個(gè)層次,即模塊內(nèi)集成測(cè)試;子系統(tǒng)內(nèi)集成測(cè)試;子系統(tǒng)間集成測(cè)試。對(duì)于面向?qū)ο蟮膽?yīng)用系統(tǒng)來(lái)說(shuō),按集成程度不同,可以把集成測(cè)試分為2個(gè)層次,即類內(nèi)集成測(cè)試;類間集成測(cè)試。環(huán)境:硬件環(huán)境,操作系統(tǒng),數(shù)據(jù)庫(kù),網(wǎng)絡(luò),測(cè)試工具運(yùn)行,其他集成測(cè)試策略:1,基于分解的集成方式(a.一次性集成方式,優(yōu)點(diǎn)是只要極少數(shù)的驅(qū)動(dòng)和樁模塊;需要的測(cè)試用例最少;方法簡(jiǎn)單;多個(gè)測(cè)試人員可以并行工作,對(duì)人力、物力資源利用率較高。缺點(diǎn)是一次試運(yùn)行成功的可能性不大;錯(cuò)誤定位和修改困難;有許多接口錯(cuò)誤很容易躲過測(cè)試。b.自頂向下的增量式集成:優(yōu)點(diǎn)是在增量式集成的過程中較早地驗(yàn)證了主要的控制和判斷點(diǎn);減少了驅(qū)動(dòng)模塊開發(fā)的費(fèi)用;由于集成順序和設(shè)計(jì)順序一致,可以和設(shè)計(jì)并行進(jìn)行;支持故障隔離。缺點(diǎn)是建立樁模塊的成本較高;底層構(gòu)件中的一個(gè)無(wú)法預(yù)計(jì)的需求可能會(huì)導(dǎo)致許多頂層構(gòu)件的修改;底層構(gòu)件行為的驗(yàn)證被推遲了;隨著底層模塊的不斷增加,整個(gè)系統(tǒng)越來(lái)越復(fù)雜,導(dǎo)致底層模塊的測(cè)試不充分,尤其是那些被復(fù)用的模塊。c.自底向上的增量式集成:優(yōu)點(diǎn)是對(duì)底層模塊的行為能夠早期驗(yàn)證;可以并行進(jìn)行測(cè)試和集成,驅(qū)動(dòng)模塊的編寫工作量遠(yuǎn)比樁模塊的編寫工作量?。恢С止收细綦x。缺點(diǎn)是對(duì)高層的驗(yàn)證被推遲到了最后,設(shè)計(jì)上的錯(cuò)誤不能被及時(shí)發(fā)現(xiàn);對(duì)于底層的一些異常很難覆蓋。d.優(yōu)點(diǎn)是集合了由頂向下和自底向上的兩種集成策略的優(yōu)點(diǎn),且對(duì)中間層能夠盡早進(jìn)行比較充分的測(cè)試;而且該策略的并行度比較高。缺點(diǎn)是中間層如果選取不恰當(dāng),可能會(huì)有比較大的驅(qū)動(dòng)模塊和樁模塊的工作量。)2、基于層次的集成:適用范圍:有明顯線性層次關(guān)系的軟件系統(tǒng)。3.基于路徑的集成:集成測(cè)試分析:1、體系結(jié)構(gòu)分析:1).跟蹤需求分析:從需求的跟蹤實(shí)現(xiàn)出發(fā),劃分出系統(tǒng)實(shí)現(xiàn)上的結(jié)構(gòu)層次圖。2)對(duì)系統(tǒng)各個(gè)構(gòu)件之間的依賴關(guān)系進(jìn)行分析,然后據(jù)此確定集成測(cè)試的模塊的大小。2、模塊分析:3、接口分析:集成測(cè)試的重點(diǎn)是測(cè)試接口的功能性、可靠性、安全性、完整性、穩(wěn)定性等多個(gè)方面。接口的劃分,接口的分類,接口數(shù)據(jù)分析。4、集成測(cè)試策略的分析:主要根據(jù)被測(cè)對(duì)象選擇合適的集成策略。測(cè)試用例的重要性 :測(cè)試用例是測(cè)試人員執(zhí)行測(cè)試的重要參考依據(jù)。良好的測(cè)試用例具有復(fù)用的功能,在測(cè)試過程中可以重復(fù)使用。測(cè)試用例是在長(zhǎng)期測(cè)試實(shí)踐中積累起來(lái)的,組織好這些測(cè)試用例,可幫助測(cè)試者有效使用它們。測(cè)試用例的通過率是檢驗(yàn)程序代碼質(zhì)量的例證,衡量程序代碼的質(zhì)量,量化的標(biāo)準(zhǔn)應(yīng)該是測(cè)試用例的通過率和軟件缺陷(bug)的數(shù)目。測(cè)試用例也是檢驗(yàn)測(cè)試人員進(jìn)度、工作量以及跟蹤管理測(cè)試人員的工作效率的因素。黑盒測(cè)試(叫做功能測(cè)試或數(shù)據(jù)驅(qū)動(dòng)測(cè)試或基于規(guī)格說(shuō)明的測(cè)試):定義:根據(jù)產(chǎn)品的外部功能來(lái)規(guī)劃測(cè)試,檢查程序各個(gè)功能是否實(shí)現(xiàn),主要的質(zhì)量屬性是否達(dá)到要求,其中有無(wú)錯(cuò)誤。白盒測(cè)試:定義:基于產(chǎn)品內(nèi)部結(jié)構(gòu)來(lái)規(guī)劃測(cè)試,檢查程序內(nèi)部操作是否按規(guī)定運(yùn)行,各部分代碼是否被充分覆蓋。方法:把測(cè)試對(duì)象看做一個(gè)玻璃盒子,它允許測(cè)試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計(jì)或選擇測(cè)試用例,對(duì)程序所有邏輯路徑進(jìn)行測(cè)試。通過在不同點(diǎn)檢查程序的狀態(tài),確定實(shí)際的狀態(tài)是否與預(yù)期的狀態(tài)一致。因此白盒測(cè)試又稱為結(jié)構(gòu)測(cè)試或邏輯驅(qū)動(dòng)測(cè)試。主要想對(duì)程序模塊進(jìn)行如下的檢查:1)路徑覆蓋測(cè)試:對(duì)程序模塊的獨(dú)立的執(zhí)行路徑盡可能多的執(zhí)行測(cè)試;2)邏輯覆蓋測(cè)試:對(duì)所有的邏輯判定,取“真”與取“假”的兩種情況盡可能多地執(zhí)行測(cè)試;3)控制流測(cè)試:在循環(huán)的邊界和運(yùn)行界限內(nèi)執(zhí)行循環(huán)體檢查循環(huán)的執(zhí)行狀態(tài);4)數(shù)據(jù)流測(cè)試、領(lǐng)域測(cè)試:測(cè)試內(nèi)部數(shù)據(jù)結(jié)構(gòu)的有效性 。 白盒測(cè)試用例設(shè)計(jì)方法邏輯覆蓋有語(yǔ)句覆蓋(設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得每一可執(zhí)行語(yǔ)句至少執(zhí)行一次。)、判定覆蓋(設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次。)、條件覆蓋、判定/條件覆蓋、條件組合覆蓋及路徑覆蓋。軟件工程為什么要強(qiáng)調(diào)規(guī)范化和文檔化?規(guī)范化的目的是使眾多的開發(fā)者遵守相同的規(guī)范,使軟件生產(chǎn)擺脫個(gè)人生產(chǎn)方式,進(jìn)入標(biāo)準(zhǔn)化、工程化的生產(chǎn)方式。文檔化是將軟件的設(shè)計(jì)思想、設(shè)計(jì)過程和實(shí)現(xiàn)過程完整地記錄下來(lái),以便于后人的使用和維護(hù),在開發(fā)過程中各類相關(guān)人員借助于文檔進(jìn)行交流和溝通。另外,在開發(fā)過程中產(chǎn)生的各類文檔使得軟件的生產(chǎn)過程由不可見變?yōu)榭梢?,便于管理者?duì)軟件生產(chǎn)進(jìn)度和開發(fā)過程進(jìn)行管理。在用戶最終驗(yàn)收時(shí)可以通過對(duì)提交的文檔進(jìn)行技術(shù)審查和管理審查,保證軟件的質(zhì)量。結(jié)構(gòu)化分析的主要步驟:根據(jù)用戶的需求畫出初始的數(shù)據(jù)流程圖,寫出數(shù)據(jù)字典和初始的加工處理說(shuō)明(IPO圖),實(shí)體關(guān)系圖。以初始數(shù)據(jù)流程圖為基礎(chǔ),從數(shù)據(jù)流程圖的輸出端開始回溯。在對(duì)數(shù)據(jù)流程圖進(jìn)行回溯的過程中可能會(huì)發(fā)現(xiàn)丟失的處理和數(shù)據(jù),應(yīng)將數(shù)據(jù)流程圖補(bǔ)充完善。對(duì)軟件性能指標(biāo)、接口定義、設(shè)計(jì)和實(shí)現(xiàn)的約束條件等逐一進(jìn)行分析。系統(tǒng)分析人員與用戶一起對(duì)需求分析的結(jié)果進(jìn)行復(fù)查。根據(jù)細(xì)化的需求修訂開發(fā)計(jì)劃。編寫需求規(guī)格說(shuō)明書和初始的用戶手冊(cè),測(cè)試人員開始編寫功能測(cè)試用的測(cè)試數(shù)據(jù)。數(shù)據(jù)流圖:是描繪信息和數(shù)據(jù)從輸入移動(dòng)到輸出的過程中所經(jīng)受的變換。反映了數(shù)據(jù)在軟件中流動(dòng)和被處理的邏輯過程。數(shù)據(jù)流圖是系統(tǒng)邏輯功能的圖形表示,是一種極好的通信工具。包括的條目:數(shù)據(jù)流詞條,數(shù)據(jù)元素詞條,數(shù)據(jù)存儲(chǔ)詞條,數(shù)據(jù)加工處理詞條,數(shù)據(jù)源點(diǎn)及終點(diǎn)詞條。組成:外部實(shí)體(外部實(shí)體是指系統(tǒng)之外的人或單位,它們和本系統(tǒng)有信息傳遞關(guān)系)數(shù)據(jù)流,處理、數(shù)據(jù)存儲(chǔ)。內(nèi)聚性和耦合性的類別。作用:數(shù)據(jù)流程圖描述了系統(tǒng)的邏輯結(jié)構(gòu),其中的四個(gè)基本圖形元素的含義無(wú)法在數(shù)據(jù)流程圖中詳細(xì)說(shuō)明,因此數(shù)據(jù)流程圖需要與其他工具配合使用,數(shù)據(jù)字典就是這樣的工具之一。需求工程包括哪些基本活動(dòng)?各項(xiàng)基本活動(dòng)的主要任務(wù)是什么?主要活動(dòng):獲取需求。深入實(shí)際,在充分理解用戶需求的基礎(chǔ)上,獲取足夠多的問題領(lǐng)域的知識(shí),積極與用戶交流,捕捉、分析和修訂用戶對(duì)目標(biāo)系統(tǒng)的需求,并提煉出符合解決領(lǐng)域問題的用戶需求。需求獲取的方法一般有問卷法、面談法、數(shù)據(jù)采集法、用例法、情景實(shí)例法以及基于目標(biāo)的方法等。需求分析與建模。對(duì)已獲取的需求進(jìn)行分析和提煉,進(jìn)行抽象描述,建立目標(biāo)系統(tǒng)的概念模型,需求概念模型的要求包括實(shí)現(xiàn)的獨(dú)立性:不模擬數(shù)據(jù)的表示和內(nèi)部組織等;需求模擬技術(shù)又分為企業(yè)模擬、功能需求模擬和非功能需求模擬等。進(jìn)一步對(duì)所建立的模型(原型)進(jìn)行分析。需求模型的表現(xiàn)形式有自然語(yǔ)言、半形式化(如圖、表、結(jié)構(gòu)化英語(yǔ)等)和形式化表示等三種。需求規(guī)格說(shuō)明。對(duì)需求模型進(jìn)行精確的、形式化的描述,為計(jì)算機(jī)系統(tǒng)的實(shí)現(xiàn)提供基礎(chǔ)。確認(rèn)需求。以需求規(guī)格說(shuō)明為基礎(chǔ)輸入,通過符號(hào)執(zhí)行、模擬或快速原型等方法,分析和驗(yàn)證需求規(guī)格說(shuō)明的正確性和可行性,確保需求說(shuō)明準(zhǔn)確、完整地表達(dá)系統(tǒng)的主要特性,就是對(duì)需求規(guī)格說(shuō)明與用戶達(dá)成一致。其主要任務(wù)是沖突求解,包括定義沖突和沖突求解兩方面。常用的沖突求解方法有:協(xié)商、競(jìng)爭(zhēng)、仲裁、強(qiáng)制、教育等,其中有些只能用人的因素去控制。需求管理。在整個(gè)需求工程過程中,貫穿了需求管理活動(dòng)。需求管理主要包括跟蹤和管理需求變化,支持系統(tǒng)的需求演進(jìn)。由于客戶的需要總是不斷(連續(xù))增長(zhǎng)的,但一般的軟件開發(fā)又總是落后于客戶需求的增長(zhǎng),如何管理需求的進(jìn)化(變化)就成為軟件管理的首要問題。對(duì)于傳統(tǒng)的變化管理過程來(lái)說(shuō),其基本成分包括軟件配置、軟件基線和變化審查小組。當(dāng)前的發(fā)展是軟件家族法,即產(chǎn)品線方法。多視點(diǎn)方法也是管理需求變化的一種新方法,它可以用于管理不一致性,并進(jìn)行關(guān)于變化的推理。進(jìn)化需求是十分必要的。1.語(yǔ)句覆蓋:主要特點(diǎn):語(yǔ)句覆蓋是最起碼的結(jié)構(gòu)覆蓋要求,語(yǔ)句覆蓋要求設(shè)計(jì)足夠多的測(cè)試用例,使得程序中每條語(yǔ)句至少被執(zhí)行一次。1)用例設(shè)計(jì):(如果此時(shí)將A路徑上的語(yǔ)句1T去掉,用例如下)XY路徑15050OBDE29070OBCE2)優(yōu)點(diǎn):可以很直觀地從源代碼得到測(cè)試用例,無(wú)須細(xì)分每條判定表達(dá)式。3)缺點(diǎn):由于這種測(cè)試方法僅僅針對(duì)程序邏輯中顯式存在的語(yǔ)句,但對(duì)于隱藏的條件和可能到達(dá)的隱式邏輯分支,是無(wú)法測(cè)試的。在本例中去掉了語(yǔ)句1T去掉,那么就少了一條測(cè)試路徑。在if結(jié)構(gòu)中若源代碼沒有給出else后面的執(zhí)行分支,那么語(yǔ)句覆蓋測(cè)試就不會(huì)考慮這種情況。但是我們不能排除這種以外的分支不會(huì)被執(zhí)行,而往往這種錯(cuò)誤會(huì)經(jīng)常出現(xiàn)。再如,在Do-While結(jié)構(gòu)中,語(yǔ)句覆蓋執(zhí)行其中某一個(gè)條件分支。那么顯然,語(yǔ)句覆蓋對(duì)于多分支的邏輯運(yùn)算是無(wú)法全面反映的,它只在乎運(yùn)行一次,而不考慮其他情況。2.判定覆蓋1)主要特點(diǎn):判定覆蓋又稱為分支覆蓋,它要求設(shè)計(jì)足夠多的測(cè)試用例,使得程序中每個(gè)判定至少有一次為真值,有一次為假值,即:程序中的每個(gè)分支至少執(zhí)行一次。每個(gè)判斷的取真、取假至少執(zhí)行一次。2)用例設(shè)計(jì):XY路徑19090OAE25050OBDE39070OBCE3)優(yōu)點(diǎn):判定覆蓋比語(yǔ)句覆蓋要多幾乎一倍的測(cè)試路徑,當(dāng)然也就具有比語(yǔ)句覆蓋更強(qiáng)的測(cè)試能力。同樣判定覆蓋也具有和語(yǔ)句覆蓋一樣的簡(jiǎn)單性,無(wú)須細(xì)分每個(gè)判定就可以得到測(cè)試用例。4)缺點(diǎn):往往大部分的判定語(yǔ)句是由多個(gè)邏輯條件組合而成(如,判定語(yǔ)句中包含AND、OR、CASE),若僅僅判斷其整個(gè)最終結(jié)果,而忽略每個(gè)條件的取值情況,必然會(huì)遺漏部分測(cè)試路徑。1)分析這一段說(shuō)明,列出原因和結(jié)果原因:1.售貨機(jī)有零錢找2.投入1元硬幣3.投入5角硬幣4. 押下橙汁按鈕5. 押下啤酒按鈕結(jié)果:21. 售貨機(jī)零錢找完燈亮22. 退還1元硬幣 23. 退還5角硬幣24. 送出橙汁飲料25. 送出啤酒飲料2)畫出因果圖。所有原因結(jié)點(diǎn)列在左邊,所有結(jié)果結(jié)點(diǎn)列在右邊。建立中間結(jié)點(diǎn),表示中間狀態(tài):11. 投入 1 元硬幣且押下飲料按鈕12. 押下橙汁或啤酒的按鈕13. 應(yīng)找 5 角零錢且售貨機(jī)有零錢找14. 錢已付清3)由于 2 與 3 ,4 與 5 不能同時(shí)發(fā)生,分別加上約束條件E。4)因果圖轉(zhuǎn)換成判定表。5)在判定表中選擇測(cè)試用例。22售貨機(jī)有零錢找售貨機(jī)“零錢找完”的燈亮投入1元硬幣退還1元硬幣找回5角硬幣投入5角硬幣按下橙汁按鈕送出橙汁飲料按下啤酒按鈕送出啤酒飲料按下按鈕錢付清可找5角該找5角235423112524211214113EE軟件的分類:a.系統(tǒng)軟件:是能與計(jì)算機(jī)硬件緊密配合一起,使計(jì)算機(jī)系統(tǒng)各個(gè)部件,相關(guān)的軟件和數(shù)據(jù)協(xié)調(diào)、高效工作的軟件。B.應(yīng)用軟件:是在系統(tǒng)軟件的支持下,在特定領(lǐng)域內(nèi)開發(fā),為特定目的服務(wù)的一類軟件。C.支撐軟件:亦稱為工具軟件,是協(xié)助用戶開發(fā)軟件的工具性軟件,其中包括幫助程序人員開發(fā)軟件產(chǎn)品的工具和幫助管理人員控制開發(fā)進(jìn)程的工具。D.可復(fù)用軟件:最初實(shí)現(xiàn)的典型可復(fù)用軟件是各種標(biāo)準(zhǔn)函數(shù)庫(kù)。范型:定義:指軟件開發(fā)的模式,定義了特定的問題和應(yīng)用系統(tǒng)開發(fā)過程中應(yīng)遵循的步驟,確定用于描述問題及解決方案中各個(gè)成分的表示方式,并利用這些成分表示與問題解決相關(guān)的抽象,直接得到問題的結(jié)構(gòu),支配了設(shè)計(jì)方法編碼語(yǔ)言、測(cè)試和檢驗(yàn)技術(shù)的選擇。分類:過程性范型(把軟件視為處理流,定義成由一系列步驟構(gòu)成的算法。每一步驟都是帶有輸入和輸出的一個(gè)過程,把這些步驟串聯(lián)在一起可產(chǎn)生貫通于整個(gè)程序的控制流)、面向?qū)ο蟮姆缎停ò褬?biāo)識(shí)和模型化問題領(lǐng)域中的實(shí)體做為系統(tǒng)開發(fā)的起點(diǎn),面向?qū)ο笙到y(tǒng)中的對(duì)象是數(shù)據(jù)抽象與過程抽象的綜合)、面向進(jìn)程的范型(把一個(gè)問題分解成獨(dú)立執(zhí)行的模塊。讓不只一個(gè)程序同時(shí)運(yùn)行。這些進(jìn)程互相配合,解決問題)、邏輯的、面向存取的、函數(shù)型的、說(shuō)明型的可行性分析:1.經(jīng)濟(jì)可行性:主要進(jìn)行成本的估算及可能取得效益的評(píng)估,確定待開發(fā)系統(tǒng)是否值得投資開發(fā)。討論經(jīng)濟(jì)可行性,需要進(jìn)行成本效益分析。其目的,是從經(jīng)濟(jì)角度評(píng)價(jià)開發(fā)一個(gè)新的軟件項(xiàng)目是否可行。它首先估算新軟件系統(tǒng)的開發(fā)成本,然后與可能取得的效益進(jìn)行比較權(quán)衡。有形的效益可以用貨幣的時(shí)間價(jià)值、投資回收期、純收入等指標(biāo)進(jìn)行度量。無(wú)形的效益主要是從性質(zhì)上、心理上進(jìn)行衡量。無(wú)形的效益可以被賦予貨幣價(jià)值,或用于支持按勸告行事。系統(tǒng)的經(jīng)濟(jì)效益等于因使用新系統(tǒng)而增加的收入加上使用新系統(tǒng)可節(jié)省的運(yùn)行費(fèi)用。度量效益的的方法:貨幣的時(shí)間價(jià)值,投資回收期,純收入,投資回收率。2。技術(shù)可行性:是根據(jù)開發(fā)系統(tǒng)的功能,性能及實(shí)現(xiàn)系統(tǒng)的各種約束條件等,分析在現(xiàn)有的資源和技術(shù)條件下,技術(shù)風(fēng)險(xiǎn)由多大,系統(tǒng)是否能實(shí)現(xiàn)。通常包括風(fēng)險(xiǎn)分析,資源分析,技術(shù)分析。3.法律可行性:關(guān)注的是系統(tǒng)開發(fā)過程中可能涉及的合同,侵權(quán),責(zé)任以及各種與法律相抵觸的問題。4.用戶操作可行性:要考察待開發(fā)系統(tǒng)的系統(tǒng)構(gòu)架是否符合使用單位的使用環(huán)境現(xiàn)狀和管理制度,系統(tǒng)的操作方式是否符合用戶的技術(shù)水平和使用習(xí)慣。人工測(cè)試:包括桌面檢查、走查、代碼檢查和同行評(píng)審技術(shù)。1.桌面檢查文檔的主要內(nèi)容:建立小型數(shù)據(jù)字典,描述程序中數(shù)據(jù)結(jié)構(gòu)、變量和寄存器的用法,建立各種交叉引用表。描述主要的路徑和異常的路徑。當(dāng)檢查程序邏輯時(shí),可通過判定表或布爾代數(shù)方法來(lái)確定邏輯覆蓋情況。當(dāng)檢查程序狀態(tài)時(shí),可考慮程序中的一組狀態(tài)和狀態(tài)遷移,來(lái)檢查狀態(tài)控制變量。以純粹的功能術(shù)語(yǔ)來(lái)描述輸入與輸出。描述全部已知的限制和假定。描述全部的接口和對(duì)接口的假定。2.代碼檢查是以小組為單位閱讀代碼,使用一系列規(guī)程和缺陷檢查技術(shù),檢查實(shí)際的產(chǎn)品,包括文檔和程序代碼,發(fā)現(xiàn)存在缺陷和缺陷的過程。3.用于代碼檢查的缺陷列表:數(shù)據(jù)引用缺陷、數(shù)據(jù)聲明缺陷、運(yùn)算缺陷、比較缺陷、控制流程缺陷、接口缺陷、輸入輸出缺陷、其他檢查。三種方式的區(qū)別:要檢查的項(xiàng)目也不同。桌面檢查由程序員自己檢查自己編寫的程序,程序員在程序通過編譯之后,進(jìn)行單元測(cè)試設(shè)計(jì)之前,對(duì)源程序代碼進(jìn)行分析,對(duì)照缺陷列表進(jìn)行檢查,對(duì)程序推演測(cè)試數(shù)據(jù),并補(bǔ)充相關(guān)的文檔。目的是發(fā)現(xiàn)程序中的缺陷。代碼檢查,是以小組為單位閱讀代碼,使用一系列規(guī)程和缺陷檢查技術(shù),檢查實(shí)際的產(chǎn)品,包括文檔和程序代碼,發(fā)現(xiàn)存在缺陷和缺陷的過程。走查與代碼檢查類似,都是以小組為單位進(jìn)行的。走查的過程與代碼檢查的過程大體相同,但是規(guī)程稍微有所不同,采用的缺陷檢查技術(shù)也不一樣。走查的目的是要評(píng)價(jià)一個(gè)產(chǎn)品,通常針對(duì)用場(chǎng)景和程序邏輯。目標(biāo)是發(fā)現(xiàn)缺陷、遺漏和矛盾的地方,改進(jìn)產(chǎn)品,考慮可替換的實(shí)現(xiàn)方法。 走查除用于檢查程序代碼以外,還可以用于檢查其他階段的文檔。走查的優(yōu)點(diǎn)在于,一旦發(fā)現(xiàn)錯(cuò)誤,通常就能在代碼中對(duì)其進(jìn)行精確定位,這就降低了調(diào)試(修正缺陷)的成本。另外,這個(gè)過程通常可以發(fā)現(xiàn)成批的錯(cuò)誤,這樣錯(cuò)誤就可以一同得到修正。黑盒測(cè)試用例設(shè)計(jì)方法因果圖:定義:描述事物的結(jié)果與其相關(guān)的原因之間的關(guān)系的圖示。適用范圍:1)如果在測(cè)試時(shí)必須考慮輸入條件的各種組合情況時(shí),可使用一種適合于描述對(duì)于多種條件的組合,相應(yīng)產(chǎn)生多個(gè)動(dòng)作的形式來(lái)設(shè)計(jì)測(cè)試用例,這就需要利用因果圖。2)因果圖方法最終生成的就是判定表。它適合于檢查程序輸入條件的各種組合情況?;静襟E:1)分析軟件規(guī)格說(shuō)明中,哪些是原因(即輸入條件或輸入條件的等價(jià)類),哪些是結(jié)果

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論