向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記錄下想法,經常畫是一套,做則與圖脫節。
相關文章
- 請教banq老師一個repository的問題
- 請教Banq一個Ruby架構的問題架構
- 向banq老師請教:ddd中的值物件物件
- banq老師--jdon框架問題框架
- banq,Jdon Framework的問題請教Framework
- 請教banq DDD學習問題!
- EJBCommand模式向banq請教模式
- BANG老師: 請教一下Hibernate的session問題Session
- 請教彭老師:開發工具使用的問題
- 請教banq關於domain object的問題AIObject
- 請教Banq工廠模式中的一些問題模式
- 請教彭老師關於jdbc的問題,謝謝!JDBC
- 請教banq老師和各位大哥,以下需求應該怎麼分析
- 請教banq老師關於高負載網站的設計負載網站
- 請教Banq和各位道友連線失效問題
- banq大哥,請教一個關於jboss ide的問題IDE
- 請教老師關於 高併發插入資料問題
- 請教bang老師關於自定義classloader的一些問題
- 請教banq問題,關於hibernate的jdbc的JDBC
- 請教banq大哥:資料庫設計的問題!!!資料庫
- 請教banq老師怎樣學習DDD領域建模和設計模式設計模式
- 初學j2ee,請教各位老師關於datasource問題
- 請問老師一個關於命令模式的問題模式
- 請教如何走好通往架構師的路架構
- banq 你好,請教模式模式
- 你好,BANQ,請教模式模式
- 你好banq,請教模式模式
- 向大家請教開發流程的問題
- 請教板橋老師關於領域驅動開發設計問題
- 請教JDON的牛人,關於快取的架構問題快取架構
- 關於學習jdon框架cache的疑問,請banq老師指點一下。框架
- 一個遊戲系統,向Banq大哥,以及感興趣的朋友請教!遊戲
- 專案模組架構,banq老師及兄弟們給點意見吧架構
- 請問Banq老師,請問Spring的核心管理部分基本思想是怎麼樣的?Spring
- 請教一個JVM問題JVM
- 請教高手一個問題!
- Jmin框架包已開源,請Banq老師指點一下框架
- 遇到一個關於session id的問題,向大家請教!Session