高煥堂《嵌入式UML設計》讀書筆記 第三章

2021-10-10 01:46:14 字數 2157 閱讀 3036

在第一章中已經介紹過,將應用程式分割成許多小塊(即:元件),在使用時可以隨意調換其中乙個或多個元件,以實現元件的快速淘汰和重組,從而快速滿足客戶的特殊需求或新需求。

這也就是說將應用程式分為多個part,再組合成乙個whole。

要想真正實現快速淘汰和重組的效果,part就不能隨意劃分。part的劃分要講究「有機次序」。只有「分」得好,才能「合」得快,合得妙。

所以,下面專門討論如何劃分part。

我們可以分析whole是否面臨如下情況,如果有,那我們就可以把這部分劃分出來,作為乙個part:

1 希望組合出多樣化的whole

2 希望分散開發生產,加快whole的組合速度

3 希望元件提前開發,縮短whole的生產時間

4 希望可外購現成元件,以降低成本

5 希望專注做小組件,並大量生產

我們還可以從以下角度來洞悉「穩定」的部分和「變化」的部分,將「穩定」和「變化」劃分開,成為不同的part:

1 根據客戶而分:

比如:大部分人喜歡加糖咖啡,但正在**的女士則喜歡無糖或低糖咖啡。所以咖啡是穩定的,糖是變化的。因此將糖和咖啡劃分開。

2 根據時間而分:

比如:汽車的車體在設計時就已固定,但汽車的顏色是在顧客購買時才確定的。因此將車體生產和車身上色劃分開。

常見的三種組合關係分類分類

舉例符號

組合/部分

房子和門

房子和窗戶

汽車和引擎

容器/內容

汽車和司機

巴士和乘客

集合/成員

雁群和大雁

東南亞總行程和香港觀光行程

odell提出的組合關係分類

擔任過美國omg主席的james odell提出了一套關係分類方法,他根據3項特性將組合關係分為6種。

其中,3項特性分別是:配置、同質性、不變性。

配置:「部分」與「整體」有特定的功能和結構關係

同質性:「部分」與「整體」是一種東西

不變性:「部分」難以從「整體」中抽離出來

6種組合關係如下表:

說明:1.我沒有搞明白「配置」這項特性到底如何理解,所以下表中沒法把對「配置」的解釋寫出來。

2.我個人認為這種分類方法過於繁瑣,不如前一種方法簡單明瞭。

3.我個人認為這種分類方法的3個特性中,不變性最為重要,因為是否具備不變性決定了使用哪種符號:不變使用composition,可變使用aggregation。

分類舉例

配置同質性

不變性符號

元件/整體物件的組合

cpu和電腦

風扇和電腦

非同質:

cpu、風扇和電腦不是一種東西

可變:cpu、風扇可以衝電腦中取出來

材料/物件的組合

油和紅龜粿

糖和紅龜粿

糯公尺和紅龜粿

非同質:

油、糖、糯公尺和紅龜粿不是一種東西

不變:油、糖、糯公尺一旦製成紅龜粿就沒法再取出來了

切割部分/物件的組合

一塊餅乾和一盒餅乾

同質:一塊餅乾和一盒餅乾都是餅乾

可變:可以從一盒餅乾中拿出一塊餅乾

地方/地區組合

東南亞總行程和香港觀光行程

同質:東南亞總行程和香港觀光行程都是行程

可變:可以單獨進行香港觀光行程,從另乙個角度看也可以從東南亞總行程中去掉香港觀光行程,這並不影響東南亞總行程的存在

成員/聚集組合

(同前一種分類法中的容器/內容)

會員與俱樂部

可變:會員可退出俱樂部,這並不影響俱樂部的存在

成員/合夥組合

(同成員/聚集組合的區別就在於不變性)

父母親一方和雙親家庭

不變:缺少父母親任一方就不再是雙親家庭了

高煥堂《嵌入式UML設計》讀書筆記 第四章

第二章介紹元件之間相互傳遞訊息,第三章介紹元件的組合與協作關係,本章則介紹元件的行為。訊息激發元件的行為,行為塑造元件的新關係和狀態。設計軟體就是要充分描述元件的行為,掌握元件協作關係,靈活傳遞訊息。捕捉物件行為應關心的是 事件 event 狀態 state 和動作 action 事件是外來的刺激。...

設計模式讀書筆記(一) UML

統一建模語言 unified modeling language,uml s 是一種視覺化的標準建模語言,是一種分析和設計語言,通過uml可以構造軟體系統的藍圖。uml通過統一的表示方法,讓不同知識背景的領域專家 系統分析設計人員和開發人員以及使用者可以方便的交流。1.uml的結構 5種檢視 vie...

測試驅動的嵌入式C語言開發讀書筆記

瀑布模型的最後開發人員會亂作一團,而縮短開發周期是一種減少問題的方案 測試驅動開發 tdd 是一種增量式軟體開發技術。簡單說明及在沒有失敗的單測前提下不寫產品 測試要小且自動化。tdd操作步驟 增加乙個小測試。執行所有測試並期待新的測試失敗,也可能壓根編譯不過。為了讓測試通過做一些小改動。執行測試並...