架构师的职责是什么?

甲壳虫1


进阶成为架构师是大多数java程序员们的梦想,架构师从广义上可分为软件架构师、系统架构师,软件架构师是程序员最容易突破、最可能进阶的一条职业发展路径,我这次主要分享软件架构师的相关知识点。

一、架构师的定义

架构师,是一个既需要掌控整体又要洞悉局部瓶颈,并依据具体的业务场景给出解决方案的团队领导型人物,他需要参与项目开发的全部过程,包括需求分析、架构设计、系统实现、集成、测试和部署各个阶段,负责在整个项目中对技术活动和技术说明进行指导和协调。

二、架构师的主要职责

1、确认需求与拆分系统

在项目开发过程中,架构师需要依据用户需求,将完整的系统拆分为子系统和组件,形成不同的逻辑层或服务,确定各层的接口、层与层相互之间的关系,对整个系统分层进行“纵向”分解,对同一逻辑层分块进行“横向”分解。

2、技术选型

通过对系统的一系列的分解,最终形成了软件的整体架构,依据整体架构需要进行技术选型。

3、制作技术规格说明

在整个研发过程中始终保持与开发人员保持沟通,以保证开发者依照原定的架构意图去实现各项功能。

三、架构师的综合能力

程序员从初级、中级、高级再到架构师,是一个不断经验积累的过程,除了技术实力以外,其它软实力也不容忽视。

备注:图表仅为抽样数据,不代表所有意见,供参考。

我们来细说下排名前三的架构师必备能力:设计能力、技术能力、沟通能力。

1、 设计能力

架构是架构师洞察内在结构、原则、规律与逻辑的过程,架构师要做到清晰理解系统、简洁描述,除此之外,一个架构师还必须具备极强的分析能力,要做到根据产品宗旨和目标,分析清楚产品定位、产品业务,再整合利用现有的技术领域,找出最佳方案,实现产品概念。

2、 技术能力

众所周知,架构师是团队中的技术权威,需要同时具备技术的深度和广度,至少精通1-2门技术,且技术广度的要求高于技术深度的要求,这样才能更加深入的理解架构相关工作原理,也可以拉近和技术团队的距离,并形成影响力。

3、 沟通能力

架构师参与项目开发的全过程,包括确认需求、系统分解、架构设计、技术选型、制定技术规格说明、系统实现、集成测试和部署各阶段,与相关部门、技术团队关于各个环节的工作沟通在所难免,这就决定了架构师需要具备较强的沟通能力。

以上,是架构师应具备的职责。以下,是程序员进阶成为架构师的系列专题资料,将关键词【架构】私信优知学院,即可秒领。


优知学院


在计算机工程中,计算机体系结构是描述计算机系统的功能,组织和实施的一组规则和方法。体系结构的一些定义将其定义为描述计算机的功能和编程模型,但不是特定的实现。在其他定义中,计算机体系结构涉及指令集体系结构设计,微体系结构设计,逻辑设计和实现。

第一个记录在案的计算机架构是Charles Babbage和Ada Lovelace之间的通信,描述了分析引擎。在1936年建立计算机Z1时,Konrad Zuse在他的未来项目的两个专利申请中描述了机器指令可以存储在用于数据的相同存储器中,即存储程序概念。另外两个重要的例子是:

· 约翰冯诺依曼1945年的论文“EDVAC报告初稿”描述了一个逻辑元素组织

· 图灵更详细的提议的自动计算引擎的电子计算器,也是1945年,并引用约翰冯诺伊曼的论文。

计算机文献中的“架构”一词可以追溯到1959年IBM主要研究中心机器组织部门的所有成员Lyle R. Johnson,Frederick P. Brooks,Jr.和Mohammad Usman Khan的工作。

计算机组织有助于优化基于性能的产品。例如,软件工程师需要知道处理器的处理能力。他们可能需要优化软件才能以最低的价格获得最高的性能。这可能需要对计算机组织进行非常详细的分析。例如,在SD卡中,设计人员可能需要安排该卡,以便尽可能快地处理大多数数据。

计算机组织还帮助为特定项目计划处理器的选择。多媒体项目可能需要非常快速的数据访问,而虚拟机可能需要快速中断。有时某些任务也需要额外的组件。例如,能够运行虚拟机的计算机需要虚拟内存硬件,以便不同虚拟计算机的内存可以保持分离。计算机的组织和功能也会影响功耗和处理器成本。


硅发布


架构师也可以分成两种:一种是从程序员一步一步成长后“进化”成为的架构师,一种是PPT架构师,当然,我们的奋斗目标肯定是要成为前者。


很多人有一种错误的认识,就是架构师的工作只是项目过程中的一个环节,架构设计完成之后,架构师的工作就完事儿了,这种认识是不对的。架构师的工作职责,应该会贯穿整个项目。


把控需求

程序开发的实质,就是把客户的需求翻译成代码,用程序功能满足客户的需求;所以大多数时候,架构师需要从需求阶段就介入的,架构需要和需求人员沟通需求,保证自己可以完整的理解和把握客户需求。


架构设计、技术选型

如果是一个新的项目,架构师需要对项目进行分解,形成项目架构,在此基础之上再完成技术选型。

例如,根据项目的需求,要把整个系统分解成多个子系统:一个对外提供接口调用,一个跑定时服务,还有一个专门监听MQ获取消息并进行处理;数据库用Mysql而不是Oracle,定时服务需要要用到zk或者Redis做分布式锁,对外的接口是Rest而不是WebService,这些都需要架构师来确定。

如果是一个老项目,架构师同样需要这次的需求做在什么地方,是在现有技术上就能实现,还是需要引入新的技术。


制定规范、把握方向、踩坑填坑

架构师是要跟随项目的整个流程,架构师就是项目的技术权威,他应该时刻与开发人员进行沟通,让开发人员理解架构意图,实现业务功能。


架构师不是一个指挥者,把系统设计好了就让程序员来干,有一些技术难点,都需要架构师冲在前面解决。而不是当项目遇到一个“坑”时,架构师是要“真刀真枪”的写代码的。

希望我的回答,能够帮助到你!

我会持续分享Java程序开发、架构设计、职业发展等方面的知识和见解,希望能得到你的关注今日头条【会点代码的大叔】,转载请注明出处。


会点代码的大叔


两个字“平衡”,并且不是两端,而是三端的平衡。哪三端?

  • 钱:让企业花更少的投入达到想要的结果。

  • 时间:让团队花更少的时间完成既定的工作。

  • 人:对人的把握,在选型时选择团队能hold住的技术。



了解作者更多,欢迎搜索微信公众号:跨界架构师

内容包括:架构设计丨分布式系统丨产品丨运营丨个人深度思考


跨界架构师


架构顾名思义就是框架结构,架构师是设计框架结构的人员,需要有统筹眼光看待问题,还要有很强的逻辑思路,对设计对象有全方面的了解和把握,并且为了让实际执行者能顺利完成满意可行的设计,需要架构师对设计对象的施行环境和施行方案切实可行,能满足使用者的需求,也就是要能够通过沟通找到设计者和使用者对于设计对象的要求和操作可行性,尽量减少因为沟通不对等造成的开发设计弯路,减少沟通成本。


分享到:


相關文章: