什么是架构?
简单来说,架构就是一个考查对象的内部结构,这个内部结构是以组件为视角来进行考虑的,架构的含义包括了组件以及组件之间的关系。另一方面,架构的含义还包括考查对象的一些内部关键机制。
架构设计
架构设计 vs 概要设计
架构师
架构师就是在其领域内能够全局把握的人,能够给出其负责范围内的总体设计,并能解决关键问题、指导其他人员落实设计。系统架构师是系统或产品线的设计责任人,是一个负责理解和管理并最终确认和评估非功能性系统需求(性能、安全、可用性、 可扩展性、可移植性等),给出开发规范,搭建系统实现的核心构架,对整个软件架构、关键构件、接口进行总体设计并澄清关键技术细节的高级技术人员。
架构师的前身一般是高级开发人员,通常具有以下特征:
–工作三五年,精通一两种编程语言;
–精通几个框架;
–能够搭建项目的代码框架,开发核心模块,组织共通类库,编写示例程序;
–能够解决一些开发过程中的难题;
–能够对下级程序员进行指导;
–能够负责一些中小模块的设计;
–知识和能力体系与其承担什么项目有很大相关性;
那么高级开发人员和架构师到底有哪些差距呢?
主要差距可以概括为四个方面:广度、深度、方法论、软技能。
架构师能力模型
1、理解架构与架构师职位
架构师应当对对架构师岗位有清晰的认识,对架构工作的内容有深刻的理解
2、对软件工程有较为深入的理解
架构设计阶段上接需求分析、下接概要设计,是整个软件工程中非常重要的一环,将决定整个系统实现的质 量,架构设计对后续所有工程环节都有影响。因此,作为架构师,必须对软件工程有整体了解,其产物才能 对后续工程起指导作用
3、掌握规范的架构设计方法论
架构设计是架构师的主要工作,其典型工作过程是以需求分析为输入,产出架构设计资料。在这个过程中, 架构师应当运用规范的架构设计方法论,按照组织要求产出标准的架构设计资料,而不是随意发挥,搞出一 些毫无章法的产物
4、掌握架构师必备知识和技能体系
具备广泛的知识面和必备技能,并有一定的深度,能够进行全局把握
5、掌握常见的架构模式
熟悉一些常见的架构模式,当遇到类似的问题时,可直接复用
6、拥有一些软技能
除了一些技术上和业务上的能力要求,架构师还需要与各种不同角色的人打交道,因此需要较好的沟通能力 等一些软技能
7、保持学习热情
技术不断在发展,业务也在不断的变化,架构师需要保持学习的热情,才能长久立于不败之地
架构师必备知识和技能体系
架构师周边协作关系
架构师必备技能
架构师的12项修炼:沟通协作、自我驱动、高效学习、良好心态、识别问题、抽象思维、认识深度、平衡取舍、业务能力、技术能力、想象力、架构方法论
沟通协作
• 具备优秀的口头、书面及表达技巧
• 优先的聆听者和观察者
• 传达和激发团队,共享架构,确保达成一致
• 个人品牌,值得信任
• 推动良好的团队协作,合作共赢
自我驱动
• 积极主动,承担职责以外的事情
• 持之以恒,长期保持
• 严格要求自己,不满足现状
高效学习
• 发现自身知识结构的优劣
• 形成自己的学习模式
• 目标导向,学习目标要明确
• 学习需要反复强化,不断实践运用
良好心态
• 开放心态,能够取长补短,要多与分歧者沟通
• 责任心,敢于决策,为决策结果负责
• 严于利己,宽以待人,积极向上
识别问题
• 识别问题以及问题的主体,把问题本身先搞清楚
• 发现问题永远比解决问题更加重要
• 可以通过利益者全面沟通、竞争对手分析等手段来识别问题
• 问题的优先级,可以用钱或者对业务的影响面来衡量
抽象思维
• 能够分解出共性和个性,提炼出共性
• 需求概念化(由实到虚总结升华)并归类(核心/非核心等),然后分而治之
• 抽象的前提是对个性的深入理解
认识深度
• 深层次挖掘(由虚到实)问题的本质
• 技术的本质
• 业务的本质
• 利益相关者的本质
平衡取舍
• 利益者之间利益程度的的平衡取舍
• 确保架构在现有资源约束下最合理,最大化经济效益
业务能力
• 对于所在业务和领域要有较深的理解
• 能够对业务需求进行分解和未来判断
• 好的架构师也是好的产品经理
技术能力
• 具备编码/设计/攻关等能力,丰富项目经验
• 技术深度,某一个领域的技术专家
• 技术广度,技术知识面比较广
• 技术高度,技术前瞻和判断力,技术支撑和引导业务
想象力
• 技术创新,以业务为中心的方式识别、评估和注入颠覆性新技术的能力
• 战略性规划,能够为实现潜在目标设计战略路线图并推动落地
• 企业执行,企业精神、承担逾期风险、交付成果
架构方法论
• 多学习掌握业内/公司成熟的方法论,并且实践体会
• 自己结合项目循环总结,形成自身的架构方法论体系