軟件工程導論復習_第1頁
軟件工程導論復習_第2頁
軟件工程導論復習_第3頁
軟件工程導論復習_第4頁
軟件工程導論復習_第5頁
已閱讀5頁,還剩130頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

大連理工大學軟件學院軟件工程復習第1章基礎知識2023/1/152大連理工大學軟件學院什么是軟件軟件的定義—軟件由三部分組成:程序:在運行時,能提供所希望的功能和性能的指令集數據:使程序能夠正確運行的數據文檔:描述程序研制過程、方法及使用的文檔軟件處理的是信息和邏輯軟件的開發,絕不僅僅是編寫程序軟件圍繞著邏輯進行軟件就是一個信息交換器產生、管理、獲取、修改、顯示或傳送信息軟件≠程序2023/1/153大連理工大學軟件學院什么是軟件危機軟件危機是指在計算機軟件的開發和維護過程中所遇到的一系列嚴重問題。軟件工程(IEEE)1993年,提出軟件工程1)將系統化、規范化、可量化的工程原則和方法,應用于軟件的開發、運行和維護。2)對1)中方法的理論研究。2023/1/154大連理工大學軟件學院軟件工程基本原理(開發與維護的指導)用分階段的生命周期計劃嚴格管理堅持進行階段評審實行嚴格的產品控制采用現代程序設計技術結果應能清楚地審查開發小組的人員應該少而精承認不斷改進軟件工程實踐的必要性2023/1/155大連理工大學軟件學院軟件工程方法學把在軟件生命周期全過程中使用的一整套技術的集合稱為方法學(methodology),也稱范型(paradigm)。軟件工程方法學三個要素:方法、工具和過程。方法是完成軟件開發各項任務的技術,回答“如何做”;工具是為方法的運用提供自動或半自動軟件支撐環境,回答“用什么做”;過程是為獲得高質量的軟件要完成的一系列任務的框架,規定完成各項任務步驟,回答“如何控制、協調、保證質量”。管理方法2023/1/156大連理工大學軟件學院目前使用得最廣泛的軟件工程方法學。傳統方法學也稱為生命周期方法學或結構化范型。

當軟件規模較大,或對軟件的需求是模糊的或隨時間變化的時候,使用結構化范型開發軟件往往不成功;此外,使用傳統方法學開發出的軟件,維護起來通常都很困難。結構化-靜態分析,面向對象-動態分析世界萬物是變化的傳統方法學與面向對象方法學2023/1/157大連理工大學軟件學院傳統方法的特點生命周期模型軟件過程劃分為若干個階段每個階段有各自的任務階段之間有某種順序性2023/1/158大連理工大學軟件學院面向對象方法:對象作為融合數據及在數據之上的操作行為的統一的軟件構件。把所有對象都劃分成類(Class)。每個類都定義了一組數據和一組操作。按照父類(或稱為基類)與子類(或稱為派生類)的關系,把若干個相關類組成一個層次結構的系統(也稱為類等級)。在類等級中,下層派生類自動擁有上層基類中定義的數據和操作,稱為繼承。對象彼此間僅能通過發送消息互相聯系-封裝性。數據:靜態操作:動態EverythingisObject.2023/1/159大連理工大學軟件學院1.3軟件生命周期

軟件生命周期由軟件定義、軟件開發和運行維護三個時期組成,每個時期又可進一步劃分成若干個階段,每個階段有各自的任務。1軟件定義2軟件開發3運行維護2023/1/1510大連理工大學軟件學院問題定義可行性研究需求分析概要設計詳細設計編碼和單元測試綜合測試軟件維護2023/1/1511大連理工大學軟件學院實際的瀑布模型軟件過程模型(生命周期模型)2023/1/1512大連理工大學軟件學院快速原型模型2023/1/1513大連理工大學軟件學院增量模型瀑布模型:力求一次性給用戶完整的系統。增量模型:逐步增加系統功能。需要開放的架構設計。2023/1/1514大連理工大學軟件學院完整的螺旋模型2023/1/1515大連理工大學軟件學院噴泉模型迭代是OO開發過程的主要特性。噴泉模型是典型的面向對象生命周期模型。“噴泉”體現了面向對象軟件開發過程迭代和無縫的特性。為避免噴泉模型的過分無序,把一個線性過程作為總目標。迭代

2023/1/1516大連理工大學軟件學院噴泉模型迭代:逐步求精階段間沒有明顯的界限-面向對象的思想保證了各個階段開發的一致性。迭代是OO開發過程的主要特性。噴泉模型是典型的面向對象生命周期模型。“噴泉”體現了面向對象軟件開發過程迭代和無縫的特性。2023/1/1517大連理工大學軟件學院可行性與需求分析可行性研究不是解決問題,而是確定問題是否值得去解決較高層次的系統分析和設計過程需求分析發現、求精、建模、規格說明和復審的過程反復求精多次細化,得出對目標系統的完整、準確和具體的要求。建立數據模型、功能模型和行為模型等三種模型。還要寫出準確的軟件需求規格說明。。2023/1/1519大連理工大學軟件學院系統流程圖系統流程圖概括描繪物理系統的傳統工具用圖形符號,以黑盒子形式描述組成系統的每個部件程序、文檔、數據庫、人工過程2023/1/1520大連理工大學軟件學院系統流程圖例子例子每個符號用黑盒子形式定義了組成系統的一個部件。沒有部件內部的具體工作過程箭頭確定通過系統的邏輯路徑(信息流動路徑)2023/1/1521大連理工大學軟件學院

數據流圖數據流圖(DFD)描繪信息流和數據從輸入移動到輸出的過程中所經受的變換。或或或符號含義數據的源點或終點數據流數據存儲加工(數據處理)2023/1/1522大連理工大學軟件學院加工中常見關系的符號表示符號含義由數據A和B共同變換為數據C由數據A變換為數據B和數據C由數據A或B,或者數據A和B共同變換為數據C由數據A變換為數據B或C,或者同時變換為數據B和C由數據A或B其中之一變換為數據C由數據A變換為數據B或C其中之一T*T*T+T+TT2023/1/1523大連理工大學軟件學院2023/1/1524大連理工大學軟件學院把處理事務的功能進一步分解后的數據流圖2023/1/1525大連理工大學軟件學院數據字典數據字典是關于數據的信息的集合,即對DFD圖中包含的元素的定義的集合。數據字典的用途是供人查閱不了解的條目的解釋。提供分析設計過程中關于數據的描述。數據字典與DFD相輔相成。只有DFD和對應的元素的精確定義放在一起,才能構成系統的規格說明。2023/1/1526大連理工大學軟件學院定義數據的方法=意思是等價于(或定義為);+意思是和(即,連接兩個分量);[]意思是或(即,從方括弧內列出的若干個分量中選擇一個),用“|”號分開供選擇的分量;{}意思是重復(即,重復花括弧內的分量);()意思是可選(即,圓括弧里的分量可有可無)。使用上限和下限進一步注釋表示重復的花括弧。左邊用上角標和下角標分別表明重復的上限和下限;左側標明重復的下限,在閉括弧的右側標明上限。例如:{A}和1{A}5含義相同。152023/1/1527大連理工大學軟件學院數據字典的實現CASE工具人工卡片2023/1/1528大連理工大學軟件學院

實體—關系圖數據模型包含三種相互關聯的信息:數據對象、描述數據對象屬性及數據對象彼此間相互連接的關系。2023/1/1529大連理工大學軟件學院某校教學管理ER圖2023/1/1530大連理工大學軟件學院學生和課程之間的E-R模型學生和課程之間的多對多聯系E-R模型;(b)將多對多聯系轉換為一對多聯系E-R模型選課mn學號專業年級課名課號學時1n學號專業課名課號學時學號課號n1姓名課程學生姓名課程學分學生年級選課學分(a)(b)2023/1/1531大連理工大學軟件學院

其他圖形工具Warnier圖2023/1/1532大連理工大學軟件學院其他圖形工具(3)IPO圖2023/1/1533大連理工大學軟件學院其他圖形工具(2)IPO圖IPO圖是輸入、處理、輸出圖的簡稱左邊框中列出有關的輸入中間框中列出主要的處理右邊框中列出產生的輸出處理的順序暗示了執行的順序箭頭指出數據通信的情況2023/1/1534大連理工大學軟件學院總體設計總體設計概要設計和詳細設計。概要設計主要任務是通過仔細分析軟件規格說明,適當地對軟件進行功能分解,從而把軟件劃分為模塊,并且設計出完成預定功能的模塊結構。詳細設計階段詳細地設計每個模塊,確定完成每個模塊功能所需要的算法和數據結構。2023/1/1536大連理工大學軟件學院模塊化:就是把程序劃分成獨立命名且可獨立訪問的模塊,每個模塊完成一個子功能,把這些模塊集成起來構成一個整體,可以完成指定的功能滿足用戶的需求。可以由許多程序員分工編寫不同的模塊可以使軟件結構清晰,便于擴展使軟件容易測試和調試,因而有助于提高軟件的可靠性。模塊大小要適中,不過分細。2023/1/1537大連理工大學軟件學院模塊獨立模塊的獨立程度可以由兩個定性標準來度量,分別稱為內聚和耦合。耦合:衡量不同模塊彼此間互相依賴(連接)緊密程度;內聚:衡量一個模塊內部各個元素彼此結合的緊密程度。2023/1/1538大連理工大學軟件學院耦合是對一個軟件結構內不同模塊之間互連程度的度量。盡可能松散耦合2023/1/1539大連理工大學軟件學院數據耦合:特征耦合:控制耦合:外部耦合:公共耦合:內容耦合:弱強盡量使用數據耦合,少用控制耦合,限制公共環境耦合的范圍,完全不用內容耦合。2023/1/1540大連理工大學軟件學院內聚:標志一個模塊內各個元素彼此結合的緊密程度,它是信息隱蔽和局部化概念的自然擴展。簡單地說,理想內聚的模塊只做一件事情。2023/1/1541大連理工大學軟件學院功能內聚:信息內聚:通信內聚:過程內聚:時間內聚:邏輯內聚:巧合內聚:強弱設計時應該力求做到高內聚。2023/1/1542大連理工大學軟件學院改進軟件結構提高模塊獨立性模塊規模應該適中深度、寬度、扇出和扇入都應適當模塊的作用域應該在控制域之內力爭降低模塊接口的復雜程度設計單入口單出口的模塊模塊功能應該可以預測2023/1/1543大連理工大學軟件學院描繪軟件結構的圖形工具層次圖和HIPO圖結構圖2023/1/1544大連理工大學軟件學院正文加工系統的層次圖2023/1/1545大連理工大學軟件學院正文加工系統的H圖2023/1/1546大連理工大學軟件學院結構圖的例子—產生最佳解的一般結構2023/1/1547大連理工大學軟件學院軟件結構設計方法面向數據流的設計方法的目標是給出設計軟件結構的一個系統化的途徑。利用數據流圖中的“映射“,把數據流圖變換成軟件結構。2023/1/1548大連理工大學軟件學院變換流和事務流2023/1/1549大連理工大學軟件學院設計步驟復查基本系統模型。復查并精化數據流圖。確定數據流圖具有變換特性還是事務特性。確定輸入流和輸出流的邊界,從而孤立出變換中心。完成“第一級分解”。完成“第二級分解”。使用設計度量和啟發規則對第一次分割得到的軟件結構進一步精化。2023/1/1550大連理工大學軟件學院數字儀表板系統的數據流圖精化數據流圖數據流圖具有變換特性還是事務特性2023/1/1551大連理工大學軟件學院具有邊界的數據流圖確定輸入流和輸出流的邊界,從而孤立出變換中心2023/1/1552大連理工大學軟件學院第一級分解的方法2023/1/1553大連理工大學軟件學院數字儀表板系統的第一級分解完成“第一級分解”2023/1/1554大連理工大學軟件學院第二級分解的方法2023/1/1555大連理工大學軟件學院未經精化的輸入結構完成“第二級分解”2023/1/1556大連理工大學軟件學院精化后的數字儀表板系統的軟件結構軟件結構進一步精化2023/1/1557大連理工大學軟件學院事務分析的映射方法2023/1/1558大連理工大學軟件學院詳細設計詳細設計階段主要完成界面和程序過程設計.過程設計應該在數據設計、體系結構設計和接口設計完成之后進行.程序員將根據過程設計寫出實際的程序代碼。2023/1/1560大連理工大學軟件學院結構程序設計的經典定義如下所述:如果一個程序的代碼塊僅僅通過順序、選擇和循環這三種控制結構進行連接,并且每個代碼塊只有一個入口和一個出口,則稱這個程序是結構化的。2023/1/1561大連理工大學軟件學院過程設計的工具程序流程圖2023/1/1562大連理工大學軟件學院盒圖(N-S圖)2023/1/1563大連理工大學軟件學院PAD圖2023/1/1564大連理工大學軟件學院判定表2023/1/1565大連理工大學軟件學院用判定樹表示計算行李費的算法判定樹2023/1/1566大連理工大學軟件學院偽碼2023/1/1567大連理工大學軟件學院測試2023/1/1569大連理工大學軟件學院回歸測試(已執行過的測試用例的子集)包括下述三種不同的測試用例。檢測軟件全部功能的代表性測試用例。專門針對可能受修改影響的軟件功能的附加測試。針對被修改過的軟件成分的測試。2023/1/1570大連理工大學軟件學院白盒測試技術邏輯覆蓋是設計白盒測試方案的技術。設計測試方案是測試階段的關鍵技術問題。2023/1/1571大連理工大學軟件學院語句覆蓋為暴露程序的錯誤,至少每個語句應該執行一次。含義是,選擇足夠多的測試數據,使被測程序中每個語句至少執行一次。2023/1/1572大連理工大學軟件學院判定覆蓋又叫分支覆蓋不僅每個語句必須至少執行一次,而且每個判定的每種可能的結果都應該至少執行一次,也就是每個判定的每個分支都至少執行一次。條件覆蓋不僅每個語句至少執行一次,而且判定表達式中每個條件都取到各種可能的結果。2023/1/1573大連理工大學軟件學院判定/條件覆蓋判定覆蓋不一定包含條件覆蓋,條件覆蓋也不一定包含判定覆蓋,判定/條件覆蓋能同時滿足這兩種覆蓋標準。選取足夠多的測試數據,使得判定表達式中的每個條件都取到各種可能的值,而且每個判定表達式也都取到各種可能的結果。條件組合覆蓋要求選取足夠多的測試數據,使每個判定表達式中條件的各種可能組合都至少出現一次。2023/1/1574大連理工大學軟件學院路徑測試TomMcCabe提出的一種白盒測試技術。首先計算過程設計結果的邏輯復雜度,并以該復雜度為指南定義執行路徑的基本集合,從該基本集合導出的測試用例可以保證程序中每條語句至少執行一次,而且每個條件在執行時都將分別取true(真)和false(假)值。2023/1/1575大連理工大學軟件學院求平均值過程的流圖使用基本路徑測試技術設計測試用例步驟如下。根據過程設計結果畫出相應的流圖2023/1/1576大連理工大學軟件學院PROCEDUREaverage;/*這個過程計算不超過100個在規定值域內的有效數字的平均值;同時計算有效數字的總和及個數。*/INTERFACERETURNSaverage,total_input,total_valid;INTERFACEACCEPTSvalue,minimum,maximum;TYPEvalue[1...100]ISSCALARARRAY;TYPEaverage,total_input,total_valid,minimum,maximum,sumISSCALAR;2023/1/1577大連理工大學軟件學院TYPEiISINTEGER;1:i=1;total_input=total_valid=0;sum=0;2:DOWHILEvalue[i]<>-9993: ANDtotal_input<1004: incrementtotal_inputby1;5: IFvalue[i]>=minimum6: ANDvalue[i]<=maximum7: THENincrementtotal_validby1; sum=sum+value[i];8: ENDIF incrementiby1;9:ENDDO2023/1/1578大連理工大學軟件學院10:IFtotal_valid>011:THENaverage=sum/total_valid;12:ELSEaverage=-999;13:ENDIFENDaverage2023/1/1579大連理工大學軟件學院計算流圖的環形復雜度環形復雜度定量度量程序的邏輯復雜性。三種方法來計算環形復雜度。流圖中的區域數等于環形復雜度。流圖G的環形復雜度V(G)=E-N+2,其中E是流圖中邊的條數,N是流圖中節點數。流圖G的環形復雜度V(G)=P+1,其中P是流圖中判定節點的數目。使用上述任何一種方法,都可以計算出流圖的環形復雜度為6。2023/1/1580大連理工大學軟件學院確定線性獨立路徑的基本集合對于所描述的求平均值過程來說,由于環形復雜度為6,因此共有6條獨立路徑。例如,下面列出了6條獨立路徑:路徑1:1-2-10-11-13路徑2:1-2-10-12-13路徑3:1-2-3-10-11-13路徑4:1-2-3-4-5-8-9-2-路徑5:1-2-3-4-5-6-8-9-2-路徑6:1-2-3-4-5-6-7-8-9-2-2023/1/1581大連理工大學軟件學院設計可強制執行基本集合中每條路徑測試用例選取數據使得在測試每條路徑時都適當設置好了各個判定節點的條件。路徑1的測試用例:

value[k]=有效輸入值,其中k<i(i的定義在下) value[i]=-999,其中2≤i≤100

預期結果:基于k的正確平均值和總數 注意,路徑1無法獨立測試,必須作為路徑4、5和6的一部分來測試。路徑2的測試用例:

value[1]=-999

預期結果:average=-999,其他都保持初始值2023/1/1582大連理工大學軟件學院路徑4的測試用例:

value[i]=有效輸入值,其中i<100 value[k]<minimum,其中k<i

預期結果:其于k的正確平均值和總數路徑5的測試用例:

value[i]=有效輸入值,其中i<100 value[k]>maximum,其中k<i

預期結果:其于k的正確平均值和總數路徑6的測試用例:

value[i]=有效輸入值,其中i<100

預期結果:正確的平均值和總數2023/1/1583大連理工大學軟件學院黑盒測試技術黑盒測試著重測試軟件的功能需求,讓軟件工程師設計出能充分檢查程序所有功能需求的輸入條件集。黑盒測試并不能取代白盒測試技術,它是與白盒測試互補的方法,它很可能發現白盒測試不易發現的其他不同類型的錯誤。2023/1/1584大連理工大學軟件學院黑盒測試力圖發現下述類型的錯誤:①功能不正確或遺漏了功能;②界面錯誤;③數據結構錯誤或外部數據庫訪問錯誤;④性能錯誤;⑤初始化和終止錯誤。白盒測試在測試過程的早期階段進行,而黑盒測試主要用于測試過程的后期。黑盒測試故意不考慮程序的控制結構,而把注意力集中于信息域。2023/1/1585大連理工大學軟件學院等價劃分:確定輸入數據的有效等價類和無效等價類。邊界值分析錯誤推測2023/1/1586大連理工大學軟件學院面向對象基礎什么是對象技術基于對象概念的軟件開發方法對象包含有數據及處理數據的功能函數在分析、設計和實現的整個過程中只使用一個概念對象的開發方法能夠解決軟件危機中大多數問題的方法對象=數據+功能2023/1/1588大連理工大學軟件學院對象技術的優勢穩定:較小的需求變化不會導致系統結構大的改變舉例:某公司的銷售處理系統定單合同出費2023/1/1589大連理工大學軟件學院對象技術的優勢

穩定:數據和功能都打包在一起,從而改善軟件的再重用性軟件重用能提高質量,減少由于編制新的系統代碼而產生的成本File

MgrMacro

EditorMath

UtilitiesText

EditorPrint

UtilitiesFormat

EditorMenusString

UtilitiesSpreadsheetWordProcessorReusable-ComponentRepository2023/1/1590大連理工大學軟件學院對象技術的優勢面向對象的模型更加貼切地反映了現實世界更加準確地描述公共數據和過程易于理解,尤其對于使用者現實世界LaserPrinterExternalDriveComputer對象圖2023/1/1591大連理工大學軟件學院對象技術的優勢面向對象的方法支持大規模開發可以嚴格定義各個組件之間的交互減少內部的依賴關系減少集成的問題支持并行開發2023/1/1592大連理工大學軟件學院對象技術的優勢幫助開發多層結構

EquipmentandCustomerspecificCodeProcessesandotherapplicationcodeMajorabstractions,classes,etc.MechanismsH/Wspecificcode,O/Sspecificcodegeneral-purposecode12345ApplicationSpecificApplicationIndependentLessReuseMoreReuse2023/1/1593大連理工大學軟件學院面向對象概念Object對象Class類Instance實例State狀態Behavior行為Attribute屬性Operation操作(Method方法)Inheritance繼承Subclasses子類Superclasses父類Generalization普遍化Polymorphism多態2023/1/1594大連理工大學軟件學院面向對象概念Abstraction抽象Encapsulation封裝Association關聯Role角色Multiplicity多重性Aggregation聚合Dependencyassociation依賴Package包UseCase用例Scenario腳本Actor2023/1/1595大連理工大學軟件學院什么是對象一個對象代表了一個現實的或虛構的實體自然實體概念實體軟件實體化學過程連接顯示2023/1/1596大連理工大學軟件學院對象的屬性對象是應用中具有明顯邊界和含義的概念、抽象或事物一個對象有三個重要屬性:狀態行為標識術語“實例”是“對象”的同義詞2023/1/1597大連理工大學軟件學院對象的狀態一個對象的狀態是它反映于現實世界的一系列屬性:參數的數值(也就是,與對象有關系的數據)它與其它對象的關系任一時刻的歷史狀態可能的狀態: 停泊運營 著陸終止班機7472023/1/1598大連理工大學軟件學院對象的行為定義當其它對象發出請求時,該對象如何反應由為對象定義的一系列操作決定班機747核對出發時間(返回9:27)機票代理2023/1/1599大連理工大學軟件學院對象的標識每一個對象都有一個唯一的標識,即使其狀態有可能與其它對象一樣班機747on11/10班機747on11/11班機747on11/122023/1/15100大連理工大學軟件學院什么是類(Class)

類是一組具有相同結構和行為的對象的集合共同的結構通過屬性表現出來(i.e.數據)共同的行為通過操作表現出來(i.e.功能)班機747結構班機號日期分配的班機起點終點狀態行為裝載設備起飛延遲取消終止2023/1/15101大連理工大學軟件學院類的示例ClassEmployeeStructureNameAddressPositionSalaryStartDateEndDateBehaviorHireFirePromoteIncreaseSalaryRetire2023/1/15102大連理工大學軟件學院類圖:用來表達類類圖是一種主要的圖形化對象表示法類圖顯示類及類之間的關系一個類通過在類圖標中的類名(唯一的)來代表班機2023/1/15103大連理工大學軟件學院屬性屬性是類的特征或特性屬性的值是某一特定對象的屬性值在類中屬性名必須是唯一的每一個類的實例都有為這個類定義的所有屬性的值例如:銀行帳戶類屬性帳號銀行名稱擁有者金額Mary的銀行帳戶屬性值12345678FirstNationalBankMarySmith$1024.482023/1/15104大連理工大學軟件學院操作對象的行為是由為此對象定義的一系列操作決定的操作訪問或修改對象的屬性值一個類可能同時存在多個實例,也可能在某一時刻沒有實例一個類的所有實例都可以使用在這個類中定義的操作2023/1/15105大連理工大學軟件學院屬性和操作的標記法在類的圖標中描述屬性和操作通常只顯示最重要的屬性和操作,避免圖形混亂屬性顯示在操作上方,操作的名字后跟有()班機flightNumberdatedeparturetimestatusrelease()takeOff()屬性操作2023/1/15106大連理工大學軟件學院類是生成對象的模板類是生成對象的模板類的定義中包含有產生和刪除對象的操作屬性顯示在操作上方,操作的名字后跟有()一個類定義了使用哪種數據表示法來描述屬性每一個實例都采用有屬性值的數據表示法一個類通過一系列操作來定義行為這種操作能在每個實例中激活班機Flight187Flight121Flight7472023/1/15107大連理工大學軟件學院類和對象的關系每一個對象都是某一個類的實例每一個類在某一時刻都有零個或更多的實類是靜態的;它們的存在、語義和關系在序執行前就已經定義好了對象是動態的;它們在程序執行時可以被建和刪除2023/1/15108大連理工大學軟件學院關系所有的系統都包含了大量的類和對象對象通過與其它對象的協作完成系統的功能行為.協作通過關系來實現幾種重要的關系類型:關聯聚合依賴繼承2023/1/15109大連理工大學軟件學院示例:關聯在一個工資系統中有下面兩個類:關聯表示了雙向的關系,例如:給出一個Person的實例,我們能夠知道他屬于哪家公司給出一個Company的實例,我們能夠知道在其中工作的所有人PersonCompany2023/1/15110大連理工大學軟件學院關聯的多重性多重性是指多個實例參與一個關聯多重性通過位于關聯線某一端的一個表達式或符號來表示對于每個關聯關系,需要做出兩個多重性的決定例如,在公司和職員的關聯中每個公司可以雇用多個職員每個職員只有一個從屬公司2023/1/15111大連理工大學軟件學院示例:關聯的多重性多重性決定可以揭示建模過程中隱藏的問題職員會不會失業?公司能不能沒有職員?一個職員能不能有兩份工作?職員職員雇主公司1..*12023/1/15112大連理工大學軟件學院常用的多重性表示法多重性能解決兩個問題關聯是強制的(不包含零個)或隨意的(包含零個)?一個實例可以連接的其它實例的最大數目?常用的多重性表示法:1 只有一個0..* 零或更多1..* 一個或更多0..1 零或一個* 零或更多3..7 指定的范圍(3or4or5or6or7)1..3,7 結合使用(1or2or3or7)2023/1/15113大連理工大學軟件學院自反關聯自反關聯指同一個類中的對象的關系表示同一個類中多個對象的協作Acoursemayhave manypre-requisitesAcoursemaybeapre-requisite formanyothercoursesPre-requisiteCourse0..*0..*2023/1/15114大連理工大學軟件學院聚合(包含)聚合是一種特殊的關聯,體現整體和部分的關系聚合是一種“has-a”或包含的關系同樣可以使用多重性CompanyDepartment1..*12023/1/15115大連理工大學軟件學院依賴依賴表示一個對象需要其它對象為其提供服務又可稱為client-supplier關系

client使用supplier提供的服務

supplier不需要了解client(s)

單向關系ControllerDisplayItemcontrols2023/1/15116大連理工大學軟件學院繼承繼承表示一個類從其它類中獲得結構和行為(子類/父類)又名普遍化交通工具是一個父類地面交通工具和空中交通工具是子類VehicleGroundVehicleAirVehicleThearrowpointstowardthesuperclass2023/1/15117大連理工大學軟件學院繼承繼承表示子類從父類繼承時抽象的層次單繼承:子類只從一個父類繼承多繼承:子類從多于一個的父類繼承繼承通常被稱為“is-a”或“kind-of”

一個子類的實例也“isa”父類的實例一個子類的實例是“kind-of”父類2023/1/15118大連理工大學軟件學院多層次ACarisakindofGroundVehiclewhichisakindofVehicleVehicleandAirVehicleareancestorsofAirplaneAirVehicleandAirplanearedescendantsofVehicleVehicleGroundVehicleAirVehicleCarTruckAirplaneHelicopter2023/1/15119大連理工大學軟件學院繼承的內容屬性操作關系約束繼承平衡類之間的共同之處2023/1/15120大連理工大學軟件學院繼承屬性屬性在繼承結構的最高一層定義所有子類的實例能夠繼承這些屬性每個子類可以增加或重新定義繼承的屬性;但在修改是要加倍注意GroundVehiclelicenseNumberweightCarTrucktonnageAtruckhasthreeattributes:licenseNumberweighttonnage2023/1/15121大連理工大學軟件學院繼承操作屬性在繼承結構的最高一層定義所有子類的實例能夠繼承這些操作每個子類可以增加或重新定義繼承的屬性GroundVehiclelicenseNumberweightregister()CarTrucktonnagecalculateTax()Atruckhasthreeattributes:licenseNumberweighttonnageandtwooperations:registercalculateTax2023/1/15122大連理工大學軟件學院繼承關系關系也可以繼承每個子類都可以分享繼承的關系GroundVehiclelicenseNumberweightregister()AtruckhasanownerCarTrucktonnagecalculateTax()OwnerPerson1..*andacarhasanowner12023/1/15123大連理工大學軟件學院對象模型化技術OMT對象模型化技術把分析時收集的信息構造在三類模型中,即對象模型、功能模型和動態模型。這個模型化的過程是一個迭代過程。2023/1/15124大連理工大學軟件學院基于三個模型的分析過程功能模型著重于系統內部數據的傳送和處理。功能模型定義“做什么”動態模型

溫馨提示

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

評論

0/150

提交評論