軟體架構的歷程

2021-08-23 14:54:10 字數 2080 閱讀 9438

軟體架構的歷程

電腦科學的發展歷程可以追溯到第一代電子管計算機(2023年~2023年)。2023年2月15日世界上第一台重達30頓的計算機eniac(electronic numerical integrator and computer)正式在費城公布於世,它標誌著現代電腦科學的誕生。

相比來說,計算機軟體架構的發展就更晚。從20世紀80年代晚期開始,整個計算機科學界為了應對大規模系統設計所帶來的複雜度,才逐漸開始了軟體架構的研究工作。因為先前的系統架構和設計是嚴重依賴相關人員各不相同的實踐經驗和觀察,並不能客觀地衡量和控制架構活動的質量。

歷經了十幾年的不懈努力,軟體架構的研究逐步走向了成熟。當今較為成熟的架構技術已經包含了很多方面的研究成果:標註語言的使用、大量的設計工具、問題分析技術、架構設計技術和手段、複雜系統設計和開發的指南等。同時當今的架構技術已經與其他相關領域的研究成果進行了很好的融合:軟體產品家族(software product family)的研究、領域驅動(domain driven)的設計技術、基於構件重用的技術等。這些成果的結晶,成為當今複雜系統設計強有力的**,確保系統設計的質量受到嚴格的控制。

在我們系統化地回顧整個這十幾年人類在軟體架構方面的偉大成就之前,我們要先介紹一種技術成熟度的評估模型。因為從講求科學性的工程的角度上來看,一定要首先客觀地回顧乙個技術的發展歷程,然後再科學化地衡量該技術的成熟度。這樣才能真正保證我們能夠全面掌握該技術的發展動態,為自己在該技術領域的研究努力進行定位。

業界一般能夠系統化地評估乙個技術成熟度的模型很少。2023年,由samuel redwine和william riddle在ieee-cs舉辦的「第八界世界軟體工程大會」上提出的redwine/riddle模型,堪稱是當今最為廣泛應用的經典評估模型。redwine/riddle模型的經典之處在於,它提出了「技術的目標」的重要概念。它是乙個以目標為驅動的技術評估模型,能夠很好地度量乙個技術是否按照精確界定的軌跡向總體目標靠攏。只有這樣,我們才能清晰地了解該技術的成熟度。

通過利用該模型,我們可以對一些重要的系統及軟體技術進行分析和評估,從而最終發現它們發展和演化的規律。samuel redwine和william riddle利用該模型進行的評估研究結果表明:乙個技術的成熟週期是15年至20年。也就是說,乙個新的技術從最初概念的形成和確立,到應用及大規模實踐,一般需要經歷15年到20年的發展歷程。samuel redwine和william riddle通過自己的研究,界定出如下6個典型的發展階段。

基礎研究階段:調研基本思想和基礎概念;分析和組織要研究的問題的結構;界定研究方向的主要框架。概念確立階段:不拘形式地溝通,形成統一的基本思想和概念;組織和確立研究團隊;密切配合解決具體的各個子問題;不斷地提煉和完善所研究問題的結構。

探索發展階段:探索新技術的應用領域;逐步澄清初步技術應用所帶來的底層問題和思想;歸納和總結技術應用所帶來的初步經驗並使新技術更加完善和通用。

內部改進拓展階段:將新技術的應用逐步拓展到相關領域;使新的技術面對解決實際問題的考驗;從而使新技術逐漸完善和穩定;同時開發培訓材料,通過培訓展示新技術研究結果的價值。

外部改進拓展階段:與內部改進和拓展相似。不同的是將新技術的應用拓展到更為廣泛的領域;讓更多工業或應用領域的相關人員參與技術的實踐應用。驗證該技術的價值和適用性;同時參考反饋資訊進一步充實該技術、修改細節問題使其成為完整的系統級解決方法。

普及應用階段:開發出具有產品級質量的產品;使技術具有嚴格的版本特徵;將新技術商業化,並為其進行市場開拓,從而擴大使用該技術的使用者範圍;當然,使新技術逐漸標準化也是乙個重要的步驟。

redwine/riddle模型帶來的研究統計資料表明,15年到20年的新技術週期是最常見的。其中有10年的時間主要集中在概念確立階段和探索發展階段(也許「基礎研究階段」持續更長時間,那是由於很難界定這個階段真正開始的時間)。研究表明,用在這兩個階段如此長時間的原因,是因為只有通過日積月累的驗證才能真正讓新技術的研究人員完全調集成適研究的策略和步驟。

如果應用redwine/riddle模型來分析軟體架構的發展歷程,我們就會發現:從時間這個維度上來講,軟體架構的發展和完善並不像redwine/riddle模型介紹的具有那麼良好的線性:六個不同階段演化的推進速度各不相同,從乙個階段的結束平滑地過渡到另外乙個階段的開始也不明顯。但是,從圖1-9中我們可以看出,redwine/riddle模型在描述軟體架構技術的演化過程中依然非常適用。

架構師成長歷程

架構師的巔峰似乎很耀眼,但其成長的道路卻異常曲折,但是我相信只要能做到腳踏實地 一步乙個腳印 慢慢的積累,一切總是會順理成章!我個人覺得,要成為一名出色的架構師,簡言之需要具備以下的必要條件與過程 1 熱情主動的學習 當然不是說我們可以毫無目的的,首先需要知道架構師需要關注的哪些方面,如果你還從pr...

軟體架構的理解

軟體設計師中有一些技術水平較高 經驗較為豐富的人,他們需要承擔軟體系統的架構設計,也就是需要設計系統的元件如何劃分 元件之間如何發生相互作用,以及系統中邏輯的 物理的 系統的重要決定的作出。通常在乙個開發小組中,最有經驗的程式設計師會負責一些架構方面的工作。在乙個部門中,最有經驗的專案經理會負責一些...

軟體架構的爭論

辦公室裡,關於什麼是軟體架構,爭論正酣。程式設計師說 軟體架構就是要決定需要編寫哪些類 使用哪些現成框架。程式經理笑了 程式經理說 軟體架構就是模組的劃分和介面的定義。系統分析員笑了 系統分析員說 軟體架構就是為業務領域物件的關係建模。配置管理員笑了 配置管理員說 軟體架構就是開發出來的以及編譯過後...