《軟件工程》是計(jì)算機(jī)應(yīng)用專業(yè)(本科)非常重要的一門專業(yè)課,該課程包括筆試和試驗(yàn)兩部分,并且也是課程設(shè)計(jì)的科目之一。學(xué)習(xí) 《軟件工程》,考生不僅需要掌握至少一門程序設(shè)計(jì)語言,還需要對數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫、操作系統(tǒng)等課程有一定的了解,可以說綜合性很強(qiáng)。
從2002年起,《軟件工程》的教材改由北京大學(xué)出版,相應(yīng)的考試命題工作,也改由北京大學(xué)負(fù)責(zé)。
為了廣大考生能更好的學(xué)習(xí)《軟件工程》,我總結(jié)了全書的基礎(chǔ)知識點(diǎn)、歷年考試題型、試驗(yàn)題目于下,希望可以幫助大家完成《軟件工程》的學(xué)習(xí)。
學(xué)習(xí)《軟件工程》必備書籍:
1.教材,《軟件工程》(黑皮),北京大學(xué)出版,2002年,王立福等
2輔導(dǎo),《計(jì)算機(jī)上機(jī)實(shí)驗(yàn)考試應(yīng)試指導(dǎo)》(藍(lán)皮),北京大學(xué)出版,2003年,孫家肅
《軟件工程》筆試分為理論部分和設(shè)計(jì)部分,比例大致相當(dāng),在下面的復(fù)習(xí)大綱中將隨即提到,不再細(xì)分。另外,實(shí)驗(yàn)部分也會(huì)在文中提及,希望讀者注意。
第一章 軟件工程概論
1. 軟件工程的目的:
倡導(dǎo)以工程的原理、原則和方法進(jìn)行軟件開發(fā),以解決當(dāng)時(shí)出現(xiàn)的軟件危機(jī)。
2. 軟件危機(jī):
在計(jì)算機(jī)軟件開發(fā)和維護(hù)過程中所遇到的一系列問題。
3. 軟件及組成:
計(jì)算機(jī)系統(tǒng)中的程序和文檔稱為軟件,程序是計(jì)算機(jī)任務(wù)的處理對象和處理規(guī)則的描述,文檔是為了理解程序所需的闡述性資料。
4. 軟件工程定義:
軟件工程是一類求解軟件的工程,它應(yīng)用計(jì)算機(jī)科學(xué)、數(shù)學(xué)及管理科學(xué)等原理,借鑒傳統(tǒng)工程的原則、方法,創(chuàng)建軟件以達(dá)到提高質(zhì)量、降低成本的目的。其中,計(jì)算機(jī)科學(xué)、數(shù)學(xué)用于構(gòu)造模型與算法,工程科學(xué)用于制定規(guī)范、設(shè)計(jì)范型、評估成本及確定權(quán)衡,管理科學(xué)用于計(jì)劃、資源、質(zhì)量、成本等管理。軟件工程是一門指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的工程學(xué)科。
5. 軟件工程框架及其內(nèi)容:
目標(biāo)、活動(dòng)和原則。軟件工程的目標(biāo)為,生產(chǎn)具有正確性、可用性以及開銷合宜的產(chǎn)品。軟件工程活動(dòng)定義為,生產(chǎn)一個(gè)最終滿足需求且達(dá)到工程目標(biāo)的軟件產(chǎn)品所需要的步驟,主要包括需求、設(shè)計(jì)、實(shí)現(xiàn)、確認(rèn)以及支持等活動(dòng)。軟件工程設(shè)計(jì)原則為,選取適宜的開發(fā)模型,采用合適的設(shè)計(jì)方法,提供高質(zhì)量的工程支持,重視開發(fā)過程的管理。(參考教材教材第2頁圖1.1,更有利于記憶)
6. 軟件工程研究的內(nèi)容:
軟件開發(fā)模型、軟件開發(fā)方法、軟件過程、軟件工具、軟件開發(fā)環(huán)境、計(jì)算機(jī)輔助軟件工程(CASE)、軟件經(jīng)濟(jì)學(xué)等。
7. 軟件開發(fā)方法學(xué)定義:
是一種已定義好的技術(shù)集和符號表示習(xí)慣,來組織軟件開發(fā)的過程,一般表示為一系列步驟,包括結(jié)構(gòu)化方法、面向?qū)ο蠓椒āackson方法等等。
第二章 軟件開發(fā)模型
1. 軟件開發(fā)模型定義:
是軟件開發(fā)全部過程、活動(dòng)和任務(wù)的結(jié)構(gòu)框架。
2. 瀑布模型內(nèi)容及特點(diǎn):
瀑布模型將軟件生存周期的各項(xiàng)活動(dòng)規(guī)定為依固定順序連接的軟干階段工作,是一種線性模型。各階段活動(dòng)為,提出系統(tǒng)需求、提出軟件需求、需求分析、設(shè)計(jì)、編碼、測試和運(yùn)行。每個(gè)開發(fā)階段具有以下特征,從上一階段接受本階段工作的對象作為輸入,對上述輸入實(shí)施本階段的活動(dòng),給出本階段的工作成果作為輸出傳入下一階段,對本階段工作進(jìn)行評審,若本階段工作得到確認(rèn),則繼續(xù)下階段工作,否則返回前一階段甚至更前階段。瀑布模型最為突出的缺點(diǎn)是該模型缺乏靈活性。
3. 演化模型內(nèi)容及特點(diǎn):
演化模型主要針對事先不能完整定義需求的軟件開發(fā),其開發(fā)過程一般是首先開發(fā)核心系統(tǒng),當(dāng)核心系統(tǒng)投入運(yùn)行后,軟件開發(fā)人員根據(jù)用戶的反饋,實(shí)施開發(fā)的迭代過程,每一迭代過 程均由需求、設(shè)計(jì)、編碼、測試、集成等階段組成,直到軟件開發(fā)結(jié)束。演化模型在一定程度上減少了軟件開發(fā)活動(dòng)的盲目性。
4. 螺旋模型內(nèi)容及特點(diǎn):
它是在瀑布模型和演化模型的基礎(chǔ)上,加入兩者所忽略的風(fēng)險(xiǎn)分析所建立的一種軟件開發(fā)模型。沿螺旋模型順時(shí)針方向,依次表達(dá)了四個(gè)方面的活動(dòng),制定
計(jì)劃、風(fēng)險(xiǎn)分析、實(shí)施工程、客戶評估。
5. 噴泉模型內(nèi)容及特點(diǎn):
它體現(xiàn)了軟件創(chuàng)建所固有的迭代和無間隙特征,噴泉模型主要用于支持面向?qū)ο箝_發(fā)過程。
6. 增量模型內(nèi)容:
在設(shè)計(jì)了軟件系統(tǒng)整體體系結(jié)構(gòu)之后,首先完整的開發(fā)系統(tǒng)的一個(gè)初始子集,繼之,根據(jù)這一子集,建造一個(gè)更加精細(xì)的版本,如此不斷的進(jìn)行系統(tǒng)的增量開發(fā)。
7. 瀑布模型、演化模型、螺旋模型之間的聯(lián)系:相同點(diǎn)是這三個(gè)模型都分為多個(gè)階段,而瀑布模型一次完成軟件,演化模型分為多次完成,每次迭代完成軟件的一個(gè)部分,螺旋模型也分為多次完成,每次完成軟件的一個(gè)新原型,并考慮風(fēng)險(xiǎn)分析。
8. 演化模型和增量模型之間的區(qū)別
演化模型首先開發(fā)核心系統(tǒng),每次迭代為系統(tǒng)增加一個(gè)子集,整個(gè)系統(tǒng)是增量開發(fā)和增量提交,增量模型首先完整的開發(fā)系統(tǒng)的一個(gè)初始子集,然后不斷的建造更精細(xì)的版本。
第三章 結(jié)構(gòu)化設(shè)計(jì)
1. 軟件設(shè)計(jì)階段的主要任務(wù)、方法、階段:
需求分析階段的主要任務(wù)是確定系統(tǒng)必須“做什么”,形成軟件的需求規(guī)格說明書,軟件設(shè)計(jì)階段的主要任務(wù)是確定系統(tǒng)“怎么做”,從軟件需求規(guī)格說明書出發(fā),形 成軟件的具體設(shè)計(jì)方案,軟件設(shè)計(jì)可以采用多種方法,如結(jié)構(gòu)化設(shè)計(jì)方法、面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法、面向?qū)ο蟮脑O(shè)計(jì)方法等,結(jié)構(gòu)化軟件設(shè)計(jì)可以分為總體設(shè)計(jì)和詳細(xì)設(shè)計(jì)兩個(gè)階段。
2. 總體設(shè)計(jì)階段的主要任務(wù)及其內(nèi)容:
總體設(shè)計(jì)階段的主要任務(wù)是把系統(tǒng)的功能需求分配給軟件結(jié)構(gòu),形成軟件的模塊結(jié)構(gòu)圖(MSD),在結(jié)構(gòu)圖中矩形表示功能單元,稱為“模塊”,連接上下層模塊的線段表示它們之間的調(diào)用關(guān)系,在總體設(shè)計(jì)階段,每個(gè)模塊還處于黑盒子級,模塊通過外部特征標(biāo)識,名字、輸入、輸出。
3. 總體設(shè)計(jì)的表示形式及其內(nèi)容(層次圖、HIPO圖、結(jié)構(gòu)圖):
層次圖是軟件總體設(shè)計(jì)階段最常使用的表示形式之一,用來描繪軟件的層次結(jié)構(gòu),圖中的每個(gè)方框代表一個(gè)模塊,方框間的連線表示模塊的調(diào)用關(guān)系,層次圖很適合于在自頂向下設(shè)計(jì)軟件的過程中使用;
HIPO圖是由美國IBM公司發(fā)明的“層次圖+輸入/處理/輸出圖”的英文縮寫,HIPO圖實(shí)際上由H圖和IPO圖兩部分組成,H圖就是上面提到的層次圖,為了能使HIPO圖具有可跟蹤性,在H圖里除了最頂層的方框之外,每個(gè)方框都加了編號;
結(jié)構(gòu)圖和層次圖類似,圖中每個(gè)方框代表一個(gè)模塊,方框之間的箭頭(或直線)表示模塊的調(diào)用關(guān)系,在結(jié)構(gòu)圖中通常還用帶注釋的箭頭表示模塊調(diào)用過程中來回傳遞的信息,尾部是空心圓表示傳遞的是數(shù)據(jù),實(shí)心圓表示傳遞的是控制信息。
4. 模塊及其組成:
模塊是執(zhí)行一個(gè)特殊任務(wù)或?qū)崿F(xiàn)一個(gè)特殊的抽象數(shù)據(jù)類型的一組例程和數(shù)據(jù)結(jié)構(gòu),模塊由兩部分組成,接口和實(shí)現(xiàn)模塊功能的執(zhí)行機(jī)制。
5. 面向數(shù)據(jù)流的設(shè)計(jì)方法(綜合應(yīng)用):
面向數(shù)據(jù)流的設(shè)計(jì)方法把數(shù)據(jù)流圖映射成為軟件結(jié)構(gòu),數(shù)據(jù)流圖的類型決定了映射的方法,數(shù)據(jù)流圖可以分為變換型數(shù)據(jù)流圖和事務(wù)型數(shù)據(jù)流圖,具有較明顯的輸入、變換(或稱主加工)和輸出界面的數(shù)據(jù)流圖稱為變換型數(shù)據(jù)流圖,數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理模塊,這個(gè)處理模塊根據(jù)輸入數(shù)據(jù)的類型在若干動(dòng)作序列中選出一個(gè)來執(zhí)行,這類數(shù)據(jù)流圖稱為事務(wù)型數(shù)據(jù)流圖,并且稱這個(gè)模塊為事務(wù)中心,它完成如下任務(wù),接收輸入數(shù)據(jù)、分析數(shù)據(jù)并確定數(shù)據(jù)類型、根據(jù)數(shù)據(jù)類型選取一條活動(dòng)通路。
6. 評價(jià)軟件設(shè)計(jì)質(zhì)量的主要準(zhǔn)則(模塊化、抽象、耦合、內(nèi)聚)及詳細(xì)內(nèi)容:
模塊化是好的軟件設(shè)計(jì)的一個(gè)基本準(zhǔn)則;
抽象就是抽出事務(wù)的本質(zhì)特性而暫時(shí)不考慮它們的細(xì)節(jié),模塊是按照不同的抽象級別安排的,高層抽象模塊向讀者隱藏了功能實(shí)現(xiàn)的細(xì)節(jié),這就是信息隱蔽,模塊之間相互隱藏自身的實(shí)現(xiàn)細(xì)節(jié)對一個(gè)好的設(shè)計(jì)來說是至關(guān)重要的;
耦合是對不同模塊之間相互依賴程度的度量,緊密耦合是指兩個(gè)模塊之間存在著很強(qiáng)的依賴關(guān)系,松散耦合是指兩個(gè)模塊之間存在一些依賴關(guān)系,但他們之間的連接比較弱,無耦合是指模塊之間根本沒有任何連接;
耦合的強(qiáng)度依賴于以下四個(gè)因素,一個(gè)模塊對另一個(gè)模塊的引用,一個(gè)模塊向另一個(gè)模塊傳遞的數(shù)據(jù)量,一個(gè)模塊施加到另一個(gè)模塊的控制的數(shù)量,模塊之間接口的復(fù)雜程度;
從強(qiáng)到弱的幾種常見的耦合類型,內(nèi)容耦合,一個(gè)模塊直接修改或操作另一個(gè)模塊的數(shù)據(jù);公共耦合,兩個(gè)以上的模塊共同引用一個(gè)全局?jǐn)?shù)據(jù)項(xiàng);控制耦合,一個(gè)模塊在界面上傳遞一個(gè)信號控制另一個(gè)模塊,接收信號的模塊的動(dòng)作根據(jù)信號值進(jìn)行調(diào)整,稱為控制耦合;標(biāo)記耦合,若兩個(gè)模塊至少有一個(gè)通過界面?zhèn)鬟f的公共參數(shù)包含內(nèi)部結(jié)構(gòu);數(shù)據(jù)耦合,模塊間通過參數(shù)傳遞基本類型的數(shù)據(jù),數(shù)據(jù)耦合是最簡單的耦合形式,系統(tǒng)中至少必須存在這種類型的耦合;
內(nèi)聚度量的是一個(gè)模塊內(nèi)部各成分之間相互關(guān)聯(lián)的強(qiáng)度,如果一個(gè)模塊的所有成分都直接參與并且對于完成同一功能來說都是最基本的,則該模塊是高內(nèi)聚的;
從低到高的幾種常見的內(nèi)聚類型,偶然內(nèi)聚,一個(gè)模塊的各個(gè)成分之間毫無關(guān)系;邏輯內(nèi)聚,幾個(gè)邏輯上相關(guān)的功能被放在同一模塊中;時(shí)間內(nèi)聚,一個(gè)模塊完成的功能必須在同一時(shí)間內(nèi)執(zhí)行,但這些功能只是因?yàn)闀r(shí)間因素關(guān)聯(lián)在一起;過程內(nèi)聚,一個(gè)模塊內(nèi)部的處理成分是相關(guān)的,而且這些處理必須以特定的次序執(zhí)行;通信內(nèi)聚,一個(gè)模塊的所有成分都操作同一數(shù)據(jù)集或生成同一數(shù)據(jù)集;順序內(nèi)聚,一個(gè)模塊的各個(gè)成分和同一個(gè)功能密切相關(guān),而且一個(gè)成分的輸出作為另一個(gè)的成分;功能內(nèi)聚,最理想的內(nèi)聚是功能內(nèi)聚,模塊的所有成分對于完成單一的功能都是基本的;
內(nèi)聚和耦合是密切相關(guān)的,在進(jìn)行軟件設(shè)計(jì)時(shí),應(yīng)力爭做到強(qiáng)內(nèi)聚、弱耦合。
7. 結(jié)構(gòu)化設(shè)計(jì)的啟發(fā)式規(guī)則:
改進(jìn)軟件結(jié)構(gòu)提高模塊獨(dú)立性,模塊規(guī)模應(yīng)該適中,深度、寬度、扇入和扇出應(yīng)適中,模塊的作用域應(yīng)該在控制域之內(nèi),力爭降低模塊接口的復(fù)雜性,模塊功能應(yīng)該可以預(yù)測;
模塊的作用域定義為受該模塊內(nèi)一個(gè)判定影響的所有模塊的集合,模塊的控制域是這個(gè)模塊本身以及所有直接或間接從屬于它的模塊的集合。
8. 結(jié)構(gòu)化分析與結(jié)構(gòu)化設(shè)計(jì)的區(qū)別:
結(jié)構(gòu)化分析得到數(shù)據(jù)流圖、數(shù)據(jù)字典等,屬于邏輯模型,結(jié)構(gòu)化設(shè)計(jì)得到模塊結(jié)構(gòu)圖,屬于程序模型。
9. 詳細(xì)設(shè)計(jì)階段的目標(biāo)、表現(xiàn)、內(nèi)容:
詳細(xì)設(shè)計(jì)階段的根本目標(biāo)是確定怎樣具體的實(shí)現(xiàn)所要求的系統(tǒng),詳細(xì)設(shè)計(jì)以總體設(shè)計(jì)階段的工作為基礎(chǔ),但又不同于總體設(shè)計(jì),主要表現(xiàn)在,在總體設(shè)計(jì)階段,數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)以比較抽象的方式描述,詳細(xì)設(shè)計(jì)要提供關(guān)于算法的更多細(xì)節(jié);
詳細(xì)設(shè)計(jì)的模塊包含實(shí)現(xiàn)對應(yīng)的總體設(shè)計(jì)的模塊所需要的處理邏輯,主要有,詳細(xì)的算法,數(shù)據(jù)表示和數(shù)據(jù)結(jié)構(gòu),實(shí)施的功能和使用的數(shù)據(jù)之間的關(guān)系。
10.結(jié)構(gòu)化程序的三種基本結(jié)構(gòu),結(jié)構(gòu)化設(shè)計(jì)的目標(biāo):
結(jié)構(gòu)化程序設(shè)計(jì)技術(shù)采用自頂向下逐步求精的設(shè)計(jì)方法和單入口單出口的控制結(jié)構(gòu),并且只包含順序、選擇和循環(huán)三種結(jié)構(gòu),結(jié)構(gòu)化程序設(shè)計(jì)的目標(biāo)之一是使程序的控制流程線性化,即程序的動(dòng)態(tài)執(zhí)行順序符合靜態(tài)書寫結(jié)構(gòu),結(jié)構(gòu)化程序設(shè)計(jì)的觀點(diǎn)是要求設(shè)計(jì)好結(jié)構(gòu)的程序。
11.詳細(xì)設(shè)計(jì)的任務(wù),詳細(xì)設(shè)計(jì)的工具及其內(nèi)容特點(diǎn):
詳細(xì)設(shè)計(jì)的任務(wù)是給出軟件模塊結(jié)構(gòu)中各個(gè)模塊的內(nèi)部過程描述,也就是模塊內(nèi)部的算法設(shè)計(jì),詳細(xì)設(shè)計(jì)的工具可以分為圖形、表格、語言三種,包括程序流程圖、盒圖(N-S圖)、PAD圖、類程序設(shè)計(jì)語言(PDL);
程序流程圖中使用的主要符號包括順序、選擇、循環(huán)結(jié)構(gòu),它的主要缺點(diǎn)如下,程序流程圖本質(zhì)上不是逐步求精的好工具,它誘使程序員過早的考慮程序的控制流程,而不去考慮程序的全局結(jié)構(gòu),程序流程圖中用箭頭代表控制流,因此程序員不受任何約束,可以完全不顧結(jié)構(gòu)程序設(shè)計(jì)的精神,隨意轉(zhuǎn)移控制,程序流程圖不易表示數(shù)據(jù)結(jié)構(gòu);
PAD是問題分析圖的英文縮寫,它用二維樹形結(jié)構(gòu)的圖表示程序的控制流,PAD圖的主要優(yōu)點(diǎn)如下,使用表示結(jié)構(gòu)化控制結(jié)構(gòu)的PAD符號所設(shè)計(jì)出來的程序必然是結(jié)構(gòu)化程序,PAD圖所描述的程序結(jié)構(gòu)十分清晰,用PAD圖表現(xiàn)程序邏輯,易讀、易懂、易記,很容易將PAD圖轉(zhuǎn)換成高級語言源程序,既可用于表示程序邏輯,也可用于描述數(shù)據(jù)結(jié)構(gòu),PAD圖的符號支持自頂向下逐步求精的使用,PAD圖是面向高級程序設(shè)計(jì)語言的;
類程序設(shè)計(jì)語言也稱為偽碼,它是用正文形式表示數(shù)據(jù)結(jié)構(gòu)和處理過程的設(shè)計(jì)工具,PDL具有以下特點(diǎn),關(guān)鍵字的固定語法,提供了結(jié)構(gòu)化控制結(jié)構(gòu)、數(shù)據(jù)說明和模塊化的手段,自然語言的自由語法,用于描述處理過程和判定條件,數(shù)據(jù)說明的手段,既包括簡單的數(shù)據(jù)結(jié)構(gòu),又包括復(fù)雜的數(shù)據(jù)結(jié)構(gòu),模塊定義和調(diào)用的技術(shù),提供各種 接口描述模式;
PDL作為一種設(shè)計(jì)工具有如下一些優(yōu)點(diǎn),可以作為注釋直接插在源程序中間,可以使用普通的正文編輯程序或文字處理系統(tǒng),很方面的完成PDL的書寫和編輯工作,已經(jīng)有自動(dòng)處理程序存在,而且可以自動(dòng)由PDL生成程序代碼,PDL的缺點(diǎn)是不如圖形工具形象直觀,描述復(fù)雜的條件組合與動(dòng)作間的對應(yīng)關(guān)系時(shí),不如判定表或判定樹清晰簡單。
本章設(shè)計(jì)題為DFD到模塊結(jié)構(gòu)圖的轉(zhuǎn)換和詳細(xì)設(shè)計(jì)工具的具體應(yīng)用,為筆試和試驗(yàn)的必考題型,非常重要,請考生參考輔導(dǎo)第256頁(1)~(7)題,務(wù)必每一種題型都熟練掌握。
第四章 面向?qū)ο蠓椒?/strong>
1.基本概念:
(1)對象 在系統(tǒng)分析和系統(tǒng)構(gòu)造中,對象是對客觀世界事務(wù)的一種抽象,是由數(shù)據(jù)(屬性)及其上操作(行為)組成的封裝體。
(2)類 是具有相同結(jié)構(gòu)、行為和關(guān)系的一組對 象的描述。
(3)屬性 每一對象的屬性是一些有著確定值的、用于描述對象狀態(tài)信息的數(shù)據(jù)。
(4)服務(wù) 為了完成某一任務(wù),一個(gè)對象所提供的、并體現(xiàn)其責(zé)任的操作。
(5)消息 一個(gè)對象為實(shí)現(xiàn)其責(zé)任而與其他對象的通信,在面向?qū)ο蠓椒ㄖ校瑢ο笾g只能通過消息進(jìn)行通信。
(6)繼承 表達(dá)類之間相似性的一種機(jī)制,即在已有的類的基礎(chǔ)之上增量構(gòu)造新的類,前者稱為父類(或超類),后者稱為子類,如果子類只從一個(gè)父類繼承,則稱為單繼承,如果子類從一個(gè)以上父類繼承,則稱為多繼承。
(7)操作 是類的實(shí)例被要求執(zhí)行的服務(wù)。
(8)關(guān)聯(lián) 把一組具有相同結(jié)構(gòu)特性、行為特征和語義的鏈的描述稱為關(guān)聯(lián)。
(9)鏈 是對象引用的元組(列表)。
(10)依賴 一個(gè)依賴規(guī)約了兩個(gè)模型元素(或兩個(gè)模型元素集合)之間的一種語義關(guān)系。
(11)狀態(tài) 一個(gè)狀態(tài)是在對象的生命期內(nèi)的一個(gè)條件,或在對象滿足某個(gè)條件,進(jìn)行某個(gè)動(dòng)作或等待某個(gè)事件的期間內(nèi)的一個(gè)交互。
(12)事件 指可以引發(fā)狀態(tài)轉(zhuǎn)換的所發(fā)生的事情。
2.對象的特點(diǎn):
自治性,對象具有一定的獨(dú)立計(jì)算能力,封閉性,對象具有信息隱蔽的能力,通信性,對象具有與其他對象通信的能力。
3.面向?qū)ο蠓椒ㄍY(jié)構(gòu)化方法的比較:
結(jié)構(gòu)化方法強(qiáng)調(diào)過程抽象和模塊化,將現(xiàn)實(shí)世界映射為數(shù)據(jù)流和加工,加工之間通過數(shù)據(jù)流進(jìn)行通信,數(shù)據(jù)作為被動(dòng)的實(shí)體被主動(dòng)地操作所加工,是以過程(或操作)為中心來構(gòu)造系統(tǒng)和設(shè)計(jì)程序的;
面向?qū)ο蠓椒ò咽澜缈闯墒仟?dú)立對象的集合,對象將數(shù)據(jù)和操作封裝在一起,提供有限的接口,其內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)、數(shù)據(jù)結(jié)構(gòu)及對它們的操作是外部不可見的,對象之間通過消息相互通信,面向?qū)ο蠓椒ň哂械睦^承性和封裝性支持軟件復(fù)用,并易于擴(kuò)充,能較好的適應(yīng)復(fù)雜大系統(tǒng)不斷發(fā)展和變化的要求。
4.Coad-Yourdon方法:
該方法認(rèn)為,人類在認(rèn)識和理解現(xiàn)實(shí)世界的過程中,普遍運(yùn)用著下面三個(gè)構(gòu)造法則,區(qū)分對象及其屬性,區(qū)分整體對象及其組成部分,不同對象類的形成及區(qū)分。
5.面向?qū)ο蠓椒ǚ治鲭A段的五個(gè)主要活動(dòng)及其內(nèi)容:
標(biāo)識類及對象、標(biāo)識結(jié)構(gòu)、標(biāo)識主體、定義屬性及實(shí)例連接、定義服務(wù)及消息連接;
兩層矩形符號表示類及對象,內(nèi)層矩形表示類,分為三部分,類名、屬性名、服務(wù)名,外層矩形表示該類的對象;
標(biāo)識的結(jié)構(gòu)有兩種,一般/特殊結(jié)構(gòu)和整體/部分結(jié)構(gòu);
精煉主題可以從問題域和接口復(fù)雜性兩方面入手;
可以從四方面考慮標(biāo)識屬性,原子概念,規(guī)范化,標(biāo)識機(jī)制,保持一個(gè)可導(dǎo)出的屬性。
6.面向?qū)ο笤O(shè)計(jì)(OOD):
OOD分為四部分,問題域部分,保持系統(tǒng)總體結(jié)構(gòu)的穩(wěn)定性,人機(jī)交互部分,任務(wù)管理部分,簡化總體設(shè)計(jì)和編碼,數(shù)據(jù)管理部分,包括數(shù)據(jù)存放方法的設(shè)計(jì)和相應(yīng)服務(wù)的設(shè)計(jì)。
7.三種面向?qū)ο蟮脑O(shè)計(jì)模型(OSA模型):
對象關(guān)系模型、對象行為模型、對象相互作用模型。
8.面向?qū)ο笾刑厥獾年P(guān)系集合:
一般關(guān)系(is a),一個(gè)對象類中的每一對象是另一對象類的一個(gè)對象,聚合關(guān)系(is part of),一個(gè)對象,稱之為聚合,是由一些稱之為成分的對象構(gòu)成的,聯(lián)合關(guān)系(is member of),該關(guān)系用于生成一個(gè)由對象構(gòu)成的集合,并把該集合看作是一個(gè)對象,is member of關(guān)系總是二元關(guān)系;
成員類
是聯(lián)合的子集,對象是成員類的子集,對象是聯(lián)合子集的子集。
9.對象關(guān)系模型圖(ORM),對象行為模型,對象交互模型:
對了構(gòu)造ORM圖,OSA給出了五個(gè)基本概念,對象、關(guān)系、對象類、關(guān)系集合、約束為了構(gòu)造對象行為模型,OSA集中于三個(gè)基本概念,狀態(tài)、觸發(fā)、動(dòng)作,OSA借助于狀態(tài)網(wǎng),描述對象間 的同步交互。
10.統(tǒng)一軟件開發(fā)過程(USDP)及其階段:
USDP是以用況為驅(qū)動(dòng)的、以體系結(jié)構(gòu)為中心的、迭代、增量的過程,分為初始、細(xì)化、構(gòu)造、移交四個(gè)階段。
本章設(shè)計(jì)題為標(biāo)識類、對象,及其屬性與操作等,一般與DFD建模題在一起,考參考輔導(dǎo)
第264頁建模題的第2問,另外,對象標(biāo)識在試驗(yàn)考試中也會(huì)出現(xiàn),希望考生多加練習(xí),重點(diǎn)掌握。
本章的理論比較靈活,需理解的記憶,考試的時(shí)候要做到舉一反三,不能只局限于文字定義。
第五章 軟件測試
1.兩種常用的測試技術(shù):
軟件產(chǎn)品與其他產(chǎn)品不同,其最大的成本是檢驗(yàn)軟件的錯(cuò)誤、修正錯(cuò)誤的成本,以及為了發(fā)現(xiàn)這些錯(cuò)誤所進(jìn)行的設(shè)計(jì)測試程序和運(yùn)行測試程序的成本,兩種常用的測試技術(shù)為,基于“白盒” 的路徑測試技術(shù)和基于“黑盒”的事務(wù)處理流程測試技術(shù),白盒測試技術(shù)依據(jù)的是程序的邏輯結(jié)構(gòu),黑盒測試技術(shù)依據(jù)的是軟件行為的描述。
2.軟件測試及其目標(biāo):
軟件測試可以定義為,按照規(guī)定規(guī)程,發(fā)現(xiàn)軟件錯(cuò)誤的過程,軟件測試有兩個(gè)目標(biāo),一為預(yù)防錯(cuò)誤,二為發(fā)現(xiàn)錯(cuò)誤。
3.軟件測試和軟件調(diào)試的區(qū)別:
測試從一個(gè)側(cè)面證明程序員的“失敗”,而調(diào)試是為了證明程序員的正確,測試以已知條件開始,使用預(yù)先定義的程序,且有預(yù)知的結(jié)果,不可預(yù)見的僅是程序員是否通過測試,調(diào)試一般是以不可知的內(nèi)部條件開始,除統(tǒng)計(jì)性調(diào)試外,結(jié)果是不可預(yù)見的,測試是有計(jì)劃的,并要進(jìn)行測試設(shè)計(jì),而調(diào)試是不受時(shí)間約束的,測試是一個(gè)發(fā)現(xiàn)錯(cuò)誤、改正錯(cuò)誤、重新測試的過程,而調(diào)試是一個(gè)推理過程,測試的執(zhí)行是有規(guī)程的,而調(diào)試的執(zhí)行往往要求程序員進(jìn)行必要推理以至直覺的“飛躍”,測試經(jīng)常是由獨(dú)立的測試組在不了解軟件的條件下完成的,而調(diào)試必須由了解詳細(xì)設(shè)計(jì)的程序員完成,大多數(shù)測試的執(zhí)行和設(shè)計(jì)可由工具支持,而調(diào)試時(shí),程序員能利用的工具主要是調(diào)試器。
4.測試用例:
指的是為了發(fā)現(xiàn)程序中的故障而專門設(shè)計(jì)的一組或多組數(shù)據(jù)。
5.測試過程模型:
環(huán)境模型、對象模型、錯(cuò)誤模型。
6.軟件錯(cuò)誤類別:
結(jié)構(gòu)錯(cuò)誤、數(shù)據(jù)錯(cuò)誤、編程錯(cuò)誤、接口錯(cuò)誤。
7.控制流程圖及組成:
控制流程圖是程序控制結(jié)構(gòu)的圖形表示,其基本元素是過程塊、節(jié)點(diǎn)、判定,控制流程圖與程序流程圖之間的差異是在控制流程圖中,不顯示過程塊的細(xì)節(jié),而在程序流程圖中,著重于過程屬性的描述。
8.路徑測試的基本策略:
路徑測試技術(shù)的三種基本策略為,路徑測試(PX),執(zhí)行所有可能的穿過程序的控制流程路徑,語句測試(P1),至少執(zhí)行程序中所有語句一次,100%語句覆蓋率(C1)的邏輯覆蓋程序最弱,分支測試(P2),至少執(zhí)行程序中每一分支一次(至少每個(gè)判定都獲得一次“真”和“假”),100%分支覆蓋率(C2)比100%語句覆蓋在邏輯上要強(qiáng),條件組合測試,在邏輯上比C1,C2更強(qiáng)。
9.路徑選取的一般規(guī)則:
選取最簡單的、具有一定功能含義的入口/出口路徑,對已選的路徑進(jìn)行演化,選取無循環(huán)的路徑、短路徑、簡單路徑,選取沒有明顯功能含義的路徑。
10.路徑測試的目標(biāo):
執(zhí)行足夠的測試,以確保最小的C1+C2覆蓋率。
11.事務(wù)處理流程圖與控制流程圖的區(qū)別與聯(lián)系:
事務(wù)處理流程圖與控制流程圖的類同點(diǎn)是使用了相同的概念成分,不同之處是事務(wù)流程圖是一種數(shù)據(jù)流程圖,鏈支和過程塊的定義有所差異,另外事務(wù)流程圖的判定節(jié)點(diǎn)可能是一個(gè)復(fù)雜的過程,從而事務(wù)流程圖中的判定只能是“抽象”,第三點(diǎn)不同之處是事務(wù)流程圖中存在“中斷”的作用,中斷可以把一個(gè)過程等價(jià)的變換為具有繁多出口的鏈支,對此也要予以抽象。
12.事務(wù)處理流程測試的步驟:
獲得事務(wù)處理流程圖,瀏覽、復(fù)審,用例設(shè)計(jì)。
13.事務(wù)處理流程測試要解決的問題:
路徑選取、激活、測試設(shè)備、測試數(shù)據(jù)庫。
14.合理的測試序列:
單元測試、集成測試、有效性測試、系統(tǒng)測試。
15.單元測試及其內(nèi)容:
單元測試主要檢驗(yàn)軟件設(shè)計(jì)的最小單位—模塊,單元測試一般采用白盒測試技術(shù),在單元測試期間,通常考慮模塊的四個(gè)特征,模塊接口、局部數(shù)據(jù)結(jié)構(gòu)、“重要的”執(zhí)行路徑、錯(cuò)誤執(zhí)行路徑,單元測試步驟分四部分,首先測試穿過模塊接口的數(shù)據(jù)流,繼之進(jìn)行數(shù)據(jù)結(jié)構(gòu)的測試,還要進(jìn)行執(zhí)行路徑的選擇測試,邊界測試是單元測試中的最后工作,也是最重要的工作。
16.集成測試及其內(nèi)容:
集成測試是軟件組裝的一個(gè)系統(tǒng)化技術(shù),其目標(biāo)是發(fā)現(xiàn)與接口有關(guān)的 錯(cuò)誤,集成測試是以主控模塊為測試驅(qū)動(dòng)模塊,設(shè)計(jì)承接模塊替代其直接的下屬模塊,依據(jù)所選取的測試方式,在組合模塊時(shí)進(jìn)行測試。
17.有效性測試及其手段:
有效性測試的目標(biāo)是發(fā)現(xiàn)軟件實(shí)現(xiàn)的功能與需求規(guī)格說明書不一致的錯(cuò)誤,有效性測試通常采用黑盒測試技術(shù)。
第六章 軟件測試
1.兩種常用的測試技術(shù):
軟件產(chǎn)品與其他產(chǎn)品不同,其最大的成本是檢驗(yàn)軟件的錯(cuò)誤、修正錯(cuò)誤的成本,以及為了發(fā)現(xiàn)這些錯(cuò)誤所進(jìn)行的設(shè)計(jì)測試程序和運(yùn)行測試程序的成本,兩種常用的測試技術(shù)為,基于“白盒”的路徑 測試技術(shù)和基于“黑盒”的事務(wù)處理流程測試技術(shù),白盒測試技術(shù)依據(jù)的是程序的邏輯結(jié)構(gòu),黑盒測試技術(shù)依據(jù)的是軟件行為的描述。
2.軟件測試及其目標(biāo):
軟件測試可以定義為,按照規(guī)定規(guī)程,發(fā)現(xiàn)軟件錯(cuò)誤的過程,軟件測試有兩個(gè)目標(biāo),一為預(yù)防錯(cuò)誤,二為發(fā)現(xiàn)錯(cuò)誤。
3.軟件測試和軟件調(diào)試的區(qū)別:
測試從一個(gè)側(cè)面證明程序員的“失敗”,而調(diào)試是為了證明程序員的正確,測試以已知條件開始,使用預(yù)先定義的程序,且有預(yù)知的結(jié)果,不可預(yù)見的僅是程序員是否通過測試,調(diào)試一般是以不可知的內(nèi)部條件開始,除統(tǒng)計(jì)性調(diào)試外,結(jié)果是不可預(yù)見的,測試是有計(jì)劃的,并要進(jìn)行測試設(shè)計(jì),而調(diào)試是不受時(shí)間約束的,測試是一個(gè)發(fā)現(xiàn)錯(cuò)誤、改正錯(cuò)誤、重新測試的過程,而調(diào)試是一個(gè)推理過程,測試的執(zhí)行是有規(guī)程的,而調(diào)試的執(zhí)行往往要求程序員進(jìn)行必要推理以至直覺的“飛躍”,測試經(jīng)常是由獨(dú)立的測試組在不了解軟件的條件下完成的,而調(diào)試必須由了解詳細(xì)設(shè)計(jì)的程序員完成,大多數(shù)測試的執(zhí)行和設(shè)計(jì)可由工具支持,而調(diào)試時(shí),程序員能利用的工具主要是調(diào)試器。
4.測試用例:
指的是為了發(fā)現(xiàn)程序中的故障而專門設(shè)計(jì)的一組或多組數(shù)據(jù)。
5.測試過程模型:
環(huán)境模型、對象模型、錯(cuò)誤模型。
6.軟件錯(cuò)誤類別:
結(jié)構(gòu)錯(cuò)誤、數(shù)據(jù)錯(cuò)誤、編程錯(cuò)誤、接口錯(cuò)誤。
7.控制流程圖及組成:
控制流程圖是程序控制結(jié)構(gòu)的圖形表示,其基本元素是過程塊、節(jié)點(diǎn)、判定,控制流程圖與程序流程圖之間的差異是在控制流程圖中,不顯示過程塊的細(xì)節(jié),而在程序流程圖中,著重于過程屬性的描述。
8.路徑測試的基本策略:
路徑測試技術(shù)的三種基本策略為,路徑測試(PX),執(zhí)行所有可能的穿過程序的控制流程路徑,語句測試(P1),至少執(zhí)行程序中所有語句一次,100%語句覆蓋率(C1)的邏輯覆蓋程序最弱,分支測試(P2),至少執(zhí)行程序中每一分支一次(至少每個(gè)判定都獲得一次“真”和“假”),100%分支覆蓋率(C2)比100%語句覆蓋在邏輯上要強(qiáng),條件組合測試,在邏輯上比C1,C2更強(qiáng)。
9.路徑選取的一般規(guī)則:
選取最簡單的、具有一定功能含義的入口/出口路徑,對已選的路徑進(jìn)行演化,選取無循環(huán)的路徑、短路徑、簡單路徑,選取沒有明顯功能含義的路徑。
10.路徑測試的目標(biāo):
執(zhí)行足夠的測試,以確保最小的C1+C2覆蓋率。
11.事務(wù)處理流程圖與控制流程圖的區(qū)別與聯(lián)系:
事務(wù)處理流程圖與控制流程圖的類同點(diǎn)是使用了相同的概念成分,不同之處是事務(wù)流程圖是一種數(shù)據(jù)流程圖,鏈支和過程塊的定義有所差異,另外事務(wù)流程圖的判定節(jié)點(diǎn)可能是一個(gè)復(fù)雜的過程,從而事務(wù)流程圖中的判定只能是“抽象”,第三點(diǎn)不同之處是事務(wù)流程圖中存在“中斷”的作用,中斷可以把一個(gè)過程等價(jià)的變換為具有繁多出口的鏈支,對此也要予以抽象。
12.事務(wù)處理流程測試的步驟:
獲得事務(wù)處理流程圖,瀏覽、復(fù)審,用例設(shè)計(jì)。
13.事務(wù)處理流程測試要解決的問題:
路徑選取、激活、測試設(shè)備、測試數(shù)據(jù)庫。
14.合理的測試序列:
單元測試、集成測試、有效性測試、系統(tǒng)測試。
15.單元測試及其內(nèi)容:
單元測試主要檢驗(yàn)軟件設(shè)計(jì)的最小單位—模塊,單元測試一般采用白盒測試技術(shù),在單元測試期間,通常考慮模塊的四個(gè)特征,模塊接口、局部數(shù)據(jù)結(jié)構(gòu)、“重要的”執(zhí)行路徑、錯(cuò)誤執(zhí)行路徑,單元測試步驟分四部分,首先測試穿過模塊接口的數(shù)據(jù)流,繼之進(jìn)行數(shù)據(jù)結(jié)構(gòu)的測試,還要進(jìn)行執(zhí)行路徑的選擇測試,邊界測試是單元測試中的最后工作,也是最重要的工作。
16.集成測試及其內(nèi)容:
集成測試是軟件組裝的一個(gè)系統(tǒng)化技術(shù),其目標(biāo)是發(fā)現(xiàn)與接口有關(guān)的錯(cuò)誤, 集成測試是以主控模塊為測試驅(qū)動(dòng)模塊,設(shè)計(jì)承接模塊替代其直接的下屬模塊,依據(jù)所選取的測試方式,在組合模塊時(shí)進(jìn)行測試。
17.有效性測試及其手段:
有效性測試的目標(biāo)是發(fā)現(xiàn)軟件實(shí)現(xiàn)的功能與需求規(guī)格說明書不一致的錯(cuò)誤,有效性測試通常采用黑盒測試技術(shù)。
聲明:
(一)由于考試政策等各方面情況的不斷調(diào)整與變化,本網(wǎng)站所提供的考試信息僅供參考,請以權(quán)威部門公布的正式信息為準(zhǔn)。
(二)本網(wǎng)站在文章內(nèi)容來源出處標(biāo)注為其他平臺的稿件均為轉(zhuǎn)載稿,免費(fèi)轉(zhuǎn)載出于非商業(yè)性學(xué)習(xí)目的,版權(quán)歸原作者所有。如您對內(nèi)容、版權(quán)等問題存在異議請與本站聯(lián)系,我們會(huì)及時(shí)進(jìn)行處理解決。
相關(guān)推薦
2023年4月浙江自考中國文化概論復(fù)習(xí)筆記:中國傳統(tǒng)的藝術(shù)審美
12-102023年4月浙江自考俄羅斯小說文體論復(fù)習(xí)資料七
11-26自考輔導(dǎo)資料:2019年10月《美學(xué)》知識點(diǎn)-美育的內(nèi)涵
09-20自考輔導(dǎo)資料:2019年10月《美學(xué)》知識點(diǎn)-審美經(jīng)驗(yàn)理論的歷史回顧
09-182023年4月浙江自考《管理系統(tǒng)中計(jì)算機(jī)應(yīng)用》串講資料四
03-14自考輔導(dǎo)資料:2019年10月《中國現(xiàn)代文學(xué)史》-30年代文學(xué)小說創(chuàng)作
09-242022年浙江自考心理實(shí)驗(yàn)設(shè)計(jì)串講資料第三章
10-20自考輔導(dǎo)資料:2019年10月《美學(xué)》知識點(diǎn)-審美發(fā)生的特殊標(biāo)志
09-162023年4月浙江自考中國文化概論復(fù)習(xí)筆記:語言文字及其文化特征
12-102023年4月浙江自考學(xué)前教育史復(fù)習(xí)筆記:抗日戰(zhàn)爭和解放戰(zhàn)爭時(shí)期
12-06
掃一掃加關(guān)注微信公眾號
與考生自由互動(dòng)、并且能直接與專業(yè)老師進(jìn)行交流解答。
掃一掃加入微信交流群
與考生自由互動(dòng)、并且能直接與專業(yè)老師進(jìn)行交流解答。