什麼是軟體架構呢?
去年畢業前期,大小的企業輪流來到學校進行宣講,對所謂的軟體開發的職業規劃做出了五花八門的說明,每個公司都有自己的特色,但總體來講,還是分為技術和管理兩條線,我不太喜歡做管理,所以只關注技術的發展路線,大部分都是這樣的:初級程式設計師——>中級程式設計師——>高階程式設計師——>架構師——>技術總監,我還算發展的比較順利的,現在混到高階程式設計師的邊緣了,本著「不想當將軍的士兵不是好士兵」的原則,我應該對架構師這個目前還是有些神秘的東東做乙個比較深入的了解,這不,正愁沒有具體的實踐來和抽象的理論交相輝映的時候,公司如及時雨般把乙個100+人月的專案分給我了,讓我擔當技術經理的角色,
。當你去了解乙個東東的時候,第一步要做的,就應該去知道這個東東的定義,對於軟體架構也是如此,經過網上查詢和書籍的幫助,我大概理清了乙個輪廓。
軟體行業是乙個熱衷於製造『名詞』的行業,如果退回15年,估計沒幾個人知道『軟體架構』是什麼,在上個世紀80年代,隨著軟體開發的規模不斷擴大,軟體開發成為乙個行業,初期,隨之而來的是越來越多的軟體專案的失敗,造成專案失敗的原因很多,但主要集中在開發過程,所以軟體工程應運而生,cmmi等流程標準也是一茬接著一茬的冒個不停。
在軟體工程初具規模的時候,軟體開發還是以資料結構+演算法的形式存在,進入20世紀最後10年,隨著物件導向技術、設計模式等在開發過程中的成功應用,軟體架構也走進了大家的視野。
軟體架構在定義上分為『組成派』和『決策派』兩大陣營,分別描述如下:
』組成派『認為軟體架構是將系統描述成計算元件及元件之間的互動。它有兩個非常明顯的特點:
『決策派』認為軟體架構包含了一系列的決策,主要包括:
軟體架構並不僅僅關注軟體本身的結構和行為,還注重其他特性:使用、功能性、效能、彈性、重用、可理解、經濟以及技術的限制和權衡等。
『決策派』有以下兩個顯著的特點:
按照『組成派』的觀點,軟體架構關注的是軟體整體的分割和互動,之所以分割,是因為不同的部分在邏輯或物理上相對獨立,通過『分而治之』的原則進行分割可以更好的理解整個系統,把握使用者的需求,但是雖然整個軟體可以分割成多個模組或子系統,但是模組和子系統之間的通訊和互動也是很重要的,我想按照這種觀點,架構師的主要任務是將軟體分割成不同的模組,並定義模組之間的介面。
按照『決策派』的觀點,軟體是乙個在很多限制下產生的產品,這些限制包括使用者和技術兩方面,使用者方面包括功能需求、效能需求、硬體需求等,技術方面包括技術選擇、可擴充套件性、可重用性、可維護性等。我想按照這中觀點,架構師的主要任務就是作出上述個各種限制作出選擇或決策。
至於『組成派』和『決策派』之間是否是互斥的,我不認為這樣,實際上,很多牛人都不認為是這樣(呵呵,我也沾些牛人的牛氣),這兩種觀點應該是站在不同的角度來看待軟體架構,架構師在分割模組時,也會不得不去作出各種決策。
參考文獻:
《軟體架構設計》 溫昱
什麼是軟體架構
所謂軟體 架構,指的是軟體系統的整體結構,包括軟體子元素,這些元素的外部屬性以及元素元素之間的關係。它不僅規定了系統有哪些主要軟體元素或模組,還定義了這些元素之間是如何互動的。它並不暴露每個元素的內部屬性 也叫區域性資訊 也就是說每個子模組的私有資訊是不劃歸到軟體架構的範疇的。需要注意的是,每個元素...
什麼是軟體架構?
什麼是軟體架構呢?去年畢業前期,大小的企業輪流來到學校進行宣講,對所謂的軟體開發的職業規劃做出了五花八門的說明,每個公司都有自己的特色,但總體來講,還是分為技術和管理兩條線,我不太喜歡做管理,所以只關注技術的發展路線,大部分都是這樣的 初級程式設計師 中級程式設計師 高階程式設計師 架構師 技術總監...
什麼是軟體測試架構師
軟體測試架構師是乙個新職位,但確實是乙個非常必要的職位。文章向我們詳細介紹了軟體測試架構師這一新興職業,希望對大家能夠有所幫助。ad wot2014 使用者標籤系統與使用者資料化運營培訓專場 軟體測試架構師是乙個新職位,但確實是乙個非常必要的職位,主要有幾點 1.根據v模型 廣義測試概念等,靜態 測...