軟件架構師的工做過程,簡單點來講,就是在一個軟件項目開發過程當中,將客戶的需求轉換爲規範的開發計劃及文本,並制定這個項目的整體架構,指導整個開發團隊完成這個計劃。主導系統全局分析設計和實施、負責軟件構架和關鍵技術決策。並負責與各方保持溝通,確保系統準確的完成。接下來,我把架構師的工做過程分爲六個步驟,並一一詳細的來講明。數據庫
首先,架構師要對需求進行整理分析。我認爲架構師要從項目最開始的階段就參與進來,架構師要先與客戶進行交流,分析客戶的需求和心裏的意思,並深刻挖掘需求,但同時不盲目接受客戶需求,架構師可以清楚把握現有的研發團隊能作什麼,不能作什麼,提早預知風險,下降項目失敗的機率。簡而言之就是要把握好需求。架構
第二步,架構師對系統進行分解。在收集完信息後,架構師須要將用戶需求轉化爲軟件需求,同時要補充非業務需求,如健壯性,擴展性等等。如何區分和化解用戶需求與軟件需求,如何有效把握用戶需求與軟件需求的區別,是系統分解的核心。這多是最考驗架構師的地方,也是隻有架構師參與的工做。框架
第三步,架構師爲系統選擇合適的技術,如:SSH框架。架構師要根據對軟件需求決定項目該使用何種架構,開發模型,及依賴選項。如使用多層架構仍是分佈式架構,是瀑布模型,仍是RUP,是使用MySQL數據庫仍是SQLServer數據庫,是否須要使用企業庫,是否須要使用ORM。可是,架構師對項目的技術選型要提供多種不一樣的方案,併爲每種不一樣方案提供詳細說明文檔,用來闡述每種方案的優點,劣勢,可行性等內容。這些文檔供項目經理或領導決策最終的技術選型。分佈式
第四步,架構師要對系統進行設計。依據軟件需求和技術選型,架構師須要和軟件工程師一塊兒將軟件需求落實到軟件詳細設計說明書中。架構師負責將軟件需求分解,重組織爲子項目,子系統,組件和模塊,以及它們之間的邏輯關係,從而造成不一樣的邏輯組成部分,最後還須要肯定各個子系統及組件間的接口。這些都是做爲進一步的團隊分工的依據。同系統分解同樣,系統設計是考驗架構師能力的重要職責。學習
第五步,架構師爲團隊每一個人分配職責。在軟件詳細設計說明書完成後,爲保證項目的順利進行,架構師須要對整個團隊進行技術培訓,讓團隊中的每一個人明白本身的職責範圍,該作什麼,不應作什麼。在項目實施過程當中,架構師須要參與到具體開發過程當中,給與每一個開發人員有效指導,以免團隊成員對系統設計的誤解而形成項目的延誤。我認爲這點對於新手比較多的團隊尤其重要。保證團隊每一個人都能各司其職,高效率的完成系統。設計
最後,架構師要不斷與各方保持溝通,這一點也是極其重要的。溝通是保證項目順利開展的有效保障。架構師要從多方面跟蹤項目進度,及時與項目經理或直屬領導彙報項目進展,與技術開發人員溝通遇到的問題,若是是迭代開發,還須要與用戶溝通需求變動。接口
以上是一個項目開發過程當中架構師的大概工做流程。軟件系統的架構師,主要負責規劃程序的運行模式,層次結構,調用關係,規劃具體的實現技術類型,甚至配合整個團隊作好軟件開發中的項目管理。我認爲架構師還須要更深刻地參與到項目中。最後,我還想說的是,架構師還須要不斷的學習,積極瞭解業界發展、相關新技術及趨勢,及時與新技術保持同步,而後有能力的須要促進技術進步和創新。項目管理