微軟的DotNet開(kāi)發(fā)絕對是屬于那種入門(mén)容易提高難的技術(shù)。而要能夠成為DotNet架構師沒(méi)有三年或更長(cháng)時(shí)間的編碼積累基本上是不可能的。特別是在大型軟件項目中,架構師是項目核心成員,承上啟下,因此RUP方法論也認同以架構為核心,體現4+1視圖在整個(gè)軟件開(kāi)發(fā)過(guò)程中的重要作用。架構人員既要精通技術(shù),又要熟悉業(yè)務(wù),而且基本對軟件生命周期各階段的相關(guān)技術(shù)都需要有相關(guān)的積累和知識儲備,而這些不經(jīng)過(guò)多年的磨練是很難達到這個(gè)高度的。
要成為一個(gè)合格的架構師首先必須是一個(gè)合格或優(yōu)秀的編碼人員,對于開(kāi)發(fā)來(lái)講編碼始終都是最重要的一項技能,在編碼過(guò)程中只要自己善于去思考和分析問(wèn)題,就可以多學(xué)到很多相關(guān)的知識和技術(shù)。所以我們在開(kāi)發(fā)過(guò)程中一定要注意新知識和新技術(shù)的學(xué)習,前人經(jīng)驗和成果的學(xué)習。編碼過(guò)程中應該去思考的一些問(wèn)題有:
1.在編碼過(guò)程中自己是否做單元測試,是否使用相關(guān)工具做單元測試,如果沒(méi)有的話(huà)是什么原因無(wú)法把單元測試做起來(lái)?
2.自己編碼的泄露率情況,編碼泄露的BUG的原因分析
3.是否有意識的對代碼進(jìn)行重構,重構過(guò)程中是否引入了相關(guān)設計模式的思想?
4.是否對C#語(yǔ)言的一些高級特性進(jìn)行學(xué)習,如反射調用,異步處理等。
5.是否對Remoting和WebService兩種分布式技術(shù)做過(guò)研究和對比分析?
6.是否經(jīng)常研究開(kāi)源項目和開(kāi)源代碼,如Duwamish,PetShop,NUnit,Enterprise Library,Nant等
7.是否對對象持久化機制和O/R Mapping等相關(guān)技術(shù)做過(guò)相關(guān)的研究
8.平時(shí)在編碼過(guò)程中是否注重公用組件和公用類(lèi)的復用和抽取
9.自己在平時(shí)工作和學(xué)習中是否經(jīng)常開(kāi)發(fā)些小工具提高工作效率,鞏固學(xué)習知識
設計和編碼其實(shí)是密切而不可分的,對于嚴格將設計和編碼分開(kāi)的瀑布模型一般也僅僅在大型項目中應用。而及時(shí)編碼和設計分離,也不是將編碼人員不需要思考,編碼活動(dòng)始終是一項創(chuàng )造性的勞動(dòng),如果否定這個(gè)觀(guān)點(diǎn)那就代表編碼過(guò)程完全不需要人員介入而可以完全自動(dòng)化。因此在這里談設計主要還是指設計人員的系統化思維能力,設計人員應該比開(kāi)發(fā)人員站高一個(gè)層次來(lái)分析和思考問(wèn)題。設計人員最重要的一個(gè)技能就是現實(shí)->抽象的轉換,而這個(gè)就需要談到方法論的問(wèn)題了,技術(shù)人員需要積累面對對象分析和設計或結構化分析知識的積累,需要有較強的數據庫分析和設計能力。一個(gè)設計能否成為很好的架構師關(guān)鍵就在這種積累的深度和廣度上面了。
因此在設計過(guò)程中應該考慮的問(wèn)題有:
1.你現在分析和設計能力能否勝任大中型的應用系統還是只是獨立功能分析和設計?
2.設計過(guò)程中是否有意識的考慮到組件的復用和相關(guān)接口設計準則。是否能夠很自然的將分析模式,設計模式的相關(guān)內容應用到自己的設計過(guò)程中。
3.是否對XP,RUP,面向對象,結構化等方法論都有過(guò)較系統化的學(xué)習和思考。
4.是否真正理解系統功能需求和非功能需求對系統設計的不同的指導作用。
5.對自己設計的功能是否會(huì )根據后期的變更來(lái)反思自己的設計為何不能很好的適應變更?
6.是否在設計過(guò)程中經(jīng)常自己開(kāi)發(fā)些原型來(lái)對自己的設計思路進(jìn)行驗證?
7.是否專(zhuān)注技術(shù)的同時(shí)開(kāi)始專(zhuān)業(yè)業(yè)務(wù)流程的分析,關(guān)注業(yè)務(wù)建模?
如果我們在設計和開(kāi)發(fā)過(guò)程中經(jīng)常關(guān)注這些知識和技能的話(huà),成為一個(gè)合格的架構師是早晚的事情。平時(shí)能夠勝任工作開(kāi)發(fā)用到的知識和技能是微不足道的,如果自己不是有意識的去學(xué)習這些知識的話(huà),那技能是很難得到進(jìn)一步提高的。我參加過(guò)兩次微軟的架構師培訓,在北京的微軟架構峰會(huì )上也有機會(huì )專(zhuān)門(mén)參加了P&P Workshop的學(xué)習,培訓老師是微軟總部SmartClient Architecture and Design Guide一書(shū)的作者Edward A.Jezieski,讓我感受最深是老外深刻的技術(shù)底蘊,對程序開(kāi)發(fā)的執著(zhù)。
對于DotNet架構經(jīng)常用到的知識和技能儲備有
1.RUP方法論,4+1視圖。用例驅動(dòng)業(yè)務(wù)建模->分析模型->設計模型
2.用例模式->分析模式->設計模式
3.常用的分布式技術(shù)
4.對安全,異常,日志,性能等非功能性需求的關(guān)注
5.對應用系統整體業(yè)務(wù)的關(guān)注
相關(guān)的一些參考書(shū)籍(微軟網(wǎng)站和電驢都可以下載到)
微軟網(wǎng)站提供的參考書(shū)籍
Enterprise Solution Patterns Using Microsoft .NET
.NET Data AccessArchitecture Guide
Application Architecture for .NET:Designing Applications and Services
Caching Architecture Guide for .NET Framework Applications
Designing Application-Managed Authorization
Smart Client Architecture and Design Guide
其它架構方面的參考書(shū)籍
Software Architecture In Practice
Pattern-Oriented Software Architecture
The Art Of Software Architecture
Beyond Software Architecture
模式方面的書(shū)籍
Analysis Patterns
Design Patterns - Elements of Reusable Object-Oriented Software
Applying UML and Patterns
Design Patterns Explained