技术开发 频道

软件构架师的特点

    软件构架师需要有商业领域的知识

    尽管拥有了丰富的软件开发经验,但是我们还期望(或者是要求)构架师拥有一定商业领域的知识。

    [一个领域]是在一个范围内工作的从业人员使用一系列特定的概念和术语来表达这个领域内的知识。4

    这种知识将会使构架师更好的理解系统的需求,并把精力投身于其中,确保系统的需求是合适的——例如,从构架师领域的角度出发,需求是要被准确捕获的。经常会出现这样的情况,一个特定系列的构架样式可以被应用到与它相联系的一个特定的领域中。如果构架师知道这种映射关系,那么对他的工作将是很大的帮助。
   
    因此,一个好的构架师将会在软件开发和商业领域的知识上面做出权衡。如果一个构架师具有很好的软件开发经验但是不了解商业领域,那么他的解决方案可能不会解决实际的问题,而仅仅只能反映出构架师是多么精通他的专业。

    另外一个构架师需要精通商业领域知识的原因是,构架师要能够预见软件构架随时可能出现的变化。由于软件构架受它被配置的环境的影响非常大,所以对商业领域有正确理解的构架师,可以从软件构架的角度,对不断变化的情况做出更有远见的决策。例如,如果构架师发觉哪种新的标准在未来很可能成为主流,那么他将会使自己的软件构架在可用寿命内符合这种标准。

    软件构架师应该拥有技术知识

    软件构架的一个特定方面需要有一定的专业知识,因此一个构架师必须具备这个水平的知识才能够胜任他的工作。可是构架师不必成为技术专家,这体现了这篇文章第一部分的思想——构架师宏观上的决策。因此,构架师只需要了解宏观上的问题,而不必关心细节化的事情。由于技术的变化过于频繁,所以构架师要随时与这些变化保持同步。

    软件构架师应该拥有很好的设计技巧

    虽然软件构架并不仅仅是设计,但是设计无疑是很重要的一个组成部分。构架师应该拥有很好的设计技巧,因为软件的构架包含整个软件的关键性设计决策。这种决定包括软件主要结构的设计决策,特定部分的选择以及指导的说明文档等等。为了确保系统构架的完整性,上面那些要素都要被特别的应用到设计中,这对整个系统的成功完成有很大的作用。因此这些要素需要有固定的拥有设计技巧的人来负责——这个人就是构架师。

    软件构架师需要拥有很好的程序设计技巧

    开发人员是整个项目开发过程中最重要的一个小组之一,构架师要随时和他们保持联系。毕竟他们要确保软件在最后交付使用的时候能够成功的执行。如果构架师认为开发人员的工作是十分有价值的,那么他们之间的交流将会很有效用。因此,软件构架师需要拥有一定的程序设计技术,即使不需要他们编写程序。

    大多数成功的构架师,在一些场合中都是核心程序员,这些场合通常是他们的职业方向。即使是技术发展了,有新的程序语言出现,一个好的构架师可以把以前学过的设计语言的概念和新的语言联系起来,以达到对新语言更加深入的了解。没有这种知识,软件构架师就不能对需要执行的构架的重要元素做出完美的决策,例如执行的组织和程序标准的采用。这会使的软件构架师和开发人员之间产生沟通上的障碍。

    构架师是一个很好的沟通员

    和以上提到的几种技术比起来,构架师的沟通能力是最重要的。构架师需要精通所有的沟通手段,特别是需要有一定的语言能力,包括说,写和演讲能力。交流是双向的,所以构架师还需要是一个很好的聆听者与观察者。

    小组成员之间有效的沟通是项目成功的基本条件。为了更好的理解投资人的需求,与他们的沟通显得尤为重要,同时还能够让所有的投资人在软件构架上达成共识。与项目小组的沟通同时也很重要,因为构架师的职责不单单是把信息传达给小组,同时还要激励他们工作。构架师还要负责把系统的构想传达给小组成员,使得它们让全组人员了解,而不仅仅是构架师自己理解。

    构架师需要做出决策

    构架师不能在自己不了解的环境中做出决策,然而项目的开发周期也没有给他提供充足的时间去探索所有的环境,所以在很大的压力下做的决策不太可能成功。这种环境是被期望的,成功的构架师非常满意这种环境,而不愿去改变它。因此构架师需要是厚脸皮的,因为他们很可能在项目开发过程中更正自己的决定,并且按原路返回查找问题。正如Philippe Kruchten所说的:“软件构架师的一生是一个漫长的,在黑暗中不断摸索并不断改进自己的决定的过程”。5

    一个糟糕的决策很可能毁掉一个项目。项目小组中的其他成员会对构架师失去信心,这时项目经理就要参与进来,因为等待构架的完善不会让项目有所进展。最危险的情况是:如果构架师没有把自己的决策文档化,那么小组的其它成员可能会自己制定决策,而这种决定很可能是错误的。

0
相关文章