系統設計細節體現隨筆

這幾天在網上看了電影《最好的我們》,主演是陳飛宇和何藍逗,其中女主的表演之細把人物演活了,特別是眼睛的表演,通過眼睛和麪部的表情,再加上應景的音樂,高中生的形象展現在觀衆面前,不經使人回想起自己的高中生活和備戰高考的場景,容易產生共鳴,不管是否忠實原著,僅僅是上面的幾點可以說是一部好電影。

在軟件設計中同樣有很多細節,好的軟件和工程代碼實現上,質量的好壞其實都是表現在細節上。在軟件的系統設計過程中,細節可以說到處都是,如何通過細節的設計提高軟件的工程質量,可以從幾個方面來考慮

1、業務流程細節體現

在實際的業務流程的分析上,不能停留在客戶說什麼,你就實現什麼,客戶不是專業的計算機人員,只能在業務流程表面上給與幫助,業務流程的梳理還是需要設計人員深刻理解業務,將業務抽象出模型,通常業務流程中,特別是環節和環節間的連接很容易出現問題,需要認真對待。

另外一個細節就是環節中的異常,在實際的業務環節中是如何處理的,比如生產訂單出現返工,工廠是如何處理的,業務流程可以是將此重新生成新的訂單進行生產,重新排進生產計劃,也可以是訂單返回上一環節。

系統設計人員在進行業務流程模型化的設計過程中,最好有多個模型的設計方案,一個是留有後手,以應對業務的不可知的變化,另一個作用是爲更好地找到適合的方案,是一個綜合比較的過程。

2、架構中細節體現

架構中對層次的劃分,層次的設計對軟件架構也是很重要,層次多了軟件就會變複雜,實現和維護都比較困難,層次少了,軟件結構化就不是很好,容易產生粘連。同時靜態的層次設計應該和軟件動態設計統一起來,這樣對於層次間的通訊或者是調用關係就會比較簡單明瞭,一般的設計原則都會講業務作爲單獨的一層,這一層都是動態設計,有運行任務,在業務的上一層通常是表現和UI交互,在業務層下的一般爲業務支撐層次,這一層基本上是功能模塊層,提供業務所需要的各項功能。

層次間儘量不要跨層次通訊或調用,如何有比較多的交互的話,中間的層次肯定設計有問題,要麼是層次過高,要麼就是功能沒有歸一化好。

同一層次中模塊間的交互設計過程中儘量不要有,及時有,也要通過上面層次來交互,因爲在同一層次間進行交互,容易導致調用關係的混亂,使得架構關係變得複雜。

3、功能分解的細節體現

將功能分到不同的模塊中,不能有交叉的情況,比較一個規格,模塊A有一部分,模塊B有一部分,這種情況就是沒有把規格定義好,應該是一個規格就是一個模塊來實現。在實際的設計當中常常會出現規格大小定義的問題,到底一個功能要有多少個規格來組成,設計粒度大小的問題,比較考驗水平。通用的做法是將規格相關性強的放到一個模塊中,有點物以類聚的感覺。

4、運行關係的細節體現

大多數軟件都是多任務系統,所以充分利用時序圖來進行多任務的交互設計,以及任務狀態遷移圖對任務運行內部的設計。

時序圖的設計可以最大程度描述運行的時間順序,將不同的執行流程放到不同的任務中,這個業務設計中需要進行細緻設計的地方,如何進行合理的任務劃分,通常是按資源來進行,一個資源的使用盡量安排在一個任務中,可以避免引入競爭,減少複雜度。

另外在時序圖中,注意調用關係,同步調用和異步調用,異步執行的流程,而且這個在實現過程中常常出現問題,系統設計人員要將此部門明確地描述出來,越詳細越好,因爲在編寫代碼的過程中,實現人員的視野聚焦點在自己的模塊上,容易忽略全局的關係。

4、模塊交互的細節體現

通訊的設計,多任務系統下必須有的,通常是消息的方式進行,這是典型的異步方式,所以運行時序圖和任務狀態遷移圖就是基礎,如果前面這兩者設計得好,此處消息定義就非常簡單,定義消息時保留些餘量;

另外消息設計過程中,消息也不需要發散定義太多的消息,滿足任務狀態遷移即可,同時任務狀態也應該儘量少,要不然狀態遷移的條件也會很麻煩,容易把人搞暈;

共用信息的設計,包含結構體,類的設計,訪問的設計(單任務訪問還是多任務訪問)

調用參數的設計,對於容易變化的參數使用數據結構的方式進行傳遞,保證接口的一致,擴展性也比較好。

5、調試信息的細節體現

通常是日誌打印信息和狀態量和統計量,往往在設計過程中被忽略,定義統一的調試信息對於軟件質量也有很好地促進作用。

 

就先寫這麼多,總之細節是魔鬼,但這個魔鬼會讓用戶爲此入迷,你的產品還能賣不出去嗎?

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章