向banq老師請教一組架構問題
這些問題之前和別人討論過,但是一直沒有結論,考慮banq是jdon架構設計者,固前來討論
1、banq在設計架構的時候用什麼建模工具?我一直用Rose,後來發現其實Rose不是一個好的架構設計工具,而是一個應用系統設計工具,因為Rose不支援UML2.0,一些複雜的類關係表述不清,事實上多數架構都存在這些複雜的關係,IBM對Rose的定位是:IBM開發人員開發IBM產品的時候從來不用Rose,而Rose是針對購買IBM產品的其他開發商使用IBM產品進行二次開發應用的隨產品附贈應用建模工具,可見Rose在架構設計上是疲軟的。
2、也是我主要的問題:UML與架構的關係
都說UML相當於設計圖紙,只要圖紙有了,照著實現就能做出成品,UML是架構設計的精髓,可是太多的架構設計技巧在UML上面展現不出來,所以這其中就具有一個權衡視覺化建模和實際架構程式碼粒度的問題。
banq在jdon下載包中的doc資料夾下贈送了jdon相關時序圖,可是jdon這麼些類,這幾張圖就是九牛一毛,在tomcat6的原始碼中也是隻有幾張簡單的圖,佔tomcat數以百計類中的很小一部分,另外在下載的其他apache開源專案程式碼中鮮有贈送設計圖紙,就算有也是簡單的幾個類。
我說這個的主要意思是一個架構是一個比較精細的東西,比開發應用精密的多,可能為了擴充套件性,實現一些功能要寫一大堆類,每個類都有架構思想和設計模式的體現,這些東西透過指導性的UML很難一應俱全,到底該怎麼權衡這些關係,該不該把每個類,每個例項的生命週期都畫在圖上?
說的有點抽象,舉一個具體的例子:
比如java中的HashMap,在HashMap中定義了靜態內部類Entry,這樣做的好處是
1、根據資料親密性原則,將HashMap中關聯的資料key和value封裝起來
2、這個結構只對HashMap本身有用,所以定義成私有的內部類,以免其他類與Entry產生不必要的耦合
根據兩個原則,這個“靜態內部類Entry”是一個設計非常嚴謹,幾乎找不到更好決定的決定
但是站在設計HashMap當初的角度上考慮,例如banq老師設計這個HashMap作為架構的核心組成部分,banq會不會用UML表現出HashMap與Entry關係以記錄自己的設計決定呢?
一、如果是,就說明在架構設計的UML圖紙裡面畫上HashMap和Entry,這其中設計到的問題包括
(1)UML中很難找到方法表演一個類是另一個類的靜態內部類,更難找到方法體現這兩種類之間的關係,因為一個內部類可以直接呼叫外部類的方法。
(2)如果把這些畫上了,那麼意味著很多其他同等細節的東西也需要在UML上面體現,將會產生一個碩大的難以短時間讀懂的圖紙。
二、如果不是,則產生的主要問題有
(1)HashMap與Entry關係確確實實是你精心設計的結果,是很重要的部分,不是實現架構時候的靈機一動的決定。
(2)你可能確確實實需要在設計而不是開發階段能夠記錄下這個決定,並且很有可能實現架構的人不是設計者你,你也需要保證實現者準確的接收到你的意圖。
所以,這就陷入了兩難的窘境,我也層試圖寫架構,可是發現總是無法掌握UML粒度,並且達不到UML指導的作用。經常是知道UML怎麼畫,但是不知道怎麼用UML記錄下想法,經常畫是一套,做則與圖脫節。
1、banq在設計架構的時候用什麼建模工具?我一直用Rose,後來發現其實Rose不是一個好的架構設計工具,而是一個應用系統設計工具,因為Rose不支援UML2.0,一些複雜的類關係表述不清,事實上多數架構都存在這些複雜的關係,IBM對Rose的定位是:IBM開發人員開發IBM產品的時候從來不用Rose,而Rose是針對購買IBM產品的其他開發商使用IBM產品進行二次開發應用的隨產品附贈應用建模工具,可見Rose在架構設計上是疲軟的。
2、也是我主要的問題:UML與架構的關係
都說UML相當於設計圖紙,只要圖紙有了,照著實現就能做出成品,UML是架構設計的精髓,可是太多的架構設計技巧在UML上面展現不出來,所以這其中就具有一個權衡視覺化建模和實際架構程式碼粒度的問題。
banq在jdon下載包中的doc資料夾下贈送了jdon相關時序圖,可是jdon這麼些類,這幾張圖就是九牛一毛,在tomcat6的原始碼中也是隻有幾張簡單的圖,佔tomcat數以百計類中的很小一部分,另外在下載的其他apache開源專案程式碼中鮮有贈送設計圖紙,就算有也是簡單的幾個類。
我說這個的主要意思是一個架構是一個比較精細的東西,比開發應用精密的多,可能為了擴充套件性,實現一些功能要寫一大堆類,每個類都有架構思想和設計模式的體現,這些東西透過指導性的UML很難一應俱全,到底該怎麼權衡這些關係,該不該把每個類,每個例項的生命週期都畫在圖上?
說的有點抽象,舉一個具體的例子:
比如java中的HashMap,在HashMap中定義了靜態內部類Entry,這樣做的好處是
1、根據資料親密性原則,將HashMap中關聯的資料key和value封裝起來
2、這個結構只對HashMap本身有用,所以定義成私有的內部類,以免其他類與Entry產生不必要的耦合
根據兩個原則,這個“靜態內部類Entry”是一個設計非常嚴謹,幾乎找不到更好決定的決定
但是站在設計HashMap當初的角度上考慮,例如banq老師設計這個HashMap作為架構的核心組成部分,banq會不會用UML表現出HashMap與Entry關係以記錄自己的設計決定呢?
一、如果是,就說明在架構設計的UML圖紙裡面畫上HashMap和Entry,這其中設計到的問題包括
(1)UML中很難找到方法表演一個類是另一個類的靜態內部類,更難找到方法體現這兩種類之間的關係,因為一個內部類可以直接呼叫外部類的方法。
(2)如果把這些畫上了,那麼意味著很多其他同等細節的東西也需要在UML上面體現,將會產生一個碩大的難以短時間讀懂的圖紙。
二、如果不是,則產生的主要問題有
(1)HashMap與Entry關係確確實實是你精心設計的結果,是很重要的部分,不是實現架構時候的靈機一動的決定。
(2)你可能確確實實需要在設計而不是開發階段能夠記錄下這個決定,並且很有可能實現架構的人不是設計者你,你也需要保證實現者準確的接收到你的意圖。
所以,這就陷入了兩難的窘境,我也層試圖寫架構,可是發現總是無法掌握UML粒度,並且達不到UML指導的作用。經常是知道UML怎麼畫,但是不知道怎麼用UML記錄下想法,經常畫是一套,做則與圖脫節。
相關文章
- 如何向大牛請教問題?
- 請教一個問題,
- 老師說不懂就要問,我有個疑惑想請教各位
- 請教phpword問題PHP
- 請教一個演算法問題演算法
- 請教一個struct tag的問題Struct
- 請教Beego Router 問題Go
- 請教一個go切片引用的問題Go
- Tony 老師搭建 MMM 架構架構
- Proxy Authorization Required 問題請教UI
- 請教 TensorFlow 安裝問題
- 從架構師思維看分散式事務兩種技術方案 - banq架構分散式
- 向高段位請教
- 請教一個 python 包安裝的問題Python
- 請教一個切片遞迴賦值的問題遞迴賦值
- 請教個問題執行 httprunner 遇到的問題HTTP
- 想請教一下各位一個介面寫法問題
- 有道精品課教師節專場,教師家族走出一名網課老師
- 請教一下,UI 自動化選型問題UI
- 阿里架構師Peter老師講述Java程式設計師→架構師所需要掌握的技能阿里架構Java程式設計師
- 請教一個讓我這個菜雞不解的問題
- 10年資深架構師分享 | 普通程式設計師向架構師進階之路架構程式設計師
- 華為資深架構師:Cloud Native架構一致性問題及解決方案架構Cloud
- 架構師日常(一)架構
- 請教各位一個關於websocket協議開發的問題Web協議
- 請教各位大佬一個問題,flutter APP 怎麼抓包呢?FlutterAPP
- 有關theano配置問題想請教各位大佬
- 請問架構師面測試,會從哪些方面去考察候選人?會問哪些方面的問題?架構
- 2018教師節送給的老師的祝福語 教師節祝福語大全
- 南沙C++信奧賽陳老師解一本通題 1950:【10NOIP普及組】接水問題C++
- api 介面欄位規範的問題,請教大家API
- 後臺許可權設計問題,請教思路
- 377頁的Android 架構師面試題精編解析大全,請收下!Android架構面試題
- 南沙C++信奧老師解一本通題 1228:書架C++
- 架構師必備:系統性解決冪等問題架構
- 架構師之路:一個架構師需要掌握的知識技能架構
- 22期老男孩Ptython全棧架構師視訊教程全棧架構
- 教師如何搭建成績查詢系統-Leo老師
- 架構師修煉之道(二)——架構?設計?架構師?架構