初學架構設計的第一步:需求、愿景與架構
了解<需求>、<愿景>與<架構>三者的關系。也就是<需求分析>、<觀想愿景>與<架構設計>三者的關系。
一、需求(Requirements)分析:
這通常是由目前面臨的問題(Problem)所引發出來的。著重于現實問題和條件的分析,然后尋求解決問題的方法、技術和資源。就系統開發人員來說,需求主要有兩種:用戶需求和系統需求。一般而言,人們通常會把它看成是系統開發時必須滿足的<限制>(Constraint),也是要達成的<目標>(Goal)。
(視頻課程,請點擊上圖)
二、觀想愿景(Vision):
由于需求非常貼近現實,若直接拿來當作<目標>的話,常有見招拆招或見樹不見林的缺點。甚至,會有<短視而缺乏遠見>之嫌。于是,透過觀想愿景來匯集更多視角、擴大視野、產生洞見,成為系統開發的理想目標。一般而言,帶來重大革新的公司(如蘋果)都會提出一個愿景(Vision),告訴人們應該去追求的事物。蘋果公司的前首席設計師布魯諾(R. Brunner)說道:“通常,偉大產品的成功之道并不是從草圖和定義開始的,而是以一個點子(想法)開始,形成一條切實可行的路;然后對此不斷開發和經營,這是一個戰略性的過程。”
(視頻課程,請點擊上圖)
三、架構(Architecture)設計:
需求分析從現實(Reality)出發,不但找出問題,并且厘清它的現實條件和限制。觀想愿景則指引出我們的方向和目標(Goal)。架構設計就從這個目標出發,以終為始,從愿景映射到現實(Mapping from vision toreality)。恰好與需求分析是相反的視角,兩者互補而相成,殊途而同歸,才能得出一條從現實通往目標之路(或藍圖),這就是所謂的架構(Architecture)了。
兩者互補:需求分析偏重<分>,架構設計偏重<合>
<分>的另一面是<合>。需求分析注重于<分>,另一面是架構設計注重于<合>。許多人誤認為,架構設計是要尋覓系統的共通性和不變性。其實,這是需求<分析>的工作;而不是架構<設計>的工作。在人們展開對事物(或系統)的分析(Analysis)過程中,自然而然會對其分析結果進行抽象,抽出萬變不離其<宗>,把此宗視為不變的序(Order)或本質(Essence),就會得到系統的共通性和不變性了。如下圖:
需求分析與架構設計是兩個不同視角,互補而相成,所以架構師必須兼顧兩個視角,才能完成一個優質的架構(藍圖)。架構是獨一無二的,架構設計是追求獨特性的、氣象萬千的、與眾不同的嶄新組合。
蘋果喬布斯說:“創造無非就是把事物聯結起來。即若是非凡的創造通常也不過是對已有事物進行的新組合和關聯而已。”
在《7 Brains:怎樣擁有達芬奇(De Vinci)的7種天才》一書里,作者寫道:“能不能看出事物的關系和模式,并做出不尋常的組合和關聯,乃是創造力的核心要素。”
例如在飛機行業里,架構師的愿景是把一群各自「不會飛」的組件(如輪胎、引擎、機翼、機尾、油箱等),以精致架構將它們巧妙地組<合>起來,竟然整體就飛起來了。如下圖:
從愿景出發,架構師心中先有<合>的目標,才來做分的動作。分離出很多接口,依據接口來組合出許多新奇的產品。
例如肯德基餐廳賣炸雞,肯德基是客人來之前大師傅先做分(庖丁解雞),等客人來了才由柜臺的小弟×××迅速組合,如下圖:
如果您想更進一步培養架構師的豐富素養,就請您參閱我(高煥堂)的書籍:《思考軟件、創新設計:A段架構師的思考技術》(北京.電子工業出版社)。
相關文章:
1. 兩種觀點兼顧的架構設計方法
~ End ~
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。