軟體架構師必讀!什麼是設計?如何進行設計?

shenmanli發表於2018-03-05

在質量的約束之下,軟體架構如何進行設計?關鍵的問題是什麼是設計,如何進行設計呢?對這個命題的不同理解,會形成截然不同的方法論。

1、什麼是設計

設計是技術與文化的融合。

設計的目的是創作事物,設計先於事物出現且與之相關,但又有所區別。設計需要新思想,而新思想來自於將一個領域中的領悟聯絡並應用到另一個領域中,歷經若干次這樣的經歷而有所悟,腦海裡自然就孕育出了“新思想”。因此,跨學科的靈感和鍛鍊是設計之根本。

設計是一種對話,它不僅僅是與利益相關方的對話,也是自己與自己的對話。

設計是一種思維活動,設計的魅力在於破解難題,通過直面問題的挑戰,以及對相應解決方案的仔細推敲,才可能設計出真正有靈性的產品。

1)設計不具普遍性

軟體設計很少具有普遍性,不同的目標需要不同的設計來支援。 一個適用於所有應用”的設計很少會成功。舉例來說,一個大型應用領域的系統,其共同目標是提高質量和降低成本,而一個快速活動的業務領域的系統,其目標則通常是進入市場的時間及可接受的低風險。

一個旨在降低成本的設計,和一個旨在縮短進入市場時間的設計,或者與一個旨在最大化業務敏捷性的設計是不一樣的。這就需要早期闡明目標,並且在對組織業務目標和可行技術的不斷變化的回應中進行發展。好的設計在這種變化中應該具有足夠的適應力。

2)做出權衡

所謂軟體設計,本質上就是在質量、成本、時間以及其它各種因素之間做出權衡。

在設計過程中應該向你、經理人員、開發人員以及其他利益相關者,清楚闡明採用某種解決方案的原因,包括其中做出的權衡。例如:為了減少響應時間,是不是犧牲了鎖定和同步的範圍?

為了保證效能,是不是犧牲了資料加密的級別?這樣一來系統是不是還足夠安全?

3)設計決策

整個設計過程就是一個發現問題、權衡解決方案、作出決定的過程,由下圖所示。

其過程中包括:

目標:設計目的是什麼

必要條件:和目標相關的是一組必要條件或者次要目標

約束:限制條件,包括資源、時間、技術以及其它方面的約束。在很多情況下,約束是創作的朋友,由於約束的存在,才迫使我們採用創新方法。

資源、預算及其分配:最常見的是成本預算,記憶體或頻寬的用量等。

設計樹:設計師形成設計決策。然後,在設計空間中又形成另一決策。在每一個節點處,他都可以選取一條或多條路徑,因此設計的過程可以認為是一種對於以樹型結構組織的設計空間的系統化探索。

相關文章