《軟件工程教學》04_概要設計ppt課件_第1頁
《軟件工程教學》04_概要設計ppt課件_第2頁
《軟件工程教學》04_概要設計ppt課件_第3頁
《軟件工程教學》04_概要設計ppt課件_第4頁
《軟件工程教學》04_概要設計ppt課件_第5頁
已閱讀5頁,還剩37頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、大連理工大學軟件學院軟件工程;2021-9-12;2第第4章章 類的概要設計類的概要設計 對未來系統的功能進展總體上的概括并運用對未來系統的功能進展總體上的概括并運用UML的類圖進展表達。的類圖進展表達。 在開場階段粗略的對模型進展構建,后續再經過在開場階段粗略的對模型進展構建,后續再經過迭代逐級詳細化,是一個逐漸求精的設計過程。迭代逐級詳細化,是一個逐漸求精的設計過程。 初始類圖要覆蓋一切需求的功能,并經過優化盡初始類圖要覆蓋一切需求的功能,并經過優化盡量堅持業務構造的穩定,然后經過修訂和豐富細量堅持業務構造的穩定,然后經過修訂和豐富細節逐漸過渡到詳細設計,并最終轉化為勝利的物節逐漸過渡到詳

2、細設計,并最終轉化為勝利的物理實現。理實現。2021-9-12;3系統架構系統架構 概要設計要滿足系統架構方面的要求。概要設計要滿足系統架構方面的要求。 系統架構的約束和其它在非功能性需求在概要設系統架構的約束和其它在非功能性需求在概要設計中要同時思索,以保證未來的系統可以滿足這計中要同時思索,以保證未來的系統可以滿足這些要求。些要求。 指定的硬件指定的硬件 指定的操作系統指定的操作系統 指定的中間件指定的中間件 指定的接口或編程言語指定的接口或編程言語 指定的耐久化框架指定的耐久化框架 等等根本類確實定根本類確實定 設計階段的主要義務是從需求分析階段的設計階段的主要義務是從需求分析階段的規格

3、闡明出發,對系統進展模型表示并優規格闡明出發,對系統進展模型表示并優化。化。 面向對象的概要設計首先尋覓系統中參與面向對象的概要設計首先尋覓系統中參與業務處置的對象和類。業務處置的對象和類。 然后運用類圖然后運用類圖Class Diagram將系統中將系統中不同的類籠統出來描畫系統的靜態構造,不同的類籠統出來描畫系統的靜態構造,包括類以及它們之間的關系。包括類以及它們之間的關系。2021-9-12;4類及其種類類及其種類在系統分析與設計階段,類通常可以分為三種,分別是實體類在系統分析與設計階段,類通常可以分為三種,分別是實體類Entity Class、控制類、控制類Control Class和

4、邊境類和邊境類Boundary Class:實體類:對應需求中的實體,通常需求永久保管,普通運用數實體類:對應需求中的實體,通常需求永久保管,普通運用數據庫表或文件來記錄,既包括存儲和傳送數據的類,還包括操據庫表或文件來記錄,既包括存儲和傳送數據的類,還包括操作數據的類。名詞作數據的類。名詞控制類:用于表達運用程序的執行邏輯,提供相應的業務操作控制類:用于表達運用程序的執行邏輯,提供相應的業務操作,籠統控制類可以降低界面和數據庫之間的耦合度。控制類有,籠統控制類可以降低界面和數據庫之間的耦合度。控制類有時也稱為管理類。動賓時也稱為管理類。動賓邊境類:邊境類用于對外部用戶與系統之間的交互對象進展

5、籠邊境類:邊境類用于對外部用戶與系統之間的交互對象進展籠統,主要包括界面類,如對話框、窗口、菜單等。統,主要包括界面類,如對話框、窗口、菜單等。在分析設計初始,通常首先識別出實體類,繪制初始類圖,也在分析設計初始,通常首先識別出實體類,繪制初始類圖,也可稱為領域模型。可稱為領域模型。2021-9-12;5類的識別類的識別 類的尋覓和細化是迭代的過程,不斷補充新類及類的尋覓和細化是迭代的過程,不斷補充新類及信息并逐漸擴展,最后開展為更多的類和實例變信息并逐漸擴展,最后開展為更多的類和實例變量。量。 需求規格闡明書是尋覓業務類的直接來源。需求規格闡明書是尋覓業務類的直接來源。 一種比較快速而適用的

6、分析方法是按照語法分析一種比較快速而適用的分析方法是按照語法分析的方式將名詞作為對象的候選,描畫詞作為屬性的方式將名詞作為對象的候選,描畫詞作為屬性實例變量的候選進展重點關注。實例變量的候選進展重點關注。 業務術語詞匯表也是類信息的重要來源,這些與業務術語詞匯表也是類信息的重要來源,這些與業務術語相關的類通常為實體類。業務術語相關的類通常為實體類。2021-9-12;6舉例舉例 R1.1 工程創建:在工程編輯中系統必需提供應用工程創建:在工程編輯中系統必需提供應用戶新工程的創建以及為其指定詳細工程信息的功戶新工程的創建以及為其指定詳細工程信息的功能。能。 詞匯詞匯“工程信息:自動生成的獨一工程

7、編號、工工程信息:自動生成的獨一工程編號、工程稱號、工程起止時間、估計任務量。程稱號、工程起止時間、估計任務量。 在初次的迭代中主要關注的是類及其屬性。經過在初次的迭代中主要關注的是類及其屬性。經過以上需求和詞匯描畫的分析,下面的內容會被首以上需求和詞匯描畫的分析,下面的內容會被首先識別出來:工程類,含有工程編號、工程稱號先識別出來:工程類,含有工程編號、工程稱號、工程起止時間以及估計任務量等屬性。、工程起止時間以及估計任務量等屬性。2021-9-12;7 R1.4 子工程創建:工程選定后,系統需求提供應子工程創建:工程選定后,系統需求提供應用戶為所選工程創建子工程的時機。用戶為所選工程創建子

8、工程的時機。 子工程為工程的一個實例變量,并最終能夠成為子工程為工程的一個實例變量,并最終能夠成為一個新的子工程類,可以將其暫記為一個備選類一個新的子工程類,可以將其暫記為一個備選類。 R1.5 子工程與工程:在工程編輯過程中,系統對子工程與工程:在工程編輯過程中,系統對子工程的處置方式與工程應該是一樣的,對工程子工程的處置方式與工程應該是一樣的,對工程提供的編輯功能子工程也必需具有。提供的編輯功能子工程也必需具有。 子工程與工程是同義詞,所以子工程不需求單獨子工程與工程是同義詞,所以子工程不需求單獨設置一個類而存在。設置一個類而存在。 對于同義詞有對于同義詞有“異形同義的情況,還有異形同義的

9、情況,還有“同形異同形異義的情況,這在需求分析階段曾經進展了標識義的情況,這在需求分析階段曾經進展了標識。2021-9-12;8 R1.6 工程數據編輯:工程選定后,系統應提供應用工程數據編輯:工程選定后,系統應提供應用戶對該工程數據編輯的功能,包括實踐開場時間、最戶對該工程數據編輯的功能,包括實踐開場時間、最新計算出的終了時間、估計任務量以及工程備注等。新計算出的終了時間、估計任務量以及工程備注等。 可發現以下信息:工程類的實例變量還應包括實踐開可發現以下信息:工程類的實例變量還應包括實踐開場時間、最新計算的終了時間、備注。場時間、最新計算的終了時間、備注。 R1.7 工程義務添加:工程選定

10、后,系統必需提供應工程義務添加:工程選定后,系統必需提供應用戶對該工程添加詳細義務的定義,包括:義務稱號用戶對該工程添加詳細義務的定義,包括:義務稱號、方案開場和終了時間、人員安排以及該義務的估計、方案開場和終了時間、人員安排以及該義務的估計任務量等內容。任務量等內容。 詞匯詞匯“工程義務:工程中包含的原子義務,具有稱工程義務:工程中包含的原子義務,具有稱號以及與詳細的責任人對應,具有可量化的任務量比號以及與詳細的責任人對應,具有可量化的任務量比例,具有方案與實踐任務量、方案與實踐的開場和終例,具有方案與實踐任務量、方案與實踐的開場和終了時間以及完成進度等屬性,是不可再分的工程管理了時間以及完

11、成進度等屬性,是不可再分的工程管理單元。單元。2021-9-12;9 詞匯詞匯“完成進度:每次編輯操作后對工程義務的完成進度經過完成進度:每次編輯操作后對工程義務的完成進度經過百分數進展標識。此數字在普通情況下應呈一種遞增的線性的增百分數進展標識。此數字在普通情況下應呈一種遞增的線性的增長方式。工程的進度是根據其子工程以及義務的進度,以估計任長方式。工程的進度是根據其子工程以及義務的進度,以估計任務量值作為權重計算出來的。務量值作為權重計算出來的。 詞匯詞匯“任務量:每次編輯操作為工程義務記錄此義務破費的時任務量:每次編輯操作為工程義務記錄此義務破費的時間小時。整個工程的任務量根據每個子工程和

12、義務的任務量間小時。整個工程的任務量根據每個子工程和義務的任務量進展核算。進展核算。 發現的信息:工程類的發現的信息:工程類的“義務屬性、工程義務新類及其屬性:義務屬性、工程義務新類及其屬性:稱號、責任人、任務量比例、方案的任務量、實踐任務量、方案稱號、責任人、任務量比例、方案的任務量、實踐任務量、方案和實踐的開場時間、方案和實踐的終了時間、完成進度比例。和實踐的開場時間、方案和實踐的終了時間、完成進度比例。 工程類的實例對象同樣也具有完成進度比例以及實踐任務量等屬工程類的實例對象同樣也具有完成進度比例以及實踐任務量等屬性,即使它的值可以經過其它相關子工程或者子義務完全計算出性,即使它的值可以

13、經過其它相關子工程或者子義務完全計算出來。把這樣的屬性稱為依賴屬性。對于工程屬性來。把這樣的屬性稱為依賴屬性。對于工程屬性“義務的另外義務的另外的特殊之處在于其取值的數量可以是多個或者在少數的時候取空的特殊之處在于其取值的數量可以是多個或者在少數的時候取空值,不像其它屬性只能取一個單一的值。值,不像其它屬性只能取一個單一的值。2021-9-12;10初始類圖初始類圖 類名類名 實例變量實例變量 可見性可見性 +, -, *, 依賴計算屬依賴計算屬性性 類型可忽略類型可忽略 UML預定義預定義 編程言語提供編程言語提供2021-9-12;11-projectNo : int-projectNam

14、e : String-startPlanned : Date-endPlanned : Date-effortPlanned : int-subprojects : Collection(Project)-startReal : Date-endReal : Date-comment : String-tasks : Collection(ProjectTask)- / compeletePct : int- / effortReal : int-predecessor : Collection(Project)Project-TaskName : String-pInCharge : Emp

15、loyee-laborShare : int-startPlanned : Date-endPlanned : Date-effortPlanned : int-startReal : Date-endReal : Date-effortReal : int-compeletePct : intProjectTask類的關系類的關系 關聯關系關聯關系, Association, 靜態,擁有靜態,擁有 導航方向導航方向, Navigation 依賴關系依賴關系, Dependency 應防止雙向應防止雙向依賴依賴2021-9-12;12-projectNo : int-projectName :

16、 String-startPlanned : Date-endPlanned : Date-effortPlanned : int-startReal : Date-endReal : Date-comment : String- / compeletePct : int- / effortReal : intProject-TaskName : String-laborShare : int-startPlanned : Date-endPlanned : Date-effortPlanned : int-startReal : Date-endReal : Date-effortReal

17、: int-compeletePct : intProjectTaskEmployee-pInCharge*1-subprojects0.1*-tasks0.1*-predecessor*屬性屬性“義務其實無需顯式的給出,由義務其實無需顯式的給出,由于它可以間接的經過與義務類之間的關于它可以間接的經過與義務類之間的關聯關系進展表達。聯關系進展表達。自反關聯自反關聯reflexiveClass or String?關聯關系的基數多重性關聯關系的基數多重性 “*:恣意多個包括:恣意多個包括0個對象個對象 “1:只需:只需1個對象個對象 “3:正好:正好3個對象個對象 “1.*:最少:最少1個,也能

18、夠為多個對象個,也能夠為多個對象 “3.*:至少:至少3個,也能夠為多個對象個,也能夠為多個對象 “0.1:0或或1個對象個對象 “3.7:3到到7個對象個對象2021-9-12;13對象與類對象與類 系統中的每個對象在表示上具有獨一的標識系統中的每個對象在表示上具有獨一的標識ID以以及經過其屬性進展描畫。及經過其屬性進展描畫。 比如一個詳細的工程名字為比如一個詳細的工程名字為“考勤系統,工程考勤系統,工程經理名經理名“王楠,工程開場日期王楠,工程開場日期“2021年年10月月20日。這些屬性稱為實例變量日。這些屬性稱為實例變量instance variable或屬性或屬性attribute。

19、 同類對象的共同構造可經過類進展闡明,除了類同類對象的共同構造可經過類進展闡明,除了類名外,一切的實例變量都可包含在類中作為類的名外,一切的實例變量都可包含在類中作為類的初始信息。因此對于初始信息。因此對于“工程類來說,它是一切工程類來說,它是一切詳細詳細“工程對象的一個模板。工程對象的一個模板。2021-9-12;14對象與類的表示對象與類的表示 銜接類與對象間的銜接類與對象間的實線,表示類圖中實線,表示類圖中關聯關系的實例化關聯關系的實例化 對象名對象名:類的類型類的類型 實例變量的初始值實例變量的初始值2021-9-12;15-projectNo : int-projectName :

20、String-startPlanned : Date-endPlanned : Date-effortPlanned : int-startReal : Date-endReal : Date-comment : String- / compeletePct : int- / effortReal : intProjectprojectNo = 001projectName = AcadDrawstartPlanned = 2014.10.20endPlanned = 2015.12.31effortPlanned = 1000startReal = nullendReal = nullcom

21、ment = in planningAcadDraw : Project類的細化類的細化 在下一輪的迭代中,將重新審視并分析需在下一輪的迭代中,將重新審視并分析需求陳說和詞匯表中提到的功能與對象之間求陳說和詞匯表中提到的功能與對象之間的對應關系。的對應關系。 除了實例變量的闡明,類中還包含方法,除了實例變量的闡明,類中還包含方法,又稱為操作或對象功能,它們為業務計算又稱為操作或對象功能,它們為業務計算或對實例變量值的讀寫提供了效力。或對實例變量值的讀寫提供了效力。 一個對象中一切實例變量值的組合構成了一個對象中一切實例變量值的組合構成了該類的形狀集合。該類的形狀集合。2021-9-12;16方

22、法和管理類方法和管理類 訪問和修正方法,不涉及業務,在分析模型中通常不思索訪問和修正方法,不涉及業務,在分析模型中通常不思索,實現階段再思索。,實現階段再思索。 對象通常還提供了只需經過內部信息,照實例變量,對業對象通常還提供了只需經過內部信息,照實例變量,對業務數據進展計算的方法。務數據進展計算的方法。 如方法如方法computeAllocatedEffort(),計算曾經對工程中的義,計算曾經對工程中的義務和子工程分配的任務量。務和子工程分配的任務量。 對于同類對象的協調和管理通常運用一個管理類,主要擔對于同類對象的協調和管理通常運用一個管理類,主要擔任對對象的創建、代理訪問其它對象的信息

23、等。任對對象的創建、代理訪問其它對象的信息等。 管理類必需可以提供所管轄一切對象一致的處置方式。管理類必需可以提供所管轄一切對象一致的處置方式。2021-9-12;17管理類的識別管理類的識別 普通方法:先對一切的用例進展分析,對普通方法:先對一切的用例進展分析,對每個用例對應產生一個管理類,用來對該每個用例對應產生一個管理類,用來對該場景中需求的對象進展管理和協調。場景中需求的對象進展管理和協調。 管理類每次思索一個義務,只向管理類添管理類每次思索一個義務,只向管理類添加與該義務相關的方法和方法需求的實例加與該義務相關的方法和方法需求的實例變量。變量。 類與類之間盡能夠堅持較少的聯絡,這樣類

24、與類之間盡能夠堅持較少的聯絡,這樣可以降低接口的數量。可以降低接口的數量。2021-9-12;18進一步識別和補充類及方法進一步識別和補充類及方法 R1.4 子工程創建:工程選定后,系統需求提供應用戶為子工程創建:工程選定后,系統需求提供應用戶為所選工程創建子工程的時機。所選工程創建子工程的時機。 集合的常用操作集合的常用操作add和和delete方法對元素添加和刪除。對于方法對元素添加和刪除。對于本需求,需求在工程類中參與一個函數本需求,需求在工程類中參與一個函數addSubproject(Project): void,并商定假設前往值為空值,并商定假設前往值為空值表示創建子工程的過程沒有勝

25、利完成。表示創建子工程的過程沒有勝利完成。 R1.10 對其它工程的依賴:工程選定后,系統必需提供應對其它工程的依賴:工程選定后,系統必需提供應用戶對該工程與其它子工程的依賴情況的編輯操作,用戶對該工程與其它子工程的依賴情況的編輯操作,比如在哪些工程終了后該工程才干啟動。比如在哪些工程終了后該工程才干啟動。 工程類應具有方法工程類應具有方法addPredecessor(Project):void。2021-9-12;192021-9-12;20-projectNo : int-projectName : String-startPlanned : Date-endPlanned : Date-

26、effortPlanned : int-startReal : Date-endReal : Date-comment : String- / compeletePct : int- / effortReal : int+Project(String, Date, Date, int)+addSubproject(Project) : void+addTask(ProjectTask) : void+compeletePctCompute() : double+realEffortCompute() : int+effortToAllocate() : int+addPredecessor(P

27、roject) : void+testEffortModification(int) : bool+testEffortModification(ProjectTask, int) : boolProject-TaskName : String-laborShare : int-startPlanned : Date-endPlanned : Date-effortPlanned : int-startReal : Date-endReal : Date-effortReal : int-compeletePct : int+ProjectTask(String, Date, Date, in

28、t, int)ProjectTaskEmployee-subprojects0.1*-predecessor*-tasks1*-pInCharge1+inconsistentUpdateNotify(reason : String) : voidProjectMan1-projects*0.1-selectedProject0.1-parent0.1-selectedTask0.1迭代后的類圖迭代后的類圖類圖的不同表示方式類圖的不同表示方式2021-9-12;21PointxyPoint-x : int-y : intPoint-x : int-y : int+Point(int, int)+

29、isNull() : bool+moveto(int, int) : void+distance() : doublePoint-x : int-y : int+Point(x : int, y : int)+isNull() : bool+moveto(xdir : int, ydir : int) : void+distance() : doublePoint2維平面上的坐標點, 能夠按指定方向進行 移動或者計算離原點 距離。2021-9-12;22-projectNo : int-comment : String- / compeletePct : int- / effortReal :

30、 int+Project(String, Date, Date, int)+addSubproject(Project) : void+addTask(4.5.ProjectTask) : void+compeletePctCompute() : double+realEffortCompute() : int+effortToAllocate() : int+addPredecessor(Project) : void+testEffortModification(int) : bool+testEffortModification(4.5.ProjectTask, int) : boolP

31、roject-laborShare : int-effortReal : int-compeletePct : int+ProjectTask(String, Date, Date, int, int)ProjectTaskEmployee+inconsistentUpdateNotify(reason : String) : voidProjectMan-parent-subprojects0.1*-predecessor*-tasks*1-selectedTask0.10.1*-pInCharge1-projects1*-selectedProject0.10.1#name : Strin

32、g#startPlanned : Date#endPlanned : Date#effortPlanned : int#startReal : Date#endReal : DateProjectComponent利用籠統類利用籠統類隔離變化隔離變化利用泛利用泛化進展化進展重用重用優化可以提高模型的易了解性優化可以提高模型的易了解性沒有方法和實例變量的類將會被刪除掉沒有方法和實例變量的類將會被刪除掉復雜功能的拆分復雜功能的拆分設計優化設計優化枚舉類枚舉類 假設一個變量的取值是某個有假設一個變量的取值是某個有限集合中的數據,如限集合中的數據,如“紅色紅色、“黃色,黃色,“綠色等,應綠色等,應該運

33、用一種叫做枚舉的類型而該運用一種叫做枚舉的類型而不是直接運用不是直接運用String類型。類型。 如圖中所示的枚舉類,其具有如圖中所示的枚舉類,其具有一個構外型一個構外型描描畫,在它的實例變量部分例舉畫,在它的實例變量部分例舉的數據為該類型能夠的取值。的數據為該類型能夠的取值。2021-9-12;23redyellowgreenLightColor運用順序圖進展驗證運用順序圖進展驗證 當初始版本的分析類圖完好的構建出來后,需求確認當初始版本的分析類圖完好的構建出來后,需求確認能否需求中的一切信息在模型中都得到了表達而沒有能否需求中的一切信息在模型中都得到了表達而沒有脫漏。脫漏。 為進展這樣的驗

34、證,可運用為進展這樣的驗證,可運用UML中的順序圖對需求中的順序圖對需求場景中涉及到的不同對象之間的交互過程進展建模。場景中涉及到的不同對象之間的交互過程進展建模。 類圖在類圖在UML中是一種靜態圖,由于描畫了系統的功中是一種靜態圖,由于描畫了系統的功能側面,而基于類圖的順序圖可以用來設計對象之間能側面,而基于類圖的順序圖可以用來設計對象之間的動態交互過程,描畫對象之間的過程調用順序和關的動態交互過程,描畫對象之間的過程調用順序和關系。系。 經過順序圖可以用來檢驗類圖中闡明的功能能否可以經過順序圖可以用來檢驗類圖中闡明的功能能否可以實現活動圖中描畫的功能需求。實現活動圖中描畫的功能需求。202

35、1-9-12;24順序圖順序圖 對象軸、時間軸對象軸、時間軸 同步伐用的方式同步伐用的方式和表示和表示 生命線、控制焦生命線、控制焦點激活區域點激活區域 同樣可以運用通同樣可以運用通訊圖協作圖訊圖協作圖進展交互建模進展交互建模2021-9-12;25object2 : Class2object1 : Class1y=5methodx(45,x)y=methodx(45,x)methodx(45,x)通訊圖通訊圖 對象表示方式一樣,對象間的關聯對象表示方式一樣,對象間的關聯 音訊發送的順序、嵌套和表示音訊發送的順序、嵌套和表示 關注對象間關聯構造,與順序圖等價關注對象間關聯構造,與順序圖等價20

36、21-9-12;26C : C3B : C2A : C1n2()z=m3(y)yy=n1()m2(x)x=m1()A : C1B : C2C : C31: x=m1()2: m2(x)2.1: y=n1()2.2: y3: z=m3(y)3.1: n2()對象的創建與刪除對象的創建與刪除 左圖是對象的創建過程,箭頭所指是一個新創建的對左圖是對象的創建過程,箭頭所指是一個新創建的對象,留意此對象名并不在最上方的位置出現。象,留意此對象名并不在最上方的位置出現。 右圖是對象的刪除過程,經過在生命線上的右圖是對象的刪除過程,經過在生命線上的X符號表符號表示對象在內存中被回收。示對象在內存中被回收。2

37、021-9-12;27創建的對象ob2 : Class2ob1 : Class1create需要刪除的對象ob2 : Class2ob1 : Class1delete構造表示構造表示順序圖某些部分運用矩形框封鎖描畫,左上角指定一種處置方式。順序圖某些部分運用矩形框封鎖描畫,左上角指定一種處置方式。 “opt為可選的內容,表示在滿足方括號條件的情況下,對應部分為可選的內容,表示在滿足方括號條件的情況下,對應部分就會被執行,否那么跳過。就會被執行,否那么跳過。“alt對多分支的條件進展選擇,矩形框內各分支用虛線分割。每個對多分支的條件進展選擇,矩形框內各分支用虛線分割。每個分支一個布爾條件,應彼此

38、排斥。分支一個布爾條件,應彼此排斥。“loop為循環構造,這里必需清楚的給出循環執行的參數,如循環為循環構造,這里必需清楚的給出循環執行的參數,如循環次數和終了條件。次數和終了條件。2021-9-12;28opti=0ob2 : Class2ob1 : Class1do2( )loop (start, end,condition)ob2 : Class2ob1 : Class1do2( )altelsei0 & j=2i=0ob2 : Class2ob1 : Class1do3( )do2( )do1( )驗證方法驗證方法 對于每個活動圖的過對于每個活動圖的過程嘗試運用一個順序程嘗試運用一個順

39、序圖進展描畫。圖進展描畫。 圖中活動圖存在圖中活動圖存在3個個過程,驗證的目的是過程,驗證的目的是要確保每條活動圖中要確保每條活動圖中的邊都要被執行到。的邊都要被執行到。 為使子過程不用多次為使子過程不用多次在每個順序圖中反復在每個順序圖中反復描畫,可以對一個或描畫,可以對一個或多個動作創建子圖。多個動作創建子圖。2021-9-12;29驗證的作用驗證的作用 將需求中重點描畫的過程進展建模,包括將需求中重點描畫的過程進展建模,包括對新對象的創建過程。對新對象的創建過程。 確保一切的功能需求在分析模型中都得到確保一切的功能需求在分析模型中都得到了表達,而非功能性需求那么主要是在系了表達,而非功能

40、性需求那么主要是在系統架構中表達。統架構中表達。 分析類模型和順序模型的構建也是迭代的分析類模型和順序模型的構建也是迭代的過程,完善順序圖時能夠會發現新的必要過程,完善順序圖時能夠會發現新的必要的類方法,從而對類圖也進展了補充。的類方法,從而對類圖也進展了補充。2021-9-12;30舉例舉例2021-9-12;31tpa : ProjectTasktpr : ProjectTasktp : Projectpr : Project: ProjectMansetComment(Example Project)addTask(tpa)addTask(tpr)addSubproject(tp)tpa

41、=new ProjectTask(Analysis,2015.1.1,2015.4.1,100,200)tpr=new ProjectTask(RS,2014.11.1,2014.12.31,100,200)tp=new Project(P11,2014.10.28,2015.6.14,300)pr=new Project(P1,2014.10.28,2015.12.31,1000)新工程的創建過程新工程的創建過程自調用類內的私有自調用類內的私有方法方法工程管理對象可工程管理對象可以是包含在圖形以是包含在圖形界面中的一個對界面中的一個對象象圖形界面中的對圖形界面中的對象逐漸補充,由象逐漸補充,

42、由于與編程言語相于與編程言語相關關舉例舉例 由外部推進的工程創建由外部推進的工程創建 無法準確命名和識別動作的對象,用無法準確命名和識別動作的對象,用“extern對象表示對象表示 外部外部extern類運用了角色的圖標,這是為了可以明晰的闡類運用了角色的圖標,這是為了可以明晰的闡明此外部類并不屬于系統相關的業務類。明此外部類并不屬于系統相關的業務類。2021-9-12;32sel : Projectpr : Project: ProjectManExternaddSubproject(pr)pr=new Project(P1,2014.10.28,2015.12.31,1000)sel=ge

43、tSelectedProject( )2021-9-12;33elsealt左面項目的父項目newvalue = newvalue-effortPlannedaltelsenewvalue = v: Project: Project: ProjectManfalsetruefalsetruev=effortToAllocate( )plan=getEffortPlanned( )v=effortToAllocate( )testEffortModification(newvalue) 工程任務量的修工程任務量的修正正 減少工程的任務減少工程的任務量,要對其子工量,要對其子工程和義務的任務程和義

44、務的任務量進展檢查量進展檢查 首先總體上進展首先總體上進展確認,任務量的確認,任務量的新值能否小于原新值能否小于原始的方案任務量始的方案任務量值值舉例舉例2021-9-12;34altelseeffortPlanned - v = newvalue - planpt : ProjectTask: Project: ProjectManfalsetruev=effortToAllocate( )plan=getEffortPlanned( )testEffortModification(pt, newvalue) 義務任務量義務任務量的修正的修正舉例舉例完成進度的計算完成進度的計算effortT

45、oAllocate( )2021-9-12;35loop (for all subprojects)loop (for all tasks): ProjectTask: Project: Project: ProjectMangetCompeletePct( )compeletePctCompute( )compeletePctCompute( )1.為計算整個工程為計算整個工程的完成進度,需的完成進度,需求逐個確定每個求逐個確定每個子工程的完成進子工程的完成進度。度。2.遞歸的運用在這遞歸的運用在這里沒有問題,由里沒有問題,由于工程只能作為于工程只能作為獨一工程的子工獨一工程的子工程,是一個

46、樹構程,是一個樹構造而不是一個圖造而不是一個圖構造。構造。3.下一步確定每個義務的完成進度以及由這下一步確定每個義務的完成進度以及由這些前往的結果確定工程總體的完成進度。些前往的結果確定工程總體的完成進度。其前往值沒有顯式的給出。其前往值沒有顯式的給出。界面類設計界面類設計 界面設計的根本要求是:經過界面使得模型中含有的類的界面設計的根本要求是:經過界面使得模型中含有的類的某些部分對外部可見,比如用戶經過界面可進展業務內容某些部分對外部可見,比如用戶經過界面可進展業務內容的修正或訪問,即包括人機交互界面。的修正或訪問,即包括人機交互界面。 界面類設計通常可推遲進展,由于可以直接運用現成的類界面

47、類設計通常可推遲進展,由于可以直接運用現成的類庫中的模型,采用不同的類庫對整體的類設計會有很大的庫中的模型,采用不同的類庫對整體的類設計會有很大的影響。影響。 對現有的類模型補充對應的界面描畫,一個直接的方法就對現有的類模型補充對應的界面描畫,一個直接的方法就是對于每個類補充一個對應的接口,使得它向外部提供可是對于每個類補充一個對應的接口,使得它向外部提供可訪問的信息。訪問的信息。 對于工程類可設置一個對于工程類可設置一個ProjectMask界面,對外提供工程界面,對外提供工程創建和修正的操作;運用一個界面控制類創建和修正的操作;運用一個界面控制類GUIControl,控制當前哪個類的界面類

48、處于運用形狀。控制當前哪個類的界面類處于運用形狀。2021-9-12;362021-9-12;37-projectNo : int-comment : String- / compeletePct : int- / effortReal : int+Project(String, Date, Date, int)+addSubproject(Project) : void+addTask(ProjectTask) : void+compeletePctCompute() : double+realEffortCompute() : int+effortToAllocate() : int+ad

49、dPredecessor(Project) : void+testEffortModification(int) : bool+testEffortModification(ProjectTask, int) : boolProject+Enter ProjectData()+Modify ProjectData()+Query ProjectData()ProjectMask+Create NewProject()+Edit ProjectData()+Manage Project()GUIControl+Select Project()+Add Subproject()+Remove Su

50、bproject()ProjectManMask+inconsistentUpdateNotify(reason : String) : void+getProjectAt(position : int) : ProjectProjectMan0.1controlscontrolscontrolscontrols用例用例“工程編輯中的界面工程編輯中的界面類類界面類的方法沒有參數,只界面類的方法沒有參數,只需一個簡要的描畫,對應著需一個簡要的描畫,對應著該對象的職責。該對象的職責。也暗示需求的參數主要是在也暗示需求的參數主要是在外部功能中進展的初始化,外部功能中進展的初始化,比如輸入框。比如輸入框。界面規劃相關的類界面規劃相關的類沒有參與。沒有參與。界面類主要來源為界面類主要來源為類型類型2的需求,即的需求,即針對用戶交互的描針對用戶交互的描畫。畫。界面類又稱邊境

溫馨提示

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

評論

0/150

提交評論