淺談軟件架構師工做流程

  在本學期的學習過程中,咱們主要是學習軟件體系架構。在學期的第一堂課中,老師並無爲咱們講解太多的知識內容,而是讓咱們觀看了「夢想改造家」這個節目。而觀看節目的目的就是讓咱們以此爲出發點,簡單瞭解軟件架構師的工做流程。編程

  對於這學期咱們將要開始軟件體系架構的學習,再弄清楚了什麼是軟件體系架構以後,咱們要知道如何進行軟件體系架構,也就是軟件架構師的工做流程。根據從網上找到的資料,大體瞭解了軟件架構師的進行軟件架構的要求與步驟。架構

  第一,軟件架構是用來溝通的,軟件架構必須知足軟件項目全部步衆表明都有本身立場與視角的模型、文檔說明,且這些模型文檔說明僅清晰包含本身立場與視角關注與有關的事物,不能有任何遺漏,也最好不要有多餘。框架

  第二,軟件架構的每一步都是決策過程,並且關鍵需求決定架構,軟件架構必須充分清楚地表達出這些決策與決策理由。衆多的需求中爲何這些需求是關鍵需求?爲知足這些關鍵需求,採用了什麼樣的關鍵機制、核心技術與第三方框架?什麼選擇這些關鍵機制、核心技術與第三方框架而不選用其它的?爲何說它們是可行的?編程語言

  第三,軟件架構必須爲之後的開發提供足夠的指導與限制,所以軟件架構必須肯定系統各元素間的關係、職責、交互接口與協做機制。僅僅劃出幾個層與層中包含的元素而不約束它們間的關係、職責、交互接口與協做機制,就如同一個公司,它的組織結構圖就掛在牆上——再清晰不過了,但若是接口不清、機制不明,來了任務、出了事情不清楚找誰、如何彙報、怎樣處理。函數

  第四,軟件架構必須突出強調通訊機制、持久化機制和消息機制等公用模塊的深刻設計。通訊機制、持久化機制和消息機制等公用模塊較多的涉及軟件的不一樣部分之間的交互,對系統的功能實現、非功能知足等成功因素起着舉足輕重的做用。工具

  第五,因爲軟件項目的不一樣、開發組織結構的不一樣、開發團隊狀況的不一樣,軟件架構的設計粒度是不必定的。好比,航天航空領域中的軟件系統對系統的可靠性等質量屬性要求很是高甚至能夠認爲是荷刻,這種狀況下對架構的設計詳細程度的要求也會比較高;象IBM這樣的大的團隊中又有小的團隊共同開發,架構的設計粒度到子系統級就足夠了,各個小團隊精通的技術各不相同,可讓其對子系統採用敏捷開發,對縮短工期、人盡其材有好處;有相似項目經驗或項目團隊全部成員總體技術水平較高的團隊架構粒度可適當粗獷,而分佈團隊或涉及外包的狀況則更強調架構的明確性。總之,架構設計對軟件的不一樣部分的設計程度不該是整齊劃一的,特別是具體的業務功能模塊在架構設計中每每設計程度不深。學習

  接下來大體瞭解一下如何進行架構拿到軟件需求後,通過一翻囫圇吞棗式的通讀(並且是一邊看一邊腦子裏飛速的轉達:這塊按個人經驗應該如何實現),而後打開建模工具,根據需求上提到的幾塊功能模塊要求,畫上幾個用例與時序圖;再從需求中摘下幾個事物創建類,填上類的屬性,又從時序圖中分出幾個函數方法,最後根據經驗,依MVC分幾層,套用已有的示例將最近新學的幾個流行的框架添加上去。這就基本上完成了架構,而後再根據要求撰寫文檔。開發工具

  關於如何爲咱們未來可以成爲一名軟件架構師作準備,我根據網上的資料總結了如下幾點。架構設計

  (1)    作好平時的學習與積累,增長相關書籍的閱讀。設計

  (2)    課餘時間學習一些課外的編程語言。

  (3)    選擇一個領域進行深刻得學習。

  (4)    將學習的經驗知識發表到博客園,積累起來。

  (5)    平時多瀏覽一些優秀軟件工做人員的博客,學習一些經驗。

  (6)    多瞭解一些開發工具。

  (7)    有時間能夠關注一下別的領域的新鮮事物,增強本身的涉獵。

  綜上所述,做爲一個軟件架構師所應具備的基本職業素質則能夠大體包括:較強的溝通能力和自我表達能力、有必定的魄力和感染力、有廣闊的知識領域、有過硬的技術能力和豐富的編程經驗、多方位思考分析能力、需求整理分析能力、系統分解能力、領導決策技術選項、系統設計能力、對團隊的培訓與指導能力。能在千絲萬縷的問題中迅速找到核心問題,而且可以快速對於核心問題提出初步的解決方案或計劃,把握全局進行思考。可見要想成爲一名合格的軟件架構師,就必須對各個方面進行細緻的學習培養,只有經過自身的不斷努力纔能有所成就和收穫。

相關文章
相關標籤/搜索