軟體架構師必讀!什麼是設計?如何進行設計?
在質量的約束之下,軟體架構如何進行設計?關鍵的問題是什麼是設計,如何進行設計呢?對這個命題的不同理解,會形成截然不同的方法論。
1、什麼是設計
設計是技術與文化的融合。
設計的目的是創作事物,設計先於事物出現且與之相關,但又有所區別。設計需要新思想,而新思想來自於將一個領域中的領悟聯絡並應用到另一個領域中,歷經若干次這樣的經歷而有所悟,腦海裡自然就孕育出了“新思想”。因此,跨學科的靈感和鍛鍊是設計之根本。
設計是一種對話,它不僅僅是與利益相關方的對話,也是自己與自己的對話。
設計是一種思維活動,設計的魅力在於破解難題,通過直面問題的挑戰,以及對相應解決方案的仔細推敲,才可能設計出真正有靈性的產品。
1)設計不具普遍性
軟體設計很少具有普遍性,不同的目標需要不同的設計來支援。 一個適用於所有應用”的設計很少會成功。舉例來說,一個大型應用領域的系統,其共同目標是提高質量和降低成本,而一個快速活動的業務領域的系統,其目標則通常是進入市場的時間及可接受的低風險。
一個旨在降低成本的設計,和一個旨在縮短進入市場時間的設計,或者與一個旨在最大化業務敏捷性的設計是不一樣的。這就需要早期闡明目標,並且在對組織業務目標和可行技術的不斷變化的回應中進行發展。好的設計在這種變化中應該具有足夠的適應力。
2)做出權衡
所謂軟體設計,本質上就是在質量、成本、時間以及其它各種因素之間做出權衡。
在設計過程中應該向你、經理人員、開發人員以及其他利益相關者,清楚闡明採用某種解決方案的原因,包括其中做出的權衡。例如:為了減少響應時間,是不是犧牲了鎖定和同步的範圍?
為了保證效能,是不是犧牲了資料加密的級別?這樣一來系統是不是還足夠安全?
3)設計決策
整個設計過程就是一個發現問題、權衡解決方案、作出決定的過程,由下圖所示。
其過程中包括:
目標:設計目的是什麼
必要條件:和目標相關的是一組必要條件或者次要目標
約束:限制條件,包括資源、時間、技術以及其它方面的約束。在很多情況下,約束是創作的朋友,由於約束的存在,才迫使我們採用創新方法。
資源、預算及其分配:最常見的是成本預算,記憶體或頻寬的用量等。
設計樹:設計師形成設計決策。然後,在設計空間中又形成另一決策。在每一個節點處,他都可以選取一條或多條路徑,因此設計的過程可以認為是一種對於以樹型結構組織的設計空間的系統化探索。
相關文章
- 什麼是軟體架構設計?- Grady架構
- 為什麼以及如何要進行架構設計權衡?架構
- 《軟體架構設計》讀書筆記架構筆記
- 什麼是真正的架構設計?架構
- java程式設計師進階架構師你必須掌握的架構知識體系Java程式設計師架構
- 架構設計要按照什麼原則進行呢?架構
- 架構師必備:HBase行鍵設計與應用架構
- grafana 的主體架構是如何設計的?Grafana架構
- 如何進行雲端儲存架構框架設計?架構框架
- 設計,架構,框架之間是什麼關係?架構框架
- 程式設計師你是怎麼繪製架構圖?程式設計師架構
- 軟體架構設計模式大全 - vikipediaaaa架構設計模式
- 軟體設計師:資料結構資料結構
- 好程式設計師Java教程解讀什麼是swing程式設計師Java
- 好程式設計師Java教程解讀JDBC是什麼程式設計師JavaJDBC
- 架構師修煉之道(二)——架構?設計?架構師?架構
- 【1024程式設計師節】程式設計師,你學程式設計的初衷是什麼?程式設計師
- 程式碼架構設計-1.為什麼要做好程式碼架構設計架構
- 為什麼大部分 PHP 程式設計師做不了架構師?PHP程式設計師架構
- SaaS(軟體即服務)架構設計架構
- 論軟體架構設計及應用架構
- 程式設計師的悲哀是什麼?程式設計師
- 系統架構設計師學習(二)系統架構設計師緒論架構
- 什麼是Poly軟體架構?架構
- Java程式設計師必備:微服務+開源框架+架構基礎+高效能架構+設計模式Java程式設計師微服務框架架構設計模式
- 軟體架構, 軟體框架,設計模式的區別架構框架設計模式
- 務實的軟體架構師是什麼樣?(tpierrain)架構AI
- 軟考 - 系統架構設計師(基於中介軟體的開發)架構
- 軟體設計師:UML
- 軟體架構師或解決方案架構師必讀的五本書 - javarevisited架構Java
- UI設計是什麼_UI設計學什麼?UI
- 架構師如何賦能程式設計師團隊? - esilva架構程式設計師
- 10年資深架構師分享 | 普通程式設計師向架構師進階之路架構程式設計師
- 系統架構設計師感想架構
- 架構師之路—理解設計模式架構設計模式
- 2023軟體架構和設計的趨勢架構
- 什麼是 10x 程式設計師程式設計師
- 1024為什麼是程式設計師日程式設計師