<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 78, comments - 34, trackbacks - 0, articles - 1
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    2010-01-19 傳智播客—UML

    Posted on 2010-01-19 00:24 長(zhǎng)城 閱讀(1041) 評(píng)論(0)  編輯  收藏

    UML,是我在整套課程中比較期盼的內(nèi)容。雖說是對(duì)UML的期盼,更是對(duì)CMM標(biāo)準(zhǔn)化項(xiàng)目開發(fā)的期盼。軟件工程的概念是參照建筑工程等流程提出來的,與建筑工程相同,軟件工程需要可行性分析、需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)...。建筑需要圖紙,軟件也需要圖紙,設(shè)計(jì)軟件圖紙的工具就是UML(統(tǒng)一建模語言)。

    到傳智播客學(xué)習(xí),了解和運(yùn)用軟件工程也是我的重要目標(biāo)之一。因?yàn)槲沂軌蛄藳]有經(jīng)過軟件工程標(biāo)準(zhǔn)化開發(fā),而直接編碼所帶來的痛苦。今日的課程內(nèi)容比較簡(jiǎn)單,上課的氛圍比較輕松。有機(jī)會(huì)聽徐老師談一談國內(nèi)的軟件公司現(xiàn)狀。CMM是印度人總結(jié)出來的被國際公認(rèn)并普遍使用的軟件工程規(guī)范,最高等級(jí)應(yīng)該是CMM5。但十分遺憾的是中國的真正意義上的CMM5等級(jí)的這種軟件企業(yè)并不多,為什么?要搞一個(gè)CMM5的認(rèn)證來,與我們社會(huì)中想搞一個(gè)學(xué)位證書的概念差不多。可想這種卑劣的文化!殘害著自己的民族。在這個(gè)社會(huì)里一切都不會(huì)超過人情世故。

    我對(duì)這種標(biāo)準(zhǔn)化的工程流程十分關(guān)注,國內(nèi)在這方面做的比較好的是大連。但大連是中國最大的軟件外包產(chǎn)業(yè),幾乎全在為日本工作。所以這種CMM5的高層(設(shè)計(jì)層)都是由日本人來完成的,中國的“打字員”只需要按照日本人設(shè)計(jì)的詳細(xì)文檔,把代碼敲到電腦里并測(cè)試通過就可以了。我們知道編碼只是軟件開發(fā)中的一小部分而已,非常慚愧!

    不在其位莫思其事!

    老徐說給我們提供UML的課程是為了讓大家在以后的工作中能看懂UML圖。UML的畫圖工具很簡(jiǎn)單,難在你用豐富的經(jīng)驗(yàn)畫出優(yōu)美的軟件框架和詳細(xì)設(shè)計(jì)來。

    一、軟件工程

    簡(jiǎn)要學(xué)習(xí)一下軟件工程,軟件工程是由軟件危機(jī)引起的。軟件危機(jī)就引起了瀑布模型,從瀑布模型又升級(jí)出來RUP來。

    一幅美麗的用來形容軟件工程問題的漫畫:

    clip_image002[4]

    1.瀑布模型

    clip_image003[4]

    模型的特點(diǎn)是:

    1). 各階段間具有順序性和依賴性: 后一階段工作必須在前一階段工作完成后才能進(jìn)行。

    2). 質(zhì)量保證機(jī)制的依賴性。即每一步都必須循序漸進(jìn),及早消除故障隱患,保證本階段的工作的質(zhì)量,從而達(dá)到保證整體軟件質(zhì)量的目的。

    3). 推遲實(shí)現(xiàn)原則。前一階段工作做的越細(xì), 越扎實(shí),后一階段工作進(jìn)行的就越順利,強(qiáng)調(diào)”寧慢求好”。因此,各階段工作總是一拖再拖,致使整個(gè)工期推遲實(shí)現(xiàn)。顯然瀑布模型不能滿足呈爆炸狀增長(zhǎng)的社會(huì)應(yīng)用需求。

    2. 統(tǒng)一軟件開發(fā)過程:RUP(Rational Unified ProcessRUP)

    一個(gè)通用的軟件流程框架, 以架構(gòu)為中心, 用例驅(qū)動(dòng)的迭代化開發(fā)流程。 RUP 是從幾千個(gè)軟件項(xiàng)目的實(shí)踐經(jīng)驗(yàn)中總結(jié)出來的, 對(duì)于實(shí)際的項(xiàng)目具有很強(qiáng)的指導(dǎo)意義。RUP 用二維坐標(biāo)來描述。 橫軸通過時(shí)間來組織, 是過程展開的生命周期特征, 體現(xiàn)開發(fā)過程的動(dòng)態(tài)結(jié)構(gòu);縱軸以內(nèi)容來組織, 體現(xiàn)開發(fā)過程的靜態(tài)結(jié)構(gòu)。

    clip_image004[4]

    有關(guān)瀑布模型和RUP的資料網(wǎng)上有很多,在次就不多做總結(jié)了。

    三、UML

    UML(United Modeling Language,統(tǒng)一建模語言):是一種基于面向?qū)ο蟮目梢暬UZ言。

    UML采用了一組形象化的圖形(如類圖)符號(hào)作為建模語言,使用這些符號(hào)可以形象地描述系統(tǒng)的各個(gè)方面。

    UML通過建立圖形之間的各種關(guān)系(如類與類之間的關(guān)系)來描述模型。

    UML中有二類圖(共10種):

    1).靜態(tài)模型圖:描述系統(tǒng)的靜態(tài)結(jié)構(gòu)

    類圖、對(duì)象圖、包圖、組件圖、部署圖

    2).動(dòng)態(tài)模型圖:描述系統(tǒng)行為的各個(gè)方面

    用例圖、時(shí)序圖、協(xié)作圖、狀態(tài)圖、活動(dòng)圖。

    其中藍(lán)色為重點(diǎn)圖例,其他的圖例比較少用。

    在畫圖之前我們有必要復(fù)習(xí)一下類的四種關(guān)系:

    u 關(guān)聯(lián)關(guān)系(association)

    u 依賴關(guān)系(dependency)

    u 泛化關(guān)系(generalization)

    u 實(shí)現(xiàn)關(guān)系(realization)

    我們?cè)趆ibernate中有學(xué)習(xí)到這四種關(guān)系,原本我以為那只是在hibernate中使用。沒想到在UML中也有,其實(shí)這四種關(guān)系應(yīng)該是軟件工程中的規(guī)范了。那hiberante也是使用了這種規(guī)范進(jìn)行相關(guān)開發(fā)的,這樣可以促進(jìn)hibernate路線的正確性,這太好了!

    我們使用的是IBM的RationalRoseUML設(shè)計(jì)工具,使用工具具體圖畫的操作就不說明了。

    1.用例圖

    用例圖(Use Case Diagram): 也稱為用戶模型圖, 是從軟件需求分析到最終實(shí)現(xiàn)的第一步, 它是從客戶的角度來描述系統(tǒng)功能。

    用例圖包含 3 個(gè)基本組件:

    1) 參與者(Actor): 與系統(tǒng)打交道的人或其他系統(tǒng)即使用該系統(tǒng)的人或事物。在UML中參與者用人形圖標(biāo)表示。

    2) 用例(Use Case): 代表系統(tǒng)的某項(xiàng)完整的功能。在UML中使用一個(gè)橢圓來表示。

    3) 關(guān)系: 定義用例之間的關(guān)系:

    a) 泛化關(guān)系:表示同一業(yè)務(wù)目的(父用例)的不同技術(shù)實(shí)現(xiàn)(各個(gè)子用例)。 在UML中,用例泛化用一個(gè)三角箭頭從子用例指向父用例。以下是某購物網(wǎng)站為用戶提供不同的支付方式。

    b) 包含關(guān)系:一個(gè)用例可以包含其他用例具有的行為, 并把它包含的用例行為作為自身行為的一部分。 在 UML 中包含關(guān)系用虛線箭頭加 “<<include>>”, 箭頭指向被包含的用例。

    c) 擴(kuò)展關(guān)系:如果在完成某個(gè)功能的時(shí)候偶爾會(huì)執(zhí)行另外一個(gè)功能, 則用擴(kuò)展關(guān)系表示。在 UML 中擴(kuò)展關(guān)系用虛線箭頭加 “<<extend>>”, 箭頭指向被擴(kuò)展的用例。

    clip_image006[4]

    藍(lán)線部分為:泛化關(guān)系。紅線部分為:包含關(guān)系。綠線部分為:泛化關(guān)系。

    2.類圖

    類圖是面向?qū)ο笙到y(tǒng)建模中最常用的圖,是定義其他圖的基礎(chǔ)。

    類圖主要是用來顯示系統(tǒng)中的類, 接口以及它們之間的關(guān)系。

    類圖包含的主要元素有類, 接口和關(guān)系。 其中關(guān)系有關(guān)聯(lián)關(guān)系, 泛化關(guān)系, 依賴關(guān)系和實(shí)現(xiàn)關(guān)系。 在類圖中也可以包含注釋和約束。

    這里的關(guān)系十分重要,我們來一一看一下。

    1). 泛化關(guān)系(繼承關(guān)系):用來表示類與類, 接口與接口之間的繼承關(guān)系. 泛化關(guān)系有時(shí)也稱為”is a kind of”關(guān)系。

    clip_image008[4]

    2). 實(shí)現(xiàn)關(guān)系:用來表示類與接口之間的實(shí)現(xiàn)關(guān)系。

    clip_image010[4]

    3).依賴關(guān)系:比如我們上班需要交通工具,交通工具可以是公交車、私家車、電動(dòng)車或自行車,步行也可以。這就是一依賴關(guān)系,使用某一個(gè)對(duì)象或?qū)ο蟮姆椒▉硗瓿梢环N功能。但與它不存在固定對(duì)應(yīng)關(guān)系。

    clip_image012[4]

    4).關(guān)聯(lián)關(guān)系:對(duì)于兩個(gè)相對(duì)獨(dú)立的系統(tǒng),當(dāng)一個(gè)系統(tǒng)的實(shí)例與另一個(gè)系統(tǒng)的一些特定實(shí)例存在固定的對(duì)應(yīng)關(guān)系時(shí),這兩個(gè)系統(tǒng)之間為關(guān)聯(lián)關(guān)系。

    多對(duì)多雙向關(guān)聯(lián),可以自動(dòng)生成代碼哦:

    clip_image014[4]

    關(guān)聯(lián)關(guān)系中有一個(gè)難點(diǎn),上面的圖是多對(duì)多雙向關(guān)聯(lián)。我也可以映射出一對(duì)多和多對(duì)一的意向關(guān)聯(lián)。但一對(duì)多關(guān)系中還有聚合關(guān)系和組成關(guān)系。

    聚合關(guān)系:是更強(qiáng)形式的關(guān)聯(lián)。強(qiáng)調(diào)部分和整體邏輯結(jié)構(gòu),但不強(qiáng)調(diào)生命周期。對(duì)應(yīng)的屬性具有g(shù)et/set方法。例如計(jì)算機(jī)包含鍵盤和鼠標(biāo),但如果計(jì)算機(jī)不在了鍵盤和鼠標(biāo)可以存。我們也可以為計(jì)算機(jī)換鍵盤和鼠標(biāo):

    clip_image016[4]

    UML中組成關(guān)系:是更強(qiáng)形式的聚合,不僅強(qiáng)調(diào)部分和整體,而且還強(qiáng)調(diào)生命周期。僅有g(shù)et方法。比如人有頭和手,如果主體不在了,那么部分肯定也不存在了。也不能更換。

    clip_image018[4]

    5).導(dǎo)航性:

    導(dǎo)航性表示可從源類的任何對(duì)象到目標(biāo)類的一個(gè)或多個(gè)對(duì)象遍歷。 即:給定源類的一個(gè)對(duì)象, 可以得到目標(biāo)類的所有對(duì)象。 可以在關(guān)聯(lián)關(guān)系上加上箭頭表示導(dǎo)航方向。

    只在一個(gè)方向上可以導(dǎo)航的關(guān)聯(lián)稱為單向關(guān)聯(lián),用一個(gè)帶箭頭的方向表示; 在兩個(gè)方向上都可以導(dǎo)航的關(guān)聯(lián)稱為雙向關(guān)聯(lián), 用一條沒有箭頭的實(shí)線表示。

    clip_image020[4]

    3. 時(shí)序圖

    時(shí)序圖用于描述對(duì)象之間的傳遞消息的時(shí)間順序, 即用例中的行為順序。

    當(dāng)執(zhí)行一個(gè)用例時(shí), 時(shí)序圖中的每條消息對(duì)應(yīng)了一個(gè)類操作或者引起轉(zhuǎn)換的觸發(fā)事件。

    在 UML 中, 時(shí)序圖表示為一個(gè)二維的關(guān)系圖, 其中, 縱軸是時(shí)間軸, 時(shí)間延豎線向下延伸。 橫軸代表在協(xié)作中各個(gè)獨(dú)立的對(duì)象。 當(dāng)對(duì)象存在時(shí), 生命線用一條虛線表示, 消息用從一個(gè)對(duì)象的生命線到另一個(gè)對(duì)象的生命線的箭頭表示。 箭頭以時(shí)間的順序在圖中上下排列。

    clip_image022[5]

    時(shí)序圖中的基本概念:

    對(duì)象:時(shí)序圖中對(duì)象使用矩形表示,并且對(duì)象名稱下有下劃線。將對(duì)象置于時(shí)序圖的頂部說明在交互開始時(shí)對(duì)象就已經(jīng)存在了。如果對(duì)象的位置不在頂部,表示對(duì)象是在交互的過程中被創(chuàng)建的。

    生命線:生命線是一條垂直的虛線。表示時(shí)序圖中的對(duì)象在一段生命周期內(nèi)的存在。每個(gè)對(duì)象底部中心的位置都帶有生命線。

    消息:兩個(gè)對(duì)象之間的單路通信。從發(fā)送方指向接收方。在時(shí)序圖中很少使用返回消息。

    激活:時(shí)序圖可以描述對(duì)象的激活和鈍化。激活表示該對(duì)象被占用以完成某個(gè)任務(wù)。鈍化指對(duì)象處于空閑狀態(tài),等待消息。在 UML 中,對(duì)象的激活時(shí)將對(duì)象的生命線拓寬為矩形來表示的。矩形稱為計(jì)劃條或控制期。對(duì)象就是在激活條的頂部被激活的。對(duì)象在完成自己的工作后被鈍化。

    對(duì)象的創(chuàng)建和銷毀:在時(shí)序圖中, 對(duì)象的默認(rèn)位置是在圖的頂部。這說明對(duì)象在交互開始之前就已經(jīng)存在了。如果對(duì)象是在交互過程中創(chuàng)建的,那么就應(yīng)該將對(duì)象放到中間部分。如果要撤銷一個(gè)對(duì)象,在其生命線終止點(diǎn)處放置“ X”符號(hào)。

    5.活動(dòng)圖

    活動(dòng)圖就是流程圖,但在UML工具中可以加入泳道:

    clip_image024[4]

    6.狀態(tài)圖

    通過建立對(duì)象的生存周期模型來描述對(duì)象隨時(shí)間變化的動(dòng)態(tài)行為。比如hibernate中持久化對(duì)象的三種狀態(tài):臨時(shí)狀態(tài)、持久化狀態(tài)、游離狀態(tài)。

    clip_image026[4]

    狀態(tài)圖的基本概念:

    狀態(tài):用圓角矩形表示。狀態(tài)名稱表示狀態(tài)的名字,通常用字符串表示。一個(gè)狀態(tài)的名稱在狀態(tài)圖所在的上下文中應(yīng)該是唯一的。

    轉(zhuǎn)換:用帶箭頭的直線表示。一端連著源狀態(tài),一端連著目標(biāo)狀態(tài)。

    初始狀態(tài):每個(gè)狀態(tài)圖都有一個(gè)初始狀態(tài)。此狀態(tài)代表狀態(tài)圖的起始位置。初始狀態(tài)只能作為轉(zhuǎn)換的源,不能作為轉(zhuǎn)換的目標(biāo),并且在狀態(tài)圖中只能有一個(gè)。初始狀態(tài)用一個(gè)實(shí)心圓表示。

    終止?fàn)顟B(tài):模型元素的最后狀態(tài),是一個(gè)狀態(tài)圖的終止點(diǎn)。終止?fàn)顟B(tài)在一個(gè)狀態(tài)圖中可以有多個(gè)。

    7.協(xié)作圖、對(duì)象圖、包圖

    不畫了,用處不大且非常簡(jiǎn)單。

    8.組件圖

    組件圖用來建立系統(tǒng)中各組件之間的關(guān)系,各組件通過功能組織在一起。

    Javabean,ejb,jsp都是組件。在UML中,組件使用在左側(cè)有兩個(gè)小矩形的大矩形來表示。

    組件圖可以用來設(shè)計(jì)系統(tǒng)的整體構(gòu)架:

    clip_image028[4]

    9.部署圖

    部署圖用來幫助開發(fā)者了解軟件中的各個(gè)組件駐留在什么硬件位置,以及這些硬件之間的交互關(guān)系。

    節(jié)點(diǎn):用來表示一種硬件,可以是打印機(jī),計(jì)算機(jī)等。節(jié)點(diǎn)的標(biāo)記符號(hào)是一個(gè)三維框,在框的左上方包含了節(jié)點(diǎn)的名稱。

    通信關(guān)聯(lián):節(jié)點(diǎn)通過通信關(guān)聯(lián)建立彼此的關(guān)系,采用從節(jié)點(diǎn)到節(jié)點(diǎn)繪制實(shí)線來表示關(guān)聯(lián)。

    clip_image030[4]

    一下子搞出來這么多東西,這么一看UML貫穿軟件設(shè)計(jì)的各個(gè)階段。讓人感覺很好!

    一定要學(xué)好軟件工程,努力在工作中總結(jié)經(jīng)驗(yàn)!


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 2048亚洲精品国产| 99久久久国产精品免费蜜臀| 2021久久精品免费观看| 亚洲av无码一区二区三区乱子伦| 免费人成网上在线观看| 国产特级淫片免费看| 亚洲最大无码中文字幕| 成人毛片免费观看视频大全| 亚洲一卡二卡三卡| 国产卡一卡二卡三免费入口| 亚洲大片免费观看| 欧洲精品成人免费视频在线观看 | 国产亚洲成AV人片在线观黄桃| 免费夜色污私人影院网站电影| 日韩亚洲人成在线综合日本| 日韩免费高清播放器| 午夜亚洲国产理论秋霞| 午夜精品免费在线观看| 亚洲宅男天堂a在线| 亚洲AV蜜桃永久无码精品| 特级毛片在线大全免费播放| 国产成人高清亚洲| 日韩欧美一区二区三区免费观看 | 中文字幕在线观看亚洲视频| 女人张开腿给人桶免费视频| 亚洲AV无码一区二区一二区| 伊人久久亚洲综合影院| 嘿嘿嘿视频免费网站在线观看 | 国产精品自在自线免费观看| 久久A级毛片免费观看| 亚洲一区二区三区免费视频| 亚洲精品无码鲁网中文电影| 青青草国产免费久久久91| jizz在线免费播放| 久久精品国产亚洲AV香蕉| 免费观看成人毛片a片2008| 免费毛片a线观看| 亚洲午夜精品久久久久久app| 香蕉视频在线观看亚洲| 亚洲美女在线国产| 免费看h片的网站|