软件架构师是什么?软件架构师是软件行业中的一种新兴职业,他的工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。主导系统全局分析设计和实施、负责软件构架和关键技术决策的人员,可见,软件架构师也属于工程师范畴。
虽然工程师有很多种,在不同的专业领域有着各自的技能,但是,一般在面对某项工程时,大都所有的工程师的工作流程有着异曲同工之处。第一节课,老师带着我们观看了“梦想建造家”这一节目,虽然节目中是一个建筑工程师在做房间改造的工程,但是,对我们学习软件工程师做软件架构有着帮助。
我认为,能够成为工程师的前提就是有着足够强大的专业技巧,掌握着很多的领域知识。就像节目中的王仲平一样,如果没有着足够高的水平,就不能胜任这次的改造任务。同样,如果我们对软件开发没有足够的了解,对编码对语言或者其他方面没有很好地掌握,又何谈软件架构呢。当然,技术的增长不光是学习来的,更多的是在项目、工程中所获得的经验,面对相同的问题时,就可以有着一整套解决办法去处理,更好更快的解决问题。往往要经过多年,年轻的工程师才能被打造成足够专业的,能够在项目中独当一面的能力者。
节目中的工程师在面对项目时,首先第一件事就是实地考察,实地了解房间的概况以及当前的情况,然后面对面了解户主的难处及希望。在工程师了解房屋情况的过程中,对于软件架构师来说,就是在做软件家开发最重要的一个环节——需求获取。需求有多重要?需求决定在软件开发阶段的方向,是满足涉众的唯一条件。举个例子,如果设计师在改造过程中没有获取户主的想法,而是以为的进行改造,结果或许华丽,但不一定能够满足户主。软件开发更是如此,如果连客户的要求都不知道,看么开发出的软件又有谁会使用呢。
作为一名软件架构师,首先就要把需求做到位,用敏锐的嗅觉,视觉找到“房子”中需要“改造”的地方,观察细节,还要注重联想。
需求分析完后,就要去分析怎么做。节目中的工程师用图纸用交流和自己的队友一起分析,一起商量各个部分的改造怎样的完成,然后安排给工作人员相应的任务,那么合格的软件架构师也要学会团队合作,要清楚每个人的能力,每个人所熟练的方向,学会使用文档编写的方式安排给团队每个人不同的工作。他们负责整个项目,负责整个系统的架构,他们要学会在高层对系统进行整体的分析建模,对各个部分的代码,技术,数据都有着抽象的设计。简单地说,普通的程序员只需要负责将任务中的“砖瓦”按要求搭建起来就行,而架构师则要对整个的“房屋建设”有着足够的了解。
解决问题的方法有千千万万种,那么怎么找到最适合的呢?节目中的工程师在解决“三角”问题时,有着不同的处理,有的改造为阳台,有的则隐藏起来储藏起了东西,这不仅是工程师的经验丰富所决定的,而是面对不同的问题,选择适合的解决办法。对于架构师来说,怎样在软件架构中找到处理“三角”的办法呢?在创建构架的过程中,要注重去实现这些质量属性:可用性、可修改性、性能、安全性、可测试性、易用性,满足某一方面或多个方面的质量属性会使创建的构架更加优质适合。
我认为,软件架构师从另一方面来说,其实就是在做对系统的设计,就是无论是系统的需求,还是系统的工作量,系统的实现方法,团队人员的安排等等方面都要考虑分析到的。