lwcompany

功到自然成

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: :: 管理 ::

软件架构师

http://baike.baidu.com/view/905353.htm

软件架构师是什么?需要什么样的知识体系?如何成为优秀的软件架构师呢?

第一个问题:
软件架构师一词应该是对应系统架构师,都是架构师,但侧重不同。在4+1视图中,我觉得如果把架构师分为这两种的话,软件架构师应该是站在逻辑视图和开发视图的角度,而系统架构师则更多的是过程视图和物理视图。当然,这两个角色就象是人的两个眼睛,缺少一个都会定位不准确,容易是系统目标偏离。

当然了,现实世界中,一般这两中角色集中在一个人身上体现出来,或者一个小组。很多公司都不设置此类职位;有的公司则分工很细。

第二个问题:
知识体系不好说,只说重点的吧。
软件架构师的职责是把需求转换为软件世界的模型。4+1视图中以use case作为核心,其中功能性需求以及部分非功能性需求会被软件架构师通过分析和设计,映射为各种软件设计模型。从OOA/OOD角度说,use case 在这个过程中是要转换为各种UML,其中类图,序列图,状态图是最常用到的。这个转换过程是需要智慧的,use case是目的,各种OO的原则是指导,设计模式是经验,灵活运用是能力。里面蕴涵了设计的美感,我觉得这个过程是衡量一个软件架构师的最重要的指标。

当然这个过程是迭代和反馈的,我觉得概要设计和详细设计只是思考同一个问题的粒度不同而已。

另外就是我们要熟悉语言,详细设计是要转换为代码的,而且跟语言是有关系的。语言比如java/c++等,详细设计的模型是有很多不同的。就需要软件架构师有过这个过程,并且是非常良好的映射。

除了语言就是要熟悉某个技术领域,比如J2EE/DOTnet.从J2ee来说,可能需要了解比如jsp/servlet/ejb/jndi/jta/jdbc等。还需要了解各种web framework,o/rmapping,ioc/aop容器等等。还有的就是一些技术组件和业务组件,不如workflow,rules engine等等。另外比如各种database.熟悉这些东西的目的,是把这些软件和组件合理并且有机的组织起来成为一个开发的架构。这个过程是需要创造力和想象力的。可能很多人认为这个地方正是软件架构师体现能力的地方。

第三个问题:
我不是很清楚,但我认为意志和想象力能够使每个有目标的人达到彼岸。

posted on 2011-09-20 11:17  平渡飞扬  阅读(681)  评论(0编辑  收藏  举报