系統架構師
企業架構師或者系統設計師
徠系統架構師,又稱企業架構師或者系統設計師,是一個最終確認和評估系統需求、給出開發規範、搭建系統實現的核心構架,並澄清技術細節、掃清主要難點的技術人員。主要著眼於系統的“技術實現”。因此他/她應該是特定的開發平台、語言、工具的大師,對常見應用場景能馬上給出最恰當的解決方案,同時要對所屬的開發團隊有足夠的了解,能夠評估自己的團隊實現特定的功能需求需要的代價。系統架構師負責設計系統整體架構,從需求到設計的每個細節都要考慮到,把握整個項目,使設計的項目盡量效率高、開發容易、維護方便、升級簡單等。
系統架構
1、戰略規劃能力。
2、業務流程建模能力。
3、信息數據結構能力。
4、技術架構選擇和實現能力。
5、應用系統架構的解決和實現能力。
6、基礎IT知識及基礎設施、資源調配能力。
7、信息安全技術支持與管理保障能力。
8、IT審計、治理與基本需求分析、獲取能力。
9、面向軟體系統可靠性與系統生命周期的質量保障服務能力。
作為系統架構師,必須成為所在開發團隊的技術路線指導者;具有很強的系統思維的能力;需要從大量互相衝突的系統方法和工具中區分出哪些是有效的,哪些是無效的。架構師應當是一個成熟的、豐富的、有經驗的、有良好教育的、學習快捷、善溝通和決策能力強的人。豐富是指他必須具有業務領域方面的工作知識,知識來源於經驗或者教育。他必須廣泛了解各種技術並精通一種特定技術,至少了解計算機通用技術以便確定那種技術最優,或組織團隊開展技術評估。優秀的架構師能考慮並評估所有可用來解決問題的總體技術方案。需要良好的書面和口頭溝通技巧,一般通過可視化模型和小組討論來溝通指導團隊確保開發人員按照架構建造系統。
系統構架,是對已確定的需求的技術實現構架、作好規劃,運用成套、完整的工具,在規劃的步驟下去完成任務。
一、系統架構相關的知識和經驗。
二、很強的自學能力、分析能力、解決問題的能力。
三、寫作、溝通表達、培訓。
系統架構
這樣一來,對高水平的架構師的需求激增。對負責架構的管理人員的需求不斷增大,其增長速度比對CIO的需求還要快,這是因為,架構師會給一個組織帶來大量專門技術。公司需要一些在架構方面有真才實學,而且學得深且廣的人才。
系統架構師該怎麼來實現其“架構”企業的職能呢?尤其在設計企業IT策略時,該怎樣體現架構師的價值?
這裡以實例說明:
系統架構
而且這一角色對公司的影響確實非常大。當TobyReshaw在2001年進入摩托羅拉並擔任其策略暨架構副總裁時,他儼然一位購房者對一套搖搖欲墜的公寓進行估價一樣。他並不是僅僅只作些表面上的修改,而是擬定了一個重建摩托羅拉整個基礎結構的計劃,這個計劃可以徹底修整公司的基礎建設,就像一個建築師設計一幢房子一樣,Redshaw擬出了一張技術構架藍圖,一座技術性的建築,以便使被他稱作“如義大利麵條般錯亂的應用程序,機器和管線”那些東西變得井然有序。他說,只要選擇了正確的架構策略並用對了人,摩托就可以用比以前更快的速度生產出大量應用軟體,而且可以減少維持重疊系統的費用。Redshaw說:“如果你連建築架構都搞不好,就算你的石匠技術再高明,又有什麼用?架構師是IT策略中的中樞。”像Redshaw這樣的系統架構師們在企業內部的影響力非常大。很久以來,雖然他們一直在信息技術部門擔任重要職務,但是他們經常受委託提供全面概況分析,並提出一些關於如何遵照標準執行這些任務的建議,而這些對日常運作的影響極其有限。今天,隨著各公司都在尋找重建他們的IT系統,使其更能有效節省成本,更靈活的方法,架構師愈來愈被看作是至關重要的因素。
一個定義明確的架構的目標在於降低運行複雜的運算系統的費用。一個公司可以採用一種特定的資料庫配置,如微軟的資料庫,進而將系統標準化,而不需要讓公司的每個部門安裝它們自己所需要的資料庫伺服器。
Express的技術架構副總裁AndyMiller說:“如果你沒有一項強有力的架構策略,人人各行其是,最後以得到六種伺服器和軟體平台而告終,你的系統變成了大雜燴,而那將使你的費用激增。”把架構師獨立出來有很多好處,比如系統的整體把握,質量上的保障,技術上的先進性,架構的靈活性,高效性,還可有效地降低成本。試想,1個月薪1w的架構師+10個月薪5k的工程師,肯定比11個月薪6k的高級工程師效果要好。一般來說,級別越高的架構師,經驗更豐富,爭相聘請的人也多,他們也是與公司全部的IT策略密切相關的專業人員。
作為軟體開發的設計架構師,那麼必須擁有一定的編程技能,同時有高超的學習新的架構設計、程序設計技能。另外,我覺得作為軟體架構師,還必須了解一定的硬體、網路、伺服器的基本知識。要不然,你都不知道有些什麼材料可以用,你怎麼去根據實際情況去規劃你的軟體架構呢?忽視程序設計能力的持續跟新,是永遠不能夠成為一個成功的系統架構師。
一般來講,系統架構師應該擁有以下幾方面的能力:
1:具備8年以上軟體行業工作經驗;
2:具備4年以上C/S或B/S體系結構軟體產品開發及架構和設計經驗;
3:具備3年以上的代碼編寫工作經驗;
4:具備豐富的大中型開發項目的總體規劃、方案設計及技術隊伍管理經驗;
5:對相關的技術標準有深刻的認識,對軟體工程標準規範有良好的把握;
6:對.Net/JAVA技術及整個解決方案有深刻的理解及熟練的應用,並且精通WebService/J2EE架構和設計模式,並在此基礎上設計產品框架;
7:具有面向對象分析、設計、開發能力(OOA、OOD、OOP),精通UML和ROSE,熟練使用RationalRose、PowerDesigner等工具進行設計開發;
8:精通大型資料庫如Oracle、SqlServer等的開發;
9:對計算機系統、網路和安全、應用系統架構等有全面的認識,熟悉項目管理理論,並有實踐基礎;
10:在應用系統開發平台和項目管理上有深厚的基礎,有大中型應用系統開發和實施的成功案例;
11:良好的團隊意識和協作精神,有較強的內外溝通能力。
系統構架師與產品經理的關係及區別
產品經理通常是指負責產品設計的“專人”。一個優秀的理想的產品經理,應同時具備較高的商業素質和較強的技術背景。產品經理要有深厚的領域經驗,也就是說,對該軟體系統要應用到的業務領域非常之熟悉。比如,開發房地產銷售軟體的產品經理,應該對房地產公司的標準銷售流程了如指掌,甚至比大多數銷售人員還要清楚。如果開發的是通用產品,他/她還具備對市場、潛在客戶需求的深刻洞察力。那麼,系統架構師與產品經理有什麼不同呢?我們不應該把二者混為一談,這是不少論述和實踐常犯的錯誤。我看來,如果把開發軟體比作攝製電影,產品經理之於系統架構師,就正像編劇之於導演。產品經理雖然要有一定技術背景,但仍應屬於“商業人士(businesspeople)”,而系統架構師則肯定是一個技術專家。二者看待問題的立場、角度和出發點完全不同。
系統構架師與項目經理的關係及區別
軟體項目經理是指對項目控制/管理,關注項目本身的進度、質量,分配、調動、協調、管理好人、財、物等資源的負責人。對於軟體項目經理來講,包括項目計劃、進度跟蹤/監控、質量保證、配置/發布/版本/變更管理、人員績效評估等方面。優秀的項目經理需要的素質,並不僅在於會使用幾種軟體或是了解若干抽象的方法論原則,更重要的在於從大量項目實踐中獲得的寶貴經驗,以及交流、協調、激勵的能力,甚至還應具備某種個性魅力或領袖氣質(Charisma)。由此可見,項目經理和系統架構師在職責上有很大差異。混同這兩個角色,往往也會導致低效、無序的開發。特別是,從性格因素上講,單純的技術人員傾向於忽視“人”的因素,而這正是管理活動的一個主要方面。另外,就像戰爭中的空軍掩護(AirCover)一樣,專職的項目經理能夠應付開發過程中大量的偶發事件和雜務,對於一個規模稍大的項目,這些雜務本身就能佔用一個全職工作者的幾乎全部時間。在一個項目中,推動項目發展的是系統構架師,而不是項目經理。項目經理的職責只是配合系統構架師,提供各個方面的支持。主要職責是與內外部溝通和管理資源(包括人)。系統構架師提出系統的總體構架,給出開發指導。一個項目中,項目經理的角色什麼?如果他即使管理人員又是設計人員,則必須比別人強,能夠有讓別人服的東西。如果他只是項目管理人員,系統構架師有專門人員,就可以不用精通或者說了解it各個方面的知識,如果了解更好。另外,如果在一個項目沒有人在技術構架上和開發指導上負全部責任,而是每個人都負責一快的架構、分析、設計、代碼和實施等,最後肯定會失去管理。
系統構架師與系統分析員的關係及區別
系統分析員(System analyst)是指對系統開發中進行分析、設計和領導實施的人。一般意思上講,系統分析員的水平將影響系統開發的質量,甚至成敗。但在一個完善的系統開發隊伍中,還需要有業務專家,技術專家和其他輔助人員。所以,系統分析員只是其中的角色之一。但我國許多的IT公司,一般只有系統分析員而沒有技術專家。系統分析員固然是對特定系統進行分析、設計。所以他的任務、目標是明確的。他只是去執行任務,完成系統的最終設計。
系統架構師應該和系統分析員分開,但架構師必須具備系統分析員的所有能力,同時還應該具備設計員所沒有的很多能力。系統架構師是指導、檢督系統分析員的工作,要求系統分析員按什麼標準,什麼工具,什麼模式,什麼技術去設計系統的。同時,系統架構師應該對系統分析員所提出的問題,碰到的難題及時地提出解決的方法。並檢查、評審系統分析員的工作。
系統架構師的一般月薪範圍在20000-100000美元左右。
系統架構師是軟體項目的總設計師,是軟體企業的新產品、新技術體系的構建者,是目前軟體開發中急需的高層次技術人才。其是由系統開發工程師發展而來,可以向項目經理、技術經理等高層次的方向發展。
系統架構師的主要功能包括:
(1)系統架構師是軟體項目的總體設計師,是軟體組織新產品的開發與集成、新技術體系的構建者。
(2)系統架構師是在技術上對所有重要事情做出決定的人(系統架構師在整個軟體開發過程中都起著重要作用,並隨著開發進程的推進而其職責或關注點不斷地變化)。
(3)需求階段,軟體架構師負責理解和管理非功能性系統需求,比如軟體的可維護性、性能、復用性、可靠性、有效性和可測試性等。審查客戶和市場人員提出的需求,確認開發團隊提出的設計;組織開發團隊成員和開發過程的定義;協助需求分析師完成“用戶需求說明書”、“需求變更說明書”。
(4)設計階段,架構師負責對整個軟體架構、關鍵構件、介面的設計。協助系統分析師完成《系統概要設計說明書》。
(5)編碼階段,架構師則成為程序員的顧問,並且經常性地要舉行一些技術研討會、技術培訓班等。
(6)測試及實施階段,隨著軟體開始測試、集成和交付,集成和測試支持將成為軟體架構師的工作重點。
系統架構師的職責就是設計一個公司的基礎架構,並提供關於怎樣建立和維護系統的指導方針。具體來講,系統架構師的職責主要體現於以下幾方面:
1負責公司系統的架構設計、研發工作;
2承擔從業務向技術轉換的橋樑作用;
3協助項目經理制定項目計劃和控制項目進度;
4負責輔助並指導SA開展設計工作;
5負責組織技術研究和攻關工作;
6負責組織和管理公司內部的技術培訓工作;
7負責組織及帶領公司內部員工研究與項目相關的新技術。
8管理技術支撐團隊並給項目、產品開發實施團隊提供技術保障。
9理解系統的業務需求,制定系統的整體框架(包括:技術框架和業務框架)
10對系統框架相關技術和業務進行培訓,指導開發人員開發。並解決系統開發、運行中出現的各種問題。系統架構師的目的:
11對系統的重用、擴展、安全、性能、伸縮性、簡潔等做系統級的把握。
系統架構師的工作在於針對不同的情況篩選出最優的技術解決方案,而不是沉在具體實現細節上。此外系統架構師是不可培養的,好的系統架構師也許不是一個優秀的程序員,但是不能不懂技術之間的差別,技術的發展趨勢,採用該技術的當前成本和後繼成本,該技術與具體應用的偶合程度,自己可以調配的資源狀況,研發中可能會遇到的風險,如何迴避風險。這些才是架構師需要考慮的主要內容。
第一種是基礎架構的設計規劃,例如:OS,硬體,網路,各種應用伺服器等等。
第二種是軟體開發設計的架構師,他們負責規劃程序的運行模式,層次結構,調用關係,規劃具體的實現技術類型,甚至配合整個團隊做好軟體開發中的項目管理。
重要性
優秀的系統架構師是保證軟體系統強大生命力的核心人物。專業架構師能夠幫助公司全面研究現有架構和設計模式、評估系統設計的優缺點和可能存在的風險,通過一系列的專題指導和具體案例幫助公司掌握先進的、成熟的設計模式,簡化複雜的業務邏輯和需求,確定系統最適合法人方案。在必要的情況下,還可就特定領域或課題,為開發人員提供定製指導。通過上面的介紹,我們對系統構架師有了的較深刻的認識,我們明白了系統構架師的地位,作用,工作職責及任職條件,同時還區別出與其他角色的不同,那麼如何評估系統構架師的工作成績,
評估依據
如何識別一個合格的優秀的系統構架師是不難的。
具體來講,我們可以通過以下幾方面來評估系統構架師的工作成績:
1:系統構架師是否是某一技術領域的專家;
2:系統構架師能否指導分析員的設計工作,發現並指出設計存在的問題並提出解決方法,評審他們的工作;
3:系統構架師能否指導軟體工程師進行開發工作,發現並指出編碼存在的問題並提出解決方法,評審他們的工作;
4:系統構架師能否協助好項目經理制定項目計劃和控制項目進度;
5:系統構架師能否及時有效地解決設計、開發人員所提出的問題,解決技術上的難題;
6:系統構架師能否制訂並規範系統設計和開發文檔、工具、模型;能否讓其他人員容易理解;
7:系統構架師能否經常組織並帶領公司內部員工研究、學習與項目相關的新技術;
8:系統構架師能否組織和管理好公司內部的技術培訓工作,技術研究和公關工作;
徠9:系統構架師是否有良好的團隊意識和協作精神,有較強的內外溝通能力;
10:系統構架師是否能管理好技術支撐團隊並給項目、產品開發實施團隊提供技術保障;
11:系統構架師所設計的系統架構是否合理,技術是否先進,能否滿足客戶的要求;
12:系統構架是否有擴展性,安全性,能否經受壓力測試,網路流量在超用戶數下如何控制;
13:系統邊界如何處理,瓶頸問題如何解決等;
14:系統設計前期、中期、後期所要解決的問題,是否有階段性,里程碑的標識;
15:是否有分析、識別並儘可能地迴避風險,降低風險所引發問題成本的能力;
16:能否給公司降低開發成本,提高效率。