《软件工程导论》复习知识点总结
????????????????????????? ?????????????????軟件工程導(dǎo)論
第一章??軟件工程學(xué)概述
1.?????軟件工程的7條基本原理:
用分階段的生命周期計(jì)劃嚴(yán)格管理;堅(jiān)持進(jìn)行階段評(píng)審;實(shí)行嚴(yán)格的產(chǎn)品控制;采用現(xiàn)代程序設(shè)計(jì)技術(shù);結(jié)果應(yīng)能清楚的審查;開發(fā)小組的人應(yīng)該少而精;承認(rèn)不斷改進(jìn)軟件工程實(shí)踐的必要性。
2.?????軟件工程方法學(xué)包括:
方法,工具和過(guò)程。傳統(tǒng)方法學(xué)也稱為生命周期方法學(xué)或者結(jié)構(gòu)化規(guī)范。它采用結(jié)構(gòu)化技術(shù)(結(jié)構(gòu)化分析,結(jié)構(gòu)化設(shè)計(jì)和結(jié)構(gòu)化實(shí)現(xiàn))來(lái)完成軟件開發(fā)的各項(xiàng)任務(wù),并使用適當(dāng)?shù)能浖こ坦ぞ邅?lái)支持結(jié)構(gòu)化技術(shù)的應(yīng)用。
3.?????軟件生命周期:
三個(gè)周期,八個(gè)階段。三個(gè)周期:軟件定義,軟件開發(fā),和運(yùn)行維護(hù)。八個(gè)階段:1問(wèn)題定義2可行性研究
3需求分析 4總體設(shè)計(jì) 5詳細(xì)設(shè)計(jì) 6編碼和單元測(cè)試7綜合測(cè)試 8軟件維護(hù)
4.?????軟件過(guò)程:
1瀑布模型 2快速原型模型 3增量模型 4螺旋模型5噴泉模型 6Rational統(tǒng)一過(guò)程 7敏捷過(guò)程與極限編程
8微軟過(guò)程
?
第二章??可行性研究
5.?????數(shù)據(jù)流圖:
數(shù)據(jù)流圖是一種圖形化的技術(shù),它描繪信息流和數(shù)據(jù)從輸入移動(dòng)到輸出的過(guò)程中所經(jīng)受的變換。
數(shù)據(jù)流圖有4種成分:源點(diǎn)或者終點(diǎn),處理,數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)流。
數(shù)據(jù)流圖的基本目的是利用它作為交流信息的工具,作為分析和設(shè)計(jì)的工具。
6.?????數(shù)據(jù)字典:
數(shù)據(jù)字典是關(guān)于數(shù)據(jù)的信息的集合,也就是對(duì)數(shù)據(jù)流圖中所包含的所有元素的定義的集合。包含:1數(shù)據(jù)流,2,數(shù)據(jù)流分量(即數(shù)據(jù)元素),3,數(shù)據(jù)存儲(chǔ),4,處理。
7.?????如何定義數(shù)據(jù)的方法?
答:數(shù)據(jù)字典中的定義就是自頂向下的分解。當(dāng)分解到不需要進(jìn)一步定義,每個(gè)和工程有關(guān)的人也都清楚其含義的元素時(shí),分解也就相應(yīng)的完成。
由數(shù)據(jù)元素組成數(shù)據(jù)的方式只有以下3中基本類型:
1/順序 即以確定次序連接兩個(gè)或者多個(gè)分量。
2/選擇 即從兩個(gè)或者多個(gè)可能的元素中選取一個(gè)。
3/重復(fù) 即把指定的分量重復(fù)零次或者多次。
4/可選 即一個(gè)分量是可有可無(wú)的(重復(fù)零次或者一次)。
8.?????數(shù)據(jù)字典的用途:
1/ 作為分析階段的工具。
2/ 數(shù)據(jù)字典中包含的每個(gè)數(shù)據(jù)元素的控制信息是很有價(jià)值的。
3/ 數(shù)據(jù)字典是開發(fā)數(shù)據(jù)庫(kù)的第一步,是很有價(jià)值的一步。
9.?????成本估計(jì):
代碼行技術(shù) 任務(wù)分解技術(shù) 自動(dòng)估計(jì)成本技術(shù)
成本效益分析方法:1,貨幣的時(shí)間價(jià)值 2投資回收期 3純收入 4投資回收率
第三章??需求分析
10.??分析方法都應(yīng)該遵守以下準(zhǔn)則:
1/ 必須理解并且描述問(wèn)題的信息域,根據(jù)這條準(zhǔn)則建立數(shù)據(jù)模型。
2/ 必須定義軟件應(yīng)該完成的功能,這條準(zhǔn)則要求建議功能模型。
3/ 必須描述作為外部事件結(jié)果的軟件行為,這條準(zhǔn)則要求建立行為模型。
4/ 必須對(duì)描述信息,功能和行為的模型進(jìn)行分解,用層次的方式細(xì)節(jié)。
?
11.??需求分析的任務(wù)有什么?
功能需求 性能需求 可靠性和可用性分析需求?出錯(cuò)處理需求 接口需求 約束 逆向需求 將來(lái)可能提出的要求 ?
12.??與用戶溝通獲取需求的方法:
1,訪談 2,面向數(shù)據(jù)流自頂向下求精 3,簡(jiǎn)易的應(yīng)用規(guī)格說(shuō)明技術(shù) 4,快速建立軟件原則 ?
13.??圖形工具:
層次方框圖 Warnier圖 IPO圖
1?層次方框圖
層次方框圖用樹形結(jié)構(gòu)的一系列多層次的矩形框描繪數(shù)據(jù)的層次結(jié)構(gòu)。? ??
例如,描繪一家計(jì)算機(jī)公司全部產(chǎn)品的數(shù)據(jù)結(jié)構(gòu)可以用下圖層次方框圖表示。
這家公司的產(chǎn)品由硬件、軟件和服務(wù)3類產(chǎn)品組成,軟件產(chǎn)品又分為系統(tǒng)軟件和應(yīng)用軟件,系統(tǒng)軟件又進(jìn)一步分為操作系統(tǒng)、編譯程序和軟件工具等。
?
?
?
?
?
?
?
?
?
?
?
?
?
2 warnier圖
和層次方框圖類似,Warnier圖也用樹形結(jié)構(gòu)描繪信息,但是這種圖形工具比層次方框圖提供了更豐富的描繪手段。
用Warnier圖可以表明信息的邏輯組織,也就是說(shuō),它可以指出一類信息或一個(gè)信息元素是重復(fù)出現(xiàn)的,也可以表示特定信息在某一類信息中是有條件地出現(xiàn)的。
?
?
?
?
?
?
?
?
?
?
?
3 IPO圖
IPO圖是輸入、處理、輸出圖的簡(jiǎn)稱,它是由美國(guó)IBM公司發(fā)展完善起來(lái)的一種圖形工具,能夠方便地描繪輸入數(shù)據(jù)、對(duì)數(shù)據(jù)的處理和輸出數(shù)據(jù)之間的關(guān)系。
14.??內(nèi)聚和耦合:
耦合:是對(duì)一個(gè)軟件結(jié)構(gòu)內(nèi)各個(gè)模塊之間相互依賴程度的度量;耦合的強(qiáng)弱取決于模塊間接口的復(fù)雜程度、進(jìn)入或訪問(wèn)一個(gè)模塊的點(diǎn)以及通過(guò)接口的數(shù)據(jù)。
內(nèi)聚:則標(biāo)志一個(gè)模塊內(nèi)各個(gè)元素彼此結(jié)合的緊密程度;內(nèi)聚從功能角度衡量模塊內(nèi)的聯(lián)系,好的內(nèi)聚模塊應(yīng)當(dāng)恰好做一件事。
需求的原則是:強(qiáng)內(nèi)聚,弱耦合。然而在實(shí)際需求過(guò)程中,往往會(huì)因?yàn)榧夹g(shù)驅(qū)動(dòng),導(dǎo)致需求間耦合很緊,不利于后期有效地迭代開發(fā)。有效的解決辦法是按流程、和業(yè)務(wù)梳理需求。
1.首先,我們來(lái)明確什么是模塊
模塊是一系列語(yǔ)句組成的,由標(biāo)識(shí)符組成的邊界元素來(lái)界定的。比如面向?qū)ο笳Z(yǔ)言中的一個(gè)類、一個(gè)方法;也如面向過(guò)程中的函數(shù)。
2.內(nèi)聚
所謂的內(nèi)聚是指模塊內(nèi)的交互程度,內(nèi)聚又分為一下幾種
偶然性內(nèi)聚:組件的部件是不相關(guān)的,只是簡(jiǎn)單地綁定成單個(gè)組件。
不足:程序的可讀性和復(fù)用性差
邏輯性內(nèi)聚:把相似的功能(類如輸入,錯(cuò)誤處理)放在一塊,通過(guò)傳遞一個(gè)參數(shù)來(lái)決定是哪一個(gè)功能來(lái)執(zhí)行。
不足:接口可讀性差,代碼復(fù)用性低
時(shí)間性內(nèi)聚:所有的語(yǔ)句在同一時(shí)刻被激活,就像電腦關(guān)機(jī)的時(shí)候,其他所有的程序都要被關(guān)閉。
不足:模塊內(nèi)的關(guān)聯(lián)不高,而與模塊外的關(guān)聯(lián)卻很高,所以在維護(hù)的時(shí)候工作量會(huì) 比較大。
過(guò)程性內(nèi)聚:簡(jiǎn)單地把一系列過(guò)程關(guān)聯(lián)在一起
不足:代碼的復(fù)用性比較差
通信性內(nèi)聚:操作相同的輸入數(shù)據(jù)或者輸出相同的輸出數(shù)據(jù),可能產(chǎn)生多種功能。
不足:代碼的復(fù)用性不高
順序內(nèi)聚:從一個(gè)部分的輸出作為另一部分的輸入。可能包含幾個(gè)功能或部分不同的功能。
不足:代碼的復(fù)用性不高
信息聚合:執(zhí)行多個(gè)功能,每個(gè)函數(shù)都有自己的入口點(diǎn),每個(gè)函數(shù)都有獨(dú)立的代碼,所有的功能都在相同的數(shù)據(jù)結(jié)構(gòu)上執(zhí)行。不同于邏輯銜接,因?yàn)楣δ軟](méi)有交織在一起。
功能內(nèi)聚:每一部分都需要執(zhí)行一個(gè)單一的功能。例如,計(jì)算平方根或排序數(shù)組。通常在其他情況下可重復(fù)使用。維修容易。
以上幾種內(nèi)聚程度由低到高
耦合:耦合是指模塊之間的交互程度
內(nèi)容耦合:如果一個(gè)模塊直接操作操作另外一個(gè)模塊中的內(nèi)容,比如下面的代碼:
public class Product {
public float unitPrice;
……
}
public class Order {
???private Product myProduct=new Product();
???????????myProduct.unitPrice = -100;
???????????????}
???????? }
?
公共耦合:就像一個(gè)類中的全局變量類中的模塊都直接操作這個(gè)全局變量
控制耦合:通過(guò)控制標(biāo)志(作為參數(shù)或變量),一個(gè)模塊控制另一個(gè)模塊的處理步驟的順序。
印記耦合:如果一組模塊通過(guò)參數(shù)表傳遞記錄信息,就是印記耦合。事實(shí)上,這組模塊共享了這個(gè)記錄,它是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),而不是簡(jiǎn)單變量。這要求這些模塊都必須清楚該記錄的結(jié)構(gòu),并按結(jié)構(gòu)要求對(duì)此記錄進(jìn)行操作。在設(shè)計(jì)中應(yīng)盡量避免這種耦合,它使在數(shù)據(jù)結(jié)構(gòu)上的操作復(fù)雜化了
數(shù)據(jù)耦合:如果一個(gè)模塊訪問(wèn)另一個(gè)模塊時(shí),彼此之間是通過(guò)數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量)來(lái)交換輸入、輸出信息的,則稱這種耦合為數(shù)據(jù)耦合。由于限制了只通過(guò)參數(shù)表傳遞數(shù)據(jù),按數(shù)據(jù)耦合開發(fā)的程序界面簡(jiǎn)單、安全可靠。因此,數(shù)據(jù)耦合是松散的耦合,模塊之間的獨(dú)立性比較強(qiáng)。在軟件程序結(jié)構(gòu)中至少必須有這類耦合。
以上所有的耦合度有高到低,越低的耦合越好。
15.??啟發(fā)規(guī)則有哪些?
1/改進(jìn)軟件結(jié)構(gòu)提高模塊兒獨(dú)立性。2/模塊規(guī)模應(yīng)該適中 3/深度,寬度,扇入和扇出都應(yīng)該適當(dāng) 4/模塊兒的作用域應(yīng)該在控制域內(nèi)。 5/力爭(zhēng)降低模塊兒接口的復(fù)雜度 6/設(shè)計(jì)單入口和單出口的模塊兒。 7/模塊兒功能應(yīng)該預(yù)測(cè)。
16.??描繪軟件結(jié)構(gòu)的圖形工具有哪些?
層次圖,HIPO圖 結(jié)構(gòu)圖
?
層次圖和HIPO圖
層次圖用來(lái)描述軟件的層次結(jié)構(gòu)。雖然層次圖的形式和描繪數(shù)據(jù)結(jié)構(gòu)的層次方框圖相同,但是表現(xiàn)的內(nèi)容卻完全不同。層次圖中的一個(gè)矩形框代表一個(gè)模塊,方框間的連線表示調(diào)用關(guān)系而不像層次方框圖那樣表示組成關(guān)系。下圖是層次圖的一個(gè)例子,最頂層的方框代表正文加工系統(tǒng)的主要模塊,它調(diào)用下層模塊完成正文加工的全部功能;第二層的每個(gè)模塊控制完成正文加工的一個(gè)主要功能,例如“編輯”模塊通過(guò)調(diào)用它的下屬模塊可以完成6鐘編輯功能中的任何一種。
層次圖很適合在自頂向下設(shè)計(jì)軟件的過(guò)程中使用。
?
| ? |
| ? |
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
HIPO圖是美國(guó)IBM公司發(fā)明的“層次圖加輸入/處理/輸出圖”的英文縮寫。為了能使HIPO圖具有可追蹤性,在H圖(層次圖)里除了最頂層的方框之外,每個(gè)方框都加了編號(hào)。如下圖:
?
和H圖中每個(gè)方框相對(duì)應(yīng),應(yīng)該有一張IPO圖描繪這個(gè)方框代表的模塊的處理處理過(guò)程。下面再詳細(xì)介紹IPO圖。但是有一點(diǎn)應(yīng)該指出,那就是HIPO圖中的每張IPO圖內(nèi)都應(yīng)該明顯地標(biāo)出它所描述的模塊在H圖中的編號(hào),以便追蹤了解這個(gè)模塊在軟件結(jié)構(gòu)中的位置。
IPO圖是輸入、處理、輸出圖的簡(jiǎn)稱,它是由美國(guó)IBM公司發(fā)展完善起來(lái)的一種圖形工具,能夠方便地描繪輸入數(shù)據(jù),對(duì)數(shù)據(jù)處理和輸出數(shù)據(jù)之間的關(guān)系。
IPO圖使用的基本符號(hào)既少又簡(jiǎn)單,因此很容易學(xué)會(huì)使用這種圖形工具。它的基本形式是在左邊的框中列出有關(guān)的輸入數(shù)據(jù),在中間的方框內(nèi)列出主要的處理,在右邊的框內(nèi)列出產(chǎn)生的輸出數(shù)據(jù)。處理框內(nèi)列出處理的次序暗示了執(zhí)行的順序,但是用這些基本符號(hào)還不足以精確描述執(zhí)行處理的詳細(xì)情況。在IPO圖中還用類似向量符號(hào)的粗大箭頭清楚的指出數(shù)據(jù)通信的情況。下圖是一個(gè)主文件更新的例子,通過(guò)這個(gè)例子不難了解IPO圖的用法。
?
| ? |
| ? |
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
小編建議使用一種改進(jìn)的IPO圖(也成為IPO表),使用圖中包含某些附加的信息,在軟件設(shè)計(jì)過(guò)程中將比原始的IPO圖更有用。下圖是改進(jìn)的IPO圖中包含的附加信息主要有系統(tǒng)名稱、圖的作者、完成的日期、本圖描述的模塊的名字、模塊在層次圖中的編號(hào)、調(diào)用本模塊的模塊清單、本模塊調(diào)用的模塊的清單、注釋以及本模塊使用的局部數(shù)據(jù)元素等。在需求分析階段可以使用IPO圖簡(jiǎn)略地描述系統(tǒng)的主要算法(即數(shù)據(jù)流圖中各個(gè)處理的基本算法)。
?
當(dāng)然,在需求分析階段,IPO圖中的許多附加信息暫時(shí)還不具備,但是在軟件設(shè)計(jì)階段可以進(jìn)一步不充修正這些圖,作為設(shè)計(jì)階段的文檔。這正是在需求分析階段用IPO圖作為描述算法的工具的重要優(yōu)點(diǎn)。
?
17.??面向數(shù)據(jù)流的設(shè)計(jì)方法?
交換流:信息沿輸入通路進(jìn)入系統(tǒng),同時(shí)由外部形勢(shì)變換為內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過(guò)變換中心,經(jīng)加工處理以后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。
事務(wù)流:沿傳入路徑進(jìn)入系統(tǒng),由外部形式變換位內(nèi)部形式后到達(dá)事務(wù)中心,事務(wù)中心根據(jù)數(shù)據(jù)項(xiàng)計(jì)值結(jié)果從若干動(dòng)作路徑中選定一條執(zhí)行。有這樣形狀的成為事務(wù)流。
?
?
?
?
?
?
?
?
?
?
?
?
18.??變換分析
?
?
?
?
變換分析是一系列設(shè)計(jì)步驟的總稱,經(jīng)過(guò)這些步驟把具有交換流特點(diǎn)的數(shù)據(jù)流圖按預(yù)先確定的模式映射成軟件結(jié)構(gòu)。
1.變換流
信息沿輸入通路進(jìn)入系統(tǒng),由外部形式變換成內(nèi)部形式,進(jìn)入系統(tǒng)的信息通過(guò)變換中心,經(jīng)加工處理以
后再沿輸出通路變換成外部形式離開軟件系統(tǒng)。當(dāng)數(shù)據(jù)流圖具有這些特征時(shí),這種信息流就叫作變換流。
2.事務(wù)流
數(shù)據(jù)沿輸入通路到達(dá)一個(gè)處理T,這個(gè)處理根據(jù)輸入數(shù)據(jù)的類型在若干個(gè)動(dòng)作序列中選出一個(gè)來(lái)執(zhí)行。這
類數(shù)據(jù)流應(yīng)該劃為一類特殊的數(shù)據(jù)流,稱為事務(wù)流。圖中的處理T稱為事務(wù)中心,它完成下述任務(wù)。
(1)接收輸入數(shù)據(jù)(輸入數(shù)據(jù)又稱為事務(wù))。
(2) 分析每個(gè)事務(wù)以確定它的類型。
(3) 根據(jù)事務(wù)類型選取一條活動(dòng)通路.
?
3.變換分析
第1步復(fù)查基本系統(tǒng)模型
第2步復(fù)查并精化數(shù)據(jù)流圖。
第3步確定數(shù)據(jù)流圖具有變換特性還是事務(wù)特性。
第4步確定輸入流和輸出流的邊界,從而孤立出變換中心。
第5步完成“第一級(jí)分解
軟件結(jié)構(gòu)代表對(duì)控制的自頂向下的分配,所謂分解就是分配控制的過(guò)程。對(duì)于變換流的情況,數(shù)據(jù)流圖被映射成一個(gè)特殊的軟件結(jié)構(gòu),這個(gè)結(jié)構(gòu)控制輸入、變換和輸出等信息處理過(guò)程。位于軟件結(jié)構(gòu)最頂層的控制模塊Cm協(xié)調(diào)下述從屬的控制功能。輸入信息處理控制模塊Ca,協(xié)調(diào)對(duì)所有輸入數(shù)據(jù)的接收。變換中心控制模塊Ct,管理對(duì)內(nèi)部形式的數(shù)據(jù)的所有操作。輸出信息處理控制模塊Ce,協(xié)調(diào)輸出信息的產(chǎn)生過(guò)程。
第6步完成“第二級(jí)分解”
第二級(jí)分解就是把數(shù)據(jù)流圖中的每個(gè)處理映射成軟件結(jié)構(gòu)中一個(gè)適當(dāng)?shù)哪K。
第7步使用設(shè)計(jì)度量和啟發(fā)式規(guī)則對(duì)第一次分割得到的軟件結(jié)構(gòu)進(jìn)一步精化。
19.??事務(wù)分析:
事務(wù)分析由數(shù)據(jù)流圖到軟件結(jié)構(gòu)的映射方法分為一個(gè)接收分支,一個(gè)發(fā)送分支。
20.??設(shè)計(jì)優(yōu)化:
軟件設(shè)計(jì)人員應(yīng)該致力于開發(fā)能夠滿足所有功能和性能要求,而且按照設(shè)計(jì)原則和啟發(fā)式設(shè)計(jì)規(guī)則衡量是指的接收的軟件。應(yīng)該在設(shè)計(jì)的早期階段盡量對(duì)軟件結(jié)構(gòu)進(jìn)行精化。而且可以導(dǎo)出不同的軟件結(jié)構(gòu),然后對(duì)他們進(jìn)行評(píng)價(jià)和比較,力求得到“最好”的結(jié)果。
21.??順序 選擇 循環(huán)
22.??過(guò)程設(shè)計(jì)的工具有哪些?
程序流程圖 盒圖?PAD圖 判定表 判定樹 過(guò)程設(shè)計(jì)語(yǔ)言
23.??Jackson圖
順序結(jié)構(gòu) 選擇結(jié)構(gòu) 重復(fù)結(jié)構(gòu)
Jackson設(shè)計(jì)方法?
概述?
???? Jackson方法是面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法。?
JSP方法定義了一組以數(shù)據(jù)結(jié)構(gòu)為指導(dǎo)的映射過(guò)程,它根據(jù)輸入、輸出的數(shù)據(jù)結(jié)構(gòu),按一定的規(guī)則映射成軟件的過(guò)程描述,即程序結(jié)構(gòu),而不是軟件的體系結(jié)構(gòu),因此該方法適用于詳細(xì)設(shè)計(jì)階段。
Jackson結(jié)構(gòu)圖?
??? 由于Jackson方法面向數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),所以提供了自己的工具——Jackson結(jié)構(gòu)圖。Jackson指出,無(wú)論數(shù)據(jù)結(jié)構(gòu)還是程序結(jié)構(gòu),都限于三種基本結(jié)構(gòu)及它們的組合,因此,他給出了三種基本結(jié)構(gòu)的表示。?
?? 1. 順序結(jié)構(gòu)?
?? 2. 選擇結(jié)構(gòu)?
?? 3. 重復(fù)結(jié)構(gòu)
?JSP設(shè)計(jì)步驟?
??? JSP方法一般通過(guò)以下五個(gè)步驟來(lái)完成設(shè)計(jì):?
?? (1)分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu),并用Jackson結(jié)構(gòu)圖來(lái)表示這些數(shù)據(jù)結(jié)構(gòu)。?
?? (2)找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對(duì)應(yīng)關(guān)系的數(shù)據(jù)單元。?
?? (3)按一定的規(guī)則由輸入、輸出的數(shù)據(jù)結(jié)構(gòu)導(dǎo)出程序結(jié)構(gòu)。?
?? (4)列出基本操作與條件,并把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。?
?? (5)用偽碼寫出程序。
JACKSON分析方法
面向數(shù)據(jù)流的分析方法
JACKSON方法是一套完成的分析和設(shè)計(jì)方法。Jackson認(rèn)為有三種形式的數(shù)據(jù)結(jié)構(gòu)。、順序、選擇和重復(fù)。三種數(shù)據(jù)結(jié)構(gòu)可以進(jìn)行任意嵌套,組合。形成復(fù)雜的結(jié)構(gòu)體系。JACKSON方法的從目標(biāo)系統(tǒng)的輸入、輸出數(shù)據(jù)結(jié)構(gòu)入手,導(dǎo)出程序框架結(jié)構(gòu),再補(bǔ)充其它細(xì)節(jié),就可得到完整的描述程序結(jié)構(gòu)的JACKSON圖。
我在實(shí)際中,我沒(méi)有完整的使用過(guò)JACKSON方法(實(shí)際上,我也沒(méi)有系統(tǒng)的學(xué)習(xí)過(guò)這種方法)。我只在分析階段,經(jīng)常使用JACKSON圖描述復(fù)雜的要處理的數(shù)據(jù)的邏輯結(jié)構(gòu)。我把這種只把JACKSON方法用來(lái)做分析的方法,稱為JACKSON方法。
JACKSON方法的主要思路,就是:通過(guò)對(duì)要處理的復(fù)雜數(shù)據(jù),繪制JACKSON圖進(jìn)行分析,了解需求。
另外,除了使用JACKSON圖來(lái)完成分析,我還使用過(guò)JACKSON圖,來(lái)描述過(guò)復(fù)雜配置文件的文件結(jié)構(gòu)。因?yàn)镴ACKSON圖關(guān)注與數(shù)據(jù)的邏輯結(jié)構(gòu),而不比關(guān)心數(shù)據(jù)的具體存在形式。用來(lái)設(shè)計(jì)配置文件的格式,挺合適的。
24.??McCabe方法計(jì)算環(huán)形復(fù)雜度
環(huán)形復(fù)雜度定量度量程序的邏輯復(fù)雜度。描繪程序控制流的流圖之后,可以用下述3種方法中的任何一種來(lái)計(jì)算環(huán)形復(fù)雜度。
(1)流圖中的區(qū)域數(shù)等于環(huán)形復(fù)雜度。
(2)流圖G的環(huán)形復(fù)雜度V(G)=E-N+2,其中,E是流圖中邊的條數(shù),N是結(jié)點(diǎn)數(shù)。
(3)流圖G的環(huán)形復(fù)雜度V(G)=P+1,其中,P是流圖中判定結(jié)點(diǎn)的數(shù)目。
25.??軟件測(cè)試的定義目標(biāo):
[1].?? 測(cè)試是為了發(fā)現(xiàn)程序中的錯(cuò)誤而執(zhí)行程序的過(guò)程。
[2].?? 好的測(cè)試方案是極有可能發(fā)現(xiàn)迄今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試方案。
[3].?? 成功的測(cè)試是發(fā)現(xiàn)了至今為止尚未發(fā)現(xiàn)的錯(cuò)誤的測(cè)試。
26.??軟件測(cè)試準(zhǔn)則:
[1].?? 所有的測(cè)試都應(yīng)該追溯到客戶需求。
[2].?? 應(yīng)該在測(cè)試之前就應(yīng)該制定出測(cè)試計(jì)劃。
[3].?? 把Pareto原理應(yīng)用到軟件測(cè)試中。錯(cuò)誤的80%是有程序中的20%的模塊造成的。
[4].?? 應(yīng)該從“小規(guī)模”測(cè)試開始,并逐步進(jìn)行“大規(guī)模”
測(cè)試。
[5]. 請(qǐng)舉測(cè)試是不可能的。
[6]. 為了達(dá)到最佳的測(cè)試效果,應(yīng)該由獨(dú)立的第三方
從事測(cè)試工作。
27.??測(cè)試方法:
靜態(tài)測(cè)試 和 動(dòng)態(tài)測(cè)試 動(dòng)態(tài)測(cè)試又分為黑盒測(cè)試和白盒
測(cè)試。黑盒測(cè)試是功能測(cè)試,不考慮內(nèi)部結(jié)構(gòu)。白盒測(cè)試
是結(jié)構(gòu)測(cè)試,需要考慮內(nèi)部的邏輯結(jié)構(gòu)。
?
?
28.??測(cè)試步驟:
模塊兒測(cè)試(單元測(cè)試) ?子系統(tǒng)測(cè)試 系統(tǒng)測(cè)試驗(yàn)收測(cè)試 平行運(yùn)行
29.??單元測(cè)試:
單元測(cè)試期間著重從下面五個(gè)方面進(jìn)行測(cè)試。1.接口模塊 2. 局部數(shù)據(jù)結(jié)構(gòu) 3.重要的執(zhí)行通路 4.出錯(cuò)處理通路
5 邊界條件
30.??集成測(cè)試:
集成測(cè)試是測(cè)試和組裝軟件的系統(tǒng)化技術(shù)。集成測(cè)試(也叫組裝測(cè)試,聯(lián)合測(cè)試)是單元測(cè)試的邏輯擴(kuò)展。它最簡(jiǎn)單的形式是:把兩個(gè)已經(jīng)測(cè)試過(guò)的單元組合成一個(gè)組件,測(cè)試它們之間的接口。從這一層意義上講,組件是指多個(gè)單元的集成聚合。集成測(cè)試有非漸進(jìn)式測(cè)試和漸進(jìn)式測(cè)試。普遍采用漸進(jìn)式測(cè)試。
31.??回歸測(cè)試:
回歸測(cè)試是指重新執(zhí)行已經(jīng)做過(guò)的測(cè)試的某個(gè)子集,以保證上述這些變化沒(méi)有帶來(lái)非預(yù)期的副作用。
32.??等價(jià)劃分方法:
1.定義
? 是把所有可能的輸入數(shù)據(jù),即程序的輸入域劃分成若干部分(子集),然后從每一個(gè)子集中選取少數(shù)具有代表性的數(shù)據(jù)作為測(cè)試用例。該方法是一種重要的,常用的黑盒測(cè)試用例設(shè)計(jì)方法。??
2.劃分等價(jià)類:
? 等價(jià)類是指某個(gè)輸入域的子集合。在該子集合中,各個(gè)輸入數(shù)據(jù)對(duì)于揭露程序中的錯(cuò)誤都是等效的,并合理地假定:測(cè)試某等價(jià)類的代表值就等于對(duì)這一類其它值的測(cè)試,因此,可以把全部輸入數(shù)據(jù)合理劃分為若干等價(jià)類,在每一個(gè)等價(jià)類中取一個(gè)數(shù)據(jù)作為測(cè)試的輸入條件就可以用少量代表性的測(cè)試數(shù)據(jù)取得較好的測(cè)試結(jié)果。等價(jià)類劃分可有兩種不同的情況:有效等價(jià)類和無(wú)效等價(jià)類。
? 1)有效等價(jià)類
??? 是指對(duì)于程序的規(guī)格說(shuō)明來(lái)說(shuō)是合理的、有意義的輸入數(shù)據(jù)構(gòu)成的集合。利用有效等價(jià)類可檢驗(yàn)程序是否實(shí)現(xiàn)了規(guī)格說(shuō)明中所規(guī)定的功能和性能。
? 2)無(wú)效等價(jià)類
??? 與有效等價(jià)類的定義恰巧相反。無(wú)效等價(jià)類指對(duì)程序的規(guī)格說(shuō)明是不合理的或無(wú)意義的輸入數(shù)據(jù)所構(gòu)成的集合。對(duì)于具體的問(wèn)題,無(wú)效等價(jià)類至少應(yīng)有一個(gè),也可能有多個(gè)。
? 設(shè)計(jì)測(cè)試用例時(shí),要同時(shí)考慮這兩種等價(jià)類。因?yàn)檐浖粌H要能接收合理的數(shù)據(jù),也要能經(jīng)受意外的考驗(yàn),這樣的測(cè)試才能確保軟件具有更高的可靠性。
3.劃分等價(jià)類的標(biāo)準(zhǔn):
? 1)完備測(cè)試、避免冗余;
? 2)劃分等價(jià)類重要的是:集合的劃分,劃分為互不相交的一組子集,而子集的并是整個(gè)集合;
? 3)并是整個(gè)集合:完備性;
? 4)子集互不相交:保證一種形式的無(wú)冗余性;
? 5)同一類中標(biāo)識(shí)(選擇)一個(gè)測(cè)試用例,同一等價(jià)類中,往往處理相同,相同處理映射到"相同的執(zhí)行路徑"。
4.劃分等價(jià)類的方法
? 1)在輸入條件規(guī)定了取值范圍或值的個(gè)數(shù)的情況下,則可以確立一個(gè)有效等價(jià)類和兩個(gè)無(wú)效等價(jià)類。如:輸入值是學(xué)生成績(jī),范圍是0~100;
? 2)在輸入條件規(guī)定了輸入值的集合或者規(guī)定了"必須如何"的條件的情況下,可確立一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類;
? 3)在輸入條件是一個(gè)布爾量的情況下,可確定一個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。
? 4)在規(guī)定了輸入數(shù)據(jù)的一組值(假定n個(gè)),并且程序要對(duì)每一個(gè)輸入值分別處理的情況下,可確立n個(gè)有效等價(jià)類和一個(gè)無(wú)效等價(jià)類。
??? 例:輸入條件說(shuō)明學(xué)歷可為:專科、本科、碩士、博士四種之一,則分別取這四種這四個(gè)值作為四個(gè)有效等價(jià)類,另外把四種學(xué)歷之外的任何學(xué)歷作為無(wú)效等價(jià)類。
? 5)在規(guī)定了輸入數(shù)據(jù)必須遵守的規(guī)則的情況下,可確立一個(gè)有效等價(jià)類(符合規(guī)則)和若干個(gè)無(wú)效等價(jià)類(從不同角度違反規(guī)則);
? 6)在確知已劃分的等價(jià)類中各元素在程序處理中的方式不同的情況下,則應(yīng)再將該等價(jià)類進(jìn)一步的劃分為更小的等價(jià)類。
5.設(shè)計(jì)測(cè)試用例
? 在確立了等價(jià)類后,可建立等價(jià)類表,列出所有劃分出的等價(jià)類輸入條件:有效等價(jià)類、無(wú)效等價(jià)類,然后從劃分出的等價(jià)類中按以下三個(gè)原則設(shè)計(jì)測(cè)試用例:
? 1)為每一個(gè)等價(jià)類規(guī)定一個(gè)唯一的編號(hào);
? 2)設(shè)計(jì)一個(gè)新的測(cè)試用例,使其盡可能多地覆蓋尚未被覆蓋地有效等價(jià)類,重復(fù)這一步,直到所有的有效等價(jià)類都被覆蓋為止;
? 3)設(shè)計(jì)一個(gè)新的測(cè)試用例,使其僅覆蓋一個(gè)尚未被覆蓋的無(wú)效等價(jià)類,重復(fù)這一步,直到所有的無(wú)效等價(jià)類都被覆蓋為止。
33.??決定軟件可維護(hù)性的因素:
可理解性 可測(cè)試性 可修改性 可移植性可重用性
34.??面向?qū)ο蟮乃膫€(gè)要點(diǎn):
(1)面向?qū)ο蟮能浖到y(tǒng)是由對(duì)象組成的,軟件中的任何元素都是對(duì)象,復(fù)雜的軟件對(duì)象由比較簡(jiǎn)單的對(duì)象組合而成。
(2)把所有對(duì)象都劃分成各種對(duì)象類(簡(jiǎn)稱為類,class),每個(gè)對(duì)象類都定義了一組數(shù)據(jù)和一組方法。數(shù)據(jù)用于表示對(duì)象的靜態(tài)屬性,是對(duì)象的狀態(tài)信息。
(3)按照子類(或稱為派生類)與父類(或稱為基類)的關(guān)系,把若干個(gè)對(duì)象類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)(也稱為類等級(jí))。
(4)對(duì)象彼此之間僅能通過(guò)傳遞消息互相聯(lián)系。
UML中常見(jiàn)關(guān)系詳解(泛化、實(shí)現(xiàn)、依賴、關(guān)聯(lián)、組合、聚合)
UML中類與類,已經(jīng)類與接口,接口與接口的關(guān)系有:泛化(generalization),關(guān)聯(lián)(association),依賴(dependency),實(shí)現(xiàn)(realization)這幾種。
?
泛化(generalization)關(guān)系時(shí)指一個(gè)類(子類、子接口)繼承另外一個(gè)類(稱為父類、父接口)的功能,并可以增加它自己新功能的能力,繼承是類與類或者接口與接口最常見(jiàn)的關(guān)系,在Java中通過(guò)關(guān)鍵字extends來(lái)表示。
?
實(shí)現(xiàn)(realization)是指一個(gè)class實(shí)現(xiàn)interface接口(一個(gè)或者多個(gè)),表示類具備了某種能力,實(shí)現(xiàn)是類與接口中最常見(jiàn)的關(guān)系,在Java中通過(guò)implements關(guān)鍵字來(lái)表示。
?
依賴(dependency)關(guān)系也是表示類與類之間的連接,表示一個(gè)類依賴于另外一個(gè)類的定義,依賴關(guān)系時(shí)是單向的。簡(jiǎn)單理解就是類A使用到了類B,這種依賴具有偶然性、臨時(shí)性,是非常弱的關(guān)系。但是類B的變化會(huì)影響到類A。舉個(gè)例子,如某人要過(guò)河,則人與船的關(guān)系就是依賴,人過(guò)河之后,與船的關(guān)系就解除了,因此是一種弱的連接。在代碼層面,為類B作為參數(shù)被類A在某個(gè)方法中使用。
在java中,依賴表現(xiàn)為:局部變量,方法中的參數(shù)和對(duì)靜態(tài)方法的調(diào)用。
?
關(guān)聯(lián)(association)關(guān)系表示類與類之間的連接,它使得一個(gè)類知道另外一個(gè)類的屬性和方法。
關(guān)聯(lián)可以使用單箭頭表示單向關(guān)聯(lián),使用雙箭頭或者不適用箭頭表示雙向關(guān)聯(lián),不建議使用雙向關(guān)聯(lián),關(guān)聯(lián)有兩個(gè)端點(diǎn),每個(gè)端點(diǎn)可以有一個(gè)基數(shù),表示這個(gè)關(guān)聯(lián)的類可以有幾個(gè)實(shí)例。
0..1 表示可以有0個(gè)或者1個(gè)實(shí)例
0..* 表示對(duì)實(shí)例的數(shù)目沒(méi)有限制
1 ? ? 表示只能有一個(gè)實(shí)例
1..* 表示至少有一個(gè)實(shí)例
關(guān)聯(lián)關(guān)系體現(xiàn)的是兩個(gè)類,或者類與接口之間的強(qiáng)依賴關(guān)系,這種關(guān)系很強(qiáng)烈,比依賴更強(qiáng),不是偶然性的,也不是臨時(shí)性的,而是一種長(zhǎng)期性,相對(duì)平等的關(guān)系,表現(xiàn)在代碼層面,為被關(guān)聯(lián)的類B以類屬性的形式出現(xiàn)在類A中,也可能是關(guān)聯(lián)類A引用了被關(guān)聯(lián)類B的全局變量。
在Java中,關(guān)聯(lián)關(guān)系是使用實(shí)例變量來(lái)實(shí)現(xiàn)的
?
聚合(aggregation)是關(guān)聯(lián)關(guān)系的特例,是強(qiáng)的關(guān)聯(lián)關(guān)系,聚合是整個(gè)與個(gè)體的關(guān)系,即has-a關(guān)系,此時(shí)整體和部分是可以分離的,他們具有各自的生命周期,部分可以屬于多個(gè)對(duì)象,也可以被多個(gè)對(duì)象共享;比如計(jì)算機(jī)和CPU,公司與員工的關(guān)系;在代碼層面聚合與關(guān)聯(lián)是一致的,只能從語(yǔ)義上來(lái)區(qū)分。
聚合關(guān)系也是使用實(shí)例變量來(lái)實(shí)現(xiàn)的,在java語(yǔ)法上區(qū)分不出關(guān)聯(lián)和聚合,關(guān)聯(lián)關(guān)系中類出于一個(gè)層次,而聚合則明顯的在兩個(gè)不同的層次。
?
組合(compostion)也是關(guān)聯(lián)關(guān)系的一種特例,體現(xiàn)的是一種contain-a關(guān)系,比聚合更強(qiáng),是一種強(qiáng)聚合關(guān)系。它同樣體現(xiàn)整體與部分的關(guān)系,但此時(shí)整體與部分是不可分的,整體生命周期的結(jié)束也意味著部分生命周期的結(jié)束,反之亦然。如大腦和人類。
體現(xiàn)在代碼層面與關(guān)聯(lián)時(shí)一致的,只能從語(yǔ)義來(lái)區(qū)分。
組合與聚合幾乎完全相同,唯一區(qū)別就是對(duì)于組合,“部分”不同脫離“整體”單獨(dú)存在,其生命周期應(yīng)該是一致的。
?
總結(jié):
主要是關(guān)聯(lián)關(guān)系的細(xì)化需要注意強(qiáng)弱,由若到強(qiáng)分別是依賴 < 關(guān)聯(lián) < 聚合 < 組合
?
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的《软件工程导论》复习知识点总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: A - Character Encodi
- 下一篇: html:web前端开发规范