跳到主要內容

The Design of Design˙DSLs in Action

image dsl

很高興的是,今年一開始就看到這兩本書;難過的是,這兩本書都很硬。

“The Design of Design”這本的原文看的是很辛苦,希望有中文版早點出來,不然可能要看到第二季,阿彌陀佛。

The Design of Design: Essays from a Computer Scientist《人月神話》作者Frederick P. Brooks,2010的新作,我竟然今年才知道。

這本書難讀的理由是:它是本哲學書啊~

雖然有從設計哲學講到設計實踐,從設計過程到設計靈感,既強調了設計思想的重要性,又對溝通的細節做了細緻的描述,以及因地制宜做出妥協的具體準則等。

但就是在講設計的本質,哲學的目的在於,探索事物之本質,所以說這本書很硬,但也因此讓我收益良多。

牛津辭典對Design作的定義:
To form a plan or scheme of, to arrange or conceive in the mind . . .for later execution.
(對...去形成一計畫或方案,運用智力去整理或考量...,以便於後續的執行)

重點會在plan, in the mind, and later execution。

依作家Dorothy Sayers的說法,創作的階段可分為:
1. The formulation of the conceptual constructs
2. Implementation in real media
3. Interactivity with users in real uses

良好的設計具有概念上的完整性:unity, economy,clarity.

但真實在團隊的溝通上,要達到概念的統一是一種目標,而且需要透過大量的對話才能達到。
這點必須不厭其煩地講解、上課、review,才有可能讓這設計的概念,在專案中逐漸的內化。

這讓我感到挫折,專案或公司裡的 Architect / SA / SD / QA,需要花多少的時間,才能讓成員的概念一致化?
(那麼,文件與對話的比例又要做多少的調整?)

接著講到工程師是如何進行思考的。
使用合理的模型這件事。

模型必須包含:
Goal / Desiderata / Utility Function / Constraints / Resource Allocations, Budgets, and Crucial Budgets / Design Trees。

這讓我重新思考了 Constraints/ Design Trees 在專案中的實作問題。

問題在於Constraints是有可能在專案中,隨著user自己在被訪談過程中,對系統的逐漸熟悉,因此對Constraints開始有了修改。
(但在requirement modeling過程中,我們很容易假設Constraints是不變的,而這假設會造成更多設計時的浪費。)

我們都是圍繞著Constraints來做設計的,這樣會影響到Design Trees的路徑。

也就是說,在實戰的過程中,我們必須認知到,Design Trees上的節點,實際上不是最後設計的決策,而只是設計的暫定方案

如此一來,就要牽扯到開發流程上的問題。

以winston Royce的7步模型:
SYSTEM REQUIREMENTS -> SOFTWARE REQUIREMENTS -> SYSTEM DESIGN -> PROGRAM DESIGN -> CODING,UNIT TEST -> INTEGRATION,SYSTEM TEST -> OPERATION , MAINTENANCE

這是理想的開發流程模型,但考慮到上述的兩點問題(Constraints/ Design Trees),加上Resource的配置,就會發現這樣的模型是不可行的。

這也是會什麼近年來會開始流行Agile的開發模型,這樣才能面對不斷的變化。

......邊讀邊思考,問題不斷地冒出,這本真的會要看很久。


接著來說DSLs in action這本。 (唔,也是有點硬!)

 

去年讀了"DSLs in Boo: Domain Specific Languages in .NET"與"Domain-Specific Development with Visual Studio DSL Tools"這兩本。

說真的,無論是實作還是設計上,困惑還是不少。

不過"DSLs in action"這本減輕了我的不少困惑。

從DSL 的實作,External DSLs / Internal DSLs的使用考量上思考,書中主要是使用 Groovy + Java 為主(Internal DSLs的使用),不過也參雜著 Ruby與Scala的範例。

dsl1Internal DSLs

dsl2External DSLs

這是本很好的實踐書,不過,前提是對 Groovy要很熟,還有mix上概念的要很懂,說實在,不是很好K。

image當然,也可以先去看看"Groovy for Domain-Specific Languages",這本簡單一些,可以兩本交雜著看;只是這本的 sample 是跟 twitter互通的,但是 sample跑不起來 (不知是不是twitter的基本認證模式有改?),光讀code還是有些許困難。

至於Marin Fowler大師寫的"Domain-Specific Languages",……,看來要再過幾個月了。


讀這些讀的吃力,是因為挑戰越來越高的緣故嗎?還是我太弱?

不論是哪種原因,都是一種痛苦的快樂;IT界就是因為有看不完的書,是我當初選擇進入IT的緣故啊。

留言

這個網誌中的熱門文章

小褶 Life(3) 古亭景美線段

經過上周的總統大選後,想說可以好好地規劃路線,這週末再來享受我的Bike Life,沒想到天氣預報一直恐嚇著我:「週末會下雨,週末會下雨,週末會下雨......。」 哇靠,早上起來,天色是有些陰暗,查了yahoo天氣,竟然下雨機率僅20%,趕緊重新考慮騎車的路線。 這次的目標是新店溪。 想說從哪邊切入比較好,唔,從師大路那邊進古亭河濱公園看來是不錯的選擇,要是下午真的下雨,就在師大路那邊晃一下午也比較安全。 查了google map,怪怪的,不知哪邊是公園的入口處。 不管了,到那附近再說,總有路口的。 結果是......迷路了。 -___-||| 到師大路跟兒童交通博物館那邊,就是看不到古亭河濱公園的入口。 沒辦法,走確定知道的路,以前新店上班時,總是從思源街接到景美堤外便道,果然,從那邊進去就對了。 (後來從古亭河濱公園也騎到中正河濱公園,才發現,那邊只有很小一條汽車進來的道路,真的很難找。 建議從思源街沿自來水廠那邊進來比較方便。) 就目前騎的3個線段而言,沿景美溪新店溪的河濱是最好騎的了,路又寬廣又平直,要飆車也容易。 看看地圖,只到舊橋就沒了,不知什麼時候才會完工咧...... 這樣,之後還可以直接騎到動物園咧!! 這個線段有較多的網球場地,靠古亭河濱公園那邊還有羽球場地,騎車的族群跟前兩次的線段比較起來,嗯,在地居民比較多(關渡到淡水則是遊客特多),應該是方便的緣故吧,騎Dahoon折疊車的人也比較多,莫非這附近有Dahoon專賣店?! 終點出來就到景美夜市一帶。 不錯的塗鴉作品。北市很多自行車道旁的圍牆,是開放給民眾塗鴉的。 (旁邊有 borther的簽名,莫非這是傳說中塗鴉客brother先生的作品?! 但......割腕的少女 ...... 繪在自行車道的旁邊,想表達什麼咧!?) 在終點處有很大的Taipei Cycling Mark。 雖然一開始有些小迷路,但也剛好繞到了兒童交通博物館......的外面,跟小丸子的看板合照。 門票太貴了,也聽有人說其實有些不值得,所以也不打算買票進去。 >___

能力並非來自於神來之筆

建立深度關係的關鍵是投入,經由時間與精力的累計,你與這一事物的關係日益深厚,你逐漸掌握了它,與它相遇,而能力,是你的存在與它的存在相遇的副產品。 事實上,能力差的人,常是太期待神來之筆的人。 具體來說就是,他們覺得,一旦某個事物被自己掌握,那首先是因為我掌握了自己;如果它沒有被掌握,那是因為我沒有掌握好自己。即,我狀態好,就可以讓周圍世界如我所願;我狀態不好,周圍世界就不能如我所願——倒推後其實是這句:當外界不如自己所願時,他們會在自己身上找原因,因他們認定,自己是能輕鬆掌控世界的,而狀態不好,就是能找到的最直接原因。 因這一邏輯,他們花很大力氣去調整狀態,還會花很多時間去等待自己狀態好,而不懂得,關鍵是持續投入,瑣細努力即可累積出成功。 能力是建立深度關係的副產品,而建立關係時,比努力更為關鍵的一點是,你不是自戀地將自己意願強加在這一事物之上的,而是臣服於這一事物。不是你個人太牛逼,所以掌握了這一事物,而是你臣服,放下自戀,放下預期和判斷,放空自己,然後你就可以與這一事物的存在相遇了。 能持續努力的人,是有了相對成熟的心理:我未必能立即掌握一個事物,但只要我持續努力,並且尊重這一事物自身的規律,我會與這一事物建立起很好的關係。 一旦有“我這個人失敗了”的感覺,一個人就會體驗到,伴隨著自我崩塌感的,是無力感,即你感覺暫時發不出力量了。其實,只是你暫時控制不了外部事物而已。 成功者會相對擁有更多神來之筆,但絕非“一直擁有”,且“神來之筆”之所以會有,是大量投入而與事物建立了關係的結果。 總結一下,要破除對“神來之筆”過於期待而不受挫的心理,需要懂得這樣幾點: 一、能力是建立了深度關係的結果; 二、建立深度關係需要持續的投入; 三、建立深度關係的關鍵,不是將你的自戀強加於事物之上,而是放下自戀想像,尊重事物本身的真實規律; 四、一件外部事物能否被我控制,取決於那一刻我的內部狀態,這是嬰兒式全能自戀心理的殘留; 五、一受挫,就覺得“我整個人不好”,也源自全能自戀心理——我和整個世界是一體的,所以我能控制一切,否則就意味著一切都是我控制不了的; 六、關鍵不是要神來之筆這種好的感覺,而是如何處理挫敗感。 -- 《巨嬰國》

GLOOMY BEAR 暴力熊

Gloomy Bear身世背景: Gloomy是一隻在路邊被遺棄的粉紅色小熊 , 被小朋友Pity發現,並將牠帶回家中收養, 並為小熊取名為Gloomy。 可惜.....Gloomy外表可愛,但因為被拋棄的緣故~卻有著一般熊的暴力性格, 長大長出爪子後就時常向主人用暴力招數打招呼, 而Pity就慘被Gloomy日日夜夜地欺負!悲慘ㄉ人生就這樣子開始囉!! 暴力熊喜好~咬主人頭, 而牠的主人,復原能力極高...打不死喔~厲害厲害! 暴力熊顏色:粉紅色,金色,銀色,紅色,藍色,黃色,還有罕見的綠色與混色。 粉紅色暴力熊性別:女 頭大身細,眼珠黑色,爪白色兼尖利,具有殺傷力,她多數用口爪殺人,殺完人後喜歡在街上徘徊。 小主人每次都被暴力熊揍得半死兼頭破血流, 但仍然不離不棄地緊緊抱住這隻血腥的寵物; Pity就算受到傷害亦要讓開心的回憶遮掩,然後繼續微笑期待小熊再次跟他一起溫習/做功課/看書;相信等待他的會是小熊的溫柔而非暴力傷害; 暴力熊和他小主人之間微妙的情感讓人感動又心酸; 這次轉輪科技所推出的暴力熊,內容包含小男孩Pity與粉紅熊Gloomy兩支一組。造形上善用Gloomy胖胖的軀體,將轉輪關節隱藏其中,全身有14處可動。可替換配件包含小男孩被打的表情,還有防止熊熊咬人的口罩以及牠嘴角流下來的血,原型制作為山口勝久。