天天看点

浅谈软件架构师的另类角色

首先我认为,在软件行业,架构师最根本的职责不是单一完成系统设计交付,不是光看结果的有无,还要度量设计过程和设计结果两个方面。我认为,架构师的根本职责是使总体能力一般的队伍,通过设计的力量,生产出符合质量要求的产品。如果说一个设计的产品,非要高手云集才能生产出来,那么我们可以说这个产品的架构设计是失败的。一个产品设计,非要自己从头开发,放弃成熟且价格低廉的采购方案,也是失败的。成本因素,必须纳入现代软件架构所考虑的范围,而且,成本因素(投资回报率),应该是决定架构设计的关键因素之一。因此,架构师为企业生产成本决策,要提供依据,架构师此时扮演部分财务分析人员的角色。

第二,现代软件企业成本的居高不下,软件项目失败的风险很高,很大程度上是下面两个因素造成的,(1)客户总是在进行需求变更,而一旦变更需求往往带来设计调整,继而就是开发的调整,导致开发的软件总体成本增加,延时交付经常发生。(2)架构设计存在质量缺陷。对于第二点我们不用多谈。我们这里只看第一点。客户往往是多变的,即便是在企业的内部,不同的内部需求往往也是纷至沓来,架构师的设计必须确保能够经受得住客户(不管是内部的还是外部的)需求在某个相当大的程度内进行变更而不会影响到设计和开发的调整。这就是需要架构师往往也要对客户的需求非常熟悉,能够预见到客户的潜在需求,参与客户需求整理,引导客户。这里架构师必须要扮演SA的角色,同SA Team协同战斗。

第三,架构设计的结果非常难以度量,一个架构设计的好坏可能要等产品上线若干年之后才能体现(可维护性,可升级性,新的需求合并)。但是在现代软件工程业的方法论之下,架构师可以协同PQA部门设计一套属性度量工具和过程,帮助企业在最大程度上完成对架构师作品的量化考评。在这里架构师又从属于PQA的角色。

第四,产品设计的实现,好的架构的设计的体现,除了关注成本,可实现性等因素之外,还必须考虑时间因素。试想一个非常优秀的架构,但是以短期内的人力资源需要几年才能实现,这个架构是不具备任何意义的。对于时间的控管更多体现在项目管理配置活动中。因此,这要求架构师又必须具备基础的项目经理的能力,同项目经理协作制定实现计划,扮演项目经理的部分角色。

第五,架构的起源思想来源于代码的复用。出于程序员懒惰的思想慢慢演进出如今丰富的架构思想和理念。各个行业领域内,有成千上万的业务复用模型,如金融,保险,电力,物流,通讯等等。每个领域内的全部业务复用模型就构成了这个行业的基本架构模式。这些架构模式是在书中找不到的,全凭架构师的从业经验。因此架构师必须是某个或者某几个行业内的领域专家,扮演专家的角色。

第六,再牛的架构总归要有人用程序来实现,而架构师则是负责架构实现的第一人。因此从根本上说,架构师当然也是一个非常厉害的程序员。^_^!

总之,企业中软件架构师融合了财务人员,SA,PQA,PM,Domain Professor和Coder等多种角色,在某时刻,发挥着自己的重要作用,架构师是企业内部具备较强混合能力的人力资源。

继续阅读