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