《軟件需求分析》教學PPT,軟件需求分析,軟件,需求,分析,教學,PPT
第14章.面向?qū)ο蠼V饕獌?nèi)容1.面向?qū)ο蠓治?.對象模型3.用例模型4.行為模型5.對象約束語言OCL6.面向?qū)ο蠼?.面向?qū)ο蠓治霈F(xiàn)實世界的復雜模型n復雜總是簡單部分的組合n簡單部分又是更簡單部分的組合q簡單組成復雜的過程存在層次性n每個最小簡單部分獨立負責完成一系列相關任務n相比較而言,每個組合內(nèi)部各部分的關系比其內(nèi)部與外部的關系都更緊密n各個部分通過一致的接口進行組合,即一個部分對其它部分的所知僅僅是接口1.面向?qū)ο蠓治鲇成洮F(xiàn)實模型的面向?qū)ο笏枷雗任何系統(tǒng)都是能夠完成一系列相關目標和任務的對象n對象完成一個任務時會請求一系列其他對象幫助其完成一些子目標n其他對象為了完成其任務又會請求將子目標更細分為子子目標,并請求其他對象幫助完成n子目標的分解和責任分擔一直進行直到最后產(chǎn)生的子部分可以映射到計算實體n計算實體:對象n層次關系:聚合(組合)、繼承、關聯(lián)n組合接口:一個對象暴露的接口1.面向?qū)ο蠓治雒嫦驅(qū)ο蠼面向?qū)ο蠼#阂环N用于辨識系統(tǒng)環(huán)境中的對象及這些對象之間關系的技術qOMT(James Rumbaugh)qBooch方法(Grady Booch)UMLqOOSE(Ivar Jacobson)qCoad-YourdonqShlaer-MellorqFusionJacobsonBoochJacobsonRumbaugh1.面向?qū)ο蠓治鯱ML1.面向?qū)ο蠓治鯱MLnUMLq對象模型Object Model(Domain Model)q用例模型Use Case Modelq行為模型Behavior Modeln狀態(tài)機模型q對象約束語言OCL主要內(nèi)容1.面向?qū)ο蠓治?.對象模型1.組成元素2.重要概念3.領域模型3.用例模型4.行為模型5.對象約束語言OCL6.面向?qū)ο蠼?.1 對象模型組成元素對象n對象q對象是指在一個應用當中具有明確角色的獨立可確認的實體 n每個對象都要包含q標識n唯一的標識自己,引用 q狀態(tài)n對象的特征描述,包括對象的屬性和屬性的取值 q行為n對象在其狀態(tài)發(fā)生改變或者接收到外界消息時所采取的行動 2.1 對象模型組成元素 對象n常見的事物都可以是對象q和系統(tǒng)存在交互的外部實體,例如人、設備、其他的軟件系統(tǒng)等;q問題域中存在的事物,例如報表、信息展示、信號等;q在系統(tǒng)的上下文環(huán)境中發(fā)生的事件,例如一次外部控制行為、一次資源變化等;q人們在與系統(tǒng)的交互之中所扮演的角色,例如系統(tǒng)管理人員、用戶管理人員、普通用戶等;q和應用相關的組織單位,例如分公司、部門、團隊、小組等;q問題域中問題發(fā)生的地點,例如車間、辦公室等;q事物組合的結構關系,例如部分與整體的關系等。2.1 對象模型組成元素 對象n但是也有事物不是對象q無法界定的事物q純粹的值q純粹的行為2.1 對象模型組成元素 對象n一個對象維護其自身的狀態(tài)需要對外公開一些方法,行使其職能也要對外公開一些方法,這些方法組合起來定義了該對象允許外界訪問的方法,或者說限定了外界可以期望的表現(xiàn),它們是對象需要對外界履行的協(xié)議(Protocol)n一個對象的整體協(xié)議可能會分為多個內(nèi)聚的邏輯行為組,劃分后的每一個邏輯行為組就描述了對象的一個獨立職責,體現(xiàn)了對象的一個獨立角色 n對象職責q職責是指對象持有、維護特定知識并基于知識行使固定職能的能力n如果一個對象擁有多個行為組,就意味著該對象擁有多個不同的職責,需要扮演多個不同的角色。n理想的單一職責對象應該僅僅扮演一個角色 2.1 對象模型組成元素 鏈接n鏈接q對象之間的物理或業(yè)務聯(lián)系 n鏈接通常是單向的,當然也有雙向的鏈接存在n如果一個對象a存在指向b的鏈接,那就意味著a擁有對b的假設,關于b的行為和行為效果的假設。也就是說,b需要滿足a的某些行為期望 2.1 對象模型組成元素 鏈接n導航和可見性q由a指向b的鏈接除了包含假設和期望因素之外,還意味著a能夠在鏈接的指引下,正確的找到并將消息發(fā)送給b,即a可以導航到bq由a指向b的鏈接使得b對a可見,或者說a擁有b的可見性(Visibility)na獲取b的可見性的途徑有以下幾種:qb是全局對象,它對系統(tǒng)內(nèi)的所有其他對象都是可見的;qb是a的一部分;qb是被a創(chuàng)建的;qb的引用被作為消息的一部分傳遞給了a 2.1 對象模型組成元素 類n類q類是共享相同屬性和行為的對象的集合,它為屬于該類的所有對象提供統(tǒng)一的抽象描述和生成模板n抽象描述稱為接口(Interface),定義了類所含對象對外的(其他類和對象)的統(tǒng)一協(xié)議n生成模板稱為實現(xiàn)(Implementation),說明了類所含對象的生成機制和行為模式 2.1 對象模型組成元素 類n類的分類q類產(chǎn)生的關鍵是進行正確的分類q人們認識和處理具體事物時總會有意識或無意識的對它們進行歸類n數(shù)據(jù)驅(qū)動(Data-Driven)q將具有相同屬性的對象歸為一類q產(chǎn)生自哲學上傳統(tǒng)的經(jīng)典分類理論(Classical Categorization Theory)n所有具有一個給定特性或共同特性集的實體組成一個類 n職責驅(qū)動(Responsibility-Driven)q會依據(jù)事物的相似性而不是完全的相同性來進行事物的分類 q產(chǎn)生自哲學上的概念聚類(Conceptual Clustering)n使用概念描述而不是指定的特征來描述類別和事物,在進行事物分類時它會考慮概念之間的相似性,并將事物歸入和其概念最為相似的類別 2.1 對象模型組成元素 類n抽象q抽象是指在事物的眾多特征當中只注意那些和目標密切相關的特征,同時忽略那些不相關的特征,進而找出事物的本質(zhì)和共性 q抽象是人們在理解事物時常用的手段 n對象就是對現(xiàn)實世界事物的抽象結果,它表達了系統(tǒng)所需要的現(xiàn)實世界事物特征,拋棄了那些系統(tǒng)不需要的特征。n類則是對象集的抽象結果,它忽略了具體某個對象在特定時間和空間的細節(jié)狀態(tài),從對象集的全局出發(fā),在一個更高的邏輯層次上,描述了對象集的共性 2.1 對象模型組成元素 類n封裝q封裝是指盡可能隱藏構造單位內(nèi)部的實現(xiàn)細節(jié),只通過有限的對外接口保持對外聯(lián)系的一種軟件構造策略 n絕不是簡單的將屬性和行為放置在一起 2.1 對象模型組成元素 關聯(lián)n關聯(lián)q指出了類之間的某種語義聯(lián)系q關聯(lián)是類對其對象實例之間的無數(shù)潛在關系的描述2.1 對象模型組成元素 關聯(lián)2.2 對象模型重要概念繼承n如果一個類A繼承了對象B,那么A就自然具有B的全部屬性和服務,同時A也會擁有一些自己特有的屬性和服務,這些特有部分是B所不具備的 n結構繼承和語義繼承2.2 對象模型重要概念繼承2.2 對象模型重要概念多態(tài)n廣義多態(tài) q一個對象在相似情景下表現(xiàn)出多個不同形態(tài),或者多個對象在同一情景中表現(xiàn)出相同形態(tài)的現(xiàn)象 n一個對象在相似情景下表現(xiàn)出不同的形態(tài) q重載(Overloading)依據(jù)參數(shù)或返回值的不同為協(xié)議定義不同的版本,每一個版本都可以表現(xiàn)出自己獨特的行為 q泛型(Generality)使用同一個通用的實現(xiàn)處理不同的數(shù)據(jù)類型,然后根據(jù)數(shù)據(jù)類型的不同表現(xiàn)出不同的行為q 狹義多態(tài)n多個對象在同一情景中表現(xiàn)出相同形態(tài)的現(xiàn)象 2.3 領域模型n類大多是概念類(Concept Class),是一個能夠代表現(xiàn)實世界事物的概念 n概念類之間存在指明語義聯(lián)系的關聯(lián),這些關聯(lián)通常不標記方向,也不標記關聯(lián)端的可見性 n概念類會顯式的描述自己的一些重要屬性,但不是全部的詳細屬性,而且概念類的屬性通常沒有類型的約束 n概念類不顯式的標記類的行為,即概念類不包含明確的方法 2.3 領域模型SalesLineItemquantitySaledatetimeStoreaddressnameItemPaymentamountRegisterContained-inStocked-inRecords-sale-ofPaid-byHosuesCaptured-on1.*10.1111*111concept or domain objectassociationattributes11主要內(nèi)容1.面向?qū)ο蠓治?.對象模型3.用例模型4.行為模型5.對象約束語言OCL6.面向?qū)ο蠼?.用例模型n用例模型就是以用例為基本單位建立的一個系統(tǒng)功能展示模型,它是系統(tǒng)所有用例的集合,以統(tǒng)一、圖形化方式展示系統(tǒng)的功能和行為特性 n用例是獲取和組織用戶需求的手段n基本元素q用例(Use Case)q參與者(Actor)q關系(Relationship)q系統(tǒng)邊界(System Boundary)3.用例模型SpecialActorSpecialActorActorBase Use CaseExtending UseCaseSpecialized Use CaseGeneral UseCaseBase Use CaseIncluded UseCaseCommunication3.用例模型3.用例模型用例圖的作用主要內(nèi)容1.面向?qū)ο蠓治?.對象模型3.用例模型4.行為模型5.對象約束語言OCL6.面向?qū)ο蠼?.行為模型n行為模型q交互圖(Interaction Diagram)n順序圖(Sequence Diagram)n通信圖(Communication Diagram)n交互概述圖(Interaction Overview Diagram)n時間圖(Timing Diagram)q活動圖(Activity Diagram)q狀態(tài)圖(State Diagram)4.行為模型交互圖n交互圖q以一組對象為中心的交互描述技術 q描述在特定上下文環(huán)境中一組對象的交互行為 q通常描述的是單個用例的典型場景q交互圖中的每一個交互都描述了環(huán)境中的對象為了實現(xiàn)某個目標而執(zhí)行的一系列消息交換 q順序圖和通信圖是最常用的 交互圖q交互圖中出現(xiàn)的對象應該在領域模型中有相應的對象存在 4.行為模型 交互圖n順序圖4.行為模型 交互圖n通信圖q消息sequence-expression:message nmessageattribute=name(argument):return-value nsequence-expression label iteration-expression qiteration-expression*iteration-clause|condition-clause redisplay()message1:displayPositions(window)1.1*i:=1.n:drawSegment(i):Controller:Windowwire:Wirenew:Lineleft:Beadright:Bead1.1.1a:r0:=position()1.1.1b:r1:=position()wirelocal linecontents newwindowselfwindow parameter1.1.2:create(r0,r1)1.1.3:display(window)1.1.3.1 add(self)object symbollink symbolstandard stereotypestandard stereotypestandard stereotypestandard constraintstandard constraint4.行為模型 交互圖n系統(tǒng)順序圖q將整個系統(tǒng)看作一個黑箱的對象,強調(diào)外部參與者和系統(tǒng)的交互行為,重點展示系統(tǒng)級事件 4.行為模型 狀態(tài)圖n狀態(tài)圖q以狀態(tài)機理論為基礎建立的對系統(tǒng)行為的描述手段n狀態(tài)機是以“狀態(tài)”概念為基礎解釋系統(tǒng)行為的一種技術n有限狀態(tài)機FSM(Finite State Machine)是用于建模的最簡單的狀態(tài)機n在FSM技術基礎之上,發(fā)展出了多種分支技術(FSM,STD,Yourdon,SDL,STM,SC),UML的狀態(tài)圖SD(State Diagram)也是其中之一。q主要用于描述重要而且復雜的對象的所有行為n這個對象的行為通常要涉及很多(甚至大部分)的用例4.行為模型 狀態(tài)圖n狀態(tài)機理論q狀態(tài)機理論認為,系統(tǒng)總是處于一定的狀態(tài)之中。而且,在某一時刻,系統(tǒng)只能處于一種狀態(tài)之中。q系統(tǒng)在任何一個狀態(tài)中都是穩(wěn)定的,如果沒有外部事件觸發(fā),系統(tǒng)會一直持續(xù)維持該狀態(tài)。q如果發(fā)生有效的觸發(fā)事件,系統(tǒng)將會響應事件,從一種狀態(tài)轉移到唯一的另一種狀態(tài)。n如果能夠羅列出系統(tǒng)所有可能的狀態(tài),并發(fā)現(xiàn)所有有效的外部事件,那么就能夠從狀態(tài)轉移的角度完整的表達系統(tǒng)的所有行為 nDefinitionA finite automata is a 5-tuple(Q,q0,F),where1.Q is a finite set called the states,2.is a finite set called the alphabet(inputs),3.:Q Q is the transition function,4.q0 Q is the start state,and 5.F Q is the set of accept states(final states).4.行為模型 狀態(tài)圖n簡單示例ReadyReadystop/ctr:=0Stop normal狀態(tài)狀態(tài)狀態(tài)狀態(tài)觸發(fā)觸發(fā)觸發(fā)觸發(fā)行為行為行為行為開始狀態(tài)開始狀態(tài)開始狀態(tài)開始狀態(tài)轉換轉換轉換轉換結束狀態(tài)結束狀態(tài)結束狀態(tài)結束狀態(tài)DoneDone監(jiān)護條件監(jiān)護條件監(jiān)護條件監(jiān)護條件事件事件Example:UML State chart Diagramssuspend/suspend/4.行為模型 狀態(tài)圖 層次結構Hierarchy and 歷史HistoryDiagnosingDiagnosingDiagnostic1Diagnostic1Step11Step11Step12Step12Diagnostic2Diagnostic2Step21Step21Step22Step22resume/resume/H*H*4.行為模型 狀態(tài)圖 并發(fā)ConcurrencyStaffStaffMemberMemberemployeeemployeeChildChildAdultAdultRetireeRetireeageageManagerManager4.行為模型 狀態(tài)圖 UML SDn詳細的使用見:表142、UML的狀態(tài)圖表示法4.行為模型 活動圖n活動圖q借鑒了多種BPM后建立的行為圖 q以“流”(控制流和數(shù)據(jù)流)處理為側重點描述系統(tǒng)的行為q通常以組織的整體業(yè)務流程為描述對象的4.行為模型 活動圖n示例主要內(nèi)容1.面向?qū)ο蠓治?.對象模型3.用例模型4.行為模型5.對象約束語言OCL6.面向?qū)ο蠼?.對象約束語言OCLnOCL并不是UML中單獨的一個模型,而是被應用在其他的模型當中,豐富其他模型的語義 nOCL是一種無副作用的規(guī)約語言q以表達式的方式定義對其他模型元素的約束 q約束和限制其他模型元素的行為和狀態(tài)變化q不會修改任何其他模型元素的表述 nOCL不是一種編程語言。qOCL的首要定位是建模語言,因此它在保證一定表達能力的前提下,注重于語言的簡潔性和抽象性 q它無法被用來描述程序的控制邏輯和工作流程,它的表達式定義也無法在程序中得到直接的執(zhí)行 485.對象約束語言OCLn示例FlightAirplaneCargoFlightPassengerFlightPassengerPlaneCargoPlane1 10.*0.*1 10.*0.*0.*0.*1 1flights495.對象約束語言OCLn示例context Flightinv:type=#cargo implies airplane.type=#cargoinv:type=#passenger implies airplane.type=#passenger10.*FlightAirplanetype:enum of cargo,passengertype:enum of cargo,passengerflights5.對象約束語言OCLOCL examplesA customer gets a gift of$10 if the number of transactions s/he started is more than 305.對象約束語言OCL OCL examplesSolution 2context Customer:getGift():Integer pre CustStartTransact:self.bankaccount.costs-size()30 post TenDollarsGift:gift=giftpre+10 and result=gift5.對象約束語言OCLn構成 q類型q表達式q保留關鍵字 5.對象約束語言OCLn主要應用q不變量不變量 n不變量是可以對UML類元施加的約束q類元需要保持它的表達式取值在指定的時間范圍內(nèi)或者指定的條件下始終為“真”q最常見的是用來約束類的屬性或者類的方法 context Flightinv:duration=0 points=pointspre-i class invariantpostcondition for burn operationresult=(points=0)points=i and i=0 precondition for burn operationpoints=pointspre+i i=0 5.對象約束語言OCLn監(jiān)護條件監(jiān)護條件 q監(jiān)護條件是對狀態(tài)機模型中狀態(tài)轉移施加的約束n在狀態(tài)機到達轉移點時,監(jiān)護條件的表達式需要根據(jù)實際狀態(tài)進行評估,并只有在表達式實際取值為“真”的情況下才進行轉移 n簡潔n與自然語言相結合n使用工具進行正確性檢查5.對象約束語言OCL OCL 用法主要內(nèi)容1.面向?qū)ο蠓治?.對象模型3.用例模型4.行為模型5.對象約束語言OCL6.面向?qū)ο蠼?.技術路線2.領域模型建模3.行為模型建模4.CRC方法6.1 面向?qū)ο蠼<夹g路線n(1)從用例描述中識別出對象和類;n(2)分析用例的描述信息,添加類的屬性和類之間的關聯(lián);n(3)從用例描述中識別系統(tǒng)行為;n(4)將系統(tǒng)行為分配給類;n(5)綜合考慮類的屬性與行為,細化類的職責,建立完全的對象模型。6.1 面向?qū)ο蠼<夹g路線n面向?qū)ο蠓治龅慕Y果:q建立領域模型q建立行為模型6.2 領域模型建模n建立領域模型q發(fā)現(xiàn)對象和類n概念類分類列表概念類分類列表 n名詞分析名詞分析 n行為分析行為分析 q建立類之間的關聯(lián)q添加類的重要屬性6.2 領域模型建模發(fā)現(xiàn)對象和類n如果候選對象既維持一定的狀態(tài),又依據(jù)狀態(tài)表現(xiàn)一定的行為,那么它就應該是一個獨立存在的對象 n如果候選對象只有狀態(tài)沒有行為,那么就要分析它的狀態(tài)是否是系統(tǒng)需要的數(shù)據(jù)。q如果系統(tǒng)需要它的狀態(tài)數(shù)據(jù),那么該候選對象就應該作為其他對象的屬性出現(xiàn)在最終的領域模型當中。q否則,該候選對象應該被擯棄 n如果候選對象只有行為沒有狀態(tài),那么往往意味著需求信息的遺漏 n需要注意實體關系建模思想帶來的誤區(qū)6.2 領域模型建模發(fā)現(xiàn)對象和類n概念類分類列表概念類分類列表q這種方法事先給出一個概這種方法事先給出一個概念類的分類列表,從中發(fā)念類的分類列表,從中發(fā)現(xiàn)對象現(xiàn)對象 方式來源Shlaer-MellorShIaer1988RossRoss1987Coad-YourdonCoad1990分類列表有形的事物角色事件交互功能人地點事物組織:集合體概念事件:需要被記錄結構其他系統(tǒng)設備事件:需要被記錄角色地點組織單位6.2 領域模型建模發(fā)現(xiàn)對象和類n概念類分類列表示例概念類分類列表示例6.2 領域模型建模發(fā)現(xiàn)對象和類n名詞分析名詞分析 q從文本描述中識別出有關的名詞和名詞短語,然后從中發(fā)現(xiàn)對象 6.2 領域模型建模發(fā)現(xiàn)對象和類n行為分析q從需求描述中搜尋動詞,識別出系統(tǒng)行為,然后從中發(fā)現(xiàn)對象 用例描述行為候選對象確定對象概念類主動對象被動對象1.用戶在第i層按下向上的樓層按鈕按下用戶第i層向上樓層按鈕保留對象:第i層的向上樓層按鈕第i層的向上樓層按鈕燈電梯電梯門計時器到第j層的電梯按鈕到第j層的電梯按鈕燈樓層按鈕電梯按鈕按鈕燈電梯電梯門計時器1.第i層的向上按鈕燈亮亮第i層的向上樓層按鈕燈1.電梯到達第i層;到達電梯第i層1.第i層的向上樓層按鈕燈滅滅第i層的向上樓層按鈕燈1.電梯門開啟開啟電梯門1.計時器開始計時計時計時器1.用戶進入電梯無1.用戶按下到j層的電梯按鈕按下用戶到第j層的電梯按鈕1.到第j層的電梯按鈕燈亮亮到第j層的電梯按鈕燈1.計時時間到,電梯門關閉到時計時器擯棄對象:用戶:系統(tǒng)外對象,既沒有狀態(tài)也沒有行為;第i層、第j層:只有狀態(tài)沒有行為關閉電梯門1.電梯到達第j層到達1.到達j層的電梯按鈕燈滅滅到第j層的電梯按鈕燈1.電梯門開啟開啟電梯門1.計時器開始計時計時計時器1.用戶走出電梯門無1.計時時間到,電梯門關閉到時電梯門關閉計時器6.2 領域模型建模建立類之間的關聯(lián)n保證類之間協(xié)作所必需的可見性 n適當使用問題域內(nèi)的關聯(lián),增強領域模型的可理解性 q要適可而止 n不要在關聯(lián)的識別上花費太多的時間q識別概念類比識別關聯(lián)更加重要 n避免顯示冗余和導出的關聯(lián) 6.2 領域模型建模建立類之間的關聯(lián)n示例6.2 領域模型建模添加類的重要屬性n實現(xiàn)類協(xié)作時必要的信息,是協(xié)作的條件、輸入、結果或者過程記錄 n使用用戶的描述方式,不進行類型和約束的嚴格定義 6.3 行為模型建模n建立行為模型q建立系統(tǒng)順序圖q在需要時n建立詳細的交互圖n建立用例的狀態(tài)圖或者重要類的狀態(tài)圖n建立活動圖q為系統(tǒng)行為添加契約說明6.3 行為模型建模建立交互圖 1.確定交互圖的上下文環(huán)境q上下文環(huán)境的前置條件和后置條件應該被分配給交互圖中的相應行為2.找出參與交互的對象q交互圖中的參與對象(和對象之間的關聯(lián))應該和領域模型中的知識保持一致。3.根據(jù)發(fā)現(xiàn)的對象(和關聯(lián))建立交互圖框架4.添加消息,描述交互行為q考慮和系統(tǒng)相關的(系統(tǒng)內(nèi)的、系統(tǒng)與外部對象之間的)交互行為,忽略那些與系統(tǒng)無關的(外部對象之間的)交互行為。如果建立的是系統(tǒng)順序圖,那么系統(tǒng)內(nèi)的行為也可以被忽略。5.進行消息標識、特化圖示等詳細信息的描述,將交互圖的信息補充完整。6.3 行為模型建模建立交互圖6.3 行為模型建模建立狀態(tài)圖1.確定上下文環(huán)境 q搞清楚狀態(tài)的主體常見的狀態(tài)主體有:類、用例、多個用例和整個系統(tǒng) 2.識別狀態(tài),標記初始狀態(tài)和結束狀態(tài)q可能會不存在確定的初始狀態(tài)和結束狀態(tài) 3.建立狀態(tài)轉換 4.補充詳細信息,完善狀態(tài)圖 6.3 行為模型建模建立狀態(tài)圖授權空閑銷售開始商品信息顯示錯誤提示列表顯示銷售結束授權YY空閑YYYY銷售開始Y商品信息顯示YY錯誤提示Y列表顯示Y銷售結束Y6.3 行為模型建模建立活動圖1.確定活動圖的上下文環(huán)境 q界定業(yè)務流程的處理界限 2.分析業(yè)務流程中的主要處理步驟 3.分析業(yè)務流程中的主要數(shù)據(jù)流 4.進行職責分配,將業(yè)務流程的處理步驟劃分到不同的泳道,并將處理步驟和數(shù)據(jù)流的傳遞組織起來,建立活動圖 5.添加活動圖的詳細信息,完善活動圖描述 6.3 行為模型建模建立活動圖6.3 行為模型建模添加契約說明n不需要為所有的系統(tǒng)行為都定義操作契約,可以有選擇的為其中的一部分系統(tǒng)行為定義操作契約 q涉及到很多狀態(tài)變化的復雜行為q因果關系比較微妙的模糊行為n可以從下面幾個角度進行約束的發(fā)現(xiàn)工作:q不變量:系統(tǒng)行為中所涉及的敏感狀態(tài),這些狀態(tài)的改變往往會產(chǎn)生廣泛的連鎖反應n不可改變的屬性、不可改變的關聯(lián)關系q前置條件:行為發(fā)生和順利完成所需要的系統(tǒng)的狀態(tài)條件n合法的參數(shù)n有效的狀態(tài)q對象的存在狀態(tài)、對象的屬性取值、有效的關聯(lián)關系q后置條件:行為順利完成之后引起的系統(tǒng)狀態(tài)改變n有效狀態(tài)的改變q對象的存在狀態(tài)、對象的屬性取值n關聯(lián)關系的改變6.3 行為模型建模添加契約說明n示例Contract:enterItem(itemID:ItemID,quantity:integer)Cross References:Process SalePrecondition:There is a sale underwayPost-condition:A SalesLineItem instances sli was createdsli was associated with the current Salesli.quantity become quantitysli was associated with a ProductSpecification,based on itemID match6.4 CRC方法nCRC是Candidates、Responsibilities和 Collaborators三者的縮寫n基于CRC可以建立一種索引卡片,被稱為CRC卡,每個卡片代表了一個被發(fā)現(xiàn)的候選對象 n形式可能是多種多樣的,卡片、紙張、黑板等等都可以作為CRC卡的介質(zhì)載體 nCRC卡簡潔方便,可以隨時被移動、修改或者丟棄,所以它特別適合于在復雜的系統(tǒng)當中進行對象的發(fā)現(xiàn)和設計思想的挖掘,即進行復雜情況下的面向?qū)ο蠓治雠c設計 6.4 CRC方法CRC卡示例6.4 CRC方法技術路線6.4 CRC方法 職責分配的注意事項n集中信息與行為。n維持對象的角色。n保持對象責任的相關性。n保持對象的粒度。n不要重復責任。n必要的時候調(diào)整候選對象。本章小結n面向?qū)ο蠓治鍪?0年代之后的主流分析方法,它以UML為基礎,綜合使用了多種不同的分析技術,主要有:q對象模型Object Model(Domain Model)q用例模型Use Case Modelq行為模型Behavior Modeln狀態(tài)機模型q對象約束語言OCLn面向?qū)ο蠓治鋈蝿盏某晒?zhí)行,除了要掌握多種面向?qū)ο蠓治黾夹g之外,還需要掌握利用這些技術的建模方法nCRC方法是面向?qū)ο蠓治鲈谔幚韽碗s問題時的手段,但是它需要了解很多的建模知識才足以進行思考題n在需求獲取階段,需求工程師收集了大量的樣本,包括文檔、表格和報告,解釋這些樣本對面向?qū)ο蠼S心男┯锰巒分析你所在學校使用的選課系統(tǒng),給出它的詳細和完備的面向?qū)ο蠓治瞿P兔枋觥?/div>
收藏