架構師是怎樣煉成的

{"type":"doc","content":[{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"成長的路上是孤獨的,學會獨立面對,是人生的必修課"}]}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"什麼是架構師"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"軟件架構師是軟件行業中一種新興職業,工作職責是在一個軟件項目開發過程中,將客戶的需求轉換爲規範的開發計劃及文本,並制定這個項目的總體架構,指導整個開發團隊完成這個計劃。主導系統全局分析設計與實施、負責軟件架構和關鍵技術決策的人員。軟件架構師應能迅速抓住問題要害,並做出合理的關鍵決定的能力,具備戰略性和前瞻性思維能力,善於把握全局,能夠在更高抽象級別上進行思考。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"什麼是軟件架構"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"軟件結構是有關軟件整體結構與組件的抽象描述,用於指導大型軟件系統各方面的設計(維基百科)。"}]},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/b0/b0557075df9ab2778d0ee96c5d7d2376.jpeg","alt":null,"title":"","style":[{"key":"width","value":"100%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"架構是由架構元素和元素間關係組成的,元素間的關係有靜態關係、動態關係;系統會有一種或者多種架構,而架構需要由架構文檔來體現,架構文檔由架構視圖來組成,架構視圖反映的是相關方關注點的具體展現。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當我們做架構之前,我們首先要知道的是我們的架構是爲誰而做的,也就是圖中的"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#F5222D","name":"red"}}],"text":"相關方(需要架構設計的人如:老闆、產品、業務方、技術)"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#000000","name":"black"}}],"text":"。當我們面對不同的受衆的時候要用不同的表現形式來展示你的架構設計,用相關能夠理解並且明白的方案講述你的架構。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"架構師的主要職責"}]},{"type":"numberedlist","attrs":{"start":null,"normalizeStart":1},"content":[{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":1,"align":null,"origin":null},"content":[{"type":"text","text":"編寫架構設計文檔"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":2,"align":null,"origin":null},"content":[{"type":"text","text":"開發編程框架"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":3,"align":null,"origin":null},"content":[{"type":"text","text":"重構軟件代碼"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":4,"align":null,"origin":null},"content":[{"type":"text","text":"設計系統架構"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":5,"align":null,"origin":null},"content":[{"type":"text","text":"技術選型,解決技術使用中存在問題"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":6,"align":null,"origin":null},"content":[{"type":"text","text":"性能優化"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":7,"align":null,"origin":null},"content":[{"type":"text","text":"模塊分解"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":8,"align":null,"origin":null},"content":[{"type":"text","text":"系統安全與高可用"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":9,"align":null,"origin":null},"content":[{"type":"text","text":"技術創新 (擁有技術前瞻性瞭解新的技術並實踐)"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":10,"align":null,"origin":null},"content":[{"type":"text","text":"溝通管理"}]}]},{"type":"listitem","content":[{"type":"paragraph","attrs":{"indent":0,"number":11,"align":null,"origin":null},"content":[{"type":"text","text":"..."}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":12,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":12,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"UML建模"}]},{"type":"heading","attrs":{"align":null,"level":5},"content":[{"type":"text","text":"什麼是模型?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"模型是一個系統的"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#F5222D","name":"red"}}],"text":"完整的抽象"},{"type":"text","marks":[{"type":"color","attrs":{"color":"#000000","name":"black"}}],"text":"。人們對某個領域特定對的問題的求解及解決方案,對他們的理解和認識都蘊含在模型中。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#000000","name":"black"}}],"text":"通常,開發一個計算機系統是爲了解決某個領域特定的問題,問題的求解過程,就是從領域問題到計算機系統的映射。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/a9/a90cc702ebd61dc5d7b7537f9490cbc0.jpeg","alt":null,"title":"","style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":"","fromPaste":false,"pastePass":false}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":5},"content":[{"type":"text","text":"爲什麼要建造模型"}]},{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"建造傳統模型的目的"}]},{"type":"paragraph","attrs":{"indent":2,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"a.爲了證明某件事物能否成功(用模型模擬)"}]},{"type":"paragraph","attrs":{"indent":2,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"b.因爲模型的成本遠遠低於實物"}]},{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"建造軟件模型的目的"}]},{"type":"paragraph","attrs":{"indent":2,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"a.爲了與他人溝通"}]},{"type":"paragraph","attrs":{"indent":2,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"b.爲了保存軟件設計的最終成果"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":5},"content":[{"type":"text","text":"如何建模"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"架構師常用的建模語言就是UML統一建模語言,UML圖分爲兩大類分別爲靜態圖("},{"type":"text","marks":[{"type":"italic"}],"text":"用例圖、類圖、組件圖、部署圖"},{"type":"text","text":")和動態圖("},{"type":"text","marks":[{"type":"italic"}],"text":"序列圖、活動圖、狀態圖"},{"type":"text","text":"),而我們只需要掌握其中這七種就足以應付工作中的case。在軟件開發的三個階段中需要的UML圖如下所示:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#F5222D","name":"red"}},{"type":"strong"}],"text":"需求分析:用例圖、狀態圖、時序圖、活動圖"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#F5222D","name":"red"}},{"type":"strong"}],"text":"概要設計:部署圖、系統級時序圖、系統級活動圖、組件圖、組件時序圖、組件活動圖"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"color","attrs":{"color":"#F5222D","name":"red"}},{"type":"strong"}],"text":"詳細設計:類圖、類時序圖、狀態圖、方法活動圖"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在軟件設計的每一個階段用不同的模型更加精準的描述整個軟件系統的架構和設計。每一種圖在不同的階段反應出來具體的模型可能是不一樣的,正所謂架構是和相關方關聯的,比如同樣是活動圖在需求分析階段和該要設計階段還有詳細設計階段的落地展現出來的樣子是不一樣的。在哪個位置就要坐着與之對應的工作。所以同一個模型圖在不對的階段的職責是不一樣的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章