课堂作业01——架构师的职责及工作流程
架构师的职责及工作流程
在某种意义上,系统架构师的工作与建筑师有异曲同工之妙。
建筑师是负责设计建筑物平面图的职业人士,通过与工程投资方(即通常所说的甲方)和施工方的合作,在技术、经济、功能和造型上实现建筑物的营造。而系统架构师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点,最终实现完整系统构架的技术人员。
工作中,建筑师需要兼备艺术家的审美眼光和工程师的力学知识,作品需要从力学角度计算,选取合适的工程材料才能实现,如果过于超出现实的材料能力限制(例如市场供应、价格等),则无法实现为真实的建筑。正如系统架构师需要拥有宽广的知识面,知道如何让软件高效的运行,既需要掌控整体又需要了解局部瓶颈并依据具体的业务场景给出解决方案。一个架构师工作的好坏决定了整个软件开发项目的成败。
架构师必须对开发技术非常了解,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单并且需要有良好的组织管理能力。系统架构师主要着眼于系统的“技术实现”。因此他/她应该对常见应用场景能马上给出最恰当的解决方案。
一个架构师的具体职责是:
1 负责公司系统的架构设计、研发工作;
确定需求:在项目开发过程中,架构师在需求规格说明书完成后介入,需求规格说明书必须得到架构师的认可。架构师需要和分析人员反复交流,以保证自己完整并准确地理解用户需求。
系统分解:依据用户需求,架构师将系统整体分解为更小的子系统和组件,从而形成不同的逻辑层或服务。随后,架构师会确定各层的接口,层与层相互之间的关系。架构师不仅要对整个系统分层,进行“纵向”分解,还要对同一逻辑层分块,进行“横向”分解。
技术选型:架构师通过对系统的一系列的分解,最终形成了软件的整体架构。技术选择主要取决于软件架构。
制定技术规格说明:架构师在项目开发过程中,是技术权威。他需要协调所有的开发人员,与开发人员一直保持沟通,始终保证开发者依照它的架构意图去实现各项功能。也需要与项目经理、需求分析员,甚至与最终用户保持沟通。
2 承担从业务向技术转换的桥梁作用;
3 协助项目经理制定项目计划和控制项目进度;
4 辅助并指导 SA 开展设计工作;
5 组织培训技术研究和攻关工作;
6 管理技术支撑团队并给项目、产品开发实施团队提供技术保障;
7 对系统的重用、扩展、安全、性能、伸缩性、简洁等做系统级的把握。
一个系统架构师大致的工作流程是:
市场前景评估->风险评估->解决疑难问题->对可用性、可移植性、安全性、可靠性、执行效率、市场收益、项目期限等方面进行权衡->解决信息孤岛问题,逆向分析提高组件通用性,权衡组件粒度等。
项目经理管理项目的资源、时间进度和花费。以电影为例,项目经理就是制片人(他要确定工作被完成了),而构架师是导演(他需要确定工作被正确的完成)。构架师和项目经理是公众人物,在一个团队中,他们是整个项目所涉及的所有人员的联系枢纽。构架师应该为建立软件构架争取投资,并且要明确建立软件构架能给组织带来的价值。
构架师还要把团队组织在构架周围,并且要积极地投入到计划活动上,因为要把构架转化成为完成任务的先后顺序,这样才能及时地确定在什么位置需要什么技术。根据构架师所拥有的能力,他可以同时参与其他团队的工作。构架师需要根据具体的实例情况来做领导决定,并且在决定过程中要展现出足够的自信。一个成功的构架师是以人为导向的,并且像一个教练一样给他的团队安排工作时间。这对于小组的成员来说是有好处的,他们可以及时得到帮助。这是整个团队的一个巨大财富。
构架师还要把精力放在切实工作的交付上,他是技术方面的推进力量。构架师需要做决定(经常需要在压力下做决定),并且要保证这些决定是经过成员之间的交流的,并且确保它能够执行。
架构师对产品和技术的选型仅仅限于评估,没有决定权,最终的决定权归项目经理。架构师提出的技术方案为项目经理提供了重要的参考信息,项目经理会从项目预算、人力资源、时间进度等实际情况进行权衡,最终进行确认。