,首先让我想起的是高楼大厦的设计人员,通常
一座大厦在建之前,都先由设计师将蓝图描绘出来,包
括其形状、结构、尺寸、材料等等,然后建筑工程师
带领工人们按照蓝图将大厦一层一层地建起来。
近年来,软件领域也渐渐地流行起架构师的角色,特
别是对一些大型软件产品或项目的开发,这一角色显
得很关键,因为缺乏好的软件架构师而导致项目失败
的例子不胜枚举,一个没有经验和能力的架构师也会
使项目失败的速度加快。
软件架构师在整个软件开发过程中都起着重要的作用
,并随着开发进程的推进而其职责或关注点不断地变
化,在需求阶段,软件架构师主要负责理解和管理非
功能性系统需求,比如软件的可维护性、性能、复用
性、可靠性、有效性和可测试性等等,此外,架构师
还要经常审查和客户及市场人员所提出的需求,确认
开发团队所提出的设计;在需求越来越明确后,架构
师的关注点开始转移到组织开发团队成员和开发过程
定义上;在软件设计阶段,架构师负责对整个软件体
系结构、关键构件、接口和开发政策的设计;在编码
阶段,架构师则成为详细设计者和代码编写者的顾问
,并且经常性地要举行一些技术研讨会、技术培训班
等;随着软件开始测试、集成和交付,集成和测试支
持将成为软件架构师的工作重点;在软件维护开始时
,软件架构师就开始为下一版本的产品是否应该增加
新的功能模块进行决策。
显而易见,在软件开发过程中,一个优秀软件架构
师的重要性是不应低估的。那么如何成为优秀的软件
架构师呢?首先必须具有丰富的软件设计与开发经验
,这有助于理解并解释所进行的设计是如何映射到实
现中去。其次要具有领导能力与团队协作技能,软件
架构师必须是一个得到承认的技术领导,能在关键时
候对技术的选择作出及时、有效的决定。第三是具有
很强的沟通能力,呵呵,其时这一点好象什么鬼角色
都最好具备,软件架构师需要与各路人马经常打交道
,客户、市场人员、开发人员、测试人员、项目经理
、网络管理员、数据库工程师等等,而且在很多角色
之间还要起沟通者的作用。在技术能力方面,软件架
构师最重要也是最需求掌握的知识是构件通信机制方
面的知识,比如远程过程调用、JAVA RMI、CORBA、
COM/DCOM、各种标准的通信协议、网络服务、面对对
象数据库、关系数据库等等,另外,架构师应时刻注
意新软件设计和开发方面的发展情况,并不断探索更
有效的新方法。开发语言、设计模式和开发平台不断
很快地升级,软件架构师需要吸收这些新技术新知识
,并将它们用于软件系统开发工作中。当然,行业
的业务知识对软件架构师也是很重要的,有助于设计
出一个满足客户需求的体系结构,优秀的软件架构师
常常因为要尽快获得对行业业务的理解而必须快速
学习并且进行敏锐的观察。
上面的描述是枯燥乏味的,但作为一个软件架构师,
在整个软件系统的开发过程中是乐趣无穷的,因为
这个角色很具有挑战性,有时需要左右逢源八面玲
珑,有时又需要果断坚定不留情面。在国内,较少
软件企业拥有独立的架构师,通常一个软件高手身
兼数职,既是项目经理,又是软件架构师,还是软
件开发者,有时还要客串一个测试人员,这对软件
的开发周期和产品质量是不利的,有时一个人的观
点立场是很片面的,而且繁重的工作、沉重的压力
会影响一个人的情绪,情绪会影响决策,决策影响
结果,所以值得我们三思而后行。