微软的DotNet开发绝对是属于那种入门容易提高难的技术而要能够成为DotNet架构师没有三年或更长时间的编码积累基本上是不可能的特别是在大型软件项目中架构师是项目核心成员承上启下因此RUP方法论也认同以架构为核心体现+视图在整个软件开发过程中的重要作用架构人员既要精通技术又要熟悉业务而且基本对软件生命周期各阶段的相关技术都需要有相关的积累和知识储备而这些不经过多年的磨练是很难达到这个高度的 要成为一个合格的架构师首先必须是一个合格或优秀的编码人员对于开发来讲编码始终都是最重要的一项技能在编码过程中只要自己善于去思考和分析问题就可以多学到很多相关的知识和技术所以我们在开发过程中一定要注意新知识和新技术的学习前人经验和成果的学习编码过程中应该去思考的一些问题有 在编码过程中自己是否做单元测试是否使用相关工具做单元测试如果没有的话是什么原因无法把单元测试做起来? 自己编码的洩露率情况编码洩露的BUG的原因分析 是否有意识的对代码进行重构重构过程中是否引入了相关设计模式的思想? 是否对C#语言的一些高级特性进行学习如反射调用异步处理等 是否对Remoting和WebService两种分布式技术做过研究和对比分析? 是否经常研究开源项目和开源代码如DuwamishPetShopNUnitEnterprise LibraryNant等 是否对对象持久化机制和O/R Mapping等相关技术做过相关的研究 平时在编码过程中是否注重公用组件和公用类的复用和抽取 自己在平时工作和学习中是否经常开发些小工具提高工作效率巩固学习知识 设计和编码其实是密切而不可分的对于严格将设计和编码分开的瀑布模型一般也仅仅在大型项目中应用而及时编码和设计分离也不是将编码人员不需要思考编码活动始终是一项创造性的劳动如果否定这个观点那就代表编码过程完全不需要人员介入而可以完全自动化因此在这里谈设计主要还是指设计人员的系统化思维能力设计人员应该比开发人员站高一个层次来分析和思考问题设计人员最重要的一个技能就是现实>抽象的转换而这个就需要谈到方法论的问题了技术人员需要积累面对对象分析和设计或结构化分析知识的积累需要有较强的数据库分析和设计能力一个设计能否成为很好的架构师关键就在这种积累的深度和广度上面了 因此在设计过程中应该考虑的问题有 你现在分析和设计能力能否胜任大中型的应用系统还是只是独立功能分析和设计? 设计过程中是否有意识的考虑到组件的复用和相关接口设计准则是否能够很自然的将分析模式设计模式的相关内容应用到自己的设计过程中 是否对XPRUP面向对象结构化等方法论都有过较系统化的学习和思考 是否真正理解系统功能需求和非功能需求对系统设计的不同的指导作用 对自己设计的功能是否会根据后期的变更来反思自己的设计为何不能很好的适应变更? 是否在设计过程中经常自己开发些原型来对自己的设计思路进行验证? 是否专注技术的同时开始专业业务流程的分析关注业务建模? 如果我们在设计和开发过程中经常关注这些知识和技能的话成为一个合格的架构师是早晚的事情平时能够胜任工作开发用到的知识和技能是微不足道的如果自己不是有意识的去学习这些知识的话那技能是很难得到进一步提高的我参加过两次微软的架构师培训在北京的微软架构峰会上也有机会专门参加了P&P Workshop的学习培训老师是微软总部SmartClient Architecture and Design Guide一书的作者Edward AJezieski让我感受最深是老外深刻的技术底蕴对程序开发的执着 对于DotNet架构经常用到的知识和技能储备有 RUP方法论+视图用例驱动业务建模>分析模型>设计模型 用例模式>分析模式>设计模式 常用的分布式技术 对安全异常日志性能等非功能性需求的关注 对应用系统整体业务的关注 相关的一些参考书籍(微软网站和电驴都可以下载到) 微软网站提供的参考书籍 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 ApplicationManaged Authorization Smart Client Architecture and Design Guide 其它架构方面的参考书籍 Software Architecture In Practice PatternOriented Software Architecture The Art Of Software Architecture Beyond Software Architecture 模式方面的书籍 Analysis Patterns Design Patterns Elements of Reusable ObjectOriented Software Applying UML and Patterns Design Patterns Explained |