亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

為何要使用 UML?

2019-11-18 12:19:05
字體:
來源:轉載
供稿:網友

  當今對象導向開發的世界中,第二條大新聞是什么?那就是『統一模塑語言』(Unified Modeling Language; UML),其不僅獲得對象治理小組(Object Management Group; OMG)所承認,也將取代 Booch、Coad、Jacobson、Odell、Rumbaugh、Wirfs-Brock 等分析及設計方法原先所使用的表示法,成為全新唯一的表示法。此舉將終結軟件開發人員究竟要使用那些方法,這類令人生厭的爭議,我們將進入和睦、友愛及提升生產力的新時期(就算那些舊架構的方法已經相當成熟了,卻從未達到這樣的水平, 對此也只能一笑置之)。
  
  假如你是 B.S. (before standardization; 標準化之前)方法之一的方法迷(keen user),你鉆研(bite the bullet)、轉換至 UML 時,不免暗地抱怨,沒有看到你所喜愛方法中的 x 特性,而你所不喜歡的 y 及 z 特性卻充塞其中。但是,你是否真的冷靜下來,思考像 UML 這樣的塑模表示法,為何是有用的嗎?
  
  詢問一位方法論大師(methodologist; 在我們業界指的是創造方法論的人)有關這方面的看法時,會招致一頓軟件質量如何如何的嚴厲訓斥。方法論大師會談論到,我們的產業遭受到怎樣的危機,缺乏軟件質量所遭致的問題,良好設計的重要性 ... 等等。這樣也好(雖然我想軟件產業在最近幾十年已經做得很好了),但是如何確實地實施 UML 才是有幫助的?詢問 CASE 工具廠商時,你將會上一堂課,是有關改善質量、文件自動化及程序代碼產生器的生產值,然而我們大家都知道,CASE 工具廠商接下來的動作會是什么。
  
  假如你是一位開發人員,質疑所有方法的本質,不過是另類的治理流行時尚,你一想起會產生毫無用處的紙張,就感到戰栗,然后 UML 恰好佯裝成關懷這類問題,而成為另一種表示法(notation),至少這是目前僅有的。可是,你也了解下次你必須更改系統時,在你必須修護程序代碼往后的幾個版本,這些 UML 圖還是有所幫助的。
  
  我早在軟件職業生涯中學會方法,既使我具有工程的背景,然而這些方法似乎成為一種天然的知識領域,這般的吸引著我。大多數的工程科系采用繪圖來描述如何建構事物,同時相當專心的 ,根據這份設計圖來做這些事物,我明白方法論的圖型也具相同功效。有段時間,我學習類似的方式(the lie of that analogy),然而我仍然發現這些方法是有用的,盡管我對于某些開發人員不喜歡這些方法深表同情。
  
  接著下來我要說明為何我發現 UML 是有用的,首先我快速的提醒各位, UML 『是一種塑模語言,而非方法(或方法論)』,同時以此作為下面論述的開始。UML 訂定了一些圖型,以及這些圖型的意涵。而方法則更進一步描述開發軟件的步驟,什么樣的圖型在什么順序中產生,由誰來做那些工作 ... 等。支持 UML 的方法是各自獨立的,過了明年或明后年,我們將看到不同人士提供各種運用 UML 表示法的方法。然而,你不須要使用方法,才會利用 UML,在這篇文章里,我不去假定任何特定的開發方法。
  
  因此,假如我們除去所有方法的裝飾,除了少數你能夠繪制的圖型樣式外,被留下來的還有什么?這個問題,從「UML 有什么用途?」變成了「這些圖型有什么用?」
  
  答案可以歸結成一詞:『溝通』(譯注:英文是一字:communication),這是一個重要的詞匯,軟件如此地迷惘 ,以致于難以開發的原因,主要就在于溝通。我們知道,假若我們只要在周末偷閑一下,而程序代碼就此消失,事情將是如何簡單,困難的癥結在于我們必須與多位開發人員溝通。UML 之所以重要,就是因為它有助于軟件開發人員之間的溝通。我們必須在某種程度上使用它,以協助溝通,而非阻礙溝通。
  
  

  為何要使用 UML?
  圖解 1. UML 圖型,用以展示 java AWT Container 類別的 Container
  

  
  圖解 1 說明了 UML 如何協助溝通的范例,此圖型一開始是用來描述 Java 抽象窗口工具集(Java's Abstract Windowing Toolkit; AWT)的容器類別(Container class),透過閱讀這個圖型,我能夠了解一大堆東西。我能夠了解容器(Container)是組件(Component)的子型態(suBType),可以把組件制作成可視的(visible)或主動的(active),以及其它類型的組件,這些組件包括卷標(labels)、按鈕(buttons)以及其它種種。我可以詢問一個容器有關它所包容的組件,但是并非所有的組件都需要容器。容器(Containers)包含組件(Components),容器(Containers)也可能包含其它容器(Containers),同時容器擁有一個布置治理者(layout manager)。容器就如同組件般,屬于抽象類別(abstract class),其子型態包含畫板(panels)及窗口(windows)。窗口能夠顯示及處置窗口本身,窗口也有框架(frame)及對話框(dialog)兩種子類別(subclasses),兩者皆有標題列,同時能夠設定其大小是否可以變更(resize)。雖然窗口的兩種子類別都可以做上述的事,然而這些行為并非窗口本身的一部分??梢詫υ捒?Dialogs)標示為模塊式(modal),然而框架(frames)卻不可以。
  
  你可能喜歡這個圖型,也有可能喜歡我前面那段論述,這端賴你是否熟悉 UML,以及你是喜歡可視化的敘述,或者喜歡敘事式的陳述。關于此,我喜歡可視化,然而有些人喜歡文字方式,即使他們也懂得這些圖型。你可以給他們文字描述,或者(或許會更好)給他們一段程序代碼選集(如列表 1 所示)。那一個是你愿意選擇的?那一個是你的同僚所想要的?這些問題對于 UML 及類似語言的角色是至關緊要的。我發現有些人喜歡文字的方式,有些人喜歡圖型的方式,還有某些人在某些事物上選擇圖型,同時在某些事物上選擇文字。最后,圖型僅有在可以強化溝通的情況下才值得去做。
  
  除了注重那些圖型展示甚么之外,你也該注重到那些圖型不能夠展示甚么,類別整體描述有較圖解 1 或列表 1 所標示的接口更大。我未曾提到布置治理者(Layout Manager)是一個接口,或者那個組件實作若干接口,許多人可能會因此而責難圖解 1 不夠完整。它是不完整,但不完整是一種缺點嗎?在圖型里,我決定去描寫那些類別的特性,并且慎重的決定那些不該顯示出來。事實上,我所顯示出來的某些特性,就是我所要突顯出來的特性。
  
  選擇所要強調的信息,是溝通很重要的一環。在類別的任一群體中,為了取得這些類別最初的理解,去了解某些觀點(aspects)是相當重要的。假如你展示每件事,你會失去引出那些特點,同時你的讀者會對于首要了解的事物,以及往后才須專注的細枝末節毫無概念。當我使用類別圖,我是為了最初的理解而利用它們,以便于了解我想表達這些類別的要害觀點。我知道讀者經常是從 Javadoc 檔案中,去取得這些接口完整的敘述。
  
  我鼓勵你以這種有選擇性的方式來使用類別圖,這樣做不僅可以促進圖型溝通的價值,也可以使它們輕易維護(keep up to date)。你無須為了類別每一個小改變就變更圖型,既然難以維護這些各式各樣的圖型,為重大的問題之一,這種做法就有相當大的好處。
  
  就像鼓勵有選擇性一般,我也鼓勵人們去強調接口(interface)而非實作。我在組件上顯示一個 isEnabled 的屬性(attribute),這不是說組件類別有一個數據域位(field)稱為 isEnabled (我真的沒有注重到,因為它無關緊要)。其所表達的意思是你可以假設這個類別有這樣的屬性,然而你要從類別外部透過適當的操作(Operations)來存取內部的數據。理論下,可能有這些操作的命名約定(在 Java 鏈接庫的這些日子,命名的方式為 isBooleanAttribute 及 setBooleanAttribute)。我不顯示類別的操作,因為我發現屬性的表示方式 ,更能適當地傳達程序代碼的意圖。屬性也可延伸至結合關系(associations),我不知道容器(Container)及組件(Component)之間存在那些數據結構,這些操作會使人聯想到這些結合關系。
  
  許多人士以實作的觀點來繪制類別圖,即是將屬性(attributes)及結合關系(associations)反映至數據結構中,這些數據結構之所以有用,乃在于你期望表達甚么。無論如何,通常 這些接口那些是最重要的。你該決定甚么是你所根據的觀點,甚么是你想要表達的。
  
  當討論到某一件設計,還有你可能如何去變更它時,我發現圖型也是有用的。 假如你擁有一群設計師正致力于一項設計,嘗試在白板上繪制設計的草圖,描繪幾個替代方案。我發現我們在探討有關事物時,可視化是很有效的辦法。(CRC 卡是另外一種有效的技術。)
  
  這項技術有一點非凡重要的變化,是發生在當我正與領域專家合作,嘗試去了解我們所要建構的系統時。在這種情況下,我使用最少的表示法,并且聚精會神于領域專家腦中所描述的概念,而不是思考任何特定的軟件情況。我發現教導這種概念上的塑模風格,對于沒有軟件背景的人士是相當輕易的。 接下來,使用這些圖型, 我們能夠共同地發展出一套定義正確的字匯,用于討論領域相關事項,同時能夠提出對于討論及目的軟件皆有益的抽象概念,當我從事于如保健及金融貿易這類復雜的領域時,這對我而言是一大恩惠。
  
  統一規格在此是有用的,乃因其可加強溝通的質量,當他們使用各種圖型式樣(diagramming styles)與人溝通時,這種思想交流是困難的。擁有一個單一的標準,我們可以確認,假使人們懂得少許圖型式樣的話,他們一定懂得標準化的圖型。但是不要走過頭了,UML 包含許多表示法,并且沒有規定說你全部都必須用到。嘗試著運用這些表示法中適當地、少量的部分,不要使用進階的概念,除非它們確有必要。雖然你應該盡你所能去忠于標準,然我必須承認,假如需要的話,我并不害怕去篡改表示法。我不這樣做的原因,通常是每次篡改表示法就需要對此作說明,同時不是讀者所熟悉的,但是若這么做能加強溝通,我就去做它。
  
  所以,假如你是 UML 的新手,根據你所需傳達的想法去嘗試使用它,實驗可以了解那些可以做,以及那些不可以做。 透過實作去學習表示法,并且逐步地學習

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
激情亚洲一区二区三区四区| 国产亚洲人成a一在线v站| 最近2019中文字幕大全第二页| 国产一区二区三区四区福利| 亚洲理论电影网| 精品久久久久久久久久久久久久| 亚洲国产精品电影在线观看| 97在线免费观看| 久久久精品一区二区| 国产精品爽黄69天堂a| 中文字幕精品一区久久久久| 国产成人小视频在线观看| 欧美二区乱c黑人| 91精品国产亚洲| 97成人精品视频在线观看| 亚洲肉体裸体xxxx137| 国产999精品视频| 亚洲iv一区二区三区| 97视频在线观看免费高清完整版在线观看| 国产a∨精品一区二区三区不卡| 日本高清久久天堂| 亚洲va男人天堂| 国产日韩欧美在线播放| 91精品国产91久久久久久久久| 日韩av在线天堂网| 亚洲女人天堂网| 亚洲一区国产精品| 91久久久久久久久久| 麻豆国产精品va在线观看不卡| 久久久久北条麻妃免费看| 欧美大尺度在线观看| 狠狠色狠狠色综合日日小说| 国产91色在线|免| 国产精品女主播| 国模极品一区二区三区| 成人免费在线视频网站| 久久久99免费视频| 中文字幕亚洲欧美日韩2019| 亚洲男人天堂古典| 精品欧美aⅴ在线网站| 亚洲欧美在线一区二区| 国产精品视频地址| 日韩一区二区精品视频| 国内精品久久久久影院 日本资源| 日韩欧美中文第一页| www.日韩不卡电影av| 久久综合久中文字幕青草| 97精品欧美一区二区三区| 国产在线观看一区二区三区| 精品国产91久久久久久| 欧美日韩久久久久| 日韩中文字幕av| 91亚洲精品久久久| 亚洲天堂男人天堂女人天堂| 久久久久久国产免费| 亚洲精品99久久久久中文字幕| 久久人人爽亚洲精品天堂| 欧美猛少妇色xxxxx| 69国产精品成人在线播放| 国产69精品久久久久99| 亚洲成人久久久| 欧美午夜宅男影院在线观看| 91久久综合亚洲鲁鲁五月天| 久久国产精品免费视频| 97免费在线视频| 亚洲精品自拍第一页| 91国内产香蕉| 一级做a爰片久久毛片美女图片| 久久精品成人一区二区三区| 久久久av亚洲男天堂| 亚洲精品99999| 国产精品女主播视频| 亚洲丝袜av一区| 久久91亚洲精品中文字幕| 国产精品色午夜在线观看| 九色精品美女在线| 日韩av在线免费观看一区| 亚洲专区中文字幕| 色噜噜狠狠狠综合曰曰曰88av| 日韩一区av在线| 久久久国产一区二区| www.日韩免费| 欧美精品日韩三级| 久久精品成人欧美大片古装| 久久久久久久亚洲精品| 69av在线视频| 欧美超级乱淫片喷水| 欧美日韩亚洲系列| 91精品国产综合久久香蕉的用户体验| 欧美极品少妇xxxxⅹ免费视频| 91av福利视频| 亚洲第一精品久久忘忧草社区| 另类图片亚洲另类| 色婷婷av一区二区三区久久| 97精品视频在线播放| 日韩中文字幕在线播放| 久久久欧美一区二区| 国产午夜精品免费一区二区三区| 久久精品久久精品亚洲人| 国产福利精品视频| 在线观看欧美日韩国产| 国内精品视频久久| 色播久久人人爽人人爽人人片视av| 91av成人在线| 亚洲精品国产美女| 超碰精品一区二区三区乱码| 亚洲国产精品小视频| 欧美性视频在线| 亚洲午夜av久久乱码| 中文字幕九色91在线| 激情亚洲一区二区三区四区| 欧美中文在线观看国产| 国产精品无av码在线观看| 亚洲2020天天堂在线观看| 日韩精品免费在线播放| 欧美成人精品三级在线观看| 国产精品一区二区av影院萌芽| 91午夜在线播放| 色老头一区二区三区在线观看| 欧美一区三区三区高中清蜜桃| 欧美激情亚洲精品| 亚洲成色777777在线观看影院| 亚洲欧美激情精品一区二区| 国产亚洲欧洲黄色| 成人av.网址在线网站| 国产免费一区二区三区在线能观看| 亚洲国产日韩欧美在线图片| 日韩成人免费视频| 这里只有精品在线播放| 欧美与黑人午夜性猛交久久久| 欧美一性一乱一交一视频| 精品av在线播放| 伊人激情综合网| 欧美精品免费在线观看| 日韩精品视频在线播放| 日韩大陆毛片av| 在线精品国产欧美| 国产一区二区三区网站| 综合网日日天干夜夜久久| 91网站免费观看| 日韩免费在线观看视频| 好吊成人免视频| 国产日韩亚洲欧美| 欧美精品videossex88| 亚洲国产精品美女| 亚洲精品福利免费在线观看| 日韩**中文字幕毛片| 日韩中文字幕在线看| 久久免费视频网| 97视频在线播放| 欧美日韩在线观看视频小说| 久久最新资源网| 亚洲欧美日韩中文在线制服| 色吧影院999| 欧美日本在线视频中文字字幕| 国产精品中文字幕久久久| 国产亚洲aⅴaaaaaa毛片| 深夜福利一区二区| 亚洲国产成人爱av在线播放| 国产日韩欧美夫妻视频在线观看| 久久综合伊人77777尤物| 国产成人自拍视频在线观看| 亚洲国产天堂网精品网站| 日韩视频永久免费观看|