




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
大學(xué)計(jì)算機(jī)基礎(chǔ)
第8章軟件工程基礎(chǔ)大學(xué)計(jì)算機(jī)基礎(chǔ)課程組2022年4月目錄軟件工程概述1需求分析及其方法2軟件設(shè)計(jì)及其方法3軟件編程4軟件測(cè)試52軟件調(diào)試68.1軟件工程概述8.1.1軟件2
軟件程序數(shù)據(jù)文檔程序是按事先設(shè)計(jì)的功能和性能要求執(zhí)行的指令序列數(shù)據(jù)是使程序能夠正確地處理信息的數(shù)據(jù)結(jié)構(gòu)文檔是與程序開發(fā)、維護(hù)和使用有關(guān)的圖文資料8.1軟件工程概述8.1.1軟件1.軟件的特點(diǎn)2
軟件無明顯的制造過程不會(huì)磨損和老化是邏輯產(chǎn)品依賴硬件和環(huán)境復(fù)雜性高、成本昂貴涉及社會(huì)因素8.1軟件工程概述8.1.1軟件2.軟件的分類2
系統(tǒng)軟件,與計(jì)算機(jī)硬件緊密結(jié)合在一起,管理計(jì)算機(jī)的軟硬件資源,提高計(jì)算機(jī)的使用效率并為計(jì)算機(jī)用戶提供各種服務(wù)的軟件。支撐軟件,協(xié)助用戶開發(fā)軟件的工具性軟件。應(yīng)用軟件,為應(yīng)用于特定領(lǐng)域而開發(fā)的軟件。8.1軟件工程概述8.1.2軟件工程1.軟件工程的定義
軟件工程是用工程科學(xué)的知識(shí)和技術(shù)原理來定義、開發(fā)和維護(hù)軟件的一門學(xué)科。IEEE計(jì)算機(jī)協(xié)會(huì)將軟件工程定義為:(1)將系統(tǒng)化、嚴(yán)格約束的、可量化的方法應(yīng)用于軟件的開發(fā)、運(yùn)行和維護(hù),即將工程化應(yīng)用于軟件。(2)對(duì)(1)中所述方法的研究。2
8.1軟件工程概述8.1.2軟件工程2.軟件工程三要素2
過程是為了獲得高質(zhì)量的軟件所需要完成的一系列任務(wù)的框架。過程對(duì)軟件開發(fā)的過程和方法提供自動(dòng)或半自動(dòng)化的支持。工具方法完成軟件開發(fā)的各項(xiàng)任務(wù)的技術(shù)方法,為軟件開發(fā)提供“如何做”的技術(shù)。8.1軟件工程概述8.1.2軟件工程2.軟件工程三要素常見的軟件開發(fā)過程模型有很多種,傳統(tǒng)的有瀑布模型、快速原型模型、增量模型、螺旋模型及噴泉模型,現(xiàn)代的有基于組件的開發(fā)模型、統(tǒng)一軟件開發(fā)過程(RationalUnifiedProcess,RUP)模型等。2
8.1軟件工程概述8.1.2軟件工程2.軟件工程三要素
2
圖8.1
統(tǒng)一軟件開發(fā)過程模型8.1軟件工程概述8.1.3軟件生命周期類似于人和其他生物,軟件也存在產(chǎn)生、發(fā)展和消亡的過程,我們稱之為生命周期。2
圖8.2軟件生命周期8.1軟件工程概述8.1.3軟件生命周期問題定義。確定要解決什么問題。可行性研究。確定問題是否能解決,因此需要探討問題不同的解決方案,針對(duì)每一個(gè)方案從技術(shù)、經(jīng)濟(jì)、法律和用戶操作等方面,研究完成該項(xiàng)軟件任務(wù)的可行性,制訂完成開發(fā)任務(wù)的實(shí)施計(jì)劃。生成可行性研究報(bào)告,提交管理部門進(jìn)行審查。118.1軟件工程概述8.1.3軟件生命周期需求分析。確定待開發(fā)軟件能“做什么”。為此,需要對(duì)用戶要求進(jìn)行分析,明確目標(biāo)系統(tǒng)的功能需求和非功能需求,從功能、數(shù)據(jù)、行為等方面搭建分析模型,描述系統(tǒng)的靜態(tài)特性和動(dòng)態(tài)特性。這個(gè)階段會(huì)產(chǎn)生需求規(guī)格說明書,提交管理部門進(jìn)行審查。128.1軟件工程概述8.1.3軟件生命周期軟件設(shè)計(jì)。本階段是軟件工程的技術(shù)核心,確定待開發(fā)軟件“如何做”。為此,在設(shè)計(jì)階段應(yīng)該制定設(shè)計(jì)方案,把已經(jīng)明確的各項(xiàng)需求轉(zhuǎn)換成待開發(fā)軟件的軟件體系結(jié)構(gòu),這就是概要設(shè)計(jì)。然后詳細(xì)描述軟件體系結(jié)構(gòu)中各模塊所要完成的工作,為源程序的編寫打下基礎(chǔ),這就是詳細(xì)設(shè)計(jì)。所以設(shè)計(jì)階段會(huì)產(chǎn)生概要設(shè)計(jì)說明書和詳細(xì)設(shè)計(jì)說明書,并提交管理部門進(jìn)行審查。138.1軟件工程概述8.1.3軟件生命周期編碼實(shí)現(xiàn)。本階段是在軟件設(shè)計(jì)的基礎(chǔ)上編寫程序。該階段會(huì)生成源代碼及用戶手冊(cè)、操作手冊(cè)等面向用戶的文檔。軟件測(cè)試。測(cè)試是保證軟件質(zhì)量的重要階段,本階段的主要任務(wù)就是設(shè)計(jì)測(cè)試用例,檢驗(yàn)軟件的各個(gè)組成部分,找出軟件錯(cuò)誤,最后產(chǎn)生軟件測(cè)試報(bào)告。運(yùn)行維護(hù)。軟件一旦交付使用之后就進(jìn)入維護(hù)階段,因?yàn)檐浖趯?shí)際使用中可能會(huì)因?yàn)楦鞣N原因進(jìn)行必要且可行的擴(kuò)充、修改和刪除。該階段產(chǎn)生維護(hù)說明。148.2需求分析及其方法8.2.1需求分析
為了開發(fā)出真正滿足用戶需要的軟件產(chǎn)品,明確用戶需求是關(guān)鍵。雖然在前期工作中,已經(jīng)對(duì)用戶需求有了初步了解,但是很多細(xì)節(jié)還沒有考慮到??尚行匝芯渴窃u(píng)估系統(tǒng)是否值得去開發(fā),而不是對(duì)系統(tǒng)需求進(jìn)行定義。如果說可行性研究是要決定“做還是不做”,那么需求分析就是要回答系統(tǒng)能“做什么”這個(gè)問題。
需求分析在軟件生命周期中是一個(gè)非常重要的環(huán)節(jié),做好需求分析,能夠?yàn)楹竺娴能浖_發(fā)質(zhì)量打好基礎(chǔ)。158.2需求分析及其方法8.2.1需求分析需求分析分為需求獲取、分析建模、需求描述和需求評(píng)審四步。需求獲取。需求獲取就是收集并明確用戶功能需求和非功能需求的過程。①功能需求描述系統(tǒng)應(yīng)該做什么,即為用戶和其他系統(tǒng)完成的功能和提供的服務(wù)。在某些情況下,功能需求還必須明確系統(tǒng)不應(yīng)該做什么。②非功能需求定義了必須遵循的標(biāo)準(zhǔn)、外部界面的細(xì)節(jié)、實(shí)現(xiàn)的約束條件和一些質(zhì)量屬性等。168.2需求分析及其方法8.2.1需求分析分析建模。對(duì)目標(biāo)系統(tǒng)搭建分析模型。常見的建模工具有:數(shù)據(jù)流圖、實(shí)體關(guān)系圖、用例圖等。需求描述。將前面建立的各種模型組織成文檔的形式,生成需求規(guī)格說明書。軟件需求規(guī)格說明書主要描述軟件的目標(biāo)、軟件的功能需求、性能需求、外部接口、屬性及約束條件。需求評(píng)審。需求評(píng)審工作就是對(duì)需求產(chǎn)生的文檔進(jìn)行審查,主要檢查一致性、完整性、現(xiàn)實(shí)性和有效性。178.2需求分析及其方法8.2.2結(jié)構(gòu)化分析方法1.數(shù)據(jù)流圖數(shù)據(jù)流圖是結(jié)構(gòu)化分析的常用工具之一,它直觀地展示了系統(tǒng)中的數(shù)據(jù)是如何處理和流動(dòng)的,建模過程是自上而下、逐層分解的過程,如下圖8.3所示:188.2需求分析及其方法8.2.2結(jié)構(gòu)化分析方法1.數(shù)據(jù)流圖19圖8.3層次分解8.2需求分析及其方法8.2.2結(jié)構(gòu)化分析方法1.數(shù)據(jù)流圖數(shù)據(jù)流圖中主要圖形元素及說明如下表8.1所示:208.2需求分析及其方法8.2.2結(jié)構(gòu)化分析方法1.數(shù)據(jù)流圖數(shù)據(jù)流圖在結(jié)構(gòu)化分析方法中被廣泛應(yīng)用,尤其適用于數(shù)據(jù)處理領(lǐng)域問題。圖8.4是一個(gè)新生購書的簡易0層數(shù)據(jù)流圖,它描述了從預(yù)定書本到生成領(lǐng)書單的數(shù)據(jù)流動(dòng)過程,其中包括查詢各班學(xué)生用書表和教材存量表等環(huán)節(jié)。21圖8.40層數(shù)據(jù)流圖8.2需求分析及其方法8.2.2結(jié)構(gòu)化分析方法1.數(shù)據(jù)流圖對(duì)于復(fù)雜的問題,一個(gè)數(shù)據(jù)流圖往往是不夠的,需要按照?qǐng)D8.3所示層次結(jié)構(gòu)逐層細(xì)化。具體要求:頂層數(shù)據(jù)流圖只含有一個(gè)加工,表示整個(gè)系統(tǒng)。如下圖8.5所示:22圖8.5頂層數(shù)據(jù)流圖8.2需求分析及其方法8.2.2結(jié)構(gòu)化分析方法1.數(shù)據(jù)流圖中間數(shù)據(jù)流圖是對(duì)上一層數(shù)據(jù)流圖中的某個(gè)加工進(jìn)行細(xì)化。例如圖8.4中的“訂單處理”就可以再細(xì)化為“修改庫存”和“生成領(lǐng)書單”兩個(gè)加工,添上新的數(shù)據(jù)流和數(shù)據(jù)存儲(chǔ)生成1層數(shù)據(jù)流圖,變化如下圖8.6所示:23圖8.6部分1層數(shù)據(jù)流圖8.2需求分析及其方法8.2.2結(jié)構(gòu)化分析方法1.數(shù)據(jù)流圖最底層的數(shù)據(jù)流圖是指它的加工不能再分解的數(shù)據(jù)流圖。如果進(jìn)一步分解發(fā)現(xiàn)要表達(dá)的信息變成了“怎們做”而不是“做什么”的時(shí)候就不能再分解了,“怎們做”是設(shè)計(jì)階段所要考慮的問題,在分析階段暫不考慮。248.2需求分析及其方法8.2.2結(jié)構(gòu)化分析方法2.數(shù)據(jù)字典數(shù)據(jù)流圖確定后,還需要確定所有數(shù)據(jù)對(duì)象及控制信息的特性,給出它們的準(zhǔn)確定義,這就是數(shù)據(jù)字典。數(shù)據(jù)字典是結(jié)構(gòu)化分析的核心,之所以叫“字典”就是它能夠?yàn)閿?shù)據(jù)對(duì)象提供統(tǒng)一的定義標(biāo)準(zhǔn)參考。數(shù)據(jù)字典常常采用符號(hào)的方式來進(jìn)行定義,這樣更容易理解數(shù)據(jù)的結(jié)構(gòu)組成。數(shù)據(jù)流圖中的數(shù)據(jù)元素比如說數(shù)據(jù)流、數(shù)據(jù)文件這類的復(fù)合數(shù)據(jù)往往是將數(shù)據(jù)字典中的符號(hào)組合起來進(jìn)行定義。258.2需求分析及其方法8.2.2結(jié)構(gòu)化分析方法2.數(shù)據(jù)字典數(shù)據(jù)字典中采用的符號(hào)如表8.2所示:268.2需求分析及其方法8.2.2結(jié)構(gòu)化分析方法2.數(shù)據(jù)字典上圖8.4中“領(lǐng)書單”數(shù)據(jù)流的部分?jǐn)?shù)據(jù)信息就可以用數(shù)據(jù)字典表示:領(lǐng)書單={學(xué)號(hào)+姓名+書名+ISBN號(hào)+出版社名稱+領(lǐng)取截止日期}學(xué)號(hào)=”2020”+7{數(shù)字}7數(shù)字=”0”..”9”…278.2需求分析及其方法8.2.3軟件需求規(guī)格說明書28
軟件需求規(guī)格說明書相當(dāng)于軟件開發(fā)的圖紙,課本上列出了一個(gè)軟件需求規(guī)格說明書的模板,可根據(jù)此模板撰寫軟件需求規(guī)格說明書。8.3軟件設(shè)計(jì)及其方法8.3.1軟件設(shè)計(jì)
軟件設(shè)計(jì)是軟件開發(fā)過程中的重要階段,在此階段中,開發(fā)人員將集中研究如何把分析模型轉(zhuǎn)換為設(shè)計(jì)模型,并將解決方案記錄到設(shè)計(jì)文檔中。
軟件設(shè)計(jì)能夠?qū)⒂脩粜枨筮@種外部視角準(zhǔn)確地轉(zhuǎn)化為軟件產(chǎn)品或系統(tǒng)這種內(nèi)部視角,同時(shí)也能為后續(xù)軟件編碼工作提供參考和指導(dǎo)。298.3軟件設(shè)計(jì)及其方法8.3.1軟件設(shè)計(jì)
軟件設(shè)計(jì)不是將軟件作為一個(gè)整體來設(shè)計(jì),而是將軟件分為幾個(gè)較小的模塊單獨(dú)設(shè)計(jì),最后整合在一起。劃分模塊時(shí)要本著提高獨(dú)立性的目的。模塊獨(dú)立是良好設(shè)計(jì)的關(guān)鍵,而設(shè)計(jì)又是決定軟件質(zhì)量的關(guān)鍵環(huán)節(jié)。
模塊的獨(dú)立程度與兩個(gè)定性標(biāo)準(zhǔn)度量相關(guān),分別是耦合和內(nèi)聚。耦合是指衡量不同模塊之間的互聯(lián)程度;內(nèi)聚是指衡量模塊內(nèi)部各個(gè)元素之間彼此結(jié)合的緊密程度。
模塊之間的連接越緊密,聯(lián)系越多,耦合性就越高,其模塊獨(dú)立性就越弱,內(nèi)聚性就越低,這是不可取的。因此,好的軟件設(shè)計(jì)應(yīng)該遵循高內(nèi)聚、低耦合的設(shè)計(jì)理念。308.3軟件設(shè)計(jì)及其方法8.3.1軟件設(shè)計(jì)軟件設(shè)計(jì)可以從不同角度進(jìn)行分類。從活動(dòng)任務(wù)來看,軟件設(shè)計(jì)是根據(jù)軟件需求進(jìn)行:數(shù)據(jù)設(shè)計(jì)、體系結(jié)構(gòu)設(shè)計(jì)、接口設(shè)計(jì)、構(gòu)件設(shè)計(jì)和部署設(shè)計(jì)。數(shù)據(jù)設(shè)計(jì)。數(shù)據(jù)設(shè)計(jì)是將需求分析階段產(chǎn)生的信息模型轉(zhuǎn)化為實(shí)現(xiàn)軟件的數(shù)據(jù)結(jié)構(gòu)的過程。數(shù)據(jù)實(shí)體、實(shí)體之間的關(guān)系以及數(shù)據(jù)的內(nèi)容是數(shù)據(jù)設(shè)計(jì)活動(dòng)的基礎(chǔ)。體系結(jié)構(gòu)設(shè)計(jì)。體系結(jié)構(gòu)設(shè)計(jì)提供軟件的整體視圖,定義了軟件系統(tǒng)各主要結(jié)構(gòu)之間的關(guān)系。接口設(shè)計(jì)。接口設(shè)計(jì)定義軟件內(nèi)部通信、與其他系統(tǒng)的交互以及人機(jī)交互界面等。318.3軟件設(shè)計(jì)及其方法8.3.1軟件設(shè)計(jì)構(gòu)件(模塊)設(shè)計(jì)。構(gòu)件設(shè)計(jì)是將一個(gè)復(fù)雜的系統(tǒng)按照功能進(jìn)行模塊劃分,建立模塊的層次結(jié)構(gòu)及調(diào)用關(guān)系,確定模塊間的接口及人機(jī)交互界面等。部署設(shè)計(jì)。部署設(shè)計(jì)指的是軟件功能和子系統(tǒng)如何在支持軟件的物理環(huán)境內(nèi)進(jìn)行部署。此外,從工程管理的觀點(diǎn),軟件設(shè)計(jì)可以分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。概要設(shè)計(jì)又叫做總體設(shè)計(jì),在軟件設(shè)計(jì)前期進(jìn)行,得到軟件系統(tǒng)的基本框架。詳細(xì)設(shè)計(jì)又叫做過程設(shè)計(jì),在軟件設(shè)計(jì)后期進(jìn)行,對(duì)基本框架的各個(gè)組成部分設(shè)計(jì)內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)。328.3軟件設(shè)計(jì)及其方法8.3.2結(jié)構(gòu)化設(shè)計(jì)方法結(jié)構(gòu)化設(shè)計(jì)的任務(wù)是從軟件需求規(guī)格說明書出發(fā),設(shè)計(jì)軟件系統(tǒng)的整體結(jié)構(gòu)(概要設(shè)計(jì))、確定每個(gè)模塊的實(shí)現(xiàn)算法和數(shù)據(jù)結(jié)構(gòu)(詳細(xì)設(shè)計(jì)),形成軟件的具體設(shè)計(jì)方案,解決“怎么做”的問題。結(jié)構(gòu)化設(shè)計(jì)方法各階段主要任務(wù)如下圖8.7所示:338.3軟件設(shè)計(jì)及其方法8.3.2結(jié)構(gòu)化設(shè)計(jì)方法34圖8.7結(jié)構(gòu)化設(shè)計(jì)方法8.3軟件設(shè)計(jì)及其方法8.3.2結(jié)構(gòu)化設(shè)計(jì)方法1.概要設(shè)計(jì)在概要設(shè)計(jì)中很重要的一個(gè)任務(wù)就是體系結(jié)構(gòu)設(shè)計(jì),常用的體系結(jié)構(gòu)設(shè)計(jì)工具是結(jié)構(gòu)圖。它反映了整個(gè)系統(tǒng)的功能實(shí)現(xiàn)以及模塊與模塊之間的關(guān)系和模塊之間的接口。結(jié)構(gòu)圖的基本圖符及含義如表8.3所示:358.3軟件設(shè)計(jì)及其方法8.3.2結(jié)構(gòu)化設(shè)計(jì)方法1.概要設(shè)計(jì)
368.3軟件設(shè)計(jì)及其方法8.3.2結(jié)構(gòu)化設(shè)計(jì)方法1.概要設(shè)計(jì)結(jié)構(gòu)圖是一種層次化的表示,上方的模塊調(diào)用下方的模塊,它指出了軟件各個(gè)模塊之間的調(diào)用關(guān)系。結(jié)構(gòu)圖的形態(tài)特征如下圖8.8所示:37圖8.8結(jié)構(gòu)圖的形態(tài)特征8.3軟件設(shè)計(jì)及其方法8.3.2結(jié)構(gòu)化設(shè)計(jì)方法1.概要設(shè)計(jì)深度:在多層次的結(jié)構(gòu)圖中,模塊結(jié)構(gòu)的層次數(shù)為結(jié)構(gòu)圖的深度,大型程序結(jié)構(gòu)圖的深度可以有幾十層。上圖8.8深度為5。寬度:結(jié)構(gòu)圖中同一層模塊的最大模塊數(shù)為結(jié)構(gòu)圖的寬度。上圖8.8寬度為8。扇入:一個(gè)模塊的被調(diào)用的模塊數(shù)目。上圖8.8T模塊的扇入數(shù)目為4。扇出:一個(gè)模塊直接調(diào)用或控制下屬模塊的數(shù)目。上圖8.8M模塊和C模塊的扇出數(shù)目為3。388.3軟件設(shè)計(jì)及其方法8.3.2結(jié)構(gòu)化設(shè)計(jì)方法2.詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)的任務(wù)是為軟件結(jié)構(gòu)圖中的每一個(gè)模塊確定實(shí)現(xiàn)算法和局部數(shù)據(jù)結(jié)構(gòu),用某種選定的表達(dá)工具表示算法和數(shù)據(jù)結(jié)構(gòu)的細(xì)節(jié)。常用的詳細(xì)設(shè)計(jì)工具有:圖形設(shè)計(jì)符號(hào):流程圖、N-S圖(盒圖)、PAD圖;表格設(shè)計(jì)符號(hào):判定表等;程序設(shè)計(jì)語言:PDL(偽代碼)等。398.3軟件設(shè)計(jì)及其方法8.3.2結(jié)構(gòu)化設(shè)計(jì)方法2.詳細(xì)設(shè)計(jì)計(jì)算n階乘的程序流程圖
408.4軟件編程8.4.1編程語言編程語言是用于編寫計(jì)算機(jī)程序的語言,同時(shí)也是人與計(jì)算機(jī)交互的基本工具,它定義了一組計(jì)算機(jī)的語法規(guī)則,通過這些語法規(guī)則可以把人的意圖、思想等轉(zhuǎn)化為計(jì)算機(jī)可以理解的指令,進(jìn)而讓計(jì)算機(jī)幫助人類完成某些任務(wù)。軟件開發(fā)人員通過使用編程語言來實(shí)現(xiàn)目標(biāo)系統(tǒng)的功能。自20世紀(jì)60年代以來,人們已經(jīng)設(shè)計(jì)和實(shí)現(xiàn)了很多編程語言,可以將編程語言分為三類。418.4軟件編程8.4.1編程語言421機(jī)器語言3高級(jí)程序設(shè)計(jì)語言2匯編語言是計(jì)算機(jī)可以識(shí)別和執(zhí)行的指令代碼,由0和1組成。是機(jī)器語言的符號(hào)化,與機(jī)器語言有直接的關(guān)系。用易寫和易懂的形式語言來編寫程序的程序設(shè)計(jì)語言。8.4軟件編程8.4.1編程語言在軟件開發(fā)過程中,選擇合適的編程語言是編程的關(guān)鍵。下面列出選擇編程語言需考慮的因素:待開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域;用戶的要求;計(jì)劃使用的開發(fā)工具;軟件開發(fā)人員的喜好和能力;算法和數(shù)據(jù)結(jié)構(gòu)的復(fù)雜性;操作系統(tǒng)平臺(tái)支持及軟件可移植性要求。438.4軟件編程8.4.2編程風(fēng)格在選定好編程語言之后,就可以開始編碼了。在編碼的過程中,良好的編程習(xí)慣、風(fēng)格也是高質(zhì)量軟件的決定因素。編程風(fēng)格是指源程序的書寫習(xí)慣,比如變量的命名規(guī)則、代碼的注釋方法等。具有良好編程風(fēng)格的源程序具有較強(qiáng)的可讀性、可維護(hù)性,同時(shí)還能提高團(tuán)隊(duì)開發(fā)的效率。在大型軟件開發(fā)項(xiàng)目中,為了控制軟件開發(fā)的質(zhì)量,保證軟件開發(fā)的一致性,遵循一定的編程風(fēng)格尤為重要。448.4軟件編程8.4.2編程風(fēng)格要做到按照良好的編程風(fēng)格進(jìn)行編程,可以從以下幾點(diǎn)入手:版權(quán)和版本聲明。應(yīng)該在每個(gè)代碼文件的開頭對(duì)代碼的版權(quán)和版本進(jìn)行聲明,主要內(nèi)容有:①版權(quán)信息。②文件名稱,標(biāo)識(shí)符,摘要。③當(dāng)前版本號(hào),作者/修改者,完成日期。④版本歷史信息。458.4軟件編程8.4.2編程風(fēng)格要做到按照良好的編程風(fēng)格進(jìn)行編程,可以從以下幾點(diǎn)入手:變量名說明。變量名是編程的核心,只有全面理解系統(tǒng)的編程人員才能定義適合的名稱。
468.4軟件編程8.4.2編程風(fēng)格要做到按照良好的編程風(fēng)格進(jìn)行編程,可以從以下幾點(diǎn)入手:程序注釋。程序注釋可以讓人比較容易地閱讀程序,是軟件開發(fā)人員之間以及開發(fā)人員和用戶之間進(jìn)行交流的重要途徑,也是后期修改程序的重要參考內(nèi)容。
注釋可分為序言性注釋和功能性注釋兩大類。
序言性注釋通常在每個(gè)程序或模塊的開頭部分,它是對(duì)程序或模塊的整體說明。
功能性注釋通常嵌在程序體內(nèi),主要描述程序段所實(shí)現(xiàn)的功能。478.5軟件測(cè)試8.5.1軟件測(cè)試概述
軟件測(cè)試是發(fā)現(xiàn)軟件中錯(cuò)誤或缺陷的主要手段。在軟件開發(fā)過程的任何階段都可能引入缺陷。軟件測(cè)試是軟件開發(fā)過程中的一個(gè)重要階段。軟件測(cè)試工作應(yīng)該貫穿于整個(gè)開發(fā)過程。488.5軟件測(cè)試8.5.1軟件測(cè)試概述人們?cè)陂L期進(jìn)行軟件測(cè)試實(shí)踐中,不斷地總結(jié)出一些軟件測(cè)試的經(jīng)驗(yàn)或原則,可供我們參考:窮舉測(cè)試是不可能的。測(cè)試中存在風(fēng)險(xiǎn)。軟件測(cè)試只能表明缺陷的存在,而不能證明軟件產(chǎn)品已經(jīng)沒有缺陷。注意測(cè)試中的群集現(xiàn)象。應(yīng)該讓不同的測(cè)試人員參與到測(cè)試工作中。498.5軟件測(cè)試8.5.1軟件測(cè)試概述人們?cè)陂L期進(jìn)行軟件測(cè)試實(shí)踐中,不斷地總結(jié)出一些軟件測(cè)試的經(jīng)驗(yàn)或原則,可供我們參考:避免由程序的編寫者測(cè)試自己的程序。開發(fā)人員和測(cè)試人員不能是同一批人。盡早并不斷地進(jìn)行測(cè)試,所有測(cè)試都應(yīng)追溯到用戶需求。在測(cè)試之前制定測(cè)試計(jì)劃并嚴(yán)格執(zhí)行。妥善保存測(cè)試計(jì)劃、測(cè)試用例、出錯(cuò)統(tǒng)計(jì)和最終測(cè)試報(bào)告,為后期維護(hù)提供方便。508.5軟件測(cè)試8.5.2軟件測(cè)試方法軟件測(cè)試有多種方法,按照?qǐng)?zhí)行測(cè)試時(shí)是否需要運(yùn)行程序,軟件測(cè)試可以劃分為靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試。靜態(tài)測(cè)試以人工測(cè)試為主,通過測(cè)試人員認(rèn)真閱讀文檔和代碼,仔細(xì)分析其正確性、一致性及邏輯結(jié)構(gòu),找出軟件產(chǎn)品中的錯(cuò)誤或缺陷。靜態(tài)測(cè)試對(duì)自動(dòng)化工具的依賴性較小,主要通過人工進(jìn)行分析,通過人腦的思考和邏輯判斷來查找錯(cuò)誤,因而可以更好地發(fā)揮人的主觀能動(dòng)性。518.5軟件測(cè)試8.5.2軟件測(cè)試方法軟件測(cè)試有多種方法,按照?qǐng)?zhí)行測(cè)試時(shí)是否需要運(yùn)行程序,軟件測(cè)試可以劃分為靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試。動(dòng)態(tài)測(cè)試需要通過實(shí)際運(yùn)行被測(cè)程序來發(fā)現(xiàn)問題。測(cè)試人員可以輸入一系列的測(cè)試用例,通過觀察測(cè)試用例的輸出結(jié)果是否與預(yù)期相符來檢驗(yàn)系統(tǒng)內(nèi)潛在的問題。動(dòng)態(tài)測(cè)試關(guān)鍵是設(shè)計(jì)高效、合理的測(cè)試用例。測(cè)試用例就是為了測(cè)試設(shè)計(jì)的數(shù)據(jù),由測(cè)試輸入數(shù)據(jù)和預(yù)期的輸出結(jié)果兩部分組成。528.5軟件測(cè)試8.5.2軟件測(cè)試方法
53例如對(duì)某段程序“加法”功能進(jìn)行動(dòng)態(tài)測(cè)試,可設(shè)計(jì)測(cè)試用例如下表8.5所示:8.5軟件測(cè)試8.5.2軟件測(cè)試方法
按照是否查看源代碼,軟件測(cè)試可以劃分為黑盒測(cè)試和白盒測(cè)試。1.黑盒測(cè)試黑盒測(cè)試又稱功能測(cè)試,著重測(cè)試軟件的功能。在黑盒測(cè)試?yán)?,測(cè)試人員把被測(cè)試的軟件系統(tǒng)看成是一個(gè)不能打開的黑盒子,測(cè)試人員并不關(guān)心盒子的內(nèi)部結(jié)構(gòu)和內(nèi)部特性,只關(guān)注軟件產(chǎn)品的輸入數(shù)據(jù)和輸出結(jié)果,從而檢查軟件產(chǎn)品是否符合規(guī)格說明書中的功能要求。常用的黑盒測(cè)試方法和技術(shù)包括等價(jià)類劃分法、邊界值分析法、錯(cuò)誤推測(cè)法、因果圖法等。
548.5軟件測(cè)試8.5.2軟件測(cè)試方法等價(jià)類劃分法
因?yàn)楦F舉測(cè)試的不可實(shí)現(xiàn),等價(jià)類劃分是把程序的輸入域劃分為若干子集,然后從每個(gè)子集中選取少數(shù)具有代表性的數(shù)據(jù)用作測(cè)試用例,所選取的輸入數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤和子集里其他數(shù)據(jù)都是等效的,測(cè)試某個(gè)等價(jià)類的代表值就等價(jià)于對(duì)該等價(jià)類的其他值的測(cè)試。
558.5軟件測(cè)試8.5.2軟件測(cè)試方法等價(jià)類劃分法步驟:①對(duì)每個(gè)輸入條件進(jìn)行等價(jià)類劃分,畫出等價(jià)類表,并在表中為每個(gè)等價(jià)類進(jìn)行唯一的編號(hào)。以下是等價(jià)類劃分的幾項(xiàng)依據(jù):按照區(qū)間劃分。如果輸入條件規(guī)定了取值范圍或值的數(shù)量,則可確定一個(gè)有效等價(jià)類和兩個(gè)無效等價(jià)類。例如,如果輸入為“月份”,則1—12為一個(gè)有效等價(jià)類;小于1、大于12為兩個(gè)無效等價(jià)類。568.5軟件測(cè)試8.5.2軟件測(cè)試方法按照數(shù)值集合劃分。
如果輸入條件規(guī)定了輸入值的集合,則可確定一個(gè)有效等價(jià)類和一個(gè)無效等價(jià)類。例如,輸入值是“首字符是字母”,那么有效等價(jià)類是首字符是字母的數(shù)據(jù);無效等價(jià)類是首字符是非字母的數(shù)據(jù)。按照數(shù)值劃分。
如果輸入條件是一組值,且程序?qū)Σ煌闹涤胁煌奶幚矸绞?,則每個(gè)允許的輸入值對(duì)應(yīng)一個(gè)有效等價(jià)類,所有不允許的輸入值的集合為一個(gè)無效等價(jià)類。例如,輸入條件“職稱”的值是初級(jí)、中級(jí)或高級(jí),那么有效等價(jià)類應(yīng)該有三個(gè),即初級(jí)、中級(jí)、高級(jí);無效等價(jià)類有一個(gè),即除了這三個(gè)之外其他任何職稱。578.5軟件測(cè)試8.5.2軟件測(cè)試方法按照限制條件或者規(guī)則劃分。
如果規(guī)定了輸入數(shù)據(jù)必須遵循的規(guī)則,則可以劃分出一個(gè)有效的等價(jià)類(符合規(guī)則)和若干個(gè)無效的等價(jià)類(從不同的角度違反規(guī)則)。細(xì)分等價(jià)類。
已劃分等價(jià)類中各元素在程序中處理方式不同,可將等價(jià)類進(jìn)一步劃分更小等價(jià)類。588.5軟件測(cè)試8.5.2軟件測(cè)試方法59表8.6等價(jià)類表8.5軟件測(cè)試8.5.2軟件測(cè)試方法②設(shè)計(jì)測(cè)試用例。設(shè)計(jì)一個(gè)測(cè)試用例,使其盡可能多地覆蓋有效等價(jià)類。為每一個(gè)無效等價(jià)類設(shè)計(jì)一個(gè)測(cè)試用例,直到所有無效等價(jià)類都被覆蓋為止,在設(shè)計(jì)某個(gè)無效等價(jià)類的用例時(shí)盡量保證其他輸入條件有效。生成的測(cè)試用例可填入下表8.7:608.5軟件測(cè)試8.5.2軟件測(cè)試方法邊界值分析法人們從長期的測(cè)試工作經(jīng)驗(yàn)中得知,大量的錯(cuò)誤往往發(fā)生在輸入和輸出范圍的邊界上,而不是范圍的內(nèi)部。因此,針對(duì)邊界情況設(shè)計(jì)測(cè)試用例,能夠更有效的發(fā)現(xiàn)錯(cuò)誤。邊界值分析法是一種補(bǔ)充等價(jià)類劃分法的黑盒測(cè)試方法,它在選擇用例的時(shí)候不是像普通等價(jià)類劃分方法一樣選擇等價(jià)類范圍內(nèi)的任意元素,而是選擇等價(jià)類邊界元素作為測(cè)試用例。618.5軟件測(cè)試8.5.2軟件測(cè)試方法錯(cuò)誤推測(cè)法靠經(jīng)驗(yàn)和直覺推測(cè)程序可能存在錯(cuò)誤,有針對(duì)性編寫檢查這些錯(cuò)誤的測(cè)試用例。錯(cuò)誤推測(cè)法不能單獨(dú)使用,否則主觀性太強(qiáng)不具有科學(xué)依據(jù)。因果圖法等價(jià)類劃分法和邊界值分析法都主要考慮的是輸入條件,而沒有考慮輸入條件的各種組合、各個(gè)輸入條件之間的相互制約關(guān)系以及輸入條件和結(jié)果之間的關(guān)系。因此,因果圖法提供了幾種條件的組合情況以及幾種因果關(guān)系供我們來設(shè)計(jì)測(cè)試用例。628.5軟件測(cè)試8.5.2軟件測(cè)試方法2.白盒測(cè)試與黑盒測(cè)試不同,白盒測(cè)試關(guān)注軟件產(chǎn)品的內(nèi)部細(xì)節(jié)和邏輯結(jié)構(gòu),即把被測(cè)的程序看成是一個(gè)透明的盒子。它根據(jù)源程序內(nèi)部邏輯細(xì)節(jié)來設(shè)計(jì)測(cè)試用例,檢查程序中的邏輯通路是否按預(yù)定的要求正確地工作。白盒測(cè)試包括邏輯覆蓋測(cè)試和基本路徑測(cè)試等方法。638.5軟件測(cè)試8.5.2軟件測(cè)試方法邏輯覆蓋法邏輯覆蓋法以程序內(nèi)在的邏輯結(jié)構(gòu)為基礎(chǔ)設(shè)計(jì)測(cè)試用例。測(cè)試數(shù)據(jù)在程序執(zhí)行過程中覆蓋不同的分支和路徑,根據(jù)覆蓋的目標(biāo)不同和覆蓋語句的詳盡程度可以分為不同的等級(jí),分別是語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋和條件組合覆蓋等。下面有一段用偽代碼編寫的程序:1.if(A>2andB<0)then2.X=X+13.endif648.5軟件測(cè)試8.5.2軟件測(cè)試方法對(duì)該程序使用邏輯覆蓋法設(shè)計(jì)測(cè)試用例過程如下。用例格式為:【輸入(A,B,X),預(yù)期輸出(A,B,X)】語句覆蓋。語句覆蓋是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得每一個(gè)可執(zhí)行語句至少執(zhí)行一次。上方程序中可執(zhí)行語句是:X=X+1。
可設(shè)計(jì)測(cè)試用例:【(3,-1,0),(3,-1,1)】判定覆蓋。就是設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的取真分支和取假分支至少經(jīng)歷一次。上方程序中只有一個(gè)判斷:A>2andB<0。
可設(shè)計(jì)測(cè)試用例:取真分支【(3,-1,0),(3,-1,1)】
取假分支【(2,1,0),(2,1,0)】658.5軟件測(cè)試8.5.2軟件測(cè)試方法對(duì)該程序使用邏輯覆蓋法設(shè)計(jì)測(cè)試用例過程如下。用例格式為:【輸入(A,B,X),預(yù)期輸出(A,B,X)】條件覆蓋。設(shè)計(jì)若干個(gè)測(cè)試用例,運(yùn)行被測(cè)程序,使得程序中每個(gè)判斷的每個(gè)條件的可能取值至少執(zhí)行一次。上方程序中一個(gè)判斷有兩個(gè)條件分別是:A>2和B<0。
可設(shè)計(jì)測(cè)試用例:條件取真真【(3,-1,0),(3,-1,1)】條件取假假【(2,1,0),(2,1,0)】判定/條件覆蓋。要同時(shí)滿足判定覆蓋又要滿足條件覆蓋的要求。
可設(shè)計(jì)測(cè)試用例:【(3,-1,0),(3,-1,1)】【(2,1,0),(2,1,0)】668.5軟件測(cè)試8.5.2軟件測(cè)試方法對(duì)該程序使用邏輯覆蓋法設(shè)計(jì)測(cè)試用例過程如下。用例格式為:【輸入(A,B,X),預(yù)期輸出(A,B,X)】條件組合覆蓋。設(shè)計(jì)足夠的測(cè)試用例,運(yùn)行被測(cè)程序,使得每個(gè)判斷的所有可能的條件取值組合至少執(zhí)行一次。上方程序中一個(gè)判斷有四種條件組合分別是:
真真A>2,B<0、真假A>2,B≥0、假真A≤2,B<0、假假A≤2,B≥0。
設(shè)計(jì)測(cè)試用例:
條件組合取真真【(3,-1,0),(3,-1,1)】條件組合取假假【(2,1,0),(2,1,0)】
條件組合取假真【(1,-1,0),(1,-1,0)】條件組合取真假【(3,1,0),(3,1,0)】678.5軟件測(cè)試8.5.2軟件測(cè)試方法基本路徑法基本路徑測(cè)試法是在程序控制流圖的基礎(chǔ)上,通過分析控制構(gòu)造的環(huán)路復(fù)雜性,然后導(dǎo)出基本可執(zhí)行的路徑集合,從而設(shè)計(jì)測(cè)試用例的方法。白盒測(cè)試和黑盒測(cè)試各有側(cè)重點(diǎn),不能相互取代。在實(shí)際測(cè)試活動(dòng)中,這兩種測(cè)試方法是相互配合的,通常在白盒測(cè)試中交叉著黑盒測(cè)試,黑盒測(cè)試中交叉著白盒測(cè)試。688.5軟件測(cè)試8.5.3軟件測(cè)試步驟69在軟件工程環(huán)境中的測(cè)試過程,實(shí)際上是順序進(jìn)行的五個(gè)步驟的序列:單元測(cè)試、集成測(cè)試、確認(rèn)測(cè)試、系統(tǒng)測(cè)試和驗(yàn)收測(cè)試。圖8.10軟件測(cè)試步驟8.5軟件測(cè)試8.5.3軟件測(cè)試步驟單元測(cè)試單元測(cè)試也稱模塊測(cè)試,模塊是軟件設(shè)計(jì)的最小單位,單元測(cè)試是對(duì)模塊進(jìn)行正確性的檢驗(yàn),以期盡早發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種錯(cuò)誤。該測(cè)試以詳細(xì)設(shè)計(jì)文檔為指導(dǎo),同時(shí)會(huì)根據(jù)源代碼清單來進(jìn)行測(cè)試,測(cè)試模塊內(nèi)的重要控制路徑。每個(gè)單元測(cè)試能夠檢查模塊是否正確實(shí)現(xiàn)每個(gè)程序規(guī)定的功能。單元測(cè)試可以采用靜態(tài)測(cè)試或者動(dòng)態(tài)測(cè)試。動(dòng)態(tài)測(cè)試通常以白盒測(cè)試法為主,測(cè)試其結(jié)構(gòu),并以黑盒測(cè)試法為輔,測(cè)試其功能。708.5軟件測(cè)試8.5.3軟件測(cè)試步驟集成測(cè)試集成測(cè)試也稱組裝測(cè)試,它是對(duì)各模塊按照設(shè)計(jì)要求組裝成的程序進(jìn)行測(cè)試,主要目的是發(fā)現(xiàn)與接口有關(guān)的錯(cuò)誤。模塊單個(gè)是好的,那么組裝在一起是不是會(huì)出現(xiàn)問題,接口會(huì)不會(huì)有錯(cuò)誤,信息是不是連接不通等情況。集成測(cè)試主要發(fā)現(xiàn)設(shè)計(jì)階段產(chǎn)生的錯(cuò)誤,通常依據(jù)概要設(shè)計(jì)說明書,采用黑盒測(cè)試方法進(jìn)行測(cè)試。718.5軟件測(cè)試8.5.3軟件測(cè)試步驟集成測(cè)試集成方法有兩種:一種方法是非增量集成;另外一種方法是增量集成。按照實(shí)
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023六年級(jí)數(shù)學(xué)下冊(cè) 第4單元 比例 3比例的應(yīng)用第1課時(shí) 比例尺(1)教學(xué)實(shí)錄 新人教版
- 五年級(jí)品德與社會(huì)上冊(cè) 真誠對(duì)待他人教學(xué)實(shí)錄 泰山版
- 浙教版七年級(jí)數(shù)學(xué)上冊(cè)教學(xué)工作計(jì)劃(及進(jìn)度表)
- Unit 3 Amazing animals Part A Lets learn (教學(xué)設(shè)計(jì))-2024-2025學(xué)年人教PEP版(2024)英語三年級(jí)上冊(cè)
- 山東省臨淄區(qū)七年級(jí)政治下冊(cè) 第六單元 走進(jìn)法律 與法同行 生活離不開法教學(xué)實(shí)錄 魯人版五四制
- 35歲全職媽媽可以學(xué)的非遺
- 小學(xué)信息技術(shù)上冊(cè) 第27課 編輯聲音教學(xué)實(shí)錄 蘇科版
- np離子注入光阻變形
- mqtt接收多主題后處理邏輯
- 電氣導(dǎo)軌卡扣拆卸
- 心肺復(fù)蘇術(shù)課件2024新版
- 安全環(huán)保職業(yè)健康法律法規(guī)清單2024年
- (正式版)YBT 6328-2024 冶金工業(yè)建構(gòu)筑物安全運(yùn)維技術(shù)規(guī)范
- 2022年袋鼠數(shù)學(xué)競(jìng)賽真題一二年級(jí)組含答案
- 2024新人教版初中英語單詞表匯總(七-九年級(jí))中考復(fù)習(xí)必背
- 平面直角坐標(biāo)系(打印版)
- (高清版)建筑工程裂縫防治技術(shù)規(guī)程JGJ_T 317-2014
- 手足口病培訓(xùn)課件(ppt)
- VISIO圖標(biāo)大全(完整版)
- 第十一章環(huán)境及理化因素?fù)p傷
- 國家專項(xiàng)計(jì)劃報(bào)考資格申報(bào)表
評(píng)論
0/150
提交評(píng)論