架構師

架構師  架構師是軟件行業中一種新興職業,工作職責是在一個軟件項目開發過程中,將客戶的需求轉換爲規範的開發計劃及文本,並制定這個項目的總體架構,指導整個開發團隊完成這個計劃。架構師的主要任務不是從事具體的軟件程序的編寫,而是從事更高層次的開發構架工作。他必須對開發技術非常瞭解,並且需要有良好的組織管理能力。可以這樣說,一個架構師工作的好壞決定了整個軟件開發項目的成敗。
  架構師實際上就是軟件的總體設計師。首席設計師就是總設計師,打個通俗的比方:鄧小平是中國改革開放的總設計師,我們用現在的說法可以講,鄧小平是中國改革開放的首席架構師。架構師的形成一定是在實踐中積累起來的,而並非上了幾次培訓班,讀了幾本書就可以成功的,架構師是在工程實踐中培養出來的!
  架構師也並非是萬能的。架構師是客戶需求和開發者之間的橋樑。在軟件行業中,一般提到的架構師是技術架構師,而忽略了領域架構師或者講是領域工程師的概念。一個好的領域專家一定是業務領域的架構師,他能夠給出某一個業務領域的架構,我們可以稱爲業務架構,只有技術架構和業務架構緊密結合纔有可能真正創造出一個好的系統!
  近年來,軟件領域也漸漸地流行起架構師的角色,特別是對一些大型軟件產品或項目的開發,這一角色顯得很關鍵,因爲缺乏好的軟件架構師而導致項目失敗的例子不勝枚舉,一個沒有經驗和能力的架構師也會使項目失敗的速度加快。
  軟件架構師的重要作用
  軟件架構師在整個軟件開發過程中都起着重要的作用,並隨着開發進程的推進而其職責或關注點不斷地變化,在需求階段,軟件架構師主要負責理解和管理非功能性系統需求,比如軟件的可維護性、性能、複用性、可靠性、有效性和可測試性等等,此外,架構師還要經常審查和客戶及市場人員所提出的需求,確認開發團隊所提出的設計;在需求越來越明確後,架構師的關注點開始轉移到組織開發團隊成員和開發過程定義上;在軟件設計階段,架構師負責對整個軟件體系結構、關鍵構件、接口和開發政策的設計;在編碼階段,架構師則成爲詳細設計者和代碼編寫者的顧問,並且經常性地要舉行一些技術研討會、技術培訓班等;隨着軟件開始測試、集成和交付,集成和測試支持將成爲軟件架構師的工作重點;在軟件維護開始時,軟件架構師就開始爲下一版本的產品是否應該增加新的功能模塊進行決策。
  如何成爲優秀的軟件架構師
  顯而易見,在軟件開發過程中,一個優秀軟件架構師的重要性是不應低估的。那麼如何成爲優秀的軟件架構師呢?
  首先必須具有豐富的軟件設計與開發經驗,這有助於理解並解釋所進行的設計是如何映射到實現中去。
  其次要具有領導能力與團隊協作技能,軟件架構師必須是一個得到承認的技術領導,能在關鍵時候對技術的選擇作出及時、有效的決定。
  第三是具有很強的溝通能力,呵呵,其時這一點好像什麼鬼角色都最好具備,軟件架構師需要與各路人馬經常打交道,客戶、市場人員、開發人員、測試人員、項目經理、網絡管理員、數據庫工程師等等,而且在很多角色之間還要起溝通者的作用。在技術能力方面,軟件架構師最重要也是最需求掌握的知識是構件通信機制方面的知識,比如遠程過程調用、JAVARMI、CORBA、COM/DCOM、各種標準的通信協議、網絡服務、面對對象數據庫、關係數據庫等等,另外,架構師應時刻注意新軟件設計和開發方面的發展情況,並不斷探索更有效的新方法。開發語言、設計模式和開發平臺不斷很快地升級,軟件架構師需要吸收這些新技術新知識,並將它們用於軟件系統開發工作中。當然,行業的業務知識對軟件架構師也是很重要的,有助於設計出一個滿足客戶需求的體系結構,優秀的軟件架構師常常因爲要儘快獲得對行業業務的理解而必須快速學習並且進行敏銳的觀察。
  上面的描述是枯燥乏味的,但作爲一個架構師,在整個軟件系統的開發過程中是樂趣無窮的,因爲這個角色很具有挑戰性,有時需要左右逢源八面玲瓏,有時又需要果斷堅定不留情面。在國內,較少軟件企業擁有獨立的架構師,通常一個軟件高手身兼數職,既是項目經理,又是軟件架構師,還是軟件開發者,有時還要客串一個測試人員,這對軟件的開發週期和產品質量是不利的,有時一個人的觀點立場是很片面的,而且繁重的工作、沉重的壓力會影響一個人的情緒,情緒會影響決策,決策影響結果,所以值得我們三思而後行。
  構架師自我培養過程
  構架師不是通過理論學習可以搞出來的,不過不學習相關知識那肯定是不行的。總結構架師自我培養過程大致如下,僅供參考。
  1、構架師胚胎(程序員)
  學習的知識是語言基礎、設計基礎、通信基礎等,應該在大學完成,內容包括java、c、c++、uml、RUP、XML、socket通信(通信協議)——學習搭建應用系統所必須的原材料。
  2、構架師萌芽(高級程序員)
  學習分佈式系統、組建等內容,可以在大學或第一年工作時間接觸,包括分佈式系統原理、ejb、corba、com/com+、webservice(研究生可以研究網絡計算機、高性能併發處理等內容)
  3、構架師幼苗(設計師)
  應該在掌握上述基礎之上,結合實際項目經驗,透徹領會應用設計模式,內容包括設計模式(c++版本、java版本)、ejb設計模式、J2EE構架、UDDI、軟件設計模式等。在此期間,最好能夠了解軟件工程在實際項目中的應用以及小組開發、團隊管理。
  4、軟件構架師的正是成型在於機遇、個人努力和天賦軟件構架師其實是一種職位,但一個程序員在充分掌握軟構架師所需的基本技能後,如何得到這樣的機會、如何利用所掌握的技能進行應用的合理構架、如何不斷的抽象和歸納自己的構架模式、如何深入行業成爲能夠勝任分析、構架爲一體的精英人才這可不是每個人都能夠遇上的餡餅……
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章