第一篇:中國優秀軟件架構師感悟錄
《程序員》百期文章回顧之9——中國優秀軟件架構師感悟錄
我認為,優秀的軟件架構師在軟件開發行業中占據著很重要的位置。國外優秀的軟件都是因為軟件架構師開發了一個擴展性很強的架構才使產品不斷完善和升級的。反觀中國,一大部分企業比較急功近利,認為界面夠漂亮就行了,完全不關心代碼的組織和架構。日本這幾年也在注重軟件架構上的分析和設計,所以有很多產品和項目外包讓中國來做利潤最少的部分。我們應該開始有意識地做這方面的事情,培養出一大批中國的優秀軟件架構師。只有這樣,中國的軟件才有希望!
來自業界的聲音
什么是架構師呢?架構師是軟件行業中一種新興職業或者是角色,他要主導系統全局的分析設計和實施、負責軟件構架和關鍵技術決策。其工作職責是在一個軟件項目開發過程中,將客戶的需求轉化為規范的開發計劃及文本,并制定這個項目的總體架構,指導整個開發團隊完成這個計劃。架構師的主要任務不是從事具體的軟件程序的編寫,而是從事更高層次的開發構架工作。他必須對開發技術非常了解,并且需要有良好的組織管理能力。可以這樣說,一個架構師工作的好壞決定了整個軟件開發項目的成敗。
在中國,有多少人算得上是“軟件架構師”呢?或許很多人抱著不屑一顧的看法,認為只有蓋茨才算得上是架構師,其他人都不過是朝自己的臉上貼金。不過,我們卻不同意這種說法,因為畢竟軟件架構師只是一種角色,就像只承認米開朗基羅是建筑師一樣,都是極端的。
中國軟件這么多年的發展中,已經有一批出色的程序員跳出了程序的限制,正在從系統架構和全局設計的角度創建大型軟件甚至軟件平臺,有些人雖然擔任著管理職位,但在技術上他們仍然無愧于軟件架構師的稱謂。而程序員通過了解這些架構師的經驗和體會,也能夠朝更高的方向發展。也希望通過他們的感悟,盡可能吸引更多的人走上軟件架構師的職位。
梁永昌趨勢科技研究部和軟件系統架構部副總裁
主持產品與項目:1990年開發出LANProtect For Novell Netware Server第一版。此產品為業界第一個為Netware Server設計的反病毒產品,領先其它品牌九個月。從1995年至今,擔任趨勢科技反病毒引擎(VSAPI)軟件架構師。這是因為在進行LANProect的產品設計時,遇到當時反病毒引擎和其它產品在源代碼上無法共享的問題,當時反病毒引擎越來越復雜,各個產品使用的反病毒引擎功能不盡相同,造成客服相當困擾。因此決定將反病毒引擎獨立出來成為一個共享的模塊,至今趨勢科技所有反病毒產品都使用此引擎模塊。
感悟:軟件架構師在工作的范圍和責任上與蓋房子的建筑師很類似,必須知道他要蓋的是什么房子,有多少預算,施工期有多長,現在要的是兩層樓,但以后會不會要加蓋上去,廁所要幾個,廚房在哪里,哪里要設門,哪兒要開窗,梁柱要多粗,要用什么材料?因為,蓋四合院和十層大樓是不一樣的。
同樣,軟件架構師必須知道他要設計的是什么軟件,將被什么樣的客戶在什么樣的環境下使用,可使用系統資源限制是多少,兼容性要求高不高,安全要求是什么等級,會不會有下一個版本,下一個版本又將增加什么功能,模塊和模塊之間的關系是什么,每一個不同的考慮都會影響設計,軟件架構師就是要在考慮過種種因素后決定軟件的架構和使用技術。
大家都知道,要在老四合院頂上加蓋十層樓,全部推倒重來可能是唯一的可行方案。同樣,軟件因架構不好造成的問題或限制是很難改善的,有時甚至必須重新設計,這將會是一項耗時費力的投資,與其到時再來一次,不如現在就把架構做好。就像各式各樣的建材一樣,現在的軟件市場上有太多現成的模塊可供軟件架構師選用,但這也造成一個問題:很多軟件架構師只知有哪些模塊可用,卻不知模塊內部做了什么工作。這種知其然不知其所以然的軟件架構師隨著Internet盛行而興起,這種軟件架構師現在到處可見,架過Web Server,寫過CGI/VBS,再連上個Database,簡歷上就自稱軟件架構師,多層式網絡架構(Multi-Tiers Web Serivce Architecture)談起來頭頭是道,討論起細節卻讓人搖頭。現成的模塊可以用,也應該用,但最重要的是要知道模塊的功能和限制是什么,為什么會有這樣的限制,為什么用這個模塊而不用另一個。
其實商業軟件架構師最大的挑戰還是在折中的拿捏上。人力總是不足,時間永遠不夠,面對現實狀況的壓力,當完美設計(每個人都如此自認)無法如愿被全盤采用時,討論(或爭吵)就不可避免,效能可不可以讓步,安全等級能不能降低些,哪些項目可以改變,哪些又該堅持到底,這些都是要做出的決定,而且更重要的是要能讓大家充分了解你做此堅持是出自何種考慮。
軟件架構師的工作伙伴大都也是技術人員,就像自古文人相輕一樣,技術人員彼此的尊敬只會建立在技術能力的優越性上,軟件架構師必須要有深厚的技術底子和寬廣的業界信息,再加上一點口才和親和的態度,這才容易獲得其它工程師的認可和尊敬,也才不會你畫你的十層樓,他蓋他的四合院。
廖恒毅佳軟公司董事長
主持產品與項目:曾負責中文之星2.0的開發,佳軟企業管理軟件的架構設計,拼音加加等一系列軟件的架構設計。
感悟:軟件設計是一項極具挑戰性的工作。盡管軟件設計人員為世界上無數的人提供了工作的便利,讓大家的工作越來越自動化,軟件設計者自己的工作卻遠沒有見到能夠自動化的可能性。無數的人為了找到一套軟件設計的理論苦苦追尋,到目前為止,很難看到有什么實質性的進展。當銀彈總是不出現的時候,也許大家都應該想想,其實銀彈也許根本就不存在。
大家都聽說過這個寓言故事。一個數學家跟國王下國際象棋,國王問他如果贏了,要什么樣的獎勵。數學家說,很簡單,你在第一個棋盤格放一粒米,第二個棋盤格放兩粒米,然后一直翻倍下去,把整個64個棋盤格放滿就好了。國王很痛快地答應了數學家的要求。但是,當國王真的給數學家獎勵的時候,才發現這是不能兌現的,因為沒有任何一個國家,即便是加上全世界的糧食也不夠。
講這個大家耳熟能詳的故事,其實是想談談我對軟件架構師的認識。真正的軟件架構師所面臨問題的復雜度,其實與這個故事很相像。大家都在憑直覺理解軟件的復雜度。而且都想得很淺,1,2,4,8…… 多簡單的問題,即便是想到第十級,也不過就1024。再往下想一些,也還是大家能夠理解的數字。而人們憑著直覺,也就頂多想到第20格。第20格的數字還沒有超出人們的理解范圍的。真正的難題在第40格以后,很少有人能夠理解第40格以后是什么了。而第60格的難度呢,根本就不是第40格能夠比擬的。如果我們大家都僅僅用直覺的加法來理解問題的話,最后,我們會進入不可解的范疇。人類真正聰明的地方就在于發明了對數,用對數的方法解決了對這個問題的理解。即便是第64格,也不難理解了,不過就是2的64次方。
當然,軟件復雜度的問題其實比這個問題更加難解,所以我們到現在為止,還沒有找到軟件中的這個對數算法。但是,基于目前軟件界的認知,我們多少有了一些解決方案:對象編程,組件模型,多層結構……,已經為軟件設計提供現實可行的方法。問題是,這些概念理解起來也非常不容易。大家都說著同樣的詞匯,卻有可能干著完全不同的事情,所以才會有誤解,才會有爭執。軟件架構師是一個靠無數經驗積累的結果。尤其是優秀的軟件架構師,跟所有別的能夠成為“師”的職業一樣,在對自己的行業有了基本的了解之后,在自己不斷成長的過程中,并沒有一定的套路的。靠的是領悟力,靠的是對這個現實世界哲學性的思考。當用哲學的眼光來觀察這個世界的時候,就離一個優秀的軟件架構師不遠了。
一個優秀的軟件架構師,如果他愿意學的話,同樣應該能夠做出很香的飯菜來,因為軟件架構師和廚師有相通的地方。大家以為如何?師者,通也。
何健金算盤CTO,首席架構設計師。
主持產品與項目:4年管理軟件架構設計經驗,曾經先后規劃和設計了金算盤多年的主流產品。1997年,自主設計和開發了金算盤電子表格,以當時最先進的VC開發出的產品的功能、界面、特性比當時的Excel更具有本地化特色,作為財務管理軟件的報表系統,在當年的全國財務軟件評測中報表獲得了第一。2002年,在多年的管理軟件架構開發的背景下,經過長期的探索和思考,形成了平臺的構想。并采用了先進J2EE技術,成功開發出了金算盤VP平臺。
感悟:架構師是客戶需求和開發者之間的橋梁。在軟件行業中,一般提到的架構師是技術架構師,而實際上產品架構包括業務架構和技術架構,只有技術架構和業務架構緊密結合才有可能真正創造出一個好的系統。
產品架構是現代應用開發領域最重要的課題。在這個課題里,沒有終結答案可尋,惟有恒久的問題存在。在紛繁的問題中,最重要和最“真”的問題是產品競爭力問題。除此之外,軟件架構的目的還包括滿足既有客戶需求和提高開發效率,并且要求產品架構能更好地支持商業流程,有利于企業業務集成。金算盤VPS系列產品就是以此為指導進行架構的產品。
我在做了多年的產品架構后,對這項工作也有一些自己的感觸:
首先,架構是技術。按照摩爾定律的推斷,軟件業的技術也同樣在日新月異地發生著變化,我們已經見證了開發工具越來越短的生命周期。從VB到ASP.Net,從C到Java,無論采用什么新的語言,都體現了不同時期的架構要求。架構已經跨越了簡單的過程模型,對象-時間模型,而今更多的是談論MDA,模型的快速建立,使得軟件能夠快速適應用戶變化成為了可能。而采用先進的技術,使得軟件能夠更加深度地滿足客戶需求。技術本身的發展是無止境的,如何使得軟件能夠適配新技術,成為一種更為重要的技術。采用各種模式的設計、邏輯分層、降低技術耦合使得技術的融合成為可能,也成為一項高難度的技術。
其次,架構是藝術。產品架構師需要捕捉技術和業務這個完整拼圖里的某一塊或某個脈絡作為設計的線索。架構師永遠不是先知,而是“存在的探索者”,產品架構的結果要在產品開發周期完畢時才能被印證。產品架構既要反映對技術的需求,使得架構滿足對技術的適配,對發布模式能夠提供多樣化支持,能夠滿足性能的要求,還能夠滿足對業務管理的需要,要適應目標應用的業務特性。這樣的架構,才是為應用服務的軟件架構,而不僅僅是一個簡單的可重用的技術工具。更重要的是它具有軟件的管理基因,正如平臺能夠得到大量客戶認可,其中最主要的就是它為客戶提供了技術平臺、管理工具、基礎業務,并使得它們有機地高效地結合在一起。如同流淌的藝術作品一樣,充滿了生機和互動。
同時,架構是質量。好的架構可以使得軟件產品成為一棵常青樹。在和國內外軟件產品對比分析的時候,經常有這樣的感悟,其實好多國外的軟件產品,采用的技術并不是最先進的,但是它具有非常優秀的質量,產品穩定可靠,同時還具有良好的技術適配能力,從而使得產品適應技術變化的能力非常強。這樣,投資人對軟件的投資價值能夠得到最充分的體現,這是國內職業經理人非常值得關注和學習的。
陳小群互信互通信息技術有限公司研發主管
主持產品與項目:全球眼數字視頻監控系統。系統組成包括客戶端、中心服務平臺,包括:接入服務器、前端視頻服務器、分發服務器、存儲服務器、全球眼應用服務器等。系統規模為17個開發人員用時8個月,源代碼行數大約15萬。
感悟:軟件架構對軟件系統來說就象建筑結構對建筑物、人骨架對人一樣,是其它成分的基礎,是滿足功能和性能需求的關鍵,因此,軟件架構師對軟件研發項目的成敗具有決定性的作用。
軟件架構師并不像他的名字所提示的那樣僅僅負責架構的設計,通常他的工作還包括,作為技術專家負責協助開發部門、技術支持部門、產品規劃部門等各方解決技術問題。因此,他的管理和溝通能力是同樣重要的。其它主要的知識和技能還包括分析和解決問題的能力、將需求轉化為設計的能力、對系統未來發展的預見能力等。
一個優秀的程序員會是一個優秀的軟件架構師嗎?不一定。對于一個復雜的軟件系統來說,架構設計通常都不是一個人就可以完成的任務,需要一組具有不同知識的工程師協作完成,在這個過程中,架構師要做大量的解釋、說服、協調、總結、歸納、妥協等工作。一個沒有擔任過負責人的程序員缺乏這方面的經驗。
同時,國內一種普遍的現象是,大量缺乏編程經驗的博士、碩士、項目經理負責軟件架構設計,并聲稱不需要學習編程也能搞好軟件架構設計。計算機科學是一門實驗的、技能性的學科,許多概念必須在編程實踐中體會,技能更是必須要操練才能提高。很難想象一個不懂編程的人會理解設計模式,而不懂設計模式的人會是一個優秀的軟件架構師!一個看了很多棋譜但從沒有實戰過的人聲稱自己是布局高手,你會信嗎?
全球眼數字視頻監控系統是一個大型分布式系統,它的開發涉及到分布式系統、網絡編程、網絡協議、視頻、音頻、控制、系統管理、數據庫、內容管理、Web編程等許多方面的知識。作為軟件架構師,在技術方面感受最深刻的是對化繁為簡,以及分析和解決問題能力的要求。化繁為簡就是將一個復雜的解決方案分解為一系列簡單的小方案,不僅可以提高開發效率,而且還可以提高系統的穩定性。對于不斷出現的技術問題,架構師應該能夠迅速判斷其難度、重要程度,自己解決不了的話,可以有效利用其它資源解決。
在非技術方面,溝通能力特別重要,你要將你的設計思想傳達給開發團隊,這件事情已經很不容易了,更困難的是,你還要傳達給技術支持人員,甚至一些非技術人員。有的時候,你還必須妥協,采用一些其他成員支持的、也許不是最好的解決方案,以保持團隊的士氣。
總之,管理、溝通、經驗、分析問題和解決問題的能力是一個軟件架構師必備的素質。對于一些所有工程師都應該具有的素質,比如,工作熱情、責任心、迎接挑戰的勇氣等,就不用多說了。
許式偉金山軟件WPS產品架構師
參與產品與項目:曾參與WPS Office之電子表格項目和WPS Office 2002項目。從2002年至今,參與WPS V6項目。成立框架項目,負責KFC(金山基礎代碼庫)、數據層、IO體系(XML標準等)以及Shell(用戶界面)等公共組件的研發。
感悟:今年是金山軟件創建十六周年,十六年來金山的每一款成功軟件都凝聚了歷代軟件架構師的心血。每一個金山人都會對自己職業有著深刻認識。
從性格角度來講,軟件構架師需要心思細膩而嚴謹;從職業特征來看,軟件構架師要充分理解和尊重軟件產品的需求。由需求引導設計而不是相反。因此,需要特別強調產品需求的重要性。記得GOF有這樣一句話:“設計應該支持變化--獲得最大限度復用的關鍵在于對新需求和已有需求發生變化時的預見性,要求你的系統設計要能夠相應地改進”。每個程序員都希望能夠寫出最好的程序,并使自己的程序更能適應變化。但事實表明,程序能力尤其是框架設計能力并不是天生的,而是取決于程序構架師對需求的理解程度。如果在不了解系統需求的前提下,就開始進行設計,那么即使是天才,也不能設計出完美的框架。
從另外一方面講,軟件構架師的設計只能應付可預測的變化,而構架師本身的技術積累和對需求的理解程度,往往會決定所設計的框架對需求變化的應變能力。大多數的設計人員都趨向于追求完美,大多對“開閉法則”(OCP:Open Close Principle,注:Software Entities should be open for extension,yet close for modificaiton.:程序應該可擴展但又不可修改)非常認同。而這是一個理想狀態,但又不可太過,一味地讓系統應付位置的變化,會讓自己套上一個無形的枷鎖,更為正確的做法是:讓自己知道的盡可能多,當設計新版本WPS Office V6的整體框架時,通常會參考Microsoft Office和舊版本的WPS Offfice,有時甚至會看PDF對同一功能的支持情況,對同類產品的研究和比較,有助于很好地設計新產品的程序框架。
此外,作為軟件構架師,一定要善于聽取和接納不同的意見,能夠包容新的思想,愿意了解最新的技術和想法。優秀的軟件工程師,他應該具有創新的理念和兼容并包的胸懷,比如:C#、AOP等。盡管我最喜歡C++的自由,但并不排斥去了解Java、C#等語言對其的改進,很多新的事物,會讓我獲得共鳴與靈感。
正如上面所講,軟件工程師需要更強的技術積累和更縝密的思維,以及對需求的深刻理解、兼容并包的創新意識和胸懷,軟件構架師的職責顧名思義,從事的主要工作職責就是設計軟件產品的程序構架,也就是要,對他最終設計的結果--軟件產品的程序框架負責。可操作性和系統的應變能力是軟件構架師的主要職責和工作重點。
我雖不是計算機專業,卻是一位計算機狂熱愛好者,對C語言有著深刻的領悟,被同學們戲稱“C狂”,曾獨立開發、與同學合作開發軟件。我對于感興趣的東西,總是去探索它內在的實質性內容。從小就酷愛數學的我,在推理的嚴謹上對自己要求非常高。我相信一個觀念:嚴謹絕對不是創造的對立面,而是創造性思維的必備條件。
王棟 盛世龍吟數字科技
主持產品與項目:主持產品與項目:負責國家疾病預防控制中心的“非典型肺炎個案調查報告管理系統”、“國家疾病報告管理信息系統”、“SARS早期預警監測試點項目”。國家質量產品認證中心的“認證人員管理系統”等。其中采用Apex Portal Server(24人/月)兼容于JSR-168的portal實現,采用一些成熟的開放框架,使用輕量級設計開發理念,加速開發速度縮短開發周期。
王棟 盛世龍吟數字科技
感悟:軟件架構師是團隊中的一員,和其他項目成員沒有什么區別,只不過承擔的職責要大些,因為畢竟架構設計師所作的工作比較重要。架構設計師的具體工作是為系統設計架構,做技術的決策。而國內對于各種角色分工不明確,通常架構師都有項目管理的職責。
一個成功的架構設計師一定是不僅精通設計工作而且精通實現工作的。缺乏了設計的實踐,就缺少了對系統整體的把握;缺乏了實現的實踐,則缺少了對系統中某些重要技術點的全面了解。在和團隊成員的交流當中,特別是講述自己的設計思想時,設計圖固然重要,但設計圖只能提供一個概念模型,真正的設計還是需要用源代碼體現。為了更好的設計和實現還要掌握各種工具和類庫的使用,因為架構設計師有時還是技術咨詢顧問。
在系統設計和技術決策時,最難做到的就是平衡和取舍。在規定的時間內,團隊內部人員的技術水平和狀態、技術的成熟穩定度、技術實現的難易程度等因素都會影響系統架構的最終實現。比如去年四月底—正是SARS在北京鬧得最兇的時候,我們接到了國家疾病預防控制中心的《非典型肺炎個案調查報告管理系統》的開發任務,由于國家疾病控制中心沒有一套基于互聯網的疾病申報系統,給這種突發性的傳染性疾病申報工作帶來一些困難。全部基于傳真和電話的申報信息必須經過人工處理才能形成報告上報,而面對神秘的SARS,申報的內容在不斷的調整,上報的流程也在不斷地更改,如果我們仍然按照通常的應用程序開發方法,可能很快就能完成這樣簡單的數據提交工作,但是如果任何地方稍有改變,程序開發人員必須在現場完成程序更改。由于當時的特殊情況,我們的開發團隊也不可能保持特別大的規模,而時間要求又極其苛刻——一周之內系統要測試上線。經過權衡,認為必須滿足可實時動態定制申報內容以及定制的查詢統計,我們承擔著巨大的壓力,最后決定采用簡化的模型實現系統,用項目成員最熟悉的技術和概念,完成保證系統運行的最小功能集合。
對于一個系統或產品,還需要有不斷改善它的耐心,有時還需要推翻重新實現的勇氣。上邊提到的項目第一階段,在瘋狂的加班加點中基本完成了。不過,由于時間倉促系統還是有改進和提高的余地。在接下來的幾個月時間內,我們做的就是不斷對這個系統細化,深化,修改,調整。這時候,其他相關項目也要啟動了,啟用我們的核心引擎后,經過很短時間的定制,都分別上線運行了,充分體現了原有模型的設計重用性和系統的可擴充性。但精益求精,針對新的需求,我對原有的一些設計缺陷有了新的認識,界面不夠靈活、流程不能定義、結構稍顯混亂,等等。
隨著又一個項目,所有上次積累下來想修改的東西都有了機會重新實現,這是多么美好的感覺。國家質量認證中心的業務系統,有更多表單要填寫,有更多的復雜流程要實現,有更多的組織機構和角色要定義,需要更靈活的表現形式和配置功能。以前的系統引擎就不能滿足了,就決定使用更新的結構、更新的工具甚至是更新的過程來實現。這回我們做到了每一個工作流可以用戶自定義,每一個工作流節點中的表單用戶可以自定義,每一個查詢都可以自定義。隨著時間推移,這套系統也在不斷演進中。作為軟件架構師,學習的能力和態度、敏銳的觀察能力是非常重要的。必須通過各種途徑學習和觀察。對于目前國內的應用狀況和互聯網應用的不斷深入,在不斷的學習和觀察中我覺得不管在哪些方面都需要整合,不管是企業內部的各種信息孤島還是互聯網上的各種應用。如何去整合資源,為最終用戶服務,這個問題讓我自然想到了Portal,這將是我們公司下一個重要發展方向。面對Portal世界中紛繁的技術,下一波的學習和實踐就要啟動了。
一個軟件架構師,要勤于學習、觀察、思考,決不放棄對最底層實現技術的掌握同時需要把握好系統框架的平衡,學會正確的取舍,并且要有耐心和勇氣面對自己的設計,不斷進行改進甚至重新實現。
周恒 浪潮軟件技術研究中心
主持產品與項目:開發了Web應用框架,配套開發包,樹立了企業應用框架在浪潮軟件的地位。這一產品也從以Web應用框架1.0為基礎,發展到今天的包含Web應用框架、工作流平臺、商業服務平臺、業務規則引擎等的企業應用框架3.0。這一企業應用框架也已在除煙草外的通訊、衛生、政務、稅務等行業全面開花。
感悟:回顧工作兩年來的情況,分析和目標的差距,朝著目標一步步前進,談談我的反思和體會:
補充基礎理論知識。IT的技術發展是非常快的,新技術層出不窮,但是各種技術之間很多原理是一樣的,是相通的,重要的是要把原理搞通。
擴寬知識面。最初,我的知識面還是太窄,當時對于網絡、存儲、大小型機、大型數據庫幾乎都沒有深入的接觸和使用。對于構建一個全新大型的基于J2EE的企業應用系統來說,架構師需要熟悉數據庫技術、操作系統技術、存儲、網絡技術,J2EE體系架構,MVC框架,Java程序語言,還需要熟悉一到兩個應用服務器、一到兩門大型數據庫。
架構師需要具備扎實全面的技術,掌握廣泛的開發技能,超離于程序語言之上,熟悉多種系統架構,有豐富的開發經驗,能選擇并設計合理的方案。
要深入。深入到本質里面去,絕對不能浮躁。不光要了解表象,還必須了解隱藏在表象里面的本質。架構師不只是使用者,更多的是建造者,創新者,每一個決定都可能會影響幾十個開發人員和成百上千的使用者,因此必須深入熟悉技術的本質,了解原理,才能靈活運用,不可能臨時抱佛腳,現學現賣。
浮躁只會讓人一事無成。曾見過一些人,寫了兩月程序,就嫌寫程序低級要去做設計,剛寫了兩月設計,就嫌設計低級,就要去搞需求分析,剛搞了兩天分析,又覺得搞技術沒前(錢)途,就要去搞管理或者搞市場。也見過一些人,搞了三月嫌工資低,跳一下漲點工資,再搞三月又跳跳漲點工資。跳來跳去,開始還能往“上”跳,到后面只能被趕著往下跳了。
加強交流和溝通。曾經悶頭苦學,希望能學得很牛,把什么都研究透了,然后可以教徒弟,可以帶出一批人來。在這個過程中總是碰到一些檻,雖不至于灰心喪氣,但也挺郁悶。頭告訴說不要指望一個人都干完了,再厲害也不可能把啥都搞明白,一方面要形成一個學習的氣氛,大家都很厲害,水漲才能船高,另外一方面要加強和業界尖端人士的交流,共同提高。
學習能力對于一個搞IT的人來說非常重要,如果沒有很強的學習能力,很難快速適應技術變化的能力。
有一年只做了一個物流管理系統一個單,基于J2EE的單子,一切都是從頭做,單子額不大內容卻不少。雖然最后順利完成,卻因為廣泛使用了應用服務器提供商提供的一個不成熟的擴展包而吃盡了苦頭。雖說架構師不糾纏于細節,但是忽略了細節卻可能造成嚴重的后果。對于7X24小時系統,一個細節不處理好,就會造成停機和嚴重的損失。細節就是追求完美,架構師既要有好的大局觀,也不能忽略細節,要求我們不僅對原理搞明白,很多時候必須對具體技術實現有透徹的了解。
架構師要對系統的功能負責,對系統的成熟度負責,對系統的成本負責,架構自軟件始而始,自軟件終而終。架構師需要參與擬定項目的各種標準和規范,要指導大家,要和低層設計人員探討一些難點的設計問題,他不僅僅是一個技術高手,還要充當技術的領導者,因此,學習一些軟件工程的知識和提高領導力是絕對有必要的。
在項目組中,架構師是一個角色,不一定就是一個人,可能是一個小組。
架構師雖然不要忽略細節,也要警惕過分追求完美,架構師學會放棄,在系統的功能、成熟度、成本中取得平衡,從客戶的角度和開發者的角度來考慮問題。特別是要警惕技術情結,不能一味追求最新的不成熟的技術,對于難以完成的功能,也需要暫時舍棄。不可能一下造成最完美的系統,袁德俊 軟件工程師 自由職業
主持產品與項目:1997年金山游俠開發成功,一直從事系統編程多年。目前,自主開發的C語言規范的腳本語言“NGNc”具有高聚合低偶合的系統設計。NGNc從體系結構和應用層級都與JAVA如出一轍,絕非模仿,而是從需求中來。
感悟:自從電腦出現在我的視野,能延伸我的頭腦是我對計算機的最直接感受。而從事軟件編程更給我無窮的力量和沖動,探索、挑戰、駕御是我從一個個不眠之夜的開發中獲得的最大樂趣。起初只是簡單的重復著編譯Sample,添加個別功能,以為語言就是計算機的全部。隨著系統編程的深入,漸漸我的思維習慣轉變了,操作系統的代碼跟蹤,給了我更大的空間去探索,就象進入了一個幽暗神秘的海洋,漫漫地與現在的各種概念越來越遠,有時候同朋友們溝通都缺乏了共同的關注焦點。
開發NGNc完全是個偶然的機會。一直以來,用VC的IDE環境開發項目,并組織和管理項目需要的文件,盡管VC的功能很強大,但在項目后期,每每都是因為修改個別的數據,而重新編譯整個項目,很麻煩。起初,通過設計系統的數據文件格式,將數據文件搬移出項目,將引擎和數據分離,只在修改數據的時候,用數據編輯器或簡單文本進行描述。編制數據編輯器雖然可以避免規范數據輸入等優點,但額外工作產生了:文本描述成為我們主要的目標。
最初文本描述方法簡單,比如Window的Ini文件管理模式。隨著文本文件格式的逐步復雜,文本文件到特定數據格式的轉換工具越來越想向C語言轉變。這就是NGNc的第一個產生的契機。我們叫它“DataOut”,顧名思義就是將數據拿出來的意思。項目開發的越多,項目后期對控制邏輯和規則描述的需求也逐步呈現出來。僅僅DataOut已經不能滿足我們的需要,起初同文本數據描述一樣,只是簡單的規則羅列,但隨著功能的發展,支持簡單的類C語言的規則書寫方式被支持了。
發展到現在NGNc已經完全成為了真正的C語言,并擁有自己的虛擬機,IDE調試環境,NGNbios的UI支持庫,它還將會擁有很多很多。隨著我對NGNc的駕御,我的視野寬廣了,可以想象在它的支持下的應用會更加開枝數葉。
另外說明一下:NGN是“Engine”的音,NGNc是我對它的期望,不只驅動應用,更可以驅動我的夢想,就如同每個程序員在深夜里完成一段代碼后的成就感一樣。我對“軟件架構師”的理解是,它只是眾多軟件行業內的一個分工,無論它的高度如何,需要多么資深的背景,多少年頭的開發經驗,他只是一個崗位,就如同其他崗位一樣,他需要思考他這個層面的問題。任何一個崗位都可以說是一個架構師,如同:人體、器官、組織、細胞,都是個相對封閉的系統,都異常的精密,只是它們都有它們各自的責任范圍。
軟件架構師如果是軟件工程師的能力體現,他應該具備從宏觀到微觀的全部知識,并在他的頭腦中運轉著整個行業甚至世界的模型,他可以通過自己頭腦的精密模擬,實現對任何問題的把握,無論是宏觀還是微觀。我們之所以需要這樣的人,就是因為我們的電腦無法完成如此復雜的計算,即使用巨大的知識庫陣列也無法達到大腦的快速處理速度,有時候,架構師的一個感覺就可以左右整個行業甚至未來。具備這樣高度的人是值得人們崇拜的!
后 記
軟件架構師可細分為應用架構師和技術架構師,應用架構是軟件本身作為一個應用而存在的結構,技術架構是使應用能夠運轉的支撐架構。就像軟件是為社會為生活服務一樣,技術架構是服務于應用架構的。
有不少新員工,因為基本是從大學畢業的人,學習接收新東西的能力都挺快,但是成就迥然有別。有的人,也具有強烈的好奇心,但為了學習而學習,敝帚自珍,不愿意應用到開發和工作中去,這種人,學到一定程度就很難再提高,學習能力只能算是不及格。
而且,還有一些立志做J2EE架構師的程序員,不但不愿意深入學習Java虛擬機規范,對于API也只是一知半解。問其理由,答曰,犯不著搞明白,到用的時候查查API就行了。天哪,到用的時候查查API就行了,如果你是一個摩天大樓的建筑師,到蓋高樓的時候現查查各種建材的參數規格指標就能蓋起大樓來了么?就能把水、電、梁、管、消防等搭配得合情合理么?想想看,我們做的架構可能也會影響大批設計師和程序員,影響大批使用的用戶,豈是現查API就能行的?
因此,我們可以說:架構是一門科學,更是一門藝術,觸類旁通,除了掌握深厚的技術知識以外,要盡可能多地掌握領域知識。成為架構師,沒有速成的辦法,唯有實踐+努力。
第二篇:軟件架構師崗位職責
架構師的職責就是設計一個公司系統的基礎架構,并提供關于怎樣建立和維護系統的指導方針。具體來講,架構師的職責主要體現在以下幾方面:
1、負責公司系統的架構設計、研發工作。
2、承擔從業務向技術轉換的橋梁作用。
3、協助項目經理制定項目計劃和控制項目進度。
4、負責輔助并指導系統分析開展設計工作。
5、負責組織技術研究和攻關工作。
6、負責組織和管理公司內部的技術培訓工作。
7、負責組織及帶領公司內部員工研究與項目相關的新技術。
8、管理技術支撐團隊并給項目、產品開發實施團隊提供技術保障。
9、理解系統的業務需求,制定系統的整體框架(包括、技術框架和業務框架)。
10、對系統框架相關技術和業務進行培訓,指導開發人員開發。并解決系統開發、運行中出現的各種問題。
第三篇:軟件系統架構師個人簡歷
當今社會,個人尋求職業已成為一種風尚、一種必然,而求職的先行程序往往是求職信那關于軟件系統架構師的個人簡歷有哪些呢?下面是寫寫幫文庫小編為你整理的軟件系統架構師個人簡歷范文,希望你喜歡。
軟件系統架構師個人簡歷范文篇1
姓名:某某某
性別:男
年齡:27歲(1989年1月19日)
居住地:重慶
電 話:152******(手機)
最近工作[1年8個月]
公 司:XX有限公司
行 業:計算機軟件
職 位:系統架構設計師
最高學歷
學 歷:本科
專 業:計算機科學與技術
學 校:重慶大學
自我評價
本人性格隨和樂觀,積極向上,愛好廣泛,喜歡鉆研,工作認真負責,擁有較強的組織能力和適應能力,并具有良好的身體素質。樂于溝通,易于融入集體,樂于助人,學習能力較好,注重理論與實踐相結合,在工作中不斷提高專業知識之余,同時也在不斷地提高做人、做事的的能力,爭取將工作做得更好,爭取做更好的自己!
求職意向
到崗時間:一個月之內
工作性質:全職
希望行業:計算機軟件
目標地點:重慶
期望月薪:面議/月
目標職能:系統架構設計師
工作經驗
2013/12 — 2021/8:XX有限公司[1年8個月]
所屬行業:計算機軟件
技術部 系統架構設計師
1.多次對軟件工程項目進行實地需求調研,與客戶進行深入溝通,了解項目需求。
2.負責產品軟件總體方案設計,做出概要設計及詳細設計,并制作成文檔。
3.深入理解關系型數據庫理論知識,并可運用其做出數據庫結構設計。
2012/7 — 2013/11:XX有限公司[1年4個月]
所屬行業:計算機軟件
技術部 系統架構設計師
1.熟練使用PowerDesinger進行數據庫設計,依據項目需求進行數據庫設計。
2.描述對象模型、數據模型、功能模型,對項目進行UML設計,制作文檔。
3.開發出結構合理,宜于擴展的數據庫邏輯設計模型和物理設計模型。
教育經歷
2008/9— 2012/6 重慶大學 計算機科學與技術 本科
證書
2009/12 大學英語四級
語言能力
英語(良好)聽說(良好),讀寫(良好)
軟件系統架構師個人簡歷范文篇2
------基 本 資 料-------
姓 名: 性 別: 男
出生年月: 1988-10-25 目前所在地: 湖南
-------求 職 意 向-------
尋求職位: java軟件工程師
求職地區: 湖南 工資待遇: 4000
到崗時間: 隨時到崗
自我評價: 為人誠懇、自信,工作中踏實、沉穩、積極進取且有耐心。
服從上級安排且有良好的團隊合作精神。
學習能力很強,敢于面對困難和挑戰。
具有良好的心理素質和抗壓能力,能適應加班。
-------工 作 經 驗-------
就職公司: 湖南信息科技有限公司 公司行業: 信息技術和互聯網(計算機軟硬件,通訊)
就職時間: 2012年1月到2013年6月 就職部門: 軟件部
公司性質: 民營/私營企業/非上市公司 就職職位: 軟件架構師
工作描述: 參與J2EE項目的設計和編寫,進行后臺的日行維護和數據更新。
技能專長: 1.熟練使用JSP、Servlet、Jdbc等進行Java Web的編程開發。
2.熟悉Struts、Hibernate、Spring、Ibatis等框架,能熟練的進行SSI或SSH整合開發。
3.熟悉JavaScript、jQuery等框架;掌握Ajax異步技術,并能應用其進行開發。
4.熟練使用Eclipse、MyEclipse、VS等IDE開發工具。
5.熟練應用Apache、Tomcat、WebLogic等服務器進行Java Web的開發配置和部署。
6.熟悉Oracle、Sql Server,了解MySQL等數據庫應用開發。
7.熟練運用SVN、CVS版本控制工具進行項目的配置管理。
8.了解UML統一建模語言,能夠使PowerDesigner等建模工具。
9.熟悉Linux的基本操作。
10.熟悉c#,了解c、c++。
軟件系統架構師個人簡歷范文篇3
基本信息
姓 名:陳XX
性 別:男
婚姻狀況:未婚
民 族:漢
戶 籍:武漢
年 齡:34
現所在地:貴州
身 高:180
聯系電話:139********
電子郵箱:***
求職意向
希望崗位:技術總監、項目經理、系統架構設計師
工作年限:10年
職稱:高級
求職類型:全職
可到職日期:隨時
月薪要求:面議
工作經歷
xx年3月—至今 xx有限公司,擔任技術總監。
主要工作是:
負責公司的項目產品規劃、產品開發方向、項目研發管理及控制:
1、組織并制定相關技術體系的技術標準和技術規范;
2、負責組織公司開發項目的總體方案設計,指導并審核公司產品項目的總體技術方案;
3、協調技術部與銷售部之間的工作,包括任務復雜度、任務處理時間等方面的協調;
4、對客戶提出的開發需求進行可行性評估和風險評估,并制定相關開發計劃;
5、對項目開發進度進行監督,并對各項目進行最后的質量評估。
xx年3月—xx年7月 xx有限公司,擔任系統架構設計師。
主要工作是:
1、負責公司軟件項目的架構、總體設計、需求分析設計;
2、編寫技術標準、設計文檔;
3、負責新技術研發,軟件技術指導和監控;
4、負責公司員工培訓;
5、參與軟件項目管理、測試管理和風險管理等。
xx年3月—xx年7月 xx有限公司,擔任開發經理。主要工作是:負責公司ERP軟件管理與開發;負責與速達軟件的合作開發,項目顧問;與客戶交流、談判;軟件實施顧問。
xx年3月—xx年7月 xx有限公司,擔任開發組長。主要工作是:
1、負責項目的架構、開發和管理;
2、負責數據庫、Internet電子商務的技術支持及其開發;
3、負責監督團隊的開發,以及開發人員的培訓,為公司培養優秀的技術人才;
4、帶領團隊成功開發了至少3個以上的大中型軟件項目。
教育背景
畢業院校:重慶大學
最高學歷:本科
獲得學位:學士
畢業日期:2006-07
所學專業一:應用化學
所學專業二:軟件工程
語言能力
英語水平:良好
國語水平:優秀
粵語水平:一般
個人自傳
我是個熱愛生活,性格開朗,喜歡鉆研的人。對于在任何事情都能夠深思熟慮,考慮完善后才處理問題。對自己永遠是高標準,嚴格要求自己,永遠追求突破。以誠待人,以德服人,以理教人,就是我對人的基本態度。
第四篇:軟件架構師工作的職責
軟件架構師工作的職責
職責:
在充分調研和理解客戶業務需求的基礎上,為企業應用/產品做架構設計
與客戶溝通設計方案,協助他們做出關鍵的技術決策
在構建整個企業系統架構的過程中,能很好的平衡可靠性,可用性,可擴展性,可維護性,易管理性,及安全性等
代碼審查
對軟件開發生命周期,方法/標準,應用架構以及技術設計/解決方案等方面有較深刻見解
了解最新的技術與方法及如何恰當應用
任職需求:
本科或以上學歷,畢業于計算機科學,軟件工程,信息技術,信息系統,商務等相關專業,或擁有同等的教育水平和工作經驗
___年以上分布式系統設計和開發的經驗
在分布式,高需求,軟件構架方面有豐富的經驗
了解不同的企業軟件解決方案,企業級服務器/服務,工具,及___實踐
有豐富的面向對象設計和編程知識
曾經在以住的項目中擔任過技術架構師
能熟練地運用英語進行書面和口語溝通
能與分布全球各地的團隊成員一起順暢工作
軟件架構師工作的職責2
職責:
1、面向公司戰略目標訴求進行架構設計、規劃及管控,支撐變革藍圖與變革路標設計;
2、主導公司級項目的業務架構及業務解決方案設計,負責業務需求的轉化及2B流程有效拉通;
3、支撐變革、流程、信息化項目中架構的評審,實現架構原則和標準的落地及日常執行;
4、參與公司IoT架構設計與項目實施工作;
5、變革與流程信息化治理體系建設與優化,引導變革解決方案建設實施,提供公司架構治理的方向和策略建議。
任職資格:
1、本科及以上學歷,理工科背景優先;
2、優秀的溝通和理論聯系實際的能力,精通企業架構及流程管理方法論;
3、熟悉房地產行業流程管理___實踐和業界流程管理最新發展趨勢優先;
4、___年以上工作經驗,___年以上大中型企業的變革、流程、過程改進部門工作經驗或咨詢公司流程管理咨詢經驗,___年以上房地產行業相關領域工作經驗優先;
5、擁有或曾通過以下一種或多種認證(或同等認證)者優先:
TOGAF
Architect
PMP6、熟悉IoT技術以及有相關實施經驗優先。
軟件架構師工作的職責3
職責:
1、主要負責核心系統的架構設計,框架搭建以及核心模塊的開發;
2、負責解決后端系統中的性能瓶頸與技術難題;
3、負責核心系統的技術方案的編寫與評審;
4、負責公司技術標準的制定與評審。
任職資格:
1、本科以上學歷,專業不限,___年以上Java開發經驗,___年以上架構設計經驗;
2、精通JAVA的Spring、Mybatis等主流框架,熟悉Hadoop、ZooKeeper等分布式架構和系統;
3、熟悉Oracle、Mongo、Redis等關系與非關系型數據庫;
3、知識面廣,專研技術,對解決有挑戰性的技術問題充滿激情;
4、有獨立分析和思考問題并加以解決的能力和習慣;
5、有較強的文檔編寫能力,能獨立完成技術方案、設計方案的編寫;
6、了解基礎的數據結構和算法,對常見問題,能正確運用合適的數據結構和算法加以解決;
7、熟悉兩種以上流行的框架,且不停留在單純使用的層次,必須對框架的實現原理、應用場合、使用限制有基本了解;
8、善于溝通,團隊協作精神良好,樂于分享經驗與感悟,促進團隊共同進步。
軟件架構師工作的職責4
職責:
1.負責公司核心業務系統的技術架構,分析、整理出對應的技術架構方案;
2.負責產品架構分析,提出軟硬件架構整體設計及數據庫存儲設計方案;
3.負責核心技術問題的攻關,協助解決項目開發過程中的技術難題,進行新技術的研究與技術積累;
4.改進和評審相關產品系統架構方案,控制產品系統架構質量;
5.參與制定技術標準,編寫相應的技術文檔,完善并沉淀企業技術架構。
任職要求:
1.本科及以上學歷,計算機相關專業,至少___年以上服務端開發經驗;
2.精通至少一門主流語言,Java/Python/C#/Go/Ruby等;
3.具備軟件產品系統架構設計和實踐經驗,以及豐富的大中型開發項目總體規劃和方案設計經驗;
4.熟悉操作系統架構設計與搭建,并能保證架構的穩定性、可擴展性;
5.具備良好的團隊溝通與協作能力,責任心強,工作認真細致;
6.有電商、財務、供應鏈、制造等IT系統開發經驗者優先。
軟件架構師工作的職責5
職責:
1、負責軟件工程的需求調研,進行需求分析,編寫需求分析書;
2、負責項目的概要設計,包括功能結構規劃、功能子系統劃分、實現模型設計、數據庫設計等;
3、核心、關鍵模塊的算法設計或功能編碼實現;
4、制定軟件開發計劃;
5、負責指導軟件工程師執行具體的軟件開發工作,完善開發方法,提高執行效率。
任職資格:
1、本科以上學歷,軟件工程等相關專業,___年以上軟件開發經驗;
2、熟悉C#等高級程序語言,有較好的程序編寫經驗;
3、熟悉C/S、B/S
網絡架構、熟悉基于TCP/IP等的網絡編程;
4、有較強的溝通能力和文字表達能力。
第五篇:軟件架構師的主要職責說明文
軟件架構師的主要職責說明文
職責:
1、挖掘和分析業務需求,對公司業務平臺進行架構改進和升級設計,制定架構升級規劃和過渡方案;
2、承擔軟件產品核心功能的開發工作,牽頭保障整個系統不出現重大技術故障;
3、進行技術評估與產品選型;
4、負責技術任務管理工作,制定設計規范、開發規范和文檔規范,對任務進行合理拆分和跟蹤,把控開發質量;
5、把握業界前沿的技術棧和框架,合理引入團隊,提升大家的技術能力和開發效率。
任職要求:
1、___年以上軟件開發經驗,___年以上系統架構經驗,具有物聯網平臺開發/大數據分析經驗者尤佳;
2、有高并發,復雜系統設計和架構經驗,并主導設計過所在公司重要系統;
3、具備良好的業務建模能力,能夠結合業務場景抽象業務模型;
4、有一定的帶團隊、帶項目的能力,能夠輔導人員,組織團隊完成項目目標;
5、在技術領域方面有一項非常擅長,如業務建模、數據分析、數據交換、流程引擎、系統架構、系統優化等。
軟件架構師的主要職責說明文2
職責:
1.致力于推進適應未來發展趨勢的中臺系統規劃和落地。能夠利用新思路、新方法提升中臺的專業性,并在服務能力創新、中臺效能升級、容量、穩定性及可靠性保障方面不斷帶來各種突破;
2.以與團隊一起交付價值為核心理念深入理解業務需求、設計系統架構和規劃技術選型方案,結合公司戰略助力行業技術變革;
3.主導川酒集團的技術規范建設及核心開發工作。
崗位要求:
計算機相關專業本科及以上學歷,___年以上大型互聯網或大型IT公司核心系統開發、設計工作經驗;
有豐富前、中、后臺軟件系統架構工作經驗,熟悉大型互聯網電子商務體系架構,深入理解分布式計算,微服務等架構模式;
對互聯網、大數據和云計算等技術有深刻理解和敏銳感覺,創新能力強;
熱愛技術,工作認真、嚴謹,對系統質量有近乎苛刻的要求意識,善于溝通與團隊協作;
有較強的邏輯思維能力,善于分析、歸納、解決問題,能夠帶隊進行項目開發;
長期堅持寫博客、公開交流或貢獻開源代碼者優先
軟件架構師的主要職責說明文3
職責:
1.需求分析,產品設計,確定產品需求文檔中的產品規范和文案;
2.負責新產品/功能的詳細設計和原型展示。協調市場、開發、運營、管理等團隊確立產品方案;
3.協調技術開發人員,跟蹤產品開發進度,完成產品的開發、測試、版本管理,產品上線等相關工作;
4.參與產品核心模塊的代碼編寫;
崗位要求:
1.本科以上學歷,兩年以上軟件產品規劃及設計經歷;
2.能獨立運用Axure等工具設計出產品的整體架構;
3.對行業的未來發展有清楚完整的見解,了解產品及競爭對手的最新動態,熟悉移動APP應用;
4.熟悉軟件開發技術(.net
/
C++
/
java
/
html
/
js
/
css)、操作系統原理、數據庫原理、網絡協議及軟件架構;
5.熱愛計算軟件管理及設計,對工作充滿激情,能夠承受較大的工作壓力;
6.條件特別優秀者,待遇可適當放寬。
軟件架構師的主要職責說明文4
職責:
1、參與微服務應用開發框架研究開發工作;
2、總體技術框架的規劃與設計,重構、優化現有產品的技術架構;
3、根據業務規劃及技術規劃制定微服務平臺架構解決方案;
4、負責關鍵技術的預研和攻關,提高系統的擴展性、穩定性和安全性;
5、帶領團隊進行技術難點的攻關和落地實施。
崗位要求:
1、具備___年以上的java開發經驗,計算機或相關專業本科或以上學歷,2、JAVA基礎知識扎實,了解常用算法,熟悉基于JavaWeb的B/S架構應用開發,了解Java
EE規范;
3、熟悉Sping
Boot/Spring
Cloud/Dubbo等微服務框架和架構,了解其原理和使用其優缺點,并有實戰經驗;
4、熟練Docker/Kubernetes等容器化系統,熟悉分布式、緩存、消息等機制,能對分布式常用技術進行合理應用,解決實際架構問題
5、優秀的面向對象分析、設計和編程能力;
6、良好的分析文檔編寫習慣和編碼習慣;
軟件架構師的主要職責說明文5
職責:
1、根據公司產品具體項目需求,分析、設計與實現系統架構方案,2、負責產品架構分析,提出軟硬件架構整體設計,數據庫存儲、信息安全等設計方案,3、指導其他工程師的設計工作;對相關產品系統架構方案進行評審及改進,控制產品系統架構質量;負責軟件核心技術問題的攻關,系統優化;協助解決項目開發過程中的技術難題;
4、制定開發規范,參與制定技術標準,編寫相應的技術文檔,并對通用技術進行整理,提高技術復用。
5、積極了解業界發展、相關新技術及趨勢,促進技術進步和創新。
任職要求:
1.___年以上平臺軟件架構開發、設計經驗;有成功案例;
2.熟練使用主流開發框架;
3.熟練使用主流開發工具和建模工具,熟悉當前比較主流的企業架構理論;
4.熟悉各種服務器操作系統(LINUX、UNIX、windows
server)和各種中間件的部署、管理;
5.具備良好的識別和設計通用框架及模塊的能力,有云、移動互聯網、大數據方面的開發經驗。
6.有系統性能優化與評估的實際經驗,能用工具對系統的代碼進行評估。