




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
電子商務(wù)信息系統(tǒng)分析與設(shè)計(jì)(下)徐天宇主編第8章UML基礎(chǔ)8.5活動(dòng)圖8.5.1概述活動(dòng)(Activity)是非原子的執(zhí)行過(guò)程?;顒?dòng)圖對(duì)邏輯進(jìn)行建模,活動(dòng)圖可以模擬任何層次上的邏輯。從用例到算法?;顒?dòng)圖8.5.2活動(dòng)圖的基本元素活動(dòng)圖的大部分符號(hào)都借鑒來(lái)自流程圖,但是它增加了并發(fā)性以支持許多現(xiàn)代的應(yīng)用。活動(dòng)圖主要包含的元素有:活動(dòng)決策轉(zhuǎn)移對(duì)象1.活動(dòng)活動(dòng)用帶有圓形邊線的矩形表示,它含有活動(dòng)的描述。活動(dòng)圖2.轉(zhuǎn)移當(dāng)一個(gè)活動(dòng)結(jié)束時(shí),控制流立刻會(huì)傳遞并開(kāi)始下一個(gè)活動(dòng)。通常用轉(zhuǎn)移說(shuō)明這個(gè)流,顯示從一個(gè)活動(dòng)到下一個(gè)活動(dòng)的路徑。轉(zhuǎn)移用一條箭頭表示。3.泳道泳道(Swimlance)把活動(dòng)圖中的活動(dòng)劃分為若干組,每組是一個(gè)泳道,將對(duì)象名置于泳道頂部,表示泳道中的活動(dòng)有該對(duì)象負(fù)責(zé)泳道關(guān)心的是對(duì)象的職責(zé)活動(dòng)圖中的泳道活動(dòng)圖中的泳道用垂直實(shí)線劃出,垂直線分隔的區(qū)域就是泳道。在泳道上方給出泳道的名稱(chēng)或?qū)ο竺Q(chēng),該對(duì)象負(fù)責(zé)泳道內(nèi)的全部活動(dòng)。每一個(gè)活動(dòng)只能屬于一個(gè)泳道。泳道沒(méi)有順序,不同泳道中的活動(dòng)可以是順序進(jìn)行的,也可以是并發(fā)進(jìn)行的,允許轉(zhuǎn)移跨越泳道分隔線。例:泳道
生產(chǎn)裝運(yùn)客戶(hù)4.分叉與匯合分叉指一個(gè)源活動(dòng)分為兩個(gè)或兩個(gè)以上的目標(biāo)活動(dòng),匯合則指兩個(gè)以上的源活動(dòng)連接為一個(gè)目標(biāo)活動(dòng)?;顒?dòng)圖中的一條粗短實(shí)線稱(chēng)為同步條,同步條可視化地定義了并發(fā)工作流的分叉與匯合。
例:分叉與匯合5.對(duì)象流
對(duì)象流(ObjectFlow)用于活動(dòng)與對(duì)象之間的關(guān)系?;顒?dòng)圖中的對(duì)象流用虛箭線表示。如果虛箭線是從活動(dòng)出發(fā)指向?qū)ο?,表示該活?dòng)創(chuàng)建或更新了對(duì)象流所指向的對(duì)象,則此對(duì)象是活動(dòng)的輸出。如果虛箭線是從對(duì)象出發(fā)指向活動(dòng),表示該活動(dòng)使用了該對(duì)象,則此對(duì)象是活動(dòng)的輸入。例:對(duì)象8.5.3建立活動(dòng)圖的步驟⑴確定活動(dòng)圖的任務(wù);⑵找出進(jìn)行活動(dòng)的對(duì)象;⑶確定活動(dòng)圖的初態(tài)和終態(tài);⑷添加活動(dòng);⑸添加動(dòng)作之間的轉(zhuǎn)移;⑹添加判斷點(diǎn);⑺添加分支與同步結(jié)構(gòu);圖6-活動(dòng)圖8.5.4活動(dòng)圖的用途一般活動(dòng)圖可以對(duì)系統(tǒng)的業(yè)務(wù)過(guò)程建模,可以對(duì)具體的操作建模,用于描述計(jì)算過(guò)程的細(xì)節(jié)。
生產(chǎn)裝運(yùn)客戶(hù)⑴用于描述業(yè)務(wù)過(guò)程⑵用于描述用例分支⑶用于描述算法8.6交互圖交互圖(InteractionDiagram)描述系統(tǒng)中對(duì)象之間的交互,由對(duì)象與對(duì)象之間的關(guān)系組成,包含它們之間可能傳遞的消息。交互圖被用于為系統(tǒng)的動(dòng)態(tài)方面建模。交互圖有兩種類(lèi)型兩種類(lèi)型:順序圖(SequenceDiagram)和協(xié)作圖(CollaborationDiagram)。順序圖和協(xié)作圖包含了共同的模型元素:對(duì)象、消息,以及鏈接等。它們都是用于對(duì)系統(tǒng)的行為建模。順序圖著重描述對(duì)象按照時(shí)間順序的消息交換,協(xié)作圖著重描述系統(tǒng)成分如何協(xié)同工作。典型順序圖與協(xié)作圖UML定義的幾種消息。簡(jiǎn)單消息(SimpleMessage):表示普通的控制流,它僅表示控制是如何從一個(gè)對(duì)象傳給另一個(gè)對(duì)象。簡(jiǎn)單消息同步消息同步消息:典型情況下表示操作的調(diào)用。調(diào)用者發(fā)出消息后必須等待消息返回,只有當(dāng)處理消息的操作執(zhí)行完畢后,調(diào)用者才可以繼續(xù)執(zhí)行自己的操作。同步消息異步消息異步消息:表示異步控制流,發(fā)送者發(fā)出消息后不用等待消息處理完即可繼續(xù)執(zhí)行自己的操作。異步消息返回消息返回消息是將信息返給發(fā)送者的消息,一般發(fā)生在執(zhí)行動(dòng)作之后。返回信息不執(zhí)行動(dòng)作,僅返回信息過(guò)程調(diào)用及返回消息內(nèi)容標(biāo)簽的語(yǔ)法格式[序號(hào)][觸發(fā)條件]*[重復(fù)次數(shù)][返回值表:=]操作名(參數(shù)表)hasgoods:=verify(goods,amount)[hasgoods=.T.]calculate(goods,amount)*[i:=1..10]msg2()書(shū)寫(xiě)消息內(nèi)容標(biāo)簽的格式為:序號(hào)為消息在整個(gè)交互中的順序號(hào),可用正整數(shù)或十進(jìn)制數(shù)表示,如l、2、3或1.2.、2.1等。觸發(fā)條件:是一個(gè)布爾條件表達(dá)式。重復(fù)次數(shù):規(guī)定了該消息發(fā)送的重復(fù)次數(shù)。返回值表:是一個(gè)以逗號(hào)分隔的名稱(chēng)列表。操作名:應(yīng)是接收該消息的對(duì)象中的一個(gè)操作名。參數(shù)表:準(zhǔn)備傳遞給接收該消息的對(duì)象中的一個(gè)操作(方法)的參數(shù)(實(shí)參)例:順序號(hào)8.6.1順序圖順序圖用來(lái)描述對(duì)象之間動(dòng)態(tài)的交互關(guān)系,著重描述對(duì)象間消息傳遞的時(shí)間順序。順序圖一個(gè)順序圖由下列圖形元素構(gòu)成:對(duì)象、生命線、激活和消息。例:典型順序圖1.對(duì)象順序圖中的對(duì)象指參與交互的對(duì)象。在順序圖中,對(duì)象用矩形框圖標(biāo)表示,它們代表參與交互的對(duì)象。對(duì)象的矩形框圖標(biāo)一般位于順序圖的頂部,通常應(yīng)把交互頻繁的對(duì)象盡可能地靠攏,把初始化整個(gè)交互活動(dòng)的對(duì)象放置在最左邊。在交互過(guò)程中產(chǎn)生的對(duì)象的矩形框圖標(biāo)應(yīng)放置在產(chǎn)生該對(duì)象的時(shí)間點(diǎn)處。⑵生命線生命線(Lifeline)表示對(duì)象存在的時(shí)間,在順序圖中生命箭線表示為從對(duì)象圖標(biāo)向下延伸的一條虛線。生命線從對(duì)象創(chuàng)建時(shí)開(kāi)始到對(duì)象銷(xiāo)毀時(shí)終止,對(duì)象存在的時(shí)間有多長(zhǎng),表示對(duì)象的生命線的虛線就有多長(zhǎng)。⑶激活激活(Activation)又稱(chēng)為控制焦點(diǎn)(Focusofcontrol),表示對(duì)象執(zhí)行一個(gè)動(dòng)作的持續(xù)時(shí)間,也即對(duì)象激活的時(shí)間段。在順序圖中,激活由位于生命線上的一個(gè)窄矩形條表示。激活期窄矩形條的上端與動(dòng)作的開(kāi)始時(shí)間齊平,下端與動(dòng)作的完成時(shí)間齊平。⑷消息消息(Message)表示對(duì)象間的通信。在面向?qū)ο蟮木幊讨?,兩個(gè)對(duì)象之間的交互表現(xiàn)為一個(gè)對(duì)象給另一個(gè)對(duì)象發(fā)送一個(gè)消息。⑸建立順序圖的步驟⑴確定交互的場(chǎng)景。⑵確定與場(chǎng)景有關(guān)的對(duì)象參與者;⑶根據(jù)場(chǎng)景確定事件流;⑷繪制順序圖;⑸從初始化交互開(kāi)始,自頂向下在對(duì)象的生命線之間安置消息。典型順序圖8.6.2協(xié)作圖協(xié)作圖用于描述系統(tǒng)的行為是如何由系統(tǒng)的成分合作實(shí)現(xiàn)的。順序圖和協(xié)作圖順序圖和協(xié)作圖都描述交互,但順序圖強(qiáng)調(diào)時(shí)間,而協(xié)作圖強(qiáng)調(diào)空間。順序圖和協(xié)作圖都可以表示各對(duì)象間的交互關(guān)系,但它們的側(cè)重點(diǎn)不同。圖-典型協(xié)作圖1.協(xié)作圖的組成一個(gè)協(xié)作圖由下列圖形元素構(gòu)成。⑴對(duì)象在協(xié)作圖中的對(duì)象的含義和表示法與順序圖中的相同。⑵鏈接在協(xié)作圖中,有交互關(guān)系的對(duì)象用實(shí)線表示鏈接線。⑶消息協(xié)作圖中的消息的含義和表示法與順序圖中的相同。在協(xié)作圖中消息用置于鏈接線旁的一條箭線表示,其上有消息內(nèi)容標(biāo)簽。消息內(nèi)容標(biāo)簽在鏈接線旁的消息箭線上。協(xié)作圖與順序圖不同,協(xié)作圖中的消息必須標(biāo)有順序號(hào),以表示消息的時(shí)間順序。例:協(xié)作圖8.7包圖8.7.1包包(Package)是用于把模型元素組織成組的通用機(jī)制。包本身是UML的一種模型元素。包是純概念性的,只存在與軟件系統(tǒng)的開(kāi)發(fā)階段。8.7.1包包可以擁有其他模型元素。一個(gè)包可以擁有一個(gè)或多個(gè)模型元素,包括類(lèi)、接口、構(gòu)件、用例、包等。包可以擁有其他的包,根包可以擁有子包,子包又可以擁有自己的子包,這樣可以構(gòu)成一個(gè)系統(tǒng)的嵌套結(jié)構(gòu),以表達(dá)系統(tǒng)模型元素的靜態(tài)結(jié)構(gòu)關(guān)系。包可以用于組織一個(gè)系統(tǒng)模型。但是在建立模型時(shí)包的嵌套不宜過(guò)深,包的嵌套層數(shù)一般以2-3層為宜。包的圖標(biāo)包的圖標(biāo)是一個(gè)大矩形(內(nèi)容框)的左上角帶一個(gè)小矩形(名稱(chēng)框)。包的名稱(chēng)每個(gè)包都必需有一個(gè)與其他包相區(qū)別的名稱(chēng)。不同包的模型元素可以同名,但在同一個(gè)包中的模型元素不能同名包名稱(chēng)的位置可見(jiàn)性標(biāo)記在包的模型元素名前可以標(biāo)上可見(jiàn)性標(biāo)記,其表示方法與類(lèi)中的屬性和操作的可見(jiàn)性表示方法相同。標(biāo)有“+”的模型元素,對(duì)于輸入該包的任何包的元素是可視的;標(biāo)有“?!钡哪P驮兀荒軐?duì)其子包的元素是可視的。標(biāo)有“—”的模型元素,對(duì)于外包是不可視的。8.7.2包的關(guān)系包之間的關(guān)系主要有兩種:依賴(lài)(尤其是輸入依賴(lài))和泛化關(guān)系。1.依賴(lài)關(guān)系包之間的依賴(lài)關(guān)系實(shí)際上概述了包中元素的依賴(lài)關(guān)系,即如果在兩個(gè)包中的任何兩個(gè)元素之間存在著依賴(lài)關(guān)系,則這兩個(gè)包之間也存在著依賴(lài)關(guān)系。在圖形中,包間的依賴(lài)關(guān)系是用一條從依賴(lài)包指向獨(dú)立包的虛箭線表示。包的依賴(lài)輸入依賴(lài)輸入依賴(lài)(importDependency),是包與包之間的一種存取依賴(lài)關(guān)系。輸入是指允許一個(gè)包中的元素存取另一個(gè)包中的元素。輸入依賴(lài)是單向的。輸入依賴(lài)的表示方法是在虛箭線上標(biāo)有構(gòu)造型<<Import>>,箭頭從輸入方的包指向輸出方的包。2.泛化關(guān)系包間的泛化關(guān)系與類(lèi)間的泛化關(guān)系十分相似,類(lèi)間的泛化的概念和表示法在包間大多可以使用。與類(lèi)的繼承相同,特殊包從一般包繼承其所含的公共類(lèi)。特殊包可以代替一般包,用在一般包使用的任何地方。包間泛化8.7.3包圖建立包圖由包和包間關(guān)系構(gòu)成。包圖的圖形節(jié)點(diǎn)是包,節(jié)點(diǎn)之間用?。ㄒ蕾?lài)或泛化)連接。包的劃分按構(gòu)造型組合包按功能組合包綜合組合8.7.3包圖建立如果開(kāi)發(fā)的是一個(gè)大型的復(fù)雜的系統(tǒng),常需要使用包圖,把系統(tǒng)設(shè)計(jì)模型中的大量的模型元素組織成包和子系統(tǒng)(子系統(tǒng)是特殊的包),給出它們之間的關(guān)系,以方便理解和處理整個(gè)模型。有些專(zhuān)家建議,如果一個(gè)類(lèi)圖在一張A4尺寸的紙張上畫(huà)不下,就可以采用包圖。建立包圖的一般的步驟⑴分析系統(tǒng)模型元素⑵為包中的各個(gè)模型元素的標(biāo)出可見(jiàn)性;⑶確定包間的依賴(lài)關(guān)系,特別是輸入依賴(lài);⑷確定包間的泛化關(guān)系;⑸繪制出包圖;⑹對(duì)包圖進(jìn)行優(yōu)化處理。包圖示例第8章UML基礎(chǔ)8.8組件1.組件組件(Component)又稱(chēng)組件,是遵從一組接口并提供其實(shí)現(xiàn)的物理的、可替換的部分。組件將駐留在一臺(tái)或幾臺(tái)計(jì)算機(jī)上。組件就是一個(gè)實(shí)際文件可以是源代碼文件、數(shù)據(jù)文件、動(dòng)態(tài)鏈接庫(kù)、可執(zhí)行文件、數(shù)據(jù)庫(kù)表等。組件的標(biāo)準(zhǔn)構(gòu)造型1)可執(zhí)行體(executable)規(guī)定能夠在一個(gè)節(jié)點(diǎn)上執(zhí)行的組件。2)庫(kù)(1ibrary)規(guī)定一個(gè)動(dòng)態(tài)或靜態(tài)對(duì)象庫(kù)。3)表(table)規(guī)定一個(gè)表示數(shù)據(jù)庫(kù)表的組件。4)文件(file)規(guī)定一個(gè)表示文檔的組件,其中包括源代碼或數(shù)據(jù)。5)文檔(document)規(guī)定一個(gè)表示文檔的組件。8.8.2組件圖
組件圖(ComponentDiagram)中組件的圖標(biāo)用一個(gè)在左邊嵌有2個(gè)小矩形框的大矩形框表示。組件需要有名稱(chēng)。組件的名稱(chēng)用一個(gè)字符串表示組件圖由組件及組件間的接口和依賴(lài)關(guān)系來(lái)構(gòu)成。組件圖顯示組件和它的接口之間關(guān)系的兩種方式方式一:用簡(jiǎn)略的圖符形式顯示接口,即用棒糖式接口,實(shí)現(xiàn)接口的組件通過(guò)實(shí)線連接到接口上。這是常使用的方式。方式二:用擴(kuò)展形式顯示接口,即用類(lèi)圖標(biāo)顯示接口,這種方式可以顯示接口的操作。
例:組件圖與接口8.8.3組件的依賴(lài)關(guān)系
如果一個(gè)組件包含的模型元素使用另一個(gè)組件包含的模型元素,則表示這兩個(gè)組件之間存有依賴(lài)關(guān)系。兩種常見(jiàn)的依賴(lài)關(guān)系編譯依賴(lài)是指在編譯階段和連接階段,組件之間的依賴(lài)關(guān)系。調(diào)用依賴(lài)是指一個(gè)組件調(diào)用或使用另外一個(gè)組件服務(wù)。例:組件、接口與依賴(lài)關(guān)系8.8.4建立組件圖
⑴確定組件。⑵對(duì)組件加上必要的構(gòu)造型,以說(shuō)明組件的性質(zhì)。⑶確定組件之間的依賴(lài)關(guān)系。⑷必要時(shí)把組件組織成包。⑸繪制出組件圖。8.9配置圖配置圖也稱(chēng)部署圖,表示的是系統(tǒng)運(yùn)行時(shí)的計(jì)算資源(如計(jì)算機(jī)及它們之間的連接)的物理布置。配置圖由節(jié)點(diǎn)和節(jié)點(diǎn)之間的聯(lián)系構(gòu)成。8.9.1節(jié)點(diǎn)
節(jié)點(diǎn)(Node)是存在于運(yùn)行期間的代表一項(xiàng)計(jì)算資源的物理元素,節(jié)點(diǎn)通常為處理器或其他硬件設(shè)備。沒(méi)有運(yùn)行程序能力的節(jié)點(diǎn)叫設(shè)備,如打印機(jī)。有運(yùn)行程序能力的節(jié)點(diǎn)叫處理機(jī)。節(jié)點(diǎn)的圖標(biāo)為一個(gè)立方體的圖形,如圖所示。例:配置圖8.9.2節(jié)點(diǎn)和連接
在配置圖中節(jié)點(diǎn)代表一個(gè)物理設(shè)備以及在其上運(yùn)行的軟件。節(jié)點(diǎn)之間的連線表示系統(tǒng)之間進(jìn)行交互的通信路徑,在UML中稱(chēng)為連接。用構(gòu)造型表示所用的通信協(xié)議或網(wǎng)絡(luò)類(lèi)型。例:節(jié)點(diǎn)和連接8.9.5配置圖的建立⑴確定模型范圍;⑵確定分布結(jié)構(gòu);⑶確定節(jié)點(diǎn),標(biāo)識(shí)各節(jié)點(diǎn)的硬件設(shè)備;⑷把組件分布到節(jié)點(diǎn);⑸給節(jié)點(diǎn)添加必要的構(gòu)造型,說(shuō)明節(jié)點(diǎn)的性質(zhì);⑹確定節(jié)點(diǎn)之間、節(jié)點(diǎn)與組件之間、組件之間的聯(lián)系。⑺繪制出配置圖。把組件分布到節(jié)點(diǎn)的配置圖6.10UML的擴(kuò)展構(gòu)造型、約束、和標(biāo)記值就是UML中有用的擴(kuò)展工具。8.10.1構(gòu)造型
構(gòu)造型(stereotype)也叫版式,版型。允許創(chuàng)建與已有的UML模型元素相似而針對(duì)特定問(wèn)題的新種類(lèi)的UML模型元素。本質(zhì)上說(shuō),是添加UML新的符號(hào)集。新構(gòu)造型的信息形式與已存在的基本模型元素相同,但是含義和使用不同。構(gòu)造型構(gòu)造型是用雙尖括號(hào)括起來(lái)的字符串,它用于說(shuō)明擴(kuò)展一個(gè)UML模型元素。使用戶(hù)可以創(chuàng)建由己存在的UML模型元素派生出的新UML模型元素。例:帶構(gòu)造型的類(lèi)
8.10.2約束
約束(constraint)是對(duì)UML元素用文字表達(dá)式表示的語(yǔ)義限制。允許增加新的規(guī)則或修改已有的規(guī)則。通常應(yīng)用于屬性和關(guān)聯(lián)在圖形上,把約束表示成用花括號(hào)括起來(lái)的字符串,并把它放在有關(guān)的元素附近。例:約束8.10.3標(biāo)記值
標(biāo)記值(taggedvalue)是對(duì)UML模型元素的特性的擴(kuò)展,允許用戶(hù)在模型元素的規(guī)格說(shuō)明中創(chuàng)建新的信息。在圖形上,把標(biāo)記值表示成用花括號(hào)括起來(lái)的字符串,并把它放在其他的元素名之下。標(biāo)記值標(biāo)記值用放在花括號(hào)“}”中的字符串表示,這個(gè)字符串由標(biāo)記名,分隔符“=”、和標(biāo)記值組成。即:標(biāo)記名=標(biāo)記值例:標(biāo)記值第9章面向?qū)ο蟮南到y(tǒng)分析面向?qū)ο蟮南到y(tǒng)分析一種系統(tǒng)開(kāi)發(fā)方法應(yīng)由建模語(yǔ)言和開(kāi)發(fā)過(guò)程組成。建模語(yǔ)言是設(shè)計(jì)的表示符號(hào),而過(guò)程則是描述如何進(jìn)行開(kāi)發(fā)所需的步驟。本書(shū)采用的UML的開(kāi)發(fā)過(guò)程:需求獲取、系統(tǒng)分析、系統(tǒng)設(shè)計(jì)、實(shí)現(xiàn)和測(cè)試5個(gè)步驟。迭代UML軟件開(kāi)發(fā)過(guò)程就是一個(gè)多次反復(fù)修改、逐步完善的迭代過(guò)程。在實(shí)際工作中,建模的步驟并不一定嚴(yán)格按照前面講述的次序進(jìn)行。9.1需求獲取
9.1.1需求獲取系統(tǒng)開(kāi)發(fā)的第一步工作就是進(jìn)行需求收集。需求收集從調(diào)查開(kāi)始。調(diào)查的對(duì)象、方法、內(nèi)容、步驟可參照第四章中介紹的內(nèi)容。調(diào)查的目的是為了發(fā)現(xiàn)了用戶(hù)的需求。2.建立用例圖為了能夠準(zhǔn)確的描述用戶(hù)的需求,就要使用用例。從需求角度來(lái)說(shuō),一個(gè)用例就是使用者對(duì)系統(tǒng)的一個(gè)需求。用例捕捉的是功能性需求。所有用例結(jié)合起來(lái)就構(gòu)成了“用例模型”,該模型描述系統(tǒng)的全部功能。這個(gè)模型取代了系統(tǒng)傳統(tǒng)的功能規(guī)范說(shuō)明。首先需識(shí)別用例,然后才能建立用例。1.確定系統(tǒng)邊界
在確定使用者和用例的過(guò)程中也就確定的了系統(tǒng)的邊界,用例是系統(tǒng)之中的,使用者是系統(tǒng)外部的。例:系統(tǒng)邊界確定系統(tǒng)邊界的參考問(wèn)題這些需求對(duì)于系統(tǒng)是否是必須的?這些需求是系統(tǒng)在邏輯上會(huì)完成的嗎?這些需求是使用者要求系統(tǒng)去做的嗎?2.識(shí)別使用者
⑴識(shí)別使用者的一般方法的參考問(wèn)題誰(shuí)是系統(tǒng)的主要使用者?誰(shuí)從系統(tǒng)獲取信息?誰(shuí)向系統(tǒng)輸入信息?誰(shuí)從系統(tǒng)中刪除信息?誰(shuí)需要系統(tǒng)支持它們的日常工作?誰(shuí)來(lái)維護(hù)、管理系統(tǒng)使其能正常工作?系統(tǒng)需要控制哪些硬件?系統(tǒng)需要與其它哪些系統(tǒng)交互?(這里的其它系統(tǒng)包含其它計(jì)算機(jī)系統(tǒng)和其它應(yīng)用程序。)對(duì)系統(tǒng)產(chǎn)生的結(jié)果感興趣的是哪些人或哪些事物?⑵系統(tǒng)邊界與使用者系統(tǒng)邊界與使用者⑶事件與使用者事件是在特定的時(shí)間發(fā)生的事情,并且啟動(dòng)或觸發(fā)了系統(tǒng)的預(yù)置響應(yīng)。事件分為外部、內(nèi)部和定時(shí)三類(lèi)。事件驅(qū)動(dòng)系統(tǒng)的基本運(yùn)作模式是系統(tǒng)空閑等待;事件發(fā)生,系統(tǒng)響應(yīng);響應(yīng)完成,系統(tǒng)繼續(xù)等待。⑷特殊的使用者――系統(tǒng)時(shí)鐘⑵識(shí)別用例面對(duì)一個(gè)大系統(tǒng),要列出用例清單常常是很困難的。在這種情況下,往往首先需要找出各種可能的使用者,開(kāi)列出他們的名單,然后通過(guò)對(duì)這些使用者的調(diào)查,為他們描繪出各自要求的用例。3.識(shí)別用例
⑴根據(jù)與使用者有關(guān)的服務(wù)請(qǐng)求或事件常用來(lái)識(shí)別用例的方法是基于使用者的方法。①識(shí)別出與系統(tǒng)有關(guān)的使用者。②對(duì)每個(gè)使用者,識(shí)別出它們發(fā)起的服務(wù)請(qǐng)求或事件。③對(duì)每個(gè)使用者,識(shí)別出向它們傳遞信息的服務(wù)或事件。使用者發(fā)起的服務(wù)請(qǐng)求或事件使用者使用者發(fā)起的服務(wù)請(qǐng)求或事件用例名簡(jiǎn)短的描述業(yè)務(wù)目標(biāo)向使用者發(fā)起的服務(wù)請(qǐng)求或事件使用者向使用者傳遞信息的服務(wù)或事件用例名簡(jiǎn)短的描述業(yè)務(wù)目標(biāo)⑵根據(jù)使用者的職責(zé)使用者的職責(zé)是他應(yīng)完成的任務(wù),也是他對(duì)系統(tǒng)功能的需求。因此,我們通過(guò)列出使用者的職責(zé),也能幫助我們識(shí)別系統(tǒng)的用例。對(duì)象責(zé)任使用者→職責(zé)→用例使用者名:customer(客戶(hù))。使用者職責(zé):定貨、退還定貨、查詢(xún)定單使用者→職責(zé)→用例2.從發(fā)貨者(Shipper)識(shí)別
發(fā)貨者要求系統(tǒng)提供什么功能?發(fā)貨者需要做什么?答:發(fā)貨者要求系統(tǒng)提供:倉(cāng)庫(kù)存儲(chǔ)物品的管理;發(fā)貨處理。發(fā)貨者需要做;從所有的定單中按順序挑選出優(yōu)先級(jí)較高的定單來(lái)發(fā)貨;在發(fā)貨單上簽上發(fā)貨的品名、數(shù)量。
發(fā)貨者需要閱讀、創(chuàng)建、銷(xiāo)毀、更新或存儲(chǔ)系統(tǒng)的某些信息嗎?答:是,發(fā)貨者需要閱讀、更新倉(cāng)庫(kù)存儲(chǔ)物品信息和顧客信息。
系統(tǒng)中的事件一定要告知發(fā)貨者嗎?答:是,這些事件包括:倉(cāng)庫(kù)有關(guān)物品短缺(發(fā)貨者報(bào)告)根據(jù)使用者的職責(zé)識(shí)別用例使用者需要使用系統(tǒng)嗎?對(duì)于各個(gè)使用者,哪些職責(zé)會(huì)涉及到系統(tǒng)?系統(tǒng)與使用者之間有哪些交互?系統(tǒng)需要何種輸入輸出?輸入從何處來(lái)?輸出到何處去?用例將支持和維護(hù)的系統(tǒng)功能是什么?必須提醒使用者的事件有哪些?使用者必須提醒的事件有哪些?怎樣把這些事件表示成用例中的功能?4.用例的粒度
不要把用例劃分的過(guò)大,如只用一個(gè)用例就把一個(gè)系統(tǒng)或子系統(tǒng)的功能行為全部包括在內(nèi),但也不要把用例劃分得過(guò)于瑣碎細(xì)小。通常,用例的行為都是用事件流描述。這是用例粒度的底線。即每個(gè)用例都應(yīng)當(dāng)是一個(gè)完成有意義的業(yè)務(wù)任務(wù)的事件流集合。4.用例的粒度
用例粒度的合適的把握是:一個(gè)用例應(yīng)當(dāng)是一個(gè)完成有意義的業(yè)務(wù)任務(wù)的事件流集合。一個(gè)用例以能夠描述使用者與計(jì)算機(jī)的一次完整交互為宜。一個(gè)用例只描述沒(méi)有大的分支的事件流的單個(gè)線索。用例過(guò)細(xì)一般認(rèn)為合適的把握5.確定關(guān)系
關(guān)系包括使用者與用例之間的關(guān)系、用例之間的關(guān)系、使用者之間的關(guān)系。具體表現(xiàn)為:關(guān)聯(lián)關(guān)系、包含關(guān)系、擴(kuò)展關(guān)系和泛化關(guān)系。表—
角色、用例間的關(guān)系類(lèi)型關(guān)系類(lèi)型說(shuō)明關(guān)聯(lián)(association)Actor和usercase之間的關(guān)系泛化(generalization)Actor之間或usercase之間的關(guān)系包含(include)Usercase之間的關(guān)系擴(kuò)展(extend)Usercase之間的關(guān)系確定關(guān)系時(shí),需確定這種關(guān)系是誰(shuí)發(fā)出來(lái)的注意箭頭的指向注意用不同的箭頭描述不同的關(guān)系例:用例圖用來(lái)判斷應(yīng)使用哪種關(guān)系的規(guī)則:當(dāng)處理一般與特殊的關(guān)系時(shí),采用泛化關(guān)系。當(dāng)避免兩個(gè)或多個(gè)例出現(xiàn)重復(fù)描述時(shí),采用包含關(guān)系當(dāng)描述用例的某種異常動(dòng)作。采用擴(kuò)展關(guān)系6.幾種關(guān)系的區(qū)別
方法一:讓所有的相關(guān)用例都包含“登錄”用例
方法二:讓“登錄”用例包含所有的相關(guān)用例錯(cuò)誤的使用包含關(guān)系方法三:使“訂購(gòu)貨物”和“訂單查詢(xún)”兩個(gè)用例與“登錄”用例是擴(kuò)展關(guān)系方法四用況“登錄”完全獨(dú)立于其他用況7.用例的優(yōu)化
如果已創(chuàng)建的用例有重復(fù)的功能出現(xiàn),如果已創(chuàng)建的用例有功能上的相互包含,則需要對(duì)已創(chuàng)建的用例進(jìn)行優(yōu)化處理。優(yōu)化原則:獨(dú)立集中用例優(yōu)化方法——合并同類(lèi)或相似的用例合并例:電子郵件撰寫(xiě)、郵件查看、合同錄入、合同修改、合同刪除、合同查看功能性合并文檔錄入(電子郵件撰寫(xiě)、合同錄入)文檔查看(郵件查看、合同查看)業(yè)務(wù)性合并郵件管理、合同管理用例的優(yōu)化——拆分對(duì)較大的或復(fù)雜的用例用例描述,描述到了第四級(jí),仍無(wú)法描述清楚,需用例拆分主流→子流→分支流→子分支流用例優(yōu)化拆分例子管理用戶(hù)包括處理:添加用戶(hù)、修改用戶(hù)信息、刪除用戶(hù)、查找用戶(hù)、修改用戶(hù)口令、變更用戶(hù)級(jí)別拆分為:管理用戶(hù)信息、管理用戶(hù)、管理用戶(hù)權(quán)利三個(gè)用例(按業(yè)務(wù)相關(guān)性)8.定義用例的優(yōu)先級(jí)
為了區(qū)分需求的優(yōu)先級(jí)。區(qū)分用例的優(yōu)先級(jí)是為了確定哪些用例要先行開(kāi)發(fā),哪些用例要放在隨后的迭代工作中開(kāi)發(fā)。區(qū)分的依據(jù)是前面活動(dòng)生成的概要用例模型、補(bǔ)充需求說(shuō)明和術(shù)語(yǔ)表。9.建立用例圖的規(guī)則
如果兩名使用者有相同的功能需求,應(yīng)建立一個(gè)用例;如果對(duì)同一事物有前臺(tái)處理和后臺(tái)處理之分,應(yīng)建立兩個(gè)用例;如果需要建立包含關(guān)系,通?;居美龖?yīng)是主要功能需求;不要在用例圖上表現(xiàn)各用例之間的順序關(guān)系,如用順序關(guān)系,可在用例規(guī)范中的前置條件、后置條件中說(shuō)明;擴(kuò)展用例的功能相對(duì)與基本用例是有條件執(zhí)行的;當(dāng)處理一般與特殊的關(guān)系時(shí),采用泛化關(guān)系;當(dāng)避免兩個(gè)或多個(gè)例出現(xiàn)重復(fù)描述時(shí),采用包含關(guān)系;當(dāng)描述用例的某種特殊動(dòng)作。采用擴(kuò)展關(guān)系;9.建立用例圖的規(guī)則
如果某個(gè)基本用例存在特殊動(dòng)作,必須用擴(kuò)展關(guān)系描述下來(lái),因?yàn)閿U(kuò)展用例是不包括在基本用例之內(nèi)的,不描述擴(kuò)展用例等于遺失了系統(tǒng)的部分功能,這對(duì)需求獲取是不允許出現(xiàn)的;包含用例如果不描述,從功能獲取角度并無(wú)遺失,因?yàn)椴话寻美崛〕鰜?lái),那這部分用例仍存在與基本用例中,不存在功能遺失問(wèn)題;如果僅僅想描述一般使用者和特殊使用者,在用例圖中采用使用者的泛化關(guān)系意義并不大;但如果既要強(qiáng)調(diào)幾個(gè)使用者的共同功能需求,又要分別強(qiáng)調(diào)它們各自的特殊功能需求,則應(yīng)該采用使用者的泛化關(guān)系。9.1.2用例描述
詳細(xì)具體的描述一個(gè)用例還要使用用例描述。用例描述是采用自然語(yǔ)言描述一個(gè)用例的功能。通過(guò)用例的事件流完全可以描述系統(tǒng)的功能性需求。結(jié)構(gòu)化的用例描述文本描述一個(gè)用例,應(yīng)說(shuō)明以下細(xì)節(jié):⑴用例名:描寫(xiě)用例的名稱(chēng)⑵簡(jiǎn)要說(shuō)明:對(duì)用例目的的簡(jiǎn)要描述;⑶用例使用者:用例的使用者;⑷前置條件:執(zhí)行用例之前系統(tǒng)必須要處于的狀態(tài),或者要滿(mǎn)足的條件;⑸基本事件流:描述該用例的基本流程,指每個(gè)流程都“正?!边\(yùn)作時(shí)所發(fā)生的事情,也可描述簡(jiǎn)單分支和循環(huán);;⑹替代事件流:替代事件流是用例中的備選事件流,用來(lái)捕獲基本事件流中的出錯(cuò)、分支和中斷;⑺用例關(guān)系:與之有關(guān)系的用例;⑻擴(kuò)展點(diǎn):擴(kuò)展關(guān)系在基本用例中的擴(kuò)展位置;⑼后置條件:用例一旦執(zhí)行后系統(tǒng)所處的狀態(tài);9.1.3用例的組織
對(duì)較大的系統(tǒng),為了更好的理解和管理它們,我們可以通過(guò)兩種方式進(jìn)行組織:用“包(PackagC)”來(lái)組織:用用例的級(jí)別層次關(guān)系來(lái)組織。產(chǎn)品分銷(xiāo)系統(tǒng)用例圖—總體圖產(chǎn)品分銷(xiāo)系統(tǒng)用例圖—銷(xiāo)售中心子系統(tǒng)用例的組織--產(chǎn)品分銷(xiāo)系統(tǒng)—銷(xiāo)售中心子系統(tǒng)—客戶(hù)信息管理用例圖用例圖的層次ABCB1B2A2A3A1C1C2子系統(tǒng)1子系統(tǒng)3子系統(tǒng)2學(xué)校教學(xué)管理系統(tǒng)高層用例圖成績(jī)管理教學(xué)管理系統(tǒng)試題管理選課管理學(xué)校教學(xué)管理系統(tǒng)細(xì)化的用例圖輸入成績(jī)查詢(xún)成績(jī)成績(jī)修改,統(tǒng)計(jì)成績(jī)管理系統(tǒng)<<extend>>第9章面向?qū)ο蟮南到y(tǒng)分析9.2系統(tǒng)分析
面向?qū)ο笙到y(tǒng)分析階段的主要任務(wù)是分析問(wèn)題域(即應(yīng)用領(lǐng)域)和系統(tǒng)責(zé)任,找出問(wèn)題解決方案,發(fā)現(xiàn)對(duì)象,分析對(duì)象的內(nèi)部構(gòu)成和外部關(guān)系,產(chǎn)生一個(gè)符合用戶(hù)需求,并能夠直接反應(yīng)問(wèn)題域和系統(tǒng)責(zé)任的對(duì)象模型及其詳細(xì)說(shuō)明。系統(tǒng)分析具體來(lái)說(shuō),分析階段的活動(dòng)主要是:識(shí)別對(duì)象;確定類(lèi);確定類(lèi)的屬性和操作;確定類(lèi)之間的關(guān)系:確定對(duì)象之間的交互:確定對(duì)象的狀態(tài)變化等。9.2.1識(shí)別對(duì)象
識(shí)別對(duì)象并不是從零開(kāi)始的工作,應(yīng)該最大限度地利用已有的勞動(dòng)成果。比較典型的可利用的資料有。用例圖和用例描述。術(shù)語(yǔ)表。權(quán)威的術(shù)語(yǔ)定義集合。課程注冊(cè)系統(tǒng)的術(shù)語(yǔ)表課程課程目錄職員財(cái)務(wù)系統(tǒng)年級(jí)教授學(xué)期成績(jī)單名冊(cè)學(xué)生教學(xué)日歷三個(gè)要點(diǎn)識(shí)別對(duì)象的三個(gè)要點(diǎn)。從上述來(lái)源中找出候選的對(duì)象集合,根據(jù)對(duì)象的基本含義作出相應(yīng)取舍。將被確認(rèn)的對(duì)象以類(lèi)的形式加入設(shè)計(jì)模型,為每個(gè)對(duì)象作簡(jiǎn)要文字說(shuō)明。將對(duì)象繪制在一張(或者多張)描述類(lèi)之間關(guān)系的類(lèi)圖中,標(biāo)識(shí)現(xiàn)階段能夠確認(rèn)的關(guān)系。1.發(fā)現(xiàn)對(duì)象
用例圖和用例描述是用來(lái)發(fā)現(xiàn)對(duì)象的重要資料,為了尋找對(duì)象需要認(rèn)真閱讀它們,閱讀時(shí)先將名詞劃出來(lái)。但名詞可能是參與者、對(duì)象和對(duì)象屬性,所以還要區(qū)別它們。發(fā)現(xiàn)對(duì)象參與者通常比較容易區(qū)別,區(qū)別對(duì)象和對(duì)象屬性可以通過(guò)分析是否有行為,對(duì)象是有行為的,而屬性只是單純的信息。對(duì)象是有屬性的。并不是所有的對(duì)象都能通過(guò)用例圖和用例描述發(fā)現(xiàn),三種對(duì)象類(lèi)型分析模型中最常用的三種對(duì)象類(lèi)型,它們是:實(shí)體(Entity)邊界(Bountary)控制(Control)⑴實(shí)體對(duì)象實(shí)體對(duì)象主要的任務(wù)是保存信息,同時(shí)也具有相關(guān)的行為,但是這部分行為主要包括那些和實(shí)體對(duì)象自身信息直接相關(guān)的操作??梢哉业綄?shí)體對(duì)象的幾個(gè)辦法①考慮解決問(wèn)題所需要的全部數(shù)據(jù)和行為,然后將數(shù)據(jù)按相關(guān)性分組。②識(shí)別出重要的名詞,并將它們作為實(shí)體對(duì)象,然后確定每一個(gè)實(shí)體對(duì)象包含的數(shù)據(jù)和行為。識(shí)別實(shí)體對(duì)象可參考的問(wèn)題:該對(duì)象是否是某個(gè)問(wèn)題中的重要的名詞?該對(duì)象是否包含用來(lái)解決系統(tǒng)問(wèn)題的重要的信息?該對(duì)象是否與用來(lái)解決系統(tǒng)問(wèn)題的重要的動(dòng)作有關(guān)?⑵邊界對(duì)象邊界對(duì)象用于描述擬建系統(tǒng)內(nèi)部運(yùn)作與外部環(huán)境之間的交互,主要負(fù)責(zé)內(nèi)容的翻譯和形式的轉(zhuǎn)換,并表達(dá)相應(yīng)的結(jié)果。邊界對(duì)象主要用于描述三種類(lèi)型的內(nèi)容:擬建系統(tǒng)和用戶(hù)的界面,擬建系統(tǒng)和外部系統(tǒng)的接口擬建系統(tǒng)與設(shè)備的接口。⑵邊界對(duì)象通過(guò)檢查在用例圖中的參與者與用例之間的關(guān)系,我們可以識(shí)別出邊界對(duì)象。通常,在分析模型中,每一對(duì)參與者/用例都構(gòu)成了一個(gè)邊界對(duì)象。識(shí)別邊界對(duì)象用戶(hù)外部系統(tǒng)用戶(hù)界面外部系統(tǒng)接口用例識(shí)別邊界對(duì)象的可參考的問(wèn)題該對(duì)象是否描述了必須顯示的信息以及必須提供的服務(wù)?該對(duì)象是否包含所有的接口設(shè)計(jì)細(xì)節(jié)?該對(duì)象是否描述了與外部系統(tǒng)的交互?⑶控制對(duì)象控制對(duì)象用于描述對(duì)一個(gè)用例所特有的事件流的控制行為??刂茖?duì)象相當(dāng)于協(xié)調(diào)人它知道那些類(lèi)有能力完成具體的任務(wù)。通常一個(gè)用例對(duì)應(yīng)一個(gè)控制類(lèi)。識(shí)別控制對(duì)象可參考的問(wèn)題是否對(duì)業(yè)務(wù)邏輯進(jìn)行控制?是否將業(yè)務(wù)邏輯結(jié)果提交給實(shí)體對(duì)象?順序圖中的邊界對(duì)象,控制對(duì)象和實(shí)體對(duì)象2.描述對(duì)象的行為在已確定的三類(lèi)對(duì)象的基礎(chǔ)上,運(yùn)用順序圖和協(xié)作圖可以反映三類(lèi)對(duì)象的協(xié)作關(guān)系。以上得到的信息只展示了對(duì)象和對(duì)象之間的靜態(tài)關(guān)系,并不完整。我們還需要詳細(xì)了解對(duì)象在系統(tǒng)中的行為和責(zé)任。責(zé)任責(zé)任是消息響應(yīng)者應(yīng)做的事。消息被要求者提出,責(zé)任由響應(yīng)者承擔(dān)。確定責(zé)任主要根據(jù)責(zé)任和消息的簡(jiǎn)明對(duì)應(yīng)關(guān)系,所謂找出責(zé)任是根據(jù)消息的要求定義責(zé)任,即用責(zé)任滿(mǎn)足消息所提出的要求。⑴對(duì)象的行為對(duì)象的行為是通過(guò)系統(tǒng)中對(duì)象之間的交互以及對(duì)象內(nèi)部狀態(tài)的轉(zhuǎn)化來(lái)表現(xiàn)的。對(duì)象間通過(guò)發(fā)送消息而產(chǎn)生交互。同時(shí)在一個(gè)對(duì)象的生命周期內(nèi)也存在狀態(tài)的轉(zhuǎn)移以及對(duì)事件的響應(yīng)。動(dòng)態(tài)分析的主要任務(wù)動(dòng)態(tài)分析的主要任務(wù)包括分析用例的實(shí)現(xiàn)過(guò)程(要求有詳細(xì)的用例描述),從而更好地理解業(yè)務(wù)流程以及為發(fā)現(xiàn)類(lèi)打好基礎(chǔ);動(dòng)態(tài)分析的UML圖用于進(jìn)行動(dòng)態(tài)分析的UML圖包括順序圖、協(xié)作圖、活動(dòng)圖和狀態(tài)圖。這幾種圖從不同的角度和方面和描述對(duì)象的動(dòng)態(tài)行為。⑴系統(tǒng)動(dòng)態(tài)分析交互圖表現(xiàn)的是參與者與系統(tǒng)以及系統(tǒng)內(nèi)部對(duì)象之間的交互,創(chuàng)建交互圖時(shí)要記住,你是在向?qū)ο笾付氊?zé)。將消息加進(jìn)交互圖時(shí),是在向接收消息的對(duì)象指定職責(zé)。順序圖與事件流用例的事件流中可能包含多個(gè)事件流,通常有一個(gè)基本事件流和多個(gè)分支事件流、替代事件流。每個(gè)事件流應(yīng)用一個(gè)順序圖描述。場(chǎng)景和用例用例中的場(chǎng)景描述可以是形成系統(tǒng)對(duì)象圖的一個(gè)出發(fā)點(diǎn)。它對(duì)于系統(tǒng)中對(duì)象的發(fā)現(xiàn)有極大的幫助。用例一般是由多個(gè)場(chǎng)景組合而成的,每個(gè)場(chǎng)景代表了用例的一個(gè)實(shí)例。⑵對(duì)象狀態(tài)分析狀態(tài)圖針對(duì)單個(gè)對(duì)象建模,通過(guò)分析單個(gè)對(duì)象的內(nèi)部狀態(tài)轉(zhuǎn)換來(lái)了解一個(gè)對(duì)象的行為。對(duì)于有多種內(nèi)部狀態(tài)的對(duì)象,狀態(tài)圖可以顯示對(duì)象如何從一種狀態(tài)過(guò)渡到另外一種狀態(tài),以及對(duì)象在不同狀態(tài)中的不同行為。通過(guò)分析某一對(duì)象的狀態(tài)變化,為設(shè)計(jì)此對(duì)象的操作提供依據(jù)。步驟分析一個(gè)對(duì)象的狀態(tài)可采用下列:①首先要確定該對(duì)象有那些狀態(tài)是問(wèn)題域所關(guān)心的。。②分析對(duì)象生命周期,確定對(duì)象活動(dòng)“歷程”;③獲取一系列候選狀態(tài);④針對(duì)每一個(gè)候選狀態(tài),分析出對(duì)象在此狀態(tài)下的動(dòng)作。確定對(duì)象狀態(tài)的兩種方法:檢查類(lèi)的屬性:考慮一個(gè)類(lèi)的實(shí)例在屬性值不同時(shí)如何表現(xiàn),因?yàn)槿绻麑?duì)象的行為表現(xiàn)不同,則其狀態(tài)也不同。例:某培訓(xùn)班的人數(shù)屬性50人10人檢查類(lèi)的關(guān)聯(lián)檢查類(lèi)的關(guān)聯(lián):看看關(guān)聯(lián)多重性中帶0的關(guān)聯(lián),0表示這個(gè)關(guān)聯(lián)是可選的。關(guān)聯(lián)存在和不存在時(shí)類(lèi)的實(shí)例是否表現(xiàn)相同?如果不同,則可能有多種狀態(tài)狀態(tài)與屬性9.2.2創(chuàng)建分析類(lèi)圖
創(chuàng)建分析類(lèi)圖的工作主要包括:確定分析類(lèi)和確定分析類(lèi)的操作、屬性和類(lèi)之間的關(guān)系分析類(lèi)的概念分析模型中的所有類(lèi)都是”分析類(lèi)”。從設(shè)計(jì)視角看待,“分析類(lèi)”忽略實(shí)現(xiàn)細(xì)節(jié),相當(dāng)粗略?!胺治鲱?lèi)”是為定義設(shè)計(jì)類(lèi)做準(zhǔn)備的。一個(gè)”分析類(lèi)”可以創(chuàng)建一個(gè)設(shè)計(jì)類(lèi),也可以創(chuàng)建多個(gè)。1.確定“分析類(lèi)”創(chuàng)建分析類(lèi)圖首先確定一組備選的、能夠執(zhí)行用例中行為的“分析類(lèi)”。“分析類(lèi)”的實(shí)例應(yīng)該滿(mǎn)足用例的所有的需求。三種“分析類(lèi)”邊界類(lèi):每個(gè)參與者和用例的交互存在一個(gè)對(duì)應(yīng)的邊界類(lèi)。一個(gè)用例可能有多個(gè)邊界類(lèi)。它很可能是用戶(hù)的使用界面,如結(jié)賬用例的結(jié)賬頁(yè)面??刂祁?lèi):一般一個(gè)用例對(duì)應(yīng)一個(gè)控制類(lèi)。它一般存在于特定的應(yīng)用層,它可能處理了業(yè)務(wù)邏輯。實(shí)體類(lèi):這個(gè)主要看用例里面用到的持久的數(shù)據(jù)對(duì)象??刂祁?lèi)要用到數(shù)據(jù)庫(kù)對(duì)象時(shí),可能就使用了實(shí)體類(lèi)。獲取邊界類(lèi)
分析參與者與用例對(duì),找出邊界類(lèi)邊界類(lèi)的復(fù)用控制類(lèi)的考慮如果不同用例包含的任務(wù)之間有比較緊密的聯(lián)系,某些控制類(lèi)可以參與多個(gè)用例實(shí)現(xiàn)。當(dāng)用例事件流非常簡(jiǎn)單的情況下,控制類(lèi)的必要性明顯降低。實(shí)體類(lèi)的考慮實(shí)體類(lèi)的適用范圍和生命周期可能超越特定的用例事件流。實(shí)體類(lèi)通常不是某一特定用例所專(zhuān)有的。2.分析類(lèi)的獲取
類(lèi)的獲取有兩種辦法:一種是從用例的用例描述開(kāi)始,檢查事件流中的每個(gè)名詞。描述用例的事件流中有4種名詞:參與者、類(lèi)、類(lèi)的屬性、其他描述性名詞。能夠找出實(shí)體類(lèi)⑴根據(jù)事件流中的名詞找出實(shí)體類(lèi)去掉不必要的類(lèi)和不正確的類(lèi)根據(jù)下列標(biāo)準(zhǔn),去掉“銀行網(wǎng)絡(luò)系統(tǒng)”不必要的類(lèi)和不正確的類(lèi)。(1)冗余類(lèi):若兩個(gè)類(lèi)表述了同一個(gè)信息,保留最富有描述能力的類(lèi)。如"用戶(hù)"和"顧客"就是重復(fù)的描述,因?yàn)?顧客"最富有描述性,因此保留它。(2)不相干的類(lèi):除掉與問(wèn)題沒(méi)有關(guān)系或根本無(wú)關(guān)的類(lèi)。例如,攤派費(fèi)用超出了銀行網(wǎng)絡(luò)的范圍。(3)模糊類(lèi):類(lèi)必須是確定的,有些暫定類(lèi)邊界定義模糊或范圍太廣,如"記錄保管"就模糊類(lèi),它是"事務(wù)"中的一部分。(4)屬性:某些名詞描述的是其他對(duì)象的屬性,則從暫定類(lèi)中刪除。如果某一性質(zhì)的獨(dú)立性很重要,就應(yīng)該把他歸屬到類(lèi),而不把它作為屬性。(5)操作:去掉不必要的類(lèi)和不正確的類(lèi)在銀行網(wǎng)絡(luò)系統(tǒng)中,模糊類(lèi)是"系統(tǒng)"、"安全措施"、"記錄保管"、"銀行網(wǎng)絡(luò)"等。屬于屬性的有:"帳戶(hù)數(shù)據(jù)"、"收據(jù)"、"現(xiàn)金"、"事務(wù)數(shù)據(jù)"。屬于實(shí)現(xiàn)的如:"訪問(wèn)"、"軟件"等。這些均應(yīng)除去。⑵根據(jù)交互圖發(fā)現(xiàn)分析類(lèi)檢查交互圖中的對(duì)象,研究對(duì)象具有的共同屬性和操作來(lái)發(fā)現(xiàn)類(lèi)。如果采用第二種方法創(chuàng)建類(lèi)圖,需要先創(chuàng)建交互圖。3.合并分析類(lèi)
分析了所有用例以后,并為每一個(gè)用例創(chuàng)建了類(lèi)圖,就要合并各種不同的分析類(lèi)來(lái)達(dá)成一個(gè)系統(tǒng)的分析模型。這一個(gè)階段的任務(wù)是對(duì)不同用例中相同類(lèi)型的分析類(lèi)進(jìn)行分析,看它們是否相同,如相同則考慮合并。合并后的分析類(lèi)圖4.識(shí)別分析類(lèi)操作
通常有兩種方法為類(lèi)識(shí)別操作:第一是責(zé)任驅(qū)動(dòng)法,第二是通過(guò)交互圖
⑴責(zé)任驅(qū)動(dòng)法識(shí)別類(lèi)“操作”責(zé)任驅(qū)動(dòng)主要基于兩個(gè)概念:第一,一個(gè)對(duì)象在系統(tǒng)中負(fù)有一定的責(zé)任,例如它要獲得特定的信息(了解的責(zé)任)和為其他對(duì)象提供特定的信息(做的責(zé)任);第二,一個(gè)對(duì)象與其他對(duì)象合作來(lái)提供所要求的服務(wù)。責(zé)任驅(qū)動(dòng)法識(shí)別類(lèi)“操作”類(lèi)的責(zé)任可以從用例描述導(dǎo)出,可以首先定義用例所包含的系統(tǒng)責(zé)任,然后,在系統(tǒng)的類(lèi)中識(shí)別這些責(zé)任。
CRC卡技術(shù)責(zé)任分析的一種有用技術(shù)CRC(Class-Responsibility-Collaboration)卡技術(shù)。也就是為每個(gè)類(lèi)創(chuàng)建一個(gè)CRC卡,其中包括類(lèi)名、類(lèi)責(zé)任和完成每個(gè)責(zé)任所需的協(xié)作者的描述。還可以將類(lèi)的詳細(xì)描述寫(xiě)在卡的背面。這種方式充分體現(xiàn)了“用例驅(qū)動(dòng)”的思想。為類(lèi)分配操作——CRC卡類(lèi)的名稱(chēng)類(lèi)的名稱(chēng)責(zé)任1責(zé)任1的協(xié)作者對(duì)該類(lèi)的描述…責(zé)任2責(zé)任2的協(xié)作者責(zé)任3責(zé)任3的協(xié)作者……注冊(cè)討論班的CRC卡⑵用交互圖描述用例來(lái)為類(lèi)識(shí)別“操作”
面向?qū)ο笙到y(tǒng)是通過(guò)對(duì)象間相互發(fā)送消息來(lái)完成系統(tǒng)功能的。所以,這些對(duì)象間傳遞的消息就可以映射為對(duì)象的操作。有助于尋找類(lèi)操作的問(wèn)題(1)有哪些類(lèi)會(huì)與該類(lèi)交互,包括該類(lèi)本身?(2)該類(lèi)接收哪些類(lèi)(包括自己)發(fā)送的消息,收到消息之后進(jìn)行什么處理?(3)該類(lèi)向哪些類(lèi)發(fā)送消息,消息的內(nèi)容是什么,在發(fā)送之前該類(lèi)需要做什么處理?(4)該類(lèi)中需要哪些操作來(lái)維持自身屬性的一致性、完整性,以及自身屬性的更新?⑶分析類(lèi)操作的設(shè)計(jì)
簡(jiǎn)要標(biāo)識(shí)分析類(lèi)的“操作”。同樣要給“操作”起一個(gè)易于理解的名字,通常要比較簡(jiǎn)短一個(gè)類(lèi)的操作太多或太少都是不合適的5.識(shí)別分析類(lèi)屬性
“分析類(lèi)”要能執(zhí)行相應(yīng)的操作,它要依賴(lài)于兩方面的內(nèi)容:一方面是利用它自己保存的信息;另一方面是利用其他的類(lèi)。類(lèi)自己所能夠保存的信息就是它的屬性①識(shí)別出類(lèi)的屬性有些類(lèi)的屬性可以從前面得到的文檔中找到。通常,在用例描述中用名詞表示屬性,如“圖書(shū)的出版社、價(jià)格等”。有助于識(shí)別類(lèi)屬性的問(wèn)題①按一般常識(shí)這個(gè)類(lèi)應(yīng)該具有哪些屬性?②在當(dāng)前的問(wèn)題域中類(lèi)應(yīng)該具有什么屬性?③根據(jù)系統(tǒng)責(zé)任的要求,這個(gè)類(lèi)應(yīng)該具有哪些屬性?④建立這個(gè)類(lèi)是為了保存和管理哪些信息?⑤有哪些需要區(qū)別的狀態(tài),是否需要增加一個(gè)屬性來(lái)區(qū)別這些狀態(tài)?②獲得屬性的渠道屬性的來(lái)源有許多。獲得屬性的渠道有幾個(gè):⑴通過(guò)查看用例文檔,尋找事件流中的名詞。⑵通過(guò)查看文檔,發(fā)現(xiàn)系統(tǒng)要收集的信息,這些信息就是類(lèi)的屬性。⑶如果已經(jīng)定義了數(shù)據(jù)庫(kù)結(jié)構(gòu),則數(shù)據(jù)庫(kù)表中的字段就是屬性。③確定分析類(lèi)屬性的基本原則要確認(rèn)它相對(duì)于相應(yīng)對(duì)象或類(lèi)的每一個(gè)實(shí)例都是適用的。屬性應(yīng)當(dāng)是一種相對(duì)的原子概念,類(lèi)的屬性不宜太多,如果某個(gè)類(lèi)的屬性太多,最好將其分解成更小的類(lèi)。④屬性的類(lèi)型屬性的類(lèi)型指屬性值的類(lèi)型??梢允腔緮?shù)據(jù)類(lèi)型,例如整數(shù)、實(shí)數(shù)、布爾型、字符串型等,也可以是用戶(hù)自定義的類(lèi)型。分析階段一般不需要確定屬性的類(lèi)型6.描述分析類(lèi)之間的關(guān)系類(lèi)之間的關(guān)系有關(guān)聯(lián)關(guān)系、聚合關(guān)系、組合關(guān)系、泛化關(guān)系、依賴(lài)關(guān)系。1)類(lèi)之間的關(guān)系建模通常按照以下步驟對(duì)類(lèi)之間的關(guān)系建模:找出關(guān)系→繪制分析類(lèi)圖→給關(guān)系命名→設(shè)置多重性→設(shè)置其他特性有的類(lèi)只和其他一個(gè)類(lèi)有關(guān)系,而有些類(lèi)同時(shí)和其他多個(gè)類(lèi)存在關(guān)系。在一個(gè)面向?qū)ο笙到y(tǒng)中,不存在完全獨(dú)立的類(lèi)。2)識(shí)別類(lèi)關(guān)系識(shí)別類(lèi)之間的整體和部分關(guān)系的策略物理上的整體事物和它的組織部分,如設(shè)備——零部件;組織機(jī)構(gòu)和它的下級(jí)組織及部分,如公司——部門(mén);團(tuán)體組織與個(gè)人,如班級(jí)——學(xué)生;一種事物在空間包容其它事物,如教室——桌椅;抽象事物的整體與部分,如學(xué)科——分支學(xué)科;具體事物與它的某個(gè)抽象方面,如教師——科研情況。識(shí)別類(lèi)之間的泛化關(guān)系的策略根據(jù)問(wèn)題域中的分類(lèi)學(xué)知識(shí);按常識(shí)考慮事物的分類(lèi);分析一個(gè)類(lèi)是否是另一個(gè)類(lèi)的子集;分析一個(gè)類(lèi)是否具有另一個(gè)類(lèi)的全部特征;分析一個(gè)類(lèi)的屬性和操作是否適合這個(gè)類(lèi)的全部對(duì)象;是否有兩個(gè)類(lèi)含有共同的屬性和操作。檢查交互圖識(shí)別類(lèi)關(guān)系例:報(bào)賬系統(tǒng)順序圖有助確定類(lèi)圖關(guān)聯(lián)關(guān)系的協(xié)作圖確定類(lèi)圖的關(guān)系3)關(guān)系查找策略關(guān)系查找的一種策略是在一個(gè)用例中,找出用例中幾個(gè)類(lèi)存在的關(guān)系,然后再尋找另外一個(gè)用例中類(lèi)的關(guān)系,直到窮盡了所有的用例為止。注意:兩個(gè)類(lèi)之間可能同時(shí)存在多種不同的關(guān)系。不能因?yàn)橐呀?jīng)找到了兩個(gè)類(lèi)之間的一種關(guān)系而忽略了它們存在的其它關(guān)系。4)描述類(lèi)之間關(guān)系的類(lèi)圖分析階段繪制的類(lèi)圖稱(chēng)為分析類(lèi)圖分析類(lèi)圖有兩種,簡(jiǎn)略的分析類(lèi)圖和詳細(xì)的分析類(lèi)圖。簡(jiǎn)略的分析類(lèi)圖--某銀行系統(tǒng)分析類(lèi)圖
詳細(xì)的分析類(lèi)圖6.類(lèi)的構(gòu)造型類(lèi)的構(gòu)造型可以將類(lèi)進(jìn)行分類(lèi),并且有助于理解每個(gè)類(lèi)的職責(zé),例如,《Form》構(gòu)造型的類(lèi)負(fù)責(zé)接收用戶(hù)信息。類(lèi)的構(gòu)造型寫(xiě)在括號(hào)《》之中。不同構(gòu)造型的類(lèi)具有不同的職責(zé)。類(lèi)的構(gòu)造型第10章面向?qū)ο蟮南到y(tǒng)設(shè)計(jì)系統(tǒng)設(shè)計(jì)面向?qū)ο蟮脑O(shè)計(jì)是將分析階段獲得的對(duì)象模型變成系統(tǒng)實(shí)現(xiàn)方案的過(guò)程。在設(shè)計(jì)階段對(duì)分析模型進(jìn)行擴(kuò)展并將模型進(jìn)一步細(xì)化,同時(shí)還要考慮技術(shù)細(xì)節(jié)和各種限制條件。系統(tǒng)設(shè)計(jì)分為兩個(gè)階段系統(tǒng)總體設(shè)計(jì)階段:主要包括如何把整個(gè)系統(tǒng)劃分為多個(gè)包(子系統(tǒng)),以及描述多個(gè)包之間的依賴(lài)性等。詳細(xì)設(shè)計(jì)階段:在這個(gè)階段,主要是決定在實(shí)現(xiàn)過(guò)程中使用的類(lèi)和關(guān)系的全部定義,以及用于實(shí)現(xiàn)操作的各種方法的算法和接口。所有的類(lèi)都盡可能地進(jìn)行詳細(xì)描述,10.1.1系統(tǒng)總體設(shè)計(jì)
設(shè)計(jì)階段先從高層入手,然后細(xì)化。系統(tǒng)總體設(shè)計(jì)要決定整個(gè)系統(tǒng)結(jié)構(gòu)1.劃分子系統(tǒng)
對(duì)于一個(gè)復(fù)雜的軟件系統(tǒng),在進(jìn)行系統(tǒng)總體設(shè)計(jì)時(shí),通常的做法是將一個(gè)軟件系統(tǒng)采用分層和分區(qū)方法來(lái)劃分。在使用分層方法進(jìn)行分解時(shí),每一層都依據(jù)其下面的一層來(lái)構(gòu)建,同時(shí)為其上一層提供實(shí)現(xiàn)基礎(chǔ)。分區(qū)方法是將系統(tǒng)劃分為幾個(gè)獨(dú)立的或弱耦合的子系統(tǒng),每個(gè)子系統(tǒng)都提供一種服務(wù)。劃分子系統(tǒng)的依據(jù)可以按照系統(tǒng)的物理布局劃分可以按照軟件層次劃分子系統(tǒng)可以按照功能劃分三層體系結(jié)構(gòu)例:按軟件層次劃分子系統(tǒng)例:按照功能劃分子系統(tǒng)2.定義各子系統(tǒng)之間的關(guān)系
當(dāng)劃分了各子系統(tǒng)后,還要確定子系統(tǒng)之間的關(guān)系,如果子系統(tǒng)的內(nèi)容相互有聯(lián)系,說(shuō)明子系統(tǒng)之間的有依賴(lài)關(guān)系3.定義子系統(tǒng)的接口
每個(gè)子系統(tǒng)提供的接口定義了一些對(duì)外部子系統(tǒng)提供的操作,體現(xiàn)了子系統(tǒng)的功能。一個(gè)子系統(tǒng)的功能實(shí)現(xiàn)的具體方法應(yīng)該是隱藏的,外部子系統(tǒng)只能通過(guò)接口間接地享受它提供的服務(wù),不能直接操作它。例:子系統(tǒng)及接口
定義子系統(tǒng)的接口定義子系統(tǒng)接口,首先應(yīng)命名子系統(tǒng)接口。將類(lèi)的構(gòu)造型標(biāo)記為<<Interface>>。接著,描述擬建子系統(tǒng)的行為,即是定義操作集合。子系統(tǒng)接口內(nèi)容子系統(tǒng)接口至少應(yīng)當(dāng)說(shuō)明以下內(nèi)容:操作的名稱(chēng)。操作使用的參數(shù)名稱(chēng)及類(lèi)型。操作的返回值含義及類(lèi)型。操作應(yīng)該做什么(文字描述,包括關(guān)鍵的算法)。4.劃分包
根據(jù)實(shí)際情況,系統(tǒng)還可以劃分為更細(xì)的組織單元。具體的作法是將模型元素分組放入特定的包中。作為經(jīng)驗(yàn)法則,每個(gè)包通常具有5—10個(gè)類(lèi)。良好包結(jié)構(gòu)的原則良好包結(jié)構(gòu)原則:包內(nèi)高內(nèi)聚,包間低耦合。包應(yīng)該包含一組緊密相關(guān)的類(lèi)。類(lèi)通過(guò)繼承最緊密相關(guān),組合次之,然后是聚合,最后是依賴(lài)。用包組織模型元素5.描述包之間的依賴(lài)關(guān)系
根據(jù)描述系統(tǒng)分析階段獲得的類(lèi)圖,可以獲得分處于不同包的類(lèi)之間關(guān)系,進(jìn)而推斷出相應(yīng)包之間的依賴(lài)關(guān)系。包之間的依賴(lài)關(guān)系第10章面向?qū)ο蟮南到y(tǒng)設(shè)計(jì)10.1.2詳細(xì)設(shè)計(jì)
系統(tǒng)詳細(xì)設(shè)計(jì)階段的主要任務(wù)是確保設(shè)計(jì)方案能夠?yàn)楹罄m(xù)實(shí)施活動(dòng)提供詳細(xì)明確的依據(jù)。對(duì)類(lèi)和類(lèi)的相互關(guān)系進(jìn)行詳細(xì)的定義、以及如何用具體的算法和數(shù)據(jù)結(jié)構(gòu)來(lái)表示和實(shí)現(xiàn)是此階段的具體內(nèi)容。1.設(shè)計(jì)模式的使用設(shè)計(jì)模式是進(jìn)行應(yīng)用系統(tǒng)設(shè)計(jì)時(shí)可復(fù)用的慣用模式,設(shè)計(jì)模式總結(jié)了常用問(wèn)題的解決方法,它使設(shè)計(jì)人員可以共享已有的設(shè)計(jì)經(jīng)驗(yàn),提高設(shè)計(jì)效率和質(zhì)量。對(duì)于面向?qū)ο蟮腤eb應(yīng)用系統(tǒng)設(shè)計(jì),目前主要使用的設(shè)計(jì)模式是MVC⑴MVC設(shè)計(jì)模式
模型-視圖-控制(model-view-control,簡(jiǎn)稱(chēng)MVC)結(jié)構(gòu)是目前最常見(jiàn)的J2EE應(yīng)用所基于的體系結(jié)構(gòu),MVC主要適用于交互式的Web應(yīng)用,MVC結(jié)構(gòu)視圖(View)顯示Model的數(shù)據(jù),提交由Controller提供的數(shù)據(jù)。模型(Model)維護(hù)應(yīng)用程序的狀態(tài)和數(shù)據(jù),可以接受來(lái)自View的查詢(xún)并做出響應(yīng)。同時(shí)當(dāng)Model的數(shù)據(jù)發(fā)生變化時(shí),它把變化通知給View,View根據(jù)Model的數(shù)據(jù)發(fā)生來(lái)更新自己??刂破?Controller)定義了抽象的業(yè)務(wù)邏輯,用于控制業(yè)務(wù)流程。用于描述Model如何對(duì)用戶(hù)的動(dòng)作做出反應(yīng),即處理事件。MVC關(guān)系圖MVC在Web系統(tǒng)中的應(yīng)用
電子商務(wù)系統(tǒng),適合采用MVC體系結(jié)構(gòu)。可以將一個(gè)應(yīng)用的對(duì)象分為三類(lèi)。一類(lèi)就是負(fù)責(zé)顯示的對(duì)象,一類(lèi)對(duì)象包含商業(yè)規(guī)則和數(shù)據(jù),一類(lèi)就是接收請(qǐng)求,控制商業(yè)對(duì)象去完成請(qǐng)求。⑵MVC的優(yōu)點(diǎn)
1)松散的耦合;2)并行的開(kāi)發(fā);3)可擴(kuò)展性;4)可重用性;5)模塊的有效性;6)模型的可移植性:⑶MVC體系結(jié)構(gòu)的不足
1)理解困難,耗費(fèi)時(shí)間;2)增加了系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)的復(fù)雜性;3)視圖與控制器間過(guò)于緊密的連接。設(shè)計(jì)模式的選擇與應(yīng)用分析類(lèi)+設(shè)計(jì)模式→設(shè)計(jì)類(lèi)定義設(shè)計(jì)類(lèi)的第一步就是根據(jù)項(xiàng)目特點(diǎn)選擇將要采用的設(shè)計(jì)模式。設(shè)計(jì)模式的選擇要考慮到該模式對(duì)應(yīng)的語(yǔ)言和環(huán)境,以及模式的適用范圍。基于JSP開(kāi)發(fā)網(wǎng)站時(shí),通常有兩種設(shè)計(jì)模式,稱(chēng)為Model1和Model2。Model1和Model2Model1:通過(guò)一組JSP的結(jié)合制作出來(lái)的,是以JSP為中心的設(shè)計(jì)模式。Model2:是采用MVC架構(gòu)的設(shè)計(jì)模式。Model1Model1模式其實(shí)還可以再分為兩種,一種是完全使用JSP來(lái)開(kāi)發(fā),另外一種則是使用JSP+JavaBean的設(shè)計(jì),Model1-完全使用JSP開(kāi)發(fā)系統(tǒng)(1)完全使用JSP開(kāi)發(fā)系統(tǒng)。優(yōu)點(diǎn)是:
l)開(kāi)發(fā)時(shí)程縮短;。
2)小幅度修改非常容易;Model1-完全使用JSP開(kāi)發(fā)系統(tǒng)缺點(diǎn):
l)程序可讀性降低;2)程序重復(fù)利用性降低;2)JSP+JavaBean架構(gòu)的Model1進(jìn)行快速及小型的項(xiàng)目開(kāi)發(fā)具有非常大的優(yōu)勢(shì),將部分可以重復(fù)利用的程序代碼抽出來(lái)寫(xiě)成JavaBean,當(dāng)用戶(hù)送來(lái)一個(gè)需求時(shí),通過(guò)JSP調(diào)用JavaBean負(fù)責(zé)相關(guān)數(shù)據(jù)存取、邏輯運(yùn)算等的處理,最后將結(jié)果回傳到JSP顯示結(jié)果。這樣,不同的JSP可以調(diào)用許多共享性的程序代碼,減少編寫(xiě)重復(fù)程序代碼的工作,增加開(kāi)發(fā)效率。JSP+JavaBean架構(gòu)JSP+JavaBean架構(gòu)的Model1但是這種方式缺乏流程控制,缺少了MVC中的Controller去控制相關(guān)的流程,②Model2Model2就是采用MVC架構(gòu)的開(kāi)發(fā)模式。Model代表的是應(yīng)用程序的應(yīng)用邏輯;View是系統(tǒng)的顯示接口;Controller是提供應(yīng)用程序的處理過(guò)程控制MVC設(shè)計(jì)模式基于Bean的MVC模型可以利用JavaBean實(shí)現(xiàn),也可以利用EJB實(shí)現(xiàn),分別構(gòu)成的系統(tǒng)是JavaBean(M)+JSP(V)+Servlet(C)EJB(M)+JSP(V)+Servlet(C)MVC設(shè)計(jì)模式
JavaBean(M)+JSP(V)+Servlet(C)⑶Struts框架
Struts是較好的JSPFramework⑶Struts框架
2.設(shè)計(jì)設(shè)計(jì)類(lèi)
在設(shè)計(jì)階段定義的類(lèi),稱(chēng)它們?yōu)樵O(shè)計(jì)類(lèi)。識(shí)別設(shè)計(jì)類(lèi)可以從分析階段定義的分析類(lèi)入手要具體設(shè)計(jì)每個(gè)類(lèi)的內(nèi)容,包括為每個(gè)類(lèi)設(shè)計(jì)操作、屬性、關(guān)系、狀態(tài)和設(shè)計(jì)類(lèi)的特殊需求。⑴定義類(lèi)的屬性
設(shè)計(jì)類(lèi)的屬性時(shí)有些內(nèi)容是必須要定義的,有些內(nèi)容是可選的。必須定義的內(nèi)容有:(1)屬性的數(shù)據(jù)類(lèi)型。(2)屬性的可見(jiàn)性①屬性命名屬性名的一般形式:attributeName首先應(yīng)命名屬性。屬性應(yīng)該以一致的風(fēng)格命名屬性命名與類(lèi)命名的原則相似,使用2-3個(gè)英文單詞,首單詞的首字母小寫(xiě),其他大寫(xiě),意義要明確。屬性名稱(chēng)“不好的”名字“好的”名字問(wèn)題FrNamefirstName屬性名稱(chēng)中不要使用縮寫(xiě)firstnamefirstName大寫(xiě)第2個(gè)詞的首字母會(huì)使屬性名稱(chēng)更易閱讀personFirstNamefirstName這依賴(lài)于屬性的上下文,但如果這是“Person”類(lèi)的屬性,包含“person”只會(huì)增加名稱(chēng)的長(zhǎng)度而并不提供任何價(jià)值屬性名稱(chēng)hTTPconnectionhttpConnection縮略詞應(yīng)該小寫(xiě)firstNamestringfirstName指明屬性的類(lèi)型——本例中是“string”,會(huì)把名稱(chēng)和類(lèi)型耦合起來(lái)。如果類(lèi)型發(fā)生了變化(也許你決定把這個(gè)屬性作為類(lèi)“Namestring”的一個(gè)實(shí)例重新實(shí)現(xiàn)),那么你需要重新為屬性命名otherltemCollectionorderItems第二個(gè)版本更短一些,也更容易理解②設(shè)計(jì)屬性的數(shù)據(jù)類(lèi)型設(shè)計(jì)屬性時(shí)必須要根據(jù)使用的開(kāi)發(fā)語(yǔ)言確定每個(gè)屬性的數(shù)據(jù)類(lèi)型,如果數(shù)據(jù)類(lèi)型不夠,設(shè)計(jì)人員可以利用已有的數(shù)據(jù)類(lèi)型定義新的數(shù)據(jù)類(lèi)型。③設(shè)計(jì)屬性的可見(jiàn)性一般的經(jīng)驗(yàn)是:把private可見(jiàn)性賦予所有屬性。始終調(diào)用屬性的set操作對(duì)其進(jìn)行更新,即使在該屬性定義的類(lèi)中也應(yīng)該如此;僅通過(guò)get操作直接訪問(wèn)屬性;在屬性的set操作中,實(shí)現(xiàn)簡(jiǎn)單的驗(yàn)證有效性的邏輯。④可選的屬性設(shè)計(jì)屬性的初始值。在設(shè)計(jì)屬性時(shí)要注意下面幾點(diǎn):如果一個(gè)設(shè)計(jì)類(lèi)因?yàn)槠鋵傩缘脑蜃兊脧?fù)雜而難于理解,那么就將一些屬性分離出來(lái)形成一個(gè)新的類(lèi)。類(lèi)的屬性數(shù)據(jù)結(jié)構(gòu)要堅(jiān)持簡(jiǎn)單的原則,盡可能不使用復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。⑵定義類(lèi)的操作
通常,定義一個(gè)設(shè)計(jì)類(lèi)的操作的方法之一是跟蹤對(duì)應(yīng)的”分析類(lèi)”職責(zé),詳細(xì)分析每個(gè)職責(zé)的具體含義,從中找出設(shè)計(jì)類(lèi)應(yīng)該具備的操作。一個(gè)分析類(lèi)的職責(zé)有可能需要設(shè)計(jì)類(lèi)的一個(gè)或多個(gè)操作才能完成。職責(zé)分配原則在類(lèi)間分配職責(zé)時(shí),應(yīng)考慮下面的原則。單一職責(zé)原則一個(gè)類(lèi)主要圍繞一個(gè)職責(zé)設(shè)計(jì)。如果承擔(dān)的職責(zé)過(guò)多,可考慮將它分成多個(gè)類(lèi)。如果沒(méi)有明確的職責(zé),則可考慮取消該類(lèi)。依賴(lài)抽象而非具體原則盡量在接口間建立聯(lián)系,而不是在具體類(lèi)間職責(zé)分配原則惰性原則不要主動(dòng)為類(lèi)添加功能,除非為了滿(mǎn)足測(cè)試的需要或?qū)崿F(xiàn)必須承擔(dān)的職責(zé)
內(nèi)聚外松原則保證類(lèi)內(nèi)的操作、特性具有最大的聚合度,而同時(shí)將類(lèi)間的耦合度降到最低。
⑵定義類(lèi)的操作通常,一個(gè)設(shè)計(jì)類(lèi)不只參與一個(gè)用例。所以應(yīng)檢查,這樣的設(shè)計(jì)類(lèi)是否滿(mǎn)足了所有有關(guān)用例的要求。另外,系統(tǒng)的效率、可用性、安全性等非功能性需求,常常要落實(shí)到一些操作上來(lái),因此還需要增加某些操作來(lái)實(shí)現(xiàn)這些需求。對(duì)設(shè)計(jì)類(lèi)操作的常見(jiàn)設(shè)計(jì):操作的名稱(chēng);操作的參數(shù);操作返回類(lèi)型;操作的可見(jiàn)性;操作的并發(fā)性;操作的前提條件和事后條件。①操作命名操作名的一般形式:methodName()操作名由2~3個(gè)單詞構(gòu)成,第一個(gè)單詞的首字母小寫(xiě),其他單詞首字母大寫(xiě):
例:studentName()getAverageMark()命名原則:用完整的單詞,不用縮寫(xiě);動(dòng)詞開(kāi)頭,以主動(dòng)態(tài)表示;語(yǔ)義盡可能明確。操作名稱(chēng)應(yīng)統(tǒng)一如“getFirstName()”和“fetchFirstName()”的操作名稱(chēng)就不統(tǒng)一,如果兩個(gè)名字都以“get”開(kāi)頭,就可以讓它們統(tǒng)一起來(lái)。參數(shù)名稱(chēng)應(yīng)統(tǒng)一參數(shù)名稱(chēng)也應(yīng)當(dāng)彼此統(tǒng)一。例如,“theFirstName”、“firstName”“firstNm”這樣的參數(shù)名稱(chēng)就彼此不統(tǒng)一。參數(shù)的順序應(yīng)統(tǒng)一參數(shù)的順序也應(yīng)當(dāng)統(tǒng)一。例如,操作“dOSomething(securityToken,StartDate)”“doSomethingElse(studentNumber,securityToken〕”,可以通過(guò)都把“securityToken”作為第一個(gè)(或最后一個(gè))參數(shù)傳遞,使其更加統(tǒng)一。②操作的可見(jiàn)性讓操作按需提供可見(jiàn)性,不要超過(guò)限度。為了減少系統(tǒng)的耦合,通用的操作是:在設(shè)置某個(gè)操作的可見(jiàn)性時(shí),盡量地限制其可見(jiàn)性。③方法設(shè)計(jì)方法設(shè)計(jì)描述的是操作的具體實(shí)現(xiàn),所以與選用的編程語(yǔ)言密切相關(guān)。方法設(shè)計(jì)包括數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)、算法設(shè)計(jì)和流程設(shè)計(jì)。活動(dòng)圖描述算法④細(xì)化設(shè)計(jì)類(lèi)的操作與屬性細(xì)化設(shè)計(jì)類(lèi)的操作與屬性,依靠順序圖是一個(gè)有效的方法。用例圖、順序圖、類(lèi)圖之間關(guān)系順序圖、類(lèi)圖之間關(guān)系分析順序圖——資金轉(zhuǎn)賬在Servlet和控制之間劃分職責(zé)設(shè)計(jì)階段的順序圖(細(xì)化操作與屬性)控制類(lèi)與邊界類(lèi)的屬性控制類(lèi)與邊界類(lèi)的屬性通常無(wú)屬性控制類(lèi)有時(shí)需要屬性描述對(duì)象的狀態(tài)控制類(lèi)有時(shí)需要屬性描述類(lèi)本身的一些性質(zhì)⑤描述設(shè)計(jì)類(lèi)的狀態(tài)并不需要對(duì)每個(gè)設(shè)計(jì)類(lèi)都描述其狀態(tài)。如果某個(gè)類(lèi)比較復(fù)雜,有多種狀態(tài),當(dāng)接收到一個(gè)消息時(shí),要根據(jù)所處的狀態(tài)來(lái)選擇相應(yīng)的操作行為,對(duì)于這樣的類(lèi)需要描述其狀態(tài)。由狀態(tài)圖獲取更多操作——分析類(lèi)Claim_report由狀態(tài)圖獲取更多操作——初步精華后的設(shè)計(jì)類(lèi)Claim_report由狀態(tài)圖獲取更多操作——類(lèi)Claim_report的狀態(tài)圖由狀態(tài)圖獲取更多屬性由狀態(tài)圖獲取更多操作由狀態(tài)圖獲取更多屬性和操作——精化后的類(lèi)Claim_report⑥定義設(shè)計(jì)類(lèi)的關(guān)系為了確定設(shè)計(jì)類(lèi)之間的關(guān)系,首先應(yīng)該跟蹤對(duì)應(yīng)的分析類(lèi)之間的關(guān)系。設(shè)計(jì)類(lèi)之間的關(guān)系在設(shè)計(jì)類(lèi)之間的關(guān)系時(shí)還有一些細(xì)節(jié)需要考慮,下面列出這些細(xì)節(jié):確定關(guān)聯(lián)的方向和多重性。關(guān)系構(gòu)造型。使用關(guān)聯(lián)類(lèi)。設(shè)置限定。1)識(shí)別類(lèi)之間的關(guān)聯(lián)如果兩個(gè)對(duì)象之間需要進(jìn)行協(xié)作,則要建立關(guān)聯(lián)關(guān)系。如果協(xié)作只在一個(gè)方向進(jìn)行,則建立單向關(guān)聯(lián)。順序圖也描述了設(shè)計(jì)對(duì)象間的相互作用。研究順序圖的消息有助于發(fā)現(xiàn)類(lèi)之間的關(guān)聯(lián)順序圖與關(guān)聯(lián)關(guān)系根據(jù)順序圖或協(xié)作圖確定關(guān)聯(lián)關(guān)系根據(jù)順序圖或協(xié)作圖確定關(guān)聯(lián)關(guān)系2)識(shí)別類(lèi)的泛化關(guān)系在幾個(gè)類(lèi)中,如果有分解出的公共部分可以把分解出的公共部分放在父層。識(shí)別類(lèi)的泛化關(guān)系3)識(shí)別類(lèi)的聚合和組合關(guān)系如果兩個(gè)對(duì)象存在部分與整體的關(guān)系,并且整體由部分組成,整體消失時(shí),部分仍存在,則應(yīng)建立聚集關(guān)系。如果兩個(gè)對(duì)象存在部分與整體的關(guān)系,但是整體消失時(shí),部分也消失,則應(yīng)建立組合關(guān)系。識(shí)別類(lèi)的組合關(guān)系4)設(shè)計(jì)角色兩個(gè)類(lèi)扮演的角色如果根據(jù)上下文可以理解,一般情況下角色設(shè)計(jì)可省略。但在下列情況應(yīng)給出角色名:當(dāng)兩個(gè)類(lèi)之間有多個(gè)關(guān)聯(lián)時(shí)當(dāng)一個(gè)類(lèi)存在反身關(guān)聯(lián)時(shí)設(shè)計(jì)角色5)設(shè)計(jì)角色多重性對(duì)于每一個(gè)關(guān)聯(lián),都要有兩個(gè)角色多重性設(shè)計(jì)。關(guān)聯(lián)的兩端的角色多重性設(shè)計(jì)是要決策:對(duì)于關(guān)聯(lián)一端的類(lèi)的一個(gè)對(duì)象,關(guān)聯(lián)另一端的類(lèi)中有多少個(gè)對(duì)象與其相關(guān)。多重性最終設(shè)計(jì)類(lèi)圖⑦如何繪制好類(lèi)圖焦點(diǎn)放在系統(tǒng)靜態(tài)設(shè)計(jì)視圖的一個(gè)方面。只包含為了理解該方面而應(yīng)該存在的元素。提供足夠的信息來(lái)理解該圖。不讓讀者產(chǎn)生錯(cuò)誤的信息。當(dāng)你畫(huà)類(lèi)圖的時(shí)候:給它起一個(gè)名字,這個(gè)名字能表達(dá)類(lèi)圖的用途。用最少的交叉線來(lái)組織它的元素。面向?qū)ο蟮臄?shù)據(jù)庫(kù)設(shè)計(jì)面向?qū)ο蟮臄?shù)據(jù)庫(kù)設(shè)計(jì)面向?qū)ο蠓椒梢远x任何一種DBMS數(shù)據(jù)庫(kù)。在面向?qū)ο蟮拈_(kāi)發(fā)中大部分系統(tǒng)首選關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)。面向?qū)ο蟮年P(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)是從對(duì)象模型出發(fā)的。應(yīng)用系統(tǒng)對(duì)象模型向數(shù)據(jù)庫(kù)模型的映射是面向?qū)ο蟮年P(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)中的關(guān)鍵。10.2.1基本概念
對(duì)象在數(shù)據(jù)庫(kù)中的存放策略用關(guān)系數(shù)據(jù)庫(kù)存放對(duì)象的基本策略是:把由每個(gè)類(lèi)直接定義并需要永久存儲(chǔ)的全部對(duì)象實(shí)例存放在一個(gè)數(shù)據(jù)庫(kù)表中。每個(gè)這樣的類(lèi)對(duì)應(yīng)一個(gè)數(shù)據(jù)庫(kù)表,經(jīng)過(guò)規(guī)范化之后的類(lèi)的每個(gè)屬性對(duì)象數(shù)據(jù)庫(kù)表的一個(gè)屬性(列),類(lèi)的每個(gè)對(duì)象實(shí)例對(duì)應(yīng)數(shù)據(jù)庫(kù)表中的一個(gè)元組(行)。確定關(guān)鍵字
一個(gè)數(shù)據(jù)庫(kù)表的關(guān)鍵字是一組能夠惟一的標(biāo)識(shí)該表的每個(gè)元組(行)的屬性。對(duì)類(lèi)而言,關(guān)鍵字就是一組能惟一的標(biāo)識(shí)該類(lèi)的每個(gè)對(duì)象實(shí)例的屬性。用盡可能少的屬性(最好是只用一個(gè)屬性)作為關(guān)鍵字采用對(duì)象標(biāo)識(shí)符OID(對(duì)象唯一的標(biāo)識(shí)符)作為相應(yīng)的數(shù)據(jù)庫(kù)中所有表的主鍵10.2.2類(lèi)映射成表的策略
單個(gè)簡(jiǎn)單類(lèi)映射為表,一般按下列步驟進(jìn)行映射:⑴類(lèi)的名字映射成關(guān)系模型的名字;⑵類(lèi)的所有屬性映射成關(guān)系模型的屬性;⑶類(lèi)的關(guān)鍵詞屬性為關(guān)系模型的主碼,同時(shí)指出關(guān)系模型中的外碼、列的域以及能否為空值等選項(xiàng);⑷把類(lèi)屬性之間的函數(shù)依賴(lài)添加到F中(F為關(guān)系模型的函數(shù)依賴(lài)集);⑸類(lèi)中任一個(gè)對(duì)象集映射成關(guān)系模型的一個(gè)實(shí)例(即關(guān)系),對(duì)象集中每一個(gè)對(duì)象稱(chēng)為此關(guān)系中一個(gè)元組。單個(gè)簡(jiǎn)單對(duì)象類(lèi)映射為關(guān)系模型10.2.3關(guān)系映射的策略
對(duì)象之間有四種類(lèi)型的關(guān)系:泛化、關(guān)聯(lián)、聚合和組合。它們之間的差異關(guān)系數(shù)據(jù)庫(kù)中的關(guān)系是通過(guò)使用外碼來(lái)實(shí)現(xiàn)的,即將主表中的主碼加入到另一個(gè)表的屬性作為外碼。一對(duì)一和一對(duì)多的關(guān)系就是通過(guò)這種方法實(shí)現(xiàn)的。其中,對(duì)象的OID就是聯(lián)系的外碼。類(lèi)之間的關(guān)系與數(shù)據(jù)關(guān)系關(guān)聯(lián)關(guān)系的映射
1.一對(duì)一關(guān)聯(lián)映射一對(duì)一關(guān)聯(lián)映射為關(guān)系模型有三種算法⑴算法1一般的一對(duì)一的關(guān)聯(lián),關(guān)聯(lián)每一端的類(lèi)映射為一張表,外鍵可放置在任意一邊的表中,具體情況依賴(lài)于性能等因素。⑵算法2部門(mén)代碼(主碼)部門(mén)名稱(chēng)部門(mén)電話編號(hào)姓名任職時(shí)間⑶算法32.一對(duì)多的關(guān)聯(lián)映射
3.多對(duì)多的關(guān)聯(lián)映射
將類(lèi)間聚合關(guān)系映射為關(guān)系模型
將類(lèi)間的聚合關(guān)系映射為關(guān)系模型的算法為:整體類(lèi)與各個(gè)部分類(lèi)分別映射成關(guān)系模型,整體類(lèi)映射的關(guān)系模型的屬性包含原有的所有屬性,但各個(gè)部分類(lèi)映射的關(guān)系模型的屬性除包含原有的所有屬性外,再加上整體類(lèi)對(duì)象的關(guān)鍵詞屬性。將類(lèi)間聚合關(guān)系映射為關(guān)系模型
將類(lèi)間聚集關(guān)系映射為關(guān)系模型--a將類(lèi)間聚集關(guān)系映射為關(guān)系模型--類(lèi)間具有單繼承關(guān)系,映射成關(guān)系模型⑴算法1將類(lèi)間的單繼承關(guān)系映射為關(guān)系模型算法1將類(lèi)間的單繼承關(guān)系映射為關(guān)系模型算法2將類(lèi)間的單繼承關(guān)系映射為關(guān)系模型算法3比較單繼承映射的各種算法數(shù)據(jù)存取部分的設(shè)計(jì)一般來(lái)說(shuō),處理持久對(duì)象與數(shù)據(jù)庫(kù)的交互,有三種策略:1.每個(gè)持久對(duì)象自己負(fù)責(zé)數(shù)據(jù)庫(kù)的訪問(wèn)工作.2.為每個(gè)持久的業(yè)務(wù)類(lèi)建立一個(gè)相應(yīng)的數(shù)據(jù)存取類(lèi),負(fù)責(zé)處理數(shù)據(jù)庫(kù)的訪問(wèn)。3.設(shè)計(jì)一個(gè)單獨(dú)的Persistence層,統(tǒng)一處理數(shù)據(jù)庫(kù)的訪問(wèn)工作。第11章系統(tǒng)實(shí)施與運(yùn)行管理11.1系統(tǒng)實(shí)施與運(yùn)行管理概述系統(tǒng)實(shí)施即是將系統(tǒng)設(shè)計(jì)階段的結(jié)果在計(jì)算機(jī)上實(shí)現(xiàn),并應(yīng)用到電子商務(wù)工作之中的過(guò)程。即將紙面上的、類(lèi)似于設(shè)計(jì)圖式的電子商務(wù)信息系統(tǒng)設(shè)計(jì)說(shuō)明書(shū)(物理模型)轉(zhuǎn)成可以實(shí)際運(yùn)行的電子商務(wù)信息系統(tǒng)軟件,并應(yīng)用到實(shí)際經(jīng)營(yíng)管理工作之中。系統(tǒng)實(shí)施的4個(gè)階段第一個(gè)階段是由系統(tǒng)設(shè)計(jì)文檔到物理系統(tǒng)的實(shí)現(xiàn)階段。第二個(gè)階段是對(duì)物理系統(tǒng)進(jìn)行測(cè)試的系統(tǒng)測(cè)試階段。第三個(gè)階段是商務(wù)運(yùn)作準(zhǔn)備及系統(tǒng)試運(yùn)行階段。第四個(gè)階段——系統(tǒng)正式運(yùn)行階段。11.2電子商務(wù)信息系統(tǒng)的實(shí)現(xiàn)11.2.1電子商務(wù)信息系統(tǒng)的構(gòu)建方式目前,電子商務(wù)信息系統(tǒng)應(yīng)用程序的開(kāi)發(fā)構(gòu)建方式基本上可以分成兩類(lèi)。1.傳統(tǒng)的Web開(kāi)發(fā)模式系統(tǒng)的開(kāi)發(fā)工作主要集中在各種靜態(tài)、動(dòng)態(tài)網(wǎng)頁(yè)的制作。2.基于構(gòu)件的開(kāi)發(fā)構(gòu)建方式?;跇?gòu)件的開(kāi)發(fā)是在一定構(gòu)件模型的支持下,復(fù)用構(gòu)件庫(kù)中的軟件構(gòu)件,通過(guò)組合手段高效率地、高質(zhì)量地構(gòu)造應(yīng)用軟件系統(tǒng)的過(guò)程。國(guó)際上有三大分布式構(gòu)件模型。⑴由OMG組織推出的CORBA(CommonObjectRequestBrokerArchitecture,公共對(duì)象請(qǐng)求代理體系結(jié)構(gòu))。⑵微軟公司提出的COM+(CommonentObjectModel,構(gòu)件對(duì)象模型)。⑶Sun公司的J2EE(Java2EnterpriseEdition)。11.2.2程序設(shè)計(jì)的組織如果采用的實(shí)施策略是自己組織,自己實(shí)施,那么就要根據(jù)系統(tǒng)設(shè)計(jì)說(shuō)明書(shū)來(lái)組織程序設(shè)計(jì),然后是編程調(diào)試,還要進(jìn)行系統(tǒng)測(cè)試,最后完成系統(tǒng)的切換工作。
充分了解系統(tǒng)進(jìn)入程序設(shè)計(jì)之前,程序設(shè)計(jì)人員應(yīng)該對(duì)欲編程的系統(tǒng)有充分的了解。首先要仔細(xì)地閱讀系統(tǒng)設(shè)計(jì)說(shuō)明書(shū),吃透系統(tǒng)設(shè)計(jì)所提出的任務(wù)、功能和目標(biāo),明確自己所編程序在系統(tǒng)中所處的位置及與之相關(guān)的環(huán)境條件。如果編程人員不明確總體結(jié)構(gòu),不明確程序設(shè)計(jì)的目的,那么就很難保證在設(shè)計(jì)過(guò)程中能夠準(zhǔn)確地實(shí)現(xiàn)系統(tǒng)設(shè)計(jì)者的意圖。程序設(shè)計(jì)人員在編程前需要了解的內(nèi)容:(1)所開(kāi)發(fā)電子商務(wù)信息系統(tǒng)的作用、功能;(2)電子商務(wù)信息系統(tǒng)的總體結(jié)構(gòu)及模塊劃分;(3)設(shè)計(jì)程序所應(yīng)完成的功能,在整個(gè)系統(tǒng)中的作用和位置;(4)程序的前后調(diào)用關(guān)系,調(diào)用間傳遞的各種數(shù)據(jù)信息;(5)程序中詳細(xì)的邏輯處理過(guò)程,相應(yīng)的特殊要求;(6)程序設(shè)計(jì)時(shí)所要涉及的數(shù)據(jù)庫(kù)及數(shù)據(jù)文件;(7)根據(jù)系統(tǒng)分析與設(shè)計(jì)的要求,在程序設(shè)計(jì)中將要采用的計(jì)算方法、處理精度等。
事先制定衡量編程工作的指標(biāo)1.可靠性(Reliability)2.規(guī)范性(Standardability)3.可讀性(Readability)4.可維護(hù)性(Maintainability)11.2.3編程工具的選擇電子商務(wù)信息系統(tǒng)的開(kāi)發(fā)離不開(kāi)工具的支持。目前,用于電子商務(wù)信息系統(tǒng)開(kāi)發(fā)的工具有很多,根據(jù)其主要功能不同可以分為三類(lèi):頁(yè)面編輯調(diào)試工具;動(dòng)態(tài)頁(yè)面開(kāi)發(fā)工具以及圖形和動(dòng)畫(huà)制作工具。頁(yè)面編輯調(diào)試工具1.Frontpage2.Dreamweaver動(dòng)態(tài)頁(yè)面開(kāi)發(fā)語(yǔ)言和工具1.
動(dòng)態(tài)頁(yè)面三種開(kāi)發(fā)語(yǔ)言ASP(ActiveServerPages)PHP(HypertextPreprocessor)JSP(JavaServerPages)等。2.動(dòng)態(tài)頁(yè)面開(kāi)發(fā)工具ASP編程工具有MicrosoftVisualInterDev,它是網(wǎng)頁(yè)開(kāi)發(fā)者的先進(jìn)工具,它只支持Windows平臺(tái),主要支持ASP技術(shù)。PHP編程工具有ZendDevelopmentEnviorment(ZDE,它是PHP開(kāi)發(fā)人員較常選用的一款集成開(kāi)發(fā)調(diào)試環(huán)境。JSP及Java編程工具有:Eclipse、JBuilder、JDK(JavaDevelopmentkit)等。圖形和動(dòng)畫(huà)制作工具圖形和動(dòng)畫(huà)既可以方便、輕松地表達(dá)出文本所不能表現(xiàn)的內(nèi)容,還能增加頁(yè)面的美觀效果。因此,各種圖形和動(dòng)畫(huà)制作工具也是電子商務(wù)信息系統(tǒng)制作網(wǎng)頁(yè)必須的工具。這類(lèi)中,常用的制作工具有:Adobe的Photoshop,Macromedia的Flash和Firework以及Ulead的Cool3D等。選擇開(kāi)發(fā)工具的原則⑴最少工作量原則⑵最少技巧性原則⑶最少錯(cuò)誤原則⑷最少維護(hù)原則⑸減少記憶原則選擇開(kāi)發(fā)工具時(shí)應(yīng)考慮的幾個(gè)因素:⑴項(xiàng)目的應(yīng)用領(lǐng)域。⑵用戶(hù)的要求。⑶程序員的經(jīng)驗(yàn)和知識(shí)。⑷軟件可移植性要求。11.3系統(tǒng)測(cè)試由于電子商務(wù)信息系統(tǒng)的復(fù)雜,更由于人性的弱點(diǎn),開(kāi)發(fā)人員在開(kāi)發(fā)的過(guò)程中不可避免地要出現(xiàn)差錯(cuò)。因此,對(duì)系統(tǒng)進(jìn)行測(cè)試是必須的。電子商務(wù)信息系統(tǒng)測(cè)試的目的就是盡可能地發(fā)現(xiàn)系統(tǒng)中的問(wèn)題和錯(cuò)誤。11.3.1軟件測(cè)試軟件測(cè)試概述軟件測(cè)試是在計(jì)算機(jī)上用各種可能的數(shù)據(jù)和操作條件,反復(fù)地對(duì)程序進(jìn)行試驗(yàn),發(fā)現(xiàn)錯(cuò)誤及時(shí)修改,使其完全符合設(shè)計(jì)要求的過(guò)程。1.軟件測(cè)試的目的軟件測(cè)試的目的是盡早地、盡可能多地發(fā)現(xiàn)軟件的錯(cuò)誤。通過(guò)不同層次的測(cè)試(單元測(cè)試、集成測(cè)試、系統(tǒng)測(cè)試)驗(yàn)證和確認(rèn)軟件是否滿(mǎn)足設(shè)計(jì)和需求。2.制定測(cè)試計(jì)劃⑴范圍和目標(biāo)⑵測(cè)試方法⑶需要的資源⑷特性和功能⑸風(fēng)險(xiǎn)⑹日程安排3.設(shè)計(jì)測(cè)試用例測(cè)試用例包含下列信息:測(cè)試的目的;特殊的硬件要求,例如一個(gè)調(diào)制解調(diào)器;特殊的軟件要求,例如一個(gè)工具;特殊的設(shè)置或配置要求;如何執(zhí)行測(cè)試的描述;測(cè)試的預(yù)期結(jié)果或成功標(biāo)準(zhǔn)。4.測(cè)試任務(wù)列表需要執(zhí)行的測(cè)試任務(wù)如下:寫(xiě)一份測(cè)試計(jì)劃;建立測(cè)試用例;實(shí)施測(cè)試和評(píng)估結(jié)果;總結(jié)測(cè)試結(jié)果。測(cè)試工作總體流程圖圖11-1測(cè)試工作總體流程圖立項(xiàng)階段結(jié)項(xiàng)總結(jié)階段需求階段設(shè)計(jì)階段驗(yàn)收測(cè)試階段編碼&單元測(cè)試階段集成測(cè)試階段系統(tǒng)測(cè)試階段單元測(cè)試單元測(cè)試(UnitTesting)也稱(chēng)模塊測(cè)試,其完成對(duì)最小的軟件設(shè)計(jì)單元——模塊的驗(yàn)證工作。驅(qū)動(dòng)模塊:相當(dāng)于一個(gè)主程序,用于接受測(cè)試用例的數(shù)據(jù),將這些數(shù)據(jù)送到被測(cè)試模塊,輸出測(cè)試結(jié)果。樁模塊:用來(lái)代替被測(cè)模塊中所調(diào)用的子模塊,目的是檢驗(yàn)入口,輸出調(diào)用和返回的信息。集成測(cè)試集成測(cè)試(IntegrationTesting)是在假定各個(gè)軟件單元已經(jīng)通過(guò)了單元測(cè)試的前提下,檢查各個(gè)軟件單元之間的相互接口是否正確。集成測(cè)試的策略主要有自頂向下集成和自底向上集成兩種。1.自頂向下集成自頂向下集成是構(gòu)造程序結(jié)構(gòu)的一種增量式方式;它從主控模塊開(kāi)始,按照軟件的控制層次結(jié)構(gòu),逐步把各個(gè)模塊集成在一起。2.自底向上集成自底向上測(cè)試是從“原子”模塊(即軟件結(jié)構(gòu)最低層的模塊)開(kāi)始組裝測(cè)試,因測(cè)試到較高層模塊時(shí),所需的下層模塊功能均已具備,所以不再需要樁模塊。系統(tǒng)測(cè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 建行個(gè)人年終總結(jié)
- EA自然拼讀課件
- 2025年中儲(chǔ)糧儲(chǔ)運(yùn)有限公司校園招聘吉林省崗位(9人)筆試參考題庫(kù)附帶答案詳解
- 應(yīng)急預(yù)案演練培訓(xùn)課件
- 2024年溫州醫(yī)科大學(xué)附屬第一醫(yī)院招聘特殊專(zhuān)業(yè)技術(shù)崗位考試真題
- 2024年山東泰安市東平縣招聘教師考試真題
- 2024年南昌市消防救援局招聘政府專(zhuān)職消防隊(duì)員考試真題
- 甘肅省內(nèi)鐵路系統(tǒng)安檢工作人員招聘真題2024
- 2024年甘肅煤田地質(zhì)局招聘考試真題
- 抗菌藥物應(yīng)用與管理
- (完整版)減數(shù)分裂課件
- GB/T 44481-2024建筑消防設(shè)施檢測(cè)技術(shù)規(guī)范
- 2024年《武器裝備科研生產(chǎn)單位保密資格標(biāo)準(zhǔn)》內(nèi)容考試試題庫(kù)及答案
- 加強(qiáng)文物古籍保護(hù)利用(2022年廣東廣州中考語(yǔ)文試卷非連續(xù)性文本閱讀試題及答案)
- 鋼鐵項(xiàng)目環(huán)評(píng)報(bào)告 - 9施工期影響
- 2024年廣東省廣州市中考英語(yǔ)試卷附答案
- 物業(yè)服務(wù)考核辦法及評(píng)分細(xì)則(表格模板)
- 北京市智慧工地評(píng)價(jià)標(biāo)準(zhǔn)
- DL∕T 5371-2017 水電水利工程土建施工安全技術(shù)規(guī)程
- 10萬(wàn)噸秸稈膨化飼料項(xiàng)目可行性研究報(bào)告
- 《紙質(zhì)文物修復(fù)與保護(hù)》課件-30古籍的版式
評(píng)論
0/150
提交評(píng)論