作为软工的一员,我们或多或少都听说过系统架构师。这也应该是我们中的许多人在走出校门之后的职业发展目标。那么什么是系统架构师呢?系统架构师的职责是什么呢?软件体系架构师的工作流程又是什么呢?系统架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的人。
确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。因此他/她应该是特定的开发平台、语言、工具的大师,对常见应用场景能马上给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单等。架构师的主要任务不是从事具体的软件程序的编写,而是从事更高层次的开发构架工作。他必须对开发技术非常了解,并且需要有良好的组织管理能力。可以这样说,一个架构师工作的好坏决定了整个软件开发项目的成败。
这听起来是不是有些像建筑设计师呢。建筑设计师是指单纯的建筑专业的设计师,简称建筑师,包括建筑主体设计、外墙设计、景观设计、室内设计。建筑工程师是泛指建筑行业的各个工种的工程师,包括电气、给排水、暖通、消防、建筑、结构、土建、装饰等。 建筑师通过与工程投资方(即通常所说的甲方)和施工方的合作,在技术、经济、功能和造型上实现建筑物的营造。建筑设计师的职责包括:第一、根据设计要求完成建筑风格、外形等总体设计;第二,提供各种建筑主体设计、户型设计、外墙设计、景观设计等;
第三,协助解决施工过程中的各种施工技术问题;第四,参与建筑规划和设计方案的审查,建筑图纸修改。
其实,不管是从工作职责还是工作流程上来说,软件架构师和建筑设计师都有着异曲同工之妙。在进行整个房屋改造之前,设计师都先进入原来的房屋查看一番,了解相关的情况,比如这个房子是哪一年建造的,中间经过了什么改动,平时在这里住的有几口人,想在房屋改造之后能够达到什么样子的效果,解决哪方面的问题等。我认为这个过程和软件需求分析的过程很像,都是在设计之前通过各种方式先对用户的需求进行调研,弄清楚用户真正需要的是什么,实际解决用户的问题。建筑设计师查看了房屋的大致结构,询问了户主想主要解决的问题,比如阁楼的这一户人家主要想解决夏天蚊虫特别多,房间三角形的地方太多,晒衣服的过程太危险,阁楼已经不能住人,家里一家三口挤在一起睡等问题。这就像是用户实际提出的需求,但是通过对房屋实际的考察,设计师还发现了这户人家中房梁已经很危险,屋顶也有坍塌的危险,还有墙体的老旧等问题。这就像是我们在软件设计过程中,用户自己没意识到但其实是用户潜在的需求,可能当时没想到这个问题,但如果软件投入使用就会产生这样那样的不便,到时候再修改成本就比较大,所以我们力求能在需求分析时就发现这些问题,这样就省下了很多麻烦。接下来,针对房屋的改装设计,设计师会画出图纸让施工队来完成具体的施工。但是其中设计师考虑到的针对不同的户型不同的户主都会贴心的自己设计打造一些方便使用的小家具。比如考虑到妈妈喜欢种花,就在阳台的花坛里放入了白天吸收太阳光,晚上在花圃中会点亮的小灯。考虑到爸爸是出租车司机,特意在客厅设计了可以告知天气的灯。这有点类似系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目。装修施工完成之后,就会等着户主来验收自己改造后的房子,看看是否满意,有没有需要调整的地方。这和我们软件设计最后软件完成并交付使用是一样的,但是在后期依然会有工程师提供技术支持进行升级。