首页 > 代码库 > 作业一

作业一

一个软件架构师的工作过程

     今天通过观看王平仲设计师在《梦想改造家》节目中拆分三角空间将畸形纸片屋变空中花园的视频,老师给我们留了一个思考问题,题目大概是通过一个建筑设计师的设计过程,说说一个软件架构师的工作过程。既然要说一个软件架构师的工作过程,首先我们应该搞清楚什么是软件架构师?其实,软件架构师是软件行业中的一种新兴职业,他的工作职责就是在一个软件项目开发的过程中,通过了解客户的各种需求,来将这些需求转换为规范的开发计划和文本文档,并制定出该项目的总体架构,最后指导整个开发团队完成这个计划。通俗的说,主导系统全局得分析设计和实施、负责软件构架和关键技术决策的人员就是软件架构师。

     《梦想改造家》节目中的王平仲设计师在接到节目组的任务之后,他首先做的是去拜访冯家,也就是进行实地考察,以便充分理解需求并设计出一个完美改造方案来满足委托人的需求。没错,对于软件架构师来说也是如此,当他们拿到项目之后,第一步就是去客户那里了解需求,很重要的一点是了解他们需要什么非功能性需求或系统质量。这是因为大多数非功能性需求本质上是技术层面的,而且经常对软件架构产生很大的影响,所以理解非功能性要求是架构师工作过程中非常重要的一个部分。

     王平仲设计师在拜访完冯家之后,回到自己的工作室就开始思考如何解决将仅有25平方米的“纸片屋”的很多根本无法利用的空间都能利用起来,收纳、采光、通风、动线等等问题,初步设计几个改造方案。同理,软件架构师在充分理解客户的非功能性需求之后,下一步就需要开始思考如何去解决这些需求并定义它的架构。其实,架构定义过程既是让软件架构师想清楚怎么在兼顾客户需求和条件限制的情况下把问题解决好,也是将结构,方针,原则和领导力引入软件项目的技术层面,定义架构是软件架构师的工作工程中至关重要的一步。

      王平仲设计师在设计这个三角形户型时给出了很多改造方案,但是他需要反复思考这些方案的好处与弊端,最终选出最合适的改造方案。这与软件架构师工作过程的技术选型有异曲同工之妙,软件架构师需要综合考虑成本、许可、供应商关系、技术策略、兼容性、协作性、支持、部署、升级的政策以及最终用户环境等各方面。技术选型是彻头彻尾的风险管理,复杂性或不确定性太高的时候要减轻风险,当有机会或利益的时候要引入风险。架构评估是软件架构师工作过程中必不可少的一步,软件架构师需要考虑该架构是否能满足非功能性需求,而且为其他部分的代码提供必要的基础,并为解决和存在的业务问题提供足够的平台。

      软件架构师工作过程的最后一步是设计、开发和测试。其实前面讲述的那些工作已经是系统或项目的设计部分了,开发的过程就是写代码的过程,很多公司有一些政策来阻止软件架构师从事写代码,因为公司觉得让软件架构师去做那些廉价的工作太贵了,这显然是个错误的态度。虽然作为一个软件架构师并不需要每天都写代码,但是写代码是每一个从事软件行业人员的基本功,并且开发的确意味着软件架构师一直在参与项目,而且积极帮助打造和交付它。测试是软件开发过程中的一个重要组成部分,是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件产品中所存在的各种问题——与用户需求、预先定义的不一致性。检查软件产品的bug。写成测试报告,交于开发人员修改。由此可见,软件架构师工作过程的最后一步设计、开发和测试也是十分重要的。

      简单地说,软件架构师的工作过程是确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的过程。软件架构师的主要任务是从事更高层次的开发构架工作,他必须对开发技术非常了解,并且需要有良好的组织管理能力。可以这样说,一个软件架构师工作的好坏决定了整个软件开发项目的成败。

作业一