软件架构师的定义、分类和职责——《架构之美》读后感之一
IEEE在2004年4月公布的“IEEE Standard 1471”中,提出了IEEE自己对软件架构的定义:“软件系统架构是根据具有参考意义的实践而定义出来的。主要表述了一个系统的基本组织结构、基本组成构件和相互的关系。以及构件于外部环境间的关系。同时,软件系统架构为后续的设计和架构演化提供了指导性原则”。IEEE Standard 1471也澄清了架构领域的许多其他概念,例如架构描述、架构标准等。
可以看出,上述诸多不同用词的“软件架构”的定义,其实都表达了近乎一致的思想。但有意思的是,软件工程领域基本上没有一致的有关“软件架构师(Software Architect)”的定义。很多公司也没有这样的职位;有些公司虽然有这样的职位,但却说不清楚这个职位所要求的技能和工作职责;另外当我们对比不同公司关于该职位的描述时,也能看到其中的不一致,例如Microsoft公司与Motorola公司对架构师的职位表述就很不一样。更常见的是这些职位描述严重混淆了很多概念,例如:当年的Rational公司就混淆了“软件架构师”与“高级程序员”的概念。
这样的现象,无论是在国内还是国外都很相似。这也导致了我们可以见到大量的不同职位名称出现在软件工程行业中的观象,例如有解决方案架构师、系统架构师、软件架构师、企业架构师、总工、首席架构师、Java架构师、微软架构师及.NET架构师等。
应该承认,给软件架构师下一个定义不是一件简单的事。更何况架构师这个角色的作用也是随着软件架构的演化而不断变化。为了澄清什么才是一个真正的软件架构师,我们还是先来分析一下典型的软件架构师在一个商业公司里的作用。