




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
11軟件工程學概述2可行性研究3需求分析形式化說明技術總體設計6詳細設計7實現8維護9面向對象相關內容10軟件項目管理軟件工程導論復習11軟件工程學概述7實現軟件工程導論復習2第1章軟件工程學概述
1、什么是軟件危機?P12、軟件危機產生的原因有哪些?P33、什么是軟件工程?P54、軟件工程方法學包含哪些要素?P95、在軟件過程中有哪些模型?他們各自的特點是哪些?P15—P222第1章軟件工程學概述1、什么是軟件危機?P13第2章可行性研究
1、可行性研究的目的是什么?P252、應從哪些方面研究可行性?P253、如何畫系統流程圖?P27—P304、如何畫數據流圖?P30—P375、了解數據字典及成本效益分析。3第2章可行性研究1、可行性研究的目的是什么?P254數據流圖(DataFlowDiagram,DFD)是描述系統中數據流程的圖形工具,它標識了一個系統的邏輯輸入和邏輯輸出,以及把邏輯輸入轉換為邏輯輸出所需的加工處理。2.4數據流圖2.4數據流圖(DFD)數據存儲數據源點或終點處理加工名數據流數據流名文件名實體名箭頭圓或橢圓單或雙杠矩形框還有一些輔助的圖例:一、數據流圖的圖符四種基本圖形符號:TAB*CTAB*CTAB+CTAB+CTABC+TABC+*
與
+或互斥+4數據流圖(DataFlowDiagram,DFD)是描52.4數據流圖舉例:儲戶儲戶1記錄存款信息打印存款信息存款單存款信息存款存單3計算利息4打印利息清單存款信息利息值利息清單D1存款信息存款信息252.4數據流圖舉例:儲戶儲戶1記錄存款打印存款存款單存款6細化后的計算機儲蓄系統軟件結構6細化后的計算機儲蓄系統軟件結構7第3章需求分析
1、需求分析的基本任務是什么?P46-P482、分析建模
2.1什么是模型?模型:就是為了理解事物而對事物做出的一種抽象,是對事物的一種無歧義的書面描述。通常,模型由一組圖形符號和組織這些符號的規則組成。
2.2數據模型(E-R)、功能模型(2.4節數據流圖)、行為模型(狀態轉換圖是行為模型的基礎)3、要從哪些方面驗證軟件需求?P607第3章需求分析1、需求分析的基本任務是什么?P468第4章形式化說明技術
軟件工程的使用方法非形式化:用自然語言描述需求規格說明半形式化:用數據流圖或實體—聯系圖建立模型形式化:描述系統性質的基于數學的技術1、有窮狀態機P67—P722、Petri網技術P72—P758第4章形式化說明技術軟件工程的使用方法非形式化:用9第5章總體設計
1、在設計過程中,總體設計一般有哪兩個主要階段組成?P812、什么模塊化?模塊獨立性包含哪些內容?度量準則是什么?P85—P893、啟發規則有哪些?P90—P924、描繪軟件結構的圖形工具P92-P945、面向數據流的設計方法P95—P1029第5章總體設計1、在設計過程中,總體設計一般有哪兩105.2設計原理5.2.1模塊化
模塊是程序對象有名字的集合。例如,過程、函數、子程序、宏等,是構成軟件系統結構的基本元素。
模塊化就是將系統劃分為若干個模塊,每個模塊完成一個子功能。模塊化的目的是將系統“分而治之”,模塊化能夠降低問題的復雜性,使軟件結構清晰,易閱讀、易理解,易于測試和調試,因而也有助于提高軟件的可靠性。105.2設計原理5.2.1模塊化模塊是程序對象有名11模塊化降低軟件復雜度的簡單證明5.2.5模塊獨立5.2.5模塊獨立“模塊”,又稱“構件”,一般指用一個名字可調用的一段程序。它一般具有如下三個基本屬性:⑴功能即指該模塊實現什么功能,做什么事情。必須注意:模塊功能,應是該模塊本身的功能加上它所調用的所有子模塊的功能。⑵邏輯即描述模塊內部怎么做。⑶狀態即該模塊使用時的環境和條件。所謂模塊的獨立性,是指軟件系統中每個模塊只涉及軟件要求的具體的子功能,而和軟件系統中其他模塊的接口是簡單的。即功能專一,模塊之間無過多的相互作用的模塊。這種類型的模塊可以并行開發,模塊獨立性越強,開發越容易。獨立性強的模塊,還能減少錯誤的影響,使模塊容易組合、修改及測試。11模塊化降低軟件復雜度的簡單證明5.2.5模塊獨立5.2125.2.5模塊獨立性模塊獨立性的度量標準是兩個定性準則:
耦合性用于描述模塊之間聯系的緊密程度。
內聚性用于描述模塊內部聯系的緊密程度。模塊獨立性比較強的模塊應該是具有高內聚性和的低耦合度。
125.2.5模塊獨立性模塊獨立性的度量標準是兩個定性準則13圖5.8變換型數據流圖的基本模型
5.5.1概念–
變換流13圖5.8變換型數據流圖的基本模型5.5.1概念14圖事務型數據流圖的基本模型5.5.1概念–
事務流14圖事務型數據流圖的基本模型5.5.1概念–事15變換分析設計:把具有變換流特點的數據流圖按預先確定的模式映射成軟件結構。不具有顯著的事務特點。雖然在任何情況下都可以使用變換分析方法設計軟件結構,但是在數據流具有明顯的事務特點時,也就是有一個明顯的“發射中心”(事務中心)時,還是以采用事務分析方法為宜。兩者的主要差別僅在于由數據流圖到軟件結構的映射方法不同。15變換分析設計:把具有變換流特點的數據流圖按預先確定的模式16第6章詳細設計
1、結構程序設計中有哪幾種基本控制結構?P1082、了解人機界面的設計。3、掌握過程設計的工具(程序流程圖、盒圖、PAD圖,判定樹)P114—P1194、面向數據結構的設計方法(Jackson圖)5、程序復雜度的定量度量(McCabe)16第6章詳細設計1、結構程序設計中有哪幾種基本控制176.1結構程序設計6.1結構程序設計圖6.13種基本的控制結構176.1結構程序設計6.1結構程序設計圖6.1186.1結構程序設計其他常用的控制結構圖6.2其他常用的控制結構186.1結構程序設計其他常用的控制結構圖6.2其196.3.1程序流程圖
程序流程圖是最早出現且使用較為廣泛的算法表達工具之一,能夠有效地描述問題求解過程中的程序邏輯結構。程序流程圖中經常使用的基本符號如圖6.3所示。圖6.3程序流程圖中使用的符號196.3.1程序流程圖程序流程圖是最早20N-S圖又稱為盒圖,它是為了保證結構化程序設計而由Nassi和Shneiderman共同提出的一種圖形工具。在N-S圖中,所有的程序結構均使用矩形框表示,它可以清晰地表達結構中的嵌套及模塊的層次關系。N-S圖中,基本控制結構的表示符號如圖6.4所示。6.3.2N-S圖20N-S圖又稱為盒圖,它是為了保證結構化程序設計而由Nas216.3.2N-S圖圖6.4盒圖的基本符號216.3.2N-S圖圖6.4盒圖的基本符號22圖6.5PAD中基本符號順序結構;(b)分支結構;(c)多分支CASE結構;(d)當型循環;(e);直到型循環;(f)語句標號;(g)定義6.3.3PAD圖22圖6.5PAD中基本符號6.3.3PAD圖236.3.3PAD圖圖6.6使用PAD圖提供的定義功能來逐步求精的例子236.3.3PAD圖圖6.6使用PAD圖提供的定246.4面向數據結構的設計方法6.4面向數據結構的設計方法Jackson方法和Warnier方法是最著名的兩個面向數據結構的設計方法246.4面向數據結構的設計方法6.4面向數據結25Jackson方法是由英國的M.A.Jackson在1975年首先提出的,他同時還提出了與這種方法配套使用的、用于描述系統數據結構和程序結構的圖形工具,被稱為Jackson圖。Jackson方法從目標系統的輸入、輸出數據結構入手,導出程序框架結構,再補充其他細節,就可得到完整的程序結構圖。這一方法對輸入、輸出數據結構明確的中、小型系統特別有效,如商業應用中的文件、表格處理。該方法也可與其他方法結合,用于模塊的詳細設計。6.4面向數據結構的設計方法6.4.1Jackson圖25Jackson方法是由英國的M.A.Jackson在1926圖6.8三種基本結構在Jackson圖中的表示符號(a)順序結構;(b)選擇結構;(c);循環結構6.4.1Jackson圖(a)(c)(b)26圖6.8三種基本結構在Jackson圖中的表示符號6276.4面向數據結構的設計方法6.4.2改進的Jackson圖圖6.9改進的Jackson圖276.4面向數據結構的設計方法6.4.2改進的286.5程序復雜程度的定量度量
定量度量程序復雜程度的方法很有價值:把程序的復雜程度乘以適當常數即可估算出軟件中錯誤的數量以及軟件開發需要用的工作量,定量度量的結果可以用來比較兩個不同的設計或兩個不同算法的優劣;程序的定量的復雜程度可以作為模塊規模的精確限度。286.5程序復雜程度的定量度量定量度量296.5程序復雜程度的定量度量6.5.1McCabe方法McCabe方法根據程序控制流的復雜程度定量度量程序的復雜程度,這樣度量出的結果稱為程序的環形復雜度。為了突出表示程序的控制流,人們通常使用流圖(也稱為程序圖)。所謂流圖實質上是“退化了的”程序流程圖,它僅僅描繪程序的控制流程,完全不表現對數據的具體操作以及分支或循環的具體條件。296.5程序復雜程度的定量度量6.5.1McCa306.5程序復雜程度的定量度量圖6.16把程序流程圖影射成流圖306.5程序復雜程度的定量度量圖6.16把程序流程31
環形復雜度定量度量程序的邏輯復雜度。有了描繪程序控制流的流圖之后,可以用下述3種方法中的任何一種來計算環形復雜度。(1)流圖中的區域數等于環形復雜度。(2)流圖G的環形復雜度V(G)=E-N+2,其中,E是流圖中邊的條數,N是結點數。(3)流圖G的環形復雜度V(G)=P+1,其中,P是流圖中判定結點的數目。6.5.1計算環形復雜度的方法31環形復雜度定量度量程序的邏輯復雜度。有了描繪程序32第7章實現
1、編碼2、測試技術P139—P1693、調試的途徑有哪些?P1684、軟件可靠性和可用性的基本概念P16932第7章實現1、編碼33
編碼:把軟件設計結果翻譯成用某種程序語言書寫的程序。測試:軟件測試的目的是在軟件投入生產性運行前,盡可能多的發現軟件中的錯誤。
實現編碼和測試33編碼:把軟件設計結果翻譯成用某種程序語言書寫的程序。實347.2軟件測試基礎7.2軟件測試基礎
軟件測試:為發現程序中的錯誤而執行程序的過程。軟件測試的準則(盡早和不斷的測試、徹底測試的不可能、軟件測試是有風險的行為、并非所有的軟件錯誤都能恢復、反向思維邏輯、由小到大的測試范圍、避免檢查自己的代碼、追溯至用戶需求)測試方法(黑盒測試和白盒測試)測試步驟(模塊測試、子系統測試、系統測試、驗收測試、平行運行)347.2軟件測試基礎7.2軟件測試基礎軟件測試:為35
測試內容模塊模塊接口測試局部數據結構測試重要路徑測試錯誤處理測試邊界條件測試I/O參數值的個數、類型、次序、格式是否正確,I/O文件屬性、操作是否正確等。數據說明是否正確、一致,變量及其初值定義是否正確等。檢查“錯誤處理程序”本身的錯誤。邊界條件常包括循環邊界,最大最小值、控制流中等于、大于、小于的比較值等。重要路徑通常是指完成模塊功能的主要路徑,一般是控制結構。也稱模塊測試(moduletesting)7.3.1單元測試重點7.3單元測試35測試內容模塊模塊接口測試局部數據結構測試重要路徑測試錯36白盒法又稱為邏輯覆蓋法,其測試用例選擇,是按照不同覆蓋標準確定的。語句覆蓋判定覆蓋條件覆蓋判定條件覆蓋條件組合覆蓋弱強7.6白盒測試技術7.6白盒測試技術36白盒法又稱為邏輯覆蓋法,其測試用例選擇,是按照不同覆蓋標37①語句覆蓋:選擇足夠的測試用例,使得程序中每個語句至少都能被執行一次。②
判定覆蓋:執行足夠的測試用例,使得程序中每個判定至少都獲得一次“真”值和“假”值。③條件覆蓋:執行足夠的測試用例,使得判定中的每個條件獲得各種可能的結果。④
判定/條件覆蓋:執行足夠的測試用例,使得判定中每個條件取到各種可能的值,并使每個判定取到各種可能的結果。⑤
條件組合覆蓋:執行足夠的例子,使得每個判定中條件的各種可能組合都至少出現一次。白盒法常用的覆蓋標準37①語句覆蓋:選擇足夠的測試用例,使得程序中每個語句至38等價分類法邊值分析法錯誤推測法黑盒法
不考慮程序的內部結構與特性,只根據程序功能或程序的外部特性設計測試用例。7.7黑盒測試技術7.7黑盒測試技術38等邊錯黑盒法7.7黑盒測試技術7.7黑盒測試391、等價分類法基本思想:根據程序的I/O特性,將程序的定義域劃分為有限個等價區段—“等價類”,從等價類中選擇出的用例,具有“代表性”。等價類分為:有效等價類
—對于程序的規格說明是合理的、有意義的輸入數據構成的集合。無效等價類
—對于程序的規格說明,是不合理的,是沒有意義的輸入數據構成的集合。391、等價分類法基本思想:根據程序的I/O特性,將程序的定402、邊值分析法基本思想:選擇等價類的邊緣值作為測試用例,讓每個等價類的邊界都得到測試,選擇測試用例既考慮輸入亦考慮輸出。分析步驟:
A、先劃分等價類。
B、選擇測試用例,測試等價類邊界。邊界選擇原則:
A、按照輸入值范圍的邊界。
B、按照輸入/輸出值個數的邊界。
C、輸出值域的邊界。
D、輸入/輸出有序集的邊界。
402、邊值分析法基本思想:選擇等價類的邊緣值作為測試用例413、錯誤推測法
錯誤推測法的概念:憑經驗或直覺推測可能的錯誤,列出程序中可能有的錯誤和容易發生錯誤的特殊情況,選擇測試用例。
錯誤推測方法的基本思想:列舉出程序中所有可能有的錯誤和容易發生錯誤的特殊情況,根據它們選擇測試用例。例如:在單元測試時曾列出的許多在模塊中常見的錯誤、以前產品測試中曾經發現的錯誤等,這些就是經驗的總結。還有,輸入數據和輸出數據為0的情況、輸入表格為空格或輸入表格只有一行等。這些都是容易發生錯誤的情況,可選擇這些情況下的例子作為測試用例。413、錯誤推測法錯誤推測法的概念:憑經驗或直覺推測可能的42
調試(也稱為糾錯)作為成功測試的后果出現,也就是說,調試是在測試發現錯誤之后排除錯誤的過程。
調試過程如下圖所示:7.8調試7.8調試42調試(也稱為糾錯)作為成功測試的后果出現,也就是說,調43
無論采用什么方法,調試的目標都是尋找軟件錯誤的原因并改正錯誤。通常需要把系統地分析、直覺和運氣組合起來,才能實現上述目標。一般說來,有下列3種調試途徑可以采用:蠻干法回溯法原因排除法7.8調試途徑43無論采用什么方法,調試的目標都是尋找軟件錯誤的原因并44
軟件可靠性的定義:對于軟件可靠性有許多不同的定義,其中多數人承認的一個定義是:軟件可靠性是程序在給定的時間間隔內,按照規格說明書的規定成功地運行的概率
軟件可用性的一個定義:軟件可用性是程序在給定的時間點,按照規格說明書的規定,成功地運行的概率。7.9調試7.9軟件的可靠性44軟件可靠性的定義:對于軟件可靠性有許多不同的定義,其中45第8章維護
1、軟件維護的定義P1792、了解軟件維護的特點3、軟件維護過程中維護組織包括哪些人員?P1828.4決定軟件的可維護性的因素有哪些?P185—P1868.5軟件再工程過程45第8章維護1、軟件維護的定義P179468.1軟件維護的定義8.1軟件維護的定義
軟件維護是指軟件系統交付使用以后,為了改正錯誤或滿足新的需求而修改軟件的過程。按照不同的維護目的,維護工作可分成4類。完善性維護(PerfectiveMaintenance):擴充原有系統的功能,提高原有系統的性能,滿足用戶的實際需要。糾錯性維護(CorrectiveMaintenance):對在測試階段未能發現的,在軟件投入使用后才逐漸暴露出來的錯誤的測試、診斷、定位、糾錯以及驗證、修改的回歸測試過程。適應性維護(AdaptiveMaintenance):要使運行的軟件能適應運行環境的變動而修改軟件的過程。預防性維護(PreventiveMaintenance):為了進一步改善軟件的可靠性和易維護性,或者為將來的維護奠定更好的基礎而對軟件進行修改。(8.5節)468.1軟件維護的定義8.1軟件維護的定義軟件478.3軟件維護過程圖8.1維護組織478.3軟件維護過程圖8.1維護組織488.4軟件的可維護性軟件的可維護性定性地定義為:維護人員理解、改正、改動或改進這個軟件的難易程度。重用:同一事物不做修改或稍加改動就在不同環境中多次重復使用。提高可維護性是支配軟件工程方法學所有步驟的關鍵目標。488.4軟件的可維護性軟件的可維護性定性地定義為:維護49第9章面向對象相關內容
1、面向對象方法學概述P193—P2002、面向對象建模(涵蓋第9章和第10章)3、面向對象分析的基本過程4、面向對象的設計準則49第9章面向對象相關內容1、面向對象方法學概述509.1.1要點9.1概述
面向對象方法學的出發點和基本原則,是盡可能模擬人類習慣的思維方式,使開發軟件的方法與過程盡可能接近人類認識世界解決問題的方法與過程,也就是使描述問題的問題空間(也稱為問題域)與實現解法的解空間(也稱為求解域)在結構上盡可能一致。認為客觀世界是由各種對象組成的,任何事物都是對象,復雜的對象可以由比較簡單的對象以某種方式組合而成。把所有對象都劃分成各種對象類(簡稱為類,class),每個對象類都定義了一組數據和一組方法。按照子類(或稱為派生類)與父類(或稱為基類)的關系,把若干個對象類組成一個層次結構的系統(也稱為類等級)。對象彼此之間僅能通過傳遞消息互相聯系。509.1.1要點9.1概述面向對象方法學的出發51
面向對象的方法學可以用下列方程來概括:OO=objects+classes+inheritance+communicationwithmessages也就是說,面向對象就是既使用對象又使用類和繼承等機制,而且對象之間僅能通過傳遞消息實現彼此通信。如果僅使用對象和消息,則這種方法可以稱為基于對象的(object-based)方法,而不能稱為面向對象的方法;如果進一步要求把所有對象都劃分為類,則這種方法可稱為基于類的(class-based)方法,但仍然不是面向對象的方法。
只有同時使用對象、類、繼承和消息的方法,才是真正面向對象的方法。51面向對象的方法學可以用下列方程來概括:52類(Class)類又稱對象類(ObjectClass),是一組具有相同屬性和相同操作的對象的集合。在一個類中,每個對象都是類的實例(instance)
,它們都可以使用類中提供的函數。類具有屬性,用數據結構來描述類的屬性,類具有操作,它是對象的行為的抽象,操作實現的過程稱為方法(method)
,方法有方法名,方法體和參數。
由于對象是類的實例,在進行分析和設計時,通常把注意力集中在類上,而不是具體的對象上。9.1.4其它概念52類(Class)由于對象是類的實例,在進行分53
實例:實際上類是建立對象時使用的“樣板”,按照這個樣板所建立的一個個具體的對象,就是類的實際例子,通常稱為實例。當使用“對象”這個術語時,既可以指一個具體的對象,也可以泛指一般的對象,但是,當使用“實例”這個術語時,必然是指一個具體的對象。53實例:實際上類是建立對象時使用的“樣板”54幾何對象顏色位置移動(delta:矢量)選擇(P:指針型):布爾型旋轉(角度)圖9.5對象類的描述人姓名:字符串年齡:整型改換工作改換地址文件文件名文件大小最近更新日期打印(人)里斯28繪圖員人民路8號(人)張山24程序員無圖9.6對象的描述對象和類的描述
對象和類一般采用“對象圖”和“類圖”來描述。類名屬性運算
對象圖
類圖54幾何對象圖9.5對象類的描述人文件(人)(人)圖9.655消息(Message)
消息就是向對象發出的服務請求(互相聯系、協同工作等)。對象之間的聯系可表示為對象間的消息傳遞,即對象間的通訊機制。一個消息應該包含以下信息:消息名、接收消息對象的標識、服務標識、消息和方法、輸入信息、回答信息。注意:在并發系統中,多個控制線程(ThreadofControl)并發執行,情況就復雜得多,消息可以是發出服務請求、提交數據、發布事件信息、或是傳遞同步控制信息。在對象的操作中當一個消息發送給某個對象時,消息包含接收對象去執行某種操作的消息。55消息(Message)注意:在并發系統中,多個控制線56消息(Message)屬性:姓名年齡單位職稱工資狀態:李立
25
計算機系講師
900屬性:調工資評職稱受聘方法:調工資(計算公式)評職稱(步驟、條件)屬性:調工資評職稱受聘李立,調工資(??????)數據結構數據值人事處向對象發消息執行的操作方法體類:教師對象:李立抽象實例抽象實例抽象方法名(參數)圖9.7對象、類和消息傳遞56消息(Message)屬性:姓名狀態:李立屬性:調工資方57
方法:就是對象所能執行的操作,也就是類中所定義的服務。方法描述了對象執行操作的算法,響應消息的方法。在C++語言中把方法稱為成員函數。
屬性:就是類中所定義的數據,它是對客觀世界實體所具有的性質的抽象。類的每個實例都有自己特有的屬性值。在C++語言中把屬性稱為數據成員。57方法:就是對象所能執行的操作,也就是類中所定義的服務。58
繼承(Inheritance)
繼承是使用現存的定義作為基礎,建立新定義的技術。是父類和子類之間共享數據結構和方法的機制,這是類之間的一種關系。在定義和實現一個類的時候,可以在一個已經存在的類的基礎上來進行,把這個已經存在的類所定義的內容做為自己的內容,并加入若干新內容。繼承性分:單重繼承:一個子類只有一個父類。即子類只繼承一個父類的數據結構和方法。多重繼承:一個子類可有多個父類。繼承多個父類的數據結構和方法。基類子類A子類B圖9.9繼承性描述現存類定義父類(基類)新類定義子類(派生類)繼承圖9.8繼承性58繼承(Inheritance)基類子類A子類B圖959圖9.8實現繼承機制的原理59圖9.8實現繼承機制的原理60
多態性:
(Polymorphism)是指相同的操作或函數,過程作用于不同的對象上并獲得不同的結果。多態即一個名字可具有多種語義。
即相同的操作的消息發送給不同的對象時,每個對象將根據自己所屬類中所定義的操作去執行,故產生不同的結果。例如:“繪圖”操作,作用在“橢圓”和“矩形”上,畫出不同的圖形。
有兩種重載:函數重載是指在同一作用域內的若干個參數特征不同的函數可以使用相同的函數名字;運算符重載是指同一個運算符可以施加于不同類型的操作數上面。當然,當參數特征不同或被操作數的類型不同時,實現函數的算法或運算符的語義是不相同的。重載進一步提高了面向對象系統的靈活性和可讀性。60多態性:(Polymorphism)是指相同的操作或61
面向對象建模技術所建立的3種模型,分別從3個不同側面描述了所要開發的系統。這3種模型相互補充、相互配合,使得我們對系統的認識更加全面:功能模型指明了系統應該“做什么”;動態模型明確規定了什么時候(即在何種狀態下接受了什么事件的觸發)做;對象模型則定義了做事情的實體。在面向對象方法學中,對象模型是最基本最重要的,它為其他兩種模型奠定了基礎,我們依靠對象模型完成3種模型的集成。3種模型之間的關系61面向對象建模技術所建立的3種模型,分別從3個不同側面描62(1)面向對象分析的三個模型面向對象建模是面向對象分析的關鍵。面向對象的模型包括:對象模型、動態模型和功能模型。對象模型描述了系統的靜態結構;動態模型描述了系統的互交次序;功能模型描述了系統的數據變換。不同的問題,三個子模型的側重程度不同,但是,對象模型是最基礎的、最核心的、最重要的。無論解決什么問題,首先要在問題域中提取和定義出對象模型。當問題涉及用戶界與過程控制時,動態模型是重點。如果問題涉及大量數據變換,則功能模型非常重要。對象模型中的操作(服務)可以出現在動態模型和功能模型內。面向對象分析的基本過程9.33個子模型與5個層次62(1)面向對象分析的三個模型面向對象分析的基本63(2)面向對象分析的五個層次面向對象分析由五個主要活動組成:主題層、類與對象層、結構層、屬性層和服務層,見圖9.2。圖對象模型的五個層次3個子模型和5個層次63(2)面向對象分析的五個層次圖對象模型的五64模塊化抽象信息隱藏弱耦合強內聚可重用
面向對象設計的準則面向對象設計的準則64模塊化面向對象設計的準則面向對象設計的準則65
重用也叫再用或復用,是指同一事物不作修改或稍加改動就多次重復使用。廣義地說,軟件重用可分為以下3個層次:(1)知識重用(例如,軟件工程知識的重用)。(2)方法和標準的重用(例如,面向對象方法或國家制定的軟件開發規范的重用)。(3)軟件成分的重用。前兩個重用層次屬于知識工程研究的范疇,本節僅討論軟件成分重用問題。軟件重用軟件重用65重用也叫再用或復用,是指同一事物不作修改或稍加改66第10章軟件項目管理
1、了解如何估算軟件規模,如何進行工作量的估算?2、制定進度計劃的工具有哪些?P302—P3093、了解人員如何組織?4、軟件質量的保證措施有哪些?P316—P3175、軟件配置管理P319—P3216、能力成熟度模型分為哪幾級?P322—P32466第10章軟件項目管理1、了解如何估算軟件規模,如67
不論從事哪種技術性項目,實際情況都是,在實現一個大目標之前往往必須完成數以百計的小任務(也稱為作業)。這些任務中有一些是處于“關鍵路徑”(見13.3.5節)之外的,其完成時間如果沒有嚴重拖后,就不會影響整個項目的完成時間;其他任務則處于關鍵路徑之中,如果這些“關鍵任務”的進度拖后,則整個項目的完成日期就會拖后,管理人員應該高度關注關鍵任務的進展情況。13.3進度計劃13.3進度計劃67不論從事哪種技術性項目,實際情況都是,在實現一個68軟件開發進度計劃安排是一件困難的任務,既要考慮各個子任務之間的相互聯系,盡可能并行地安排任務,又要預見潛在的問題,提供意外事件的處理意見。
描述計劃進度的主要工具有:一般的表格工具、甘特圖、PERT技術與CPM方法。1、一般的表格工具例如:進度表(圖13.3)
▲▲▲軟件測試
▲▲▲
編碼
▲▲詳細設計
▲
▲▲總體設計▲▲▲需求分析123456789101112任務月份圖13.3進度表010203040506070一月二月三月四月五月六月需求分析
總體設計詳細設計編碼、測試13.3.2
Gantt圖13.3.2Gantt圖68軟件開發進度計劃安排是一件困難的任務,既要考慮各個子69上一小節介紹的Gantt圖具有直觀簡明和容易掌握、容易繪制的優點,但是Gantt圖也有3個主要缺點:(1)不能顯式地描繪各項作業彼此間的依賴關系;(2)進度計劃的關鍵部分不明確,難于判定哪些部分應當是主攻和主控的對象;(3)計劃中有潛力的部分及潛力的大小不明確,往往造成潛力的浪費。工程網絡是制定進度計劃時另一種常用的圖形工具,它同樣能描繪任務分解情況以及每項作業的開始時間和結束時間,此外,它還顯式地描繪各個作業彼此間的依賴關系。因此,工程網絡是系統分析和系統設計的強有力的工具。13.3.3工程網絡13.3.3工程網絡69上一小節介紹的Gantt圖具有直觀簡明和容易掌握、容易繪70圖13.6舊木板房刷漆工程的完整的工程網絡13.3.4估算工程進度70圖13.6舊木板房刷漆工程的完整的工程網絡13.3.7113.5質量保證軟件質量保證措施:基于非執行的測試(也稱為復審或評審),基于執行的測試(即以前講過的軟件測試)和程序正確性證明。基于非執行的測試(也稱為復審或評審),主要用來保證在編碼之前各階段產生的文檔的質量;基于執行的測試(即以前講過的軟件測試)需要在程序編寫出來之后進行,它是保證軟件質量的最后一道防線;程序正確性證明使用數學方法嚴格驗證程序是否與對它的說明完全一致。7113.5質量保證軟件質量保證措施:基于非執行的測試(也721.軟件配置項:軟件過程的輸出信息可以分為3類:①計算機程序(源代碼和可執行程序);②描述計算機程序的文檔(供技術人員或用戶使用);③數據(程序內包含的或在程序外的)。上述這些項組成了在軟件過程中產生的全部信息,我們把它們統稱為軟件配置,而這些項就是軟件配置項。13.6.1軟件配置2.基線:是一個軟件配置管理概念,基線就是通過了正式復審的軟件配置項。在軟件配置項變成基線之前,可以迅速而非正式地修改它。一旦建立了基線之后,雖然仍然可以實現變化,但是,必須應用特定的、正式的過程(稱為規程)來評估、實現和驗證每個變化。721.軟件配置項:軟件過程的輸出信息可以分為3類:①73CMM將軟件過程的成熟度分為5個級別(MaturityLevels)
,如圖所示,5個等級分別是:初始級可重復級已定義級已管理級優化級13.7.2
軟件過程的成熟度等級1、初始級(Initial)2、可重復(Repeatable)3、已定義級(Defined)4、已管理級(Managed)5、優化級(Optimizing)
SW-CMM為每個軟件組織建立和改善軟件過程提供了一個階梯式的過程成熟度框架,這一框架由5個成熟度等級構成。除初始級以外,其余的成熟度等級都包含了若干個關鍵過程區域,每個關鍵過程區域又包含了若干個關鍵實踐,這些關鍵實踐按照5個共同特點加以組織。
圖13.7成熟度等級單擊鼠標左鍵查看相應內容73CMM將軟件過程的成熟度分為5個級別(Maturity74祝大家學習愉快!74祝大家學習愉快!751軟件工程學概述2可行性研究3需求分析形式化說明技術總體設計6詳細設計7實現8維護9面向對象相關內容10軟件項目管理軟件工程導論復習11軟件工程學概述7實現軟件工程導論復習76第1章軟件工程學概述
1、什么是軟件危機?P12、軟件危機產生的原因有哪些?P33、什么是軟件工程?P54、軟件工程方法學包含哪些要素?P95、在軟件過程中有哪些模型?他們各自的特點是哪些?P15—P222第1章軟件工程學概述1、什么是軟件危機?P177第2章可行性研究
1、可行性研究的目的是什么?P252、應從哪些方面研究可行性?P253、如何畫系統流程圖?P27—P304、如何畫數據流圖?P30—P375、了解數據字典及成本效益分析。3第2章可行性研究1、可行性研究的目的是什么?P2578數據流圖(DataFlowDiagram,DFD)是描述系統中數據流程的圖形工具,它標識了一個系統的邏輯輸入和邏輯輸出,以及把邏輯輸入轉換為邏輯輸出所需的加工處理。2.4數據流圖2.4數據流圖(DFD)數據存儲數據源點或終點處理加工名數據流數據流名文件名實體名箭頭圓或橢圓單或雙杠矩形框還有一些輔助的圖例:一、數據流圖的圖符四種基本圖形符號:TAB*CTAB*CTAB+CTAB+CTABC+TABC+*
與
+或互斥+4數據流圖(DataFlowDiagram,DFD)是描792.4數據流圖舉例:儲戶儲戶1記錄存款信息打印存款信息存款單存款信息存款存單3計算利息4打印利息清單存款信息利息值利息清單D1存款信息存款信息252.4數據流圖舉例:儲戶儲戶1記錄存款打印存款存款單存款80細化后的計算機儲蓄系統軟件結構6細化后的計算機儲蓄系統軟件結構81第3章需求分析
1、需求分析的基本任務是什么?P46-P482、分析建模
2.1什么是模型?模型:就是為了理解事物而對事物做出的一種抽象,是對事物的一種無歧義的書面描述。通常,模型由一組圖形符號和組織這些符號的規則組成。
2.2數據模型(E-R)、功能模型(2.4節數據流圖)、行為模型(狀態轉換圖是行為模型的基礎)3、要從哪些方面驗證軟件需求?P607第3章需求分析1、需求分析的基本任務是什么?P4682第4章形式化說明技術
軟件工程的使用方法非形式化:用自然語言描述需求規格說明半形式化:用數據流圖或實體—聯系圖建立模型形式化:描述系統性質的基于數學的技術1、有窮狀態機P67—P722、Petri網技術P72—P758第4章形式化說明技術軟件工程的使用方法非形式化:用83第5章總體設計
1、在設計過程中,總體設計一般有哪兩個主要階段組成?P812、什么模塊化?模塊獨立性包含哪些內容?度量準則是什么?P85—P893、啟發規則有哪些?P90—P924、描繪軟件結構的圖形工具P92-P945、面向數據流的設計方法P95—P1029第5章總體設計1、在設計過程中,總體設計一般有哪兩845.2設計原理5.2.1模塊化
模塊是程序對象有名字的集合。例如,過程、函數、子程序、宏等,是構成軟件系統結構的基本元素。
模塊化就是將系統劃分為若干個模塊,每個模塊完成一個子功能。模塊化的目的是將系統“分而治之”,模塊化能夠降低問題的復雜性,使軟件結構清晰,易閱讀、易理解,易于測試和調試,因而也有助于提高軟件的可靠性。105.2設計原理5.2.1模塊化模塊是程序對象有名85模塊化降低軟件復雜度的簡單證明5.2.5模塊獨立5.2.5模塊獨立“模塊”,又稱“構件”,一般指用一個名字可調用的一段程序。它一般具有如下三個基本屬性:⑴功能即指該模塊實現什么功能,做什么事情。必須注意:模塊功能,應是該模塊本身的功能加上它所調用的所有子模塊的功能。⑵邏輯即描述模塊內部怎么做。⑶狀態即該模塊使用時的環境和條件。所謂模塊的獨立性,是指軟件系統中每個模塊只涉及軟件要求的具體的子功能,而和軟件系統中其他模塊的接口是簡單的。即功能專一,模塊之間無過多的相互作用的模塊。這種類型的模塊可以并行開發,模塊獨立性越強,開發越容易。獨立性強的模塊,還能減少錯誤的影響,使模塊容易組合、修改及測試。11模塊化降低軟件復雜度的簡單證明5.2.5模塊獨立5.2865.2.5模塊獨立性模塊獨立性的度量標準是兩個定性準則:
耦合性用于描述模塊之間聯系的緊密程度。
內聚性用于描述模塊內部聯系的緊密程度。模塊獨立性比較強的模塊應該是具有高內聚性和的低耦合度。
125.2.5模塊獨立性模塊獨立性的度量標準是兩個定性準則87圖5.8變換型數據流圖的基本模型
5.5.1概念–
變換流13圖5.8變換型數據流圖的基本模型5.5.1概念88圖事務型數據流圖的基本模型5.5.1概念–
事務流14圖事務型數據流圖的基本模型5.5.1概念–事89變換分析設計:把具有變換流特點的數據流圖按預先確定的模式映射成軟件結構。不具有顯著的事務特點。雖然在任何情況下都可以使用變換分析方法設計軟件結構,但是在數據流具有明顯的事務特點時,也就是有一個明顯的“發射中心”(事務中心)時,還是以采用事務分析方法為宜。兩者的主要差別僅在于由數據流圖到軟件結構的映射方法不同。15變換分析設計:把具有變換流特點的數據流圖按預先確定的模式90第6章詳細設計
1、結構程序設計中有哪幾種基本控制結構?P1082、了解人機界面的設計。3、掌握過程設計的工具(程序流程圖、盒圖、PAD圖,判定樹)P114—P1194、面向數據結構的設計方法(Jackson圖)5、程序復雜度的定量度量(McCabe)16第6章詳細設計1、結構程序設計中有哪幾種基本控制916.1結構程序設計6.1結構程序設計圖6.13種基本的控制結構176.1結構程序設計6.1結構程序設計圖6.1926.1結構程序設計其他常用的控制結構圖6.2其他常用的控制結構186.1結構程序設計其他常用的控制結構圖6.2其936.3.1程序流程圖
程序流程圖是最早出現且使用較為廣泛的算法表達工具之一,能夠有效地描述問題求解過程中的程序邏輯結構。程序流程圖中經常使用的基本符號如圖6.3所示。圖6.3程序流程圖中使用的符號196.3.1程序流程圖程序流程圖是最早94N-S圖又稱為盒圖,它是為了保證結構化程序設計而由Nassi和Shneiderman共同提出的一種圖形工具。在N-S圖中,所有的程序結構均使用矩形框表示,它可以清晰地表達結構中的嵌套及模塊的層次關系。N-S圖中,基本控制結構的表示符號如圖6.4所示。6.3.2N-S圖20N-S圖又稱為盒圖,它是為了保證結構化程序設計而由Nas956.3.2N-S圖圖6.4盒圖的基本符號216.3.2N-S圖圖6.4盒圖的基本符號96圖6.5PAD中基本符號順序結構;(b)分支結構;(c)多分支CASE結構;(d)當型循環;(e);直到型循環;(f)語句標號;(g)定義6.3.3PAD圖22圖6.5PAD中基本符號6.3.3PAD圖976.3.3PAD圖圖6.6使用PAD圖提供的定義功能來逐步求精的例子236.3.3PAD圖圖6.6使用PAD圖提供的定986.4面向數據結構的設計方法6.4面向數據結構的設計方法Jackson方法和Warnier方法是最著名的兩個面向數據結構的設計方法246.4面向數據結構的設計方法6.4面向數據結99Jackson方法是由英國的M.A.Jackson在1975年首先提出的,他同時還提出了與這種方法配套使用的、用于描述系統數據結構和程序結構的圖形工具,被稱為Jackson圖。Jackson方法從目標系統的輸入、輸出數據結構入手,導出程序框架結構,再補充其他細節,就可得到完整的程序結構圖。這一方法對輸入、輸出數據結構明確的中、小型系統特別有效,如商業應用中的文件、表格處理。該方法也可與其他方法結合,用于模塊的詳細設計。6.4面向數據結構的設計方法6.4.1Jackson圖25Jackson方法是由英國的M.A.Jackson在19100圖6.8三種基本結構在Jackson圖中的表示符號(a)順序結構;(b)選擇結構;(c);循環結構6.4.1Jackson圖(a)(c)(b)26圖6.8三種基本結構在Jackson圖中的表示符號61016.4面向數據結構的設計方法6.4.2改進的Jackson圖圖6.9改進的Jackson圖276.4面向數據結構的設計方法6.4.2改進的1026.5程序復雜程度的定量度量
定量度量程序復雜程度的方法很有價值:把程序的復雜程度乘以適當常數即可估算出軟件中錯誤的數量以及軟件開發需要用的工作量,定量度量的結果可以用來比較兩個不同的設計或兩個不同算法的優劣;程序的定量的復雜程度可以作為模塊規模的精確限度。286.5程序復雜程度的定量度量定量度量1036.5程序復雜程度的定量度量6.5.1McCabe方法McCabe方法根據程序控制流的復雜程度定量度量程序的復雜程度,這樣度量出的結果稱為程序的環形復雜度。為了突出表示程序的控制流,人們通常使用流圖(也稱為程序圖)。所謂流圖實質上是“退化了的”程序流程圖,它僅僅描繪程序的控制流程,完全不表現對數據的具體操作以及分支或循環的具體條件。296.5程序復雜程度的定量度量6.5.1McCa1046.5程序復雜程度的定量度量圖6.16把程序流程圖影射成流圖306.5程序復雜程度的定量度量圖6.16把程序流程105
環形復雜度定量度量程序的邏輯復雜度。有了描繪程序控制流的流圖之后,可以用下述3種方法中的任何一種來計算環形復雜度。(1)流圖中的區域數等于環形復雜度。(2)流圖G的環形復雜度V(G)=E-N+2,其中,E是流圖中邊的條數,N是結點數。(3)流圖G的環形復雜度V(G)=P+1,其中,P是流圖中判定結點的數目。6.5.1計算環形復雜度的方法31環形復雜度定量度量程序的邏輯復雜度。有了描繪程序106第7章實現
1、編碼2、測試技術P139—P1693、調試的途徑有哪些?P1684、軟件可靠性和可用性的基本概念P16932第7章實現1、編碼107
編碼:把軟件設計結果翻譯成用某種程序語言書寫的程序。測試:軟件測試的目的是在軟件投入生產性運行前,盡可能多的發現軟件中的錯誤。
實現編碼和測試33編碼:把軟件設計結果翻譯成用某種程序語言書寫的程序。實1087.2軟件測試基礎7.2軟件測試基礎
軟件測試:為發現程序中的錯誤而執行程序的過程。軟件測試的準則(盡早和不斷的測試、徹底測試的不可能、軟件測試是有風險的行為、并非所有的軟件錯誤都能恢復、反向思維邏輯、由小到大的測試范圍、避免檢查自己的代碼、追溯至用戶需求)測試方法(黑盒測試和白盒測試)測試步驟(模塊測試、子系統測試、系統測試、驗收測試、平行運行)347.2軟件測試基礎7.2軟件測試基礎軟件測試:為109
測試內容模塊模塊接口測試局部數據結構測試重要路徑測試錯誤處理測試邊界條件測試I/O參數值的個數、類型、次序、格式是否正確,I/O文件屬性、操作是否正確等。數據說明是否正確、一致,變量及其初值定義是否正確等。檢查“錯誤處理程序”本身的錯誤。邊界條件常包括循環邊界,最大最小值、控制流中等于、大于、小于的比較值等。重要路徑通常是指完成模塊功能的主要路徑,一般是控制結構。也稱模塊測試(moduletesting)7.3.1單元測試重點7.3單元測試35測試內容模塊模塊接口測試局部數據結構測試重要路徑測試錯110白盒法又稱為邏輯覆蓋法,其測試用例選擇,是按照不同覆蓋標準確定的。語句覆蓋判定覆蓋條件覆蓋判定條件覆蓋條件組合覆蓋弱強7.6白盒測試技術7.6白盒測試技術36白盒法又稱為邏輯覆蓋法,其測試用例選擇,是按照不同覆蓋標111①語句覆蓋:選擇足夠的測試用例,使得程序中每個語句至少都能被執行一次。②
判定覆蓋:執行足夠的測試用例,使得程序中每個判定至少都獲得一次“真”值和“假”值。③條件覆蓋:執行足夠的測試用例,使得判定中的每個條件獲得各種可能的結果。④
判定/條件覆蓋:執行足夠的測試用例,使得判定中每個條件取到各種可能的值,并使每個判定取到各種可能的結果。⑤
條件組合覆蓋:執行足夠的例子,使得每個判定中條件的各種可能組合都至少出現一次。白盒法常用的覆蓋標準37①語句覆蓋:選擇足夠的測試用例,使得程序中每個語句至112等價分類法邊值分析法錯誤推測法黑盒法
不考慮程序的內部結構與特性,只根據程序功能或程序的外部特性設計測試用例。7.7黑盒測試技術7.7黑盒測試技術38等邊錯黑盒法7.7黑盒測試技術7.7黑盒測試1131、等價分類法基本思想:根據程序的I/O特性,將程序的定義域劃分為有限個等價區段—“等價類”,從等價類中選擇出的用例,具有“代表性”。等價類分為:有效等價類
—對于程序的規格說明是合理的、有意義的輸入數據構成的集合。無效等價類
—對于程序的規格說明,是不合理的,是沒有意義的輸入數據構成的集合。391、等價分類法基本思想:根據程序的I/O特性,將程序的定1142、邊值分析法基本思想:選擇等價類的邊緣值作為測試用例,讓每個等價類的邊界都得到測試,選擇測試用例既考慮輸入亦考慮輸出。分析步驟:
A、先劃分等價類。
B、選擇測試用例,測試等價類邊界。邊界選擇原則:
A、按照輸入值范圍的邊界。
B、按照輸入/輸出值個數的邊界。
C、輸出值域的邊界。
D、輸入/輸出有序集的邊界。
402、邊值分析法基本思想:選擇等價類的邊緣值作為測試用例1153、錯誤推測法
錯誤推測法的概念:憑經驗或直覺推測可能的錯誤,列出程序中可能有的錯誤和容易發生錯誤的特殊情況,選擇測試用例。
錯誤推測方法的基本思想:列舉出程序中所有可能有的錯誤和容易發生錯誤的特殊情況,根據它們選擇測試用例。例如:在單元測試時曾列出的許多在模塊中常見的錯誤、以前產品測試中曾經發現的錯誤等,這些就是經驗的總結。還有,輸入數據和輸出數據為0的情況、輸入表格為空格或輸入表格只有一行等。這些都是容易發生錯誤的情況,可選擇這些情況下的例子作為測試用例。413、錯誤推測法錯誤推測法的概念:憑經驗或直覺推測可能的116
調試(也稱為糾錯)作為成功測試的后果出現,也就是說,調試是在測試發現錯誤之后排除錯誤的過程。
調試過程如下圖所示:7.8調試7.8調試42調試(也稱為糾錯)作為成功測試的后果出現,也就是說,調117
無論采用什么方法,調試的目標都是尋找軟件錯誤的原因并改正錯誤。通常需要把系統地分析、直覺和運氣組合起來,才能實現上述目標。一般說來,有下列3種調試途徑可以采用:蠻干法回溯法原因排除法7.8調試途徑43無論采用什么方法,調試的目標都是尋找軟件錯誤的原因并118
軟件可靠性的定義:對于軟件可靠性有許多不同的定義,其中多數人承認的一個定義是:軟件可靠性是程序在給定的時間間隔內,按照規格說明書的規定成功地運行的概率
軟件可用性的一個定義:軟件可用性是程序在給定的時間點,按照規格說明書的規定,成功地運行的概率。7.9調試7.9軟件的可靠性44軟件可靠性的定義:對于軟件可靠性有許多不同的定義,其中119第8章維護
1、軟件維護的定義P1792、了解軟件維護的特點3、軟件維護過程中維護組織包括哪些人員?P1828.4決定軟件的可維護性的因素有哪些?P185—P1868.5軟件再工程過程45第8章維護1、軟件維護的定義P1791208.1軟件維護的定義8.1軟件維護的定義
軟件維護是指軟件系統交付使用以后,為了改正錯誤或滿足新的需求而修改軟件的過程。按照不同的維護目的,維護工作可分成4類。完善性維護(PerfectiveMaintenance):擴充原有系統的功能,提高原有系統的性能,滿足用戶的實際需要。糾錯性維護(CorrectiveMaintenance):對在測試階段未能發現的,在軟件投入使用后才逐漸暴露出來的錯誤的測試、診斷、定位、糾錯以及驗證、修改的回歸測試過程。適應性維護(AdaptiveMaintenance):要使運行的軟件能適應運行環境的變動而修改軟件的過程。預防性維護(PreventiveMaintenance):為了進一步改善軟件的可靠性和易維護性,或者為將來的維護奠定更好的基礎而對軟件進行修改。(8.5節)468.1軟件維護的定義8.1軟件維護的定義軟件1218.3軟件維護過程圖8.1維護組織478.3軟件維護過程圖8.1維護組織1228.4軟件的可維護性軟件的可維護性定性地定義為:維護人員理解、改正、改動或改進這個軟件的難易程度。重用:同一事物不做修改或稍加改動就在不同環境中多次重復使用。提高可維護性是支配軟件工程方法學所有步驟的關鍵目標。488.4軟件的可維護性軟件的可維護性定性地定義為:維護123第9章面向對象相關內容
1、面向對象方法學概述P193—P2002、面向對象建模(涵蓋第9章和第10章)3、面向對象分析的基本過程4、面向對象的設計準則49第9章面向對象相關內容1、面向對象方法學概述1249.1.1要點9.1概述
面向對象方法學的出發點和基本原則,是盡可能模擬人類習慣的思維方式,使開發軟件的方法與過程盡可能接近人類認識世界解決問題的方法與過程,也就是使描述問題的問題空間(也稱為問題域)與實現解法的解空間(也稱為求解域)在結構上盡可能一致。認為客觀世界是由各種對象組成的,任何事物都是對象,復雜的對象可以由比較簡單的對象以某種方式組合而成。把所有對象都劃分成各種對象類(簡稱為類,class),每個對象類都定義了一組數據和一組方法。按照子類(或稱為派生類)與父類(或稱為基類)的關系,把若干個對象類組成一個層次結構的系統(也稱為類等級)。對象彼此之間僅能通過傳遞消息互相聯系。509.1.1要點9.1概述面向對象方法學的出發125
面向對象的方法學可以用下列方程來概括:OO=objects+classes+inheritance+communicationwithmessages也就是說,面向對象就是既使用對象又使用類和繼承等機制,而且對象之間僅能通過傳遞消息實現彼此通信。如果僅使用對象和消息,則這種方法可以稱為基于對象的(object-based)方法,而不能稱為面向對象的方法;如果進一步要求把所有對象都劃分為類,則這種方法可稱為基于類的(class-based)方法,但仍然不是面向對象的方法。
只有同時使用對象、類、繼承和消息的方法,才是真正面向對象的方法。51面向對象的方法學可以用下列方程來概括:126類(Class)類又稱對象類(ObjectClass),是一組具有相同屬性和相同操作的對象的集合。在一個類中,每個對象都是類的實例(instance)
,它們都可以使用類中提供的函數。類具有屬性,用數據結構來描述類的屬性,類具有操作,它是對象的行為的抽象,操作實現的過程稱為方法(method)
,方法有方法名,方法體和參數。
由于對象是類的實例,在進行分析和設計時,通常把注意力集中在類上,而不是具體的對象上。9.1.4其它概念52類(Class)由于對象是類的實例,在進行分127
實例:實際上類是建立對象時使用的“樣板”,按照這個樣板所建立的一個個具體的對象,就是類的實際例子,通常稱為實例。當使用“對象”這個術語時,既可以指一個具體的對象,也可以泛指一般的對象,但是,當使用“實例”這個術語時,必然是指一個具體的對象。53實例:實際上類是建立對象時使用的“樣板”128幾何對象顏色位置移動(delta:矢量)選擇(P:指針型):布爾型旋轉(角度)圖9.5對象類的描述人姓名:字符串年齡:整型改換工作改換地址文件文件名文件大小最近更新日期打印(人)里斯28繪圖員人民路8號(人)張山24程序員無圖9.6對象的描述對象和類的描述
對象和類一般采用“對象圖”和“類圖”來描述。類名屬性運算
對象圖
類圖54幾何對象圖9.5對象類的描述人文件(人)(人)圖9.6129消息(Message)
消息就是向對象發出的服務請求(互相聯系、協同工作等)。對象之間的聯系可表示為對象間的消息傳遞,即對象間的通訊機制。一個消息應該包含以下信息:消息名、接收消息對象的標識、服務標識、消息和方法、輸入信息、回答信息。注意:在并發系統中,多個控制線程(ThreadofControl)并發執行,情況就復雜得多,消息可以是發出服務請求、提交數據、發布事件信息、或是傳遞同步控制信息。在對象的操作中當一個消息發送給某個對象時,消息包含接收對象去執行某種操作的消息。55消息(Message)注意:在并發系統中,多個控制線130消息(Message)屬性:姓名年齡單位職稱工資狀態:李立
25
計算機系講師
900屬性:調工資評職稱受聘方法:調工資(計算公式)評職稱(步驟、條件)屬性:調工資評職稱受聘李立,調工資(??????)數據結構數據值人事處向對象發消息執行的操作方法體類:教師對象:李立抽象實例抽象實例抽象方法名(參數)圖9.7對象、類和消息傳遞56消息(Message)屬性:姓名狀態:李立屬性:調工資方131
方法:就是對象所能執行的操作,也就是類中所定義的服務。方法描述了對象執行操作的算法,響應消息的方法。在C++語言中把方法稱為成員函數。
屬性:就是類中所定義的數據,它是對客觀世界實體所具有的性質的抽象。類的每個實例都有自己特有的屬性值。在C++語言中把屬性稱為數據成員。57方法:就是對象所能執行的操作,也就是類中所定義的服務。132
繼承(Inheritance)
繼承是使用現存的定義作為基礎,建立新定義的技術。是父類和子類之間共享數據結構和方法的機制,這是類之間的一種關系。在定義和實現一個類的時候,可以在一個已經存在的類的基礎上來進行,把這個已經存在的類所定義的內容做為自己的內容,并加入若干新內容。繼承性分:單重繼承:一個子類只有一個父類。即子類只繼承一個父類的數據結構和方法。多重繼承:一個子類可有多個父類。繼承多個父類的數據結構和方法。基類子類A子類B圖9.9繼承性描述現存類定義父類(基類)新類定義子類(派生類)繼承圖9.8繼承性58繼承(Inheritance)基類子類A子類B圖9133圖9.8實現繼承機制的原理59圖9.8實現繼承機制的原理134
多態性:
(Polymorphism)是指相同的操作或函數,過程作用于不同的對象上并獲得不同的結果。多態即一個名字可具有多種語義。
即相同的操作的消息發送給不同的對象時,每個對象將根據自己所屬類中所定義的操作去執行,故產生不同的結果。例如:“繪圖”操作,作用在“橢圓”和“矩形”上,畫出不同的圖形。
有兩種重載:函數重載是指在同一作用域內的若干個參數特征不同的函數可以使用相同的函數名字;運算符重載是指同一個運算符可以施加于不同類型的操作數上面。當然,當參數特征不同或被操作數的類型不同時,實現函數的算法或運算符的語義是不相同的。重載進一步提高了面向對象系統的靈活性和可讀性。60多態性:(Polymorphism)是指相同的操作或135
面向對象建模技術所建立的3種模型,分別從3個不同側面描述了所要開發的系統。這3種模型相互補充、相互配合,使得我們對系統的認識更加全面:功能模型指明了系統應該“做什么”;動態模型明確規定了什么時候(即在何種狀態下接受了什么事件的觸發)做;對象模型則定義了做事情的實體。在面向對象方法學中,對象模型是最基本最重要的,它為其他兩種模型奠定了基礎,我們依靠對象模型完成3種模型的集成。3種模型之間的關系61面向對象建模技術所建立的3種模型,分別從3個不同側面描136(1)面向對象分析的三個模型面向對象建模是面向對象分析的關鍵。面向對象的模型包括:對象模型、動態模型和功能模型。對象模型描述了系統的靜態結構;動態模型描述了系統的互交次序;功能模型描述了系統的數據變換。不同的問題,三個子模型的側重程度不同,但是,對象模型是最基礎的、最核心的、最重要的。無論解決什么問題,首先要在問題域中提取和定義出對象模型。當問題涉及用戶界與過程控制時,動態模型是
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軍事地理學與冷戰空間認知-洞察闡釋
- 發票托管服務協議
- 小學五年級下冊的語文期中試卷
- 量子調控的納米結構設計-洞察闡釋
- 2025企業公司與員工勞動合同標準范本
- 礦產開采權抵押貸款還款計劃合同
- 2025成都合同協議格式
- 2025合同銷售員辭職報告范文
- 耳鼻喉科疾病的護理技巧
- 小學二年級《安全法制教育》主題班會教案全冊
- 2022年上海市中考物理真題試題及答案
- GB/T 4513.5-2017不定形耐火材料第5部分:試樣制備和預處理
- 印制電路板領域:深南電路企業組織結構及部門職責
- GB 1886.193-2016食品安全國家標準食品添加劑丙酸乙酯
- 《士兵突擊》課件
- 接觸網施工計算課件
- 雨棚棚蓋檢驗批質量驗收記錄表
- DB14T 1049.1-2020 山西省用水定額 第1部分:農業用水定額
- 醫院感染監測清單
- 醫療廢物管理相關法律、法規介紹
- 手把手教華為PTN設備業務配置
評論
0/150
提交評論