• 从零开始学架构(一):架构师成长路径


    内容摘要
    从架构的本质,软件工程,架构师职责,成长路径等方面,介绍什么是架构,架构流程以及架构师职责和成长规划。

    本篇主题
    一、什么是架构
    二、项目中的角色
    三、架构师职责和工作内容
    四、架构工作流
    五、架构师成长路径
    六、架构能力模型
    七、扩展知识
    八、本章总结

    一、什么是架构
    架构是系统的蓝图,描述了系统的结构和关键决策。包含系统的功能和非功能性需求,如何实现的,系统与子系统是如何划分的,系统之间如何通信的,系统功能如何设计的和交互的。
    包含重要的架构决策,系统组成,功能设计,技术选型,成本分析等
    架构的基础是设计满足客户需求的系统,其中包含功能性,非功能性以及质量和约束。

    二、项目中的角色
    客户:为系统开发买单的人,关注系统的业务价值。
    用户:使用系统的人,关注是否满足功能需求,提升效率和易用性等。
    项目经理:负责项目管理,组织,协调,沟通等管理工作。
    需求分析师:负责需求相关工作,比如业务分析,需求获取,需求调研,需求管理,编写需求规格说明书等
    系统架构师:负责整体的系统分析,架构规划,技术选型,核心功能需求和非功能性需求的架构设计。
    系统设计师:在架构模型的基础上,进行核心功能和非核心功能的详细设计。
    开发人员:根据架构设计和详细设计完成编码和单元测试,达到提测标准。
    测试人员:验证开发功能是否满足需求,比如进行功能测试,集成测试,性能测试,压力测试,安全性测试,回归测试等。
    运维人员:负责部署环境搭建,部署和日常维护。

    三、架构师职责和工作内容
    架构师在项目中起到承上启下的作用。建议参与到系统建设过程的全流程中。
    架构师的职责如下:
    1)支持售前或需求阶段,提供概念架构或技术咨询;
    2)系统分析,架构设计,技术选型,产出架构解决方案;
    3)指导项目团队成员,按照架构设计完成,开发,测试和发布;
    4)开发或设计开发框架,制定编码/编程规范,设计架构原型,验证架构原型;
    5)组织技术或架构培训,把握技术/架构方向;
    6)方案平衡(实现与成本),干系人沟通,技术风险管理,技术领袖等;
    按照项目阶段,简述工作内容,如下:
    售前阶段,给予商务支持,提供系统解决方案和架构咨询。
    需求阶段,与需求分析师一起,参与需求沟通,协助完成技术/业务咨询和需求模型。(好的架构师同时是业务专家)
    架构阶段:进行系统分析和设计,进行系统抽象,设计系统模型,进行技术原型,开发架构原型等
    设计阶段:指导设计人员完成详细设计;
    开发阶段:指导开发人员按设计实现,解决技术难题。
    测试阶段:指导测试人员测试工作,特别是非功能需求的测试。
    发布阶段:指导部署人员按照部署架构进行部署,及时解答或反馈试运行期间的架构问题。
    其他工作:技术选型,人员培训,技术指导

    四、架构工作流程
    架构工作流程是一个系统如何从需求,架构到实现的过程和方法。
    良好的架构,需要架构师除具备技术和架构设计能力外,还要有良好(丰富)的业务知识。从软件工程角度,架构师除参与系统的架构设计阶段外,还需要参与需求分析阶段,开发,测试,发布,试运行阶段。
    本节内容,从需求模型和解决方案模型,介绍架构工作的流程。
    主要包括需求模型,架构模型,设计模型,解决方案模型,四个方面。
    需求模型:参与需求分析和需求模型设计,提供技术建议或引导需求定义,提供解决方案指导。
    主要参与者:需求分析师,业务分析师
    辅助参与者:架构师,设计师
    架构模型:根据需求模型,产出架构模型。
    1)选择架构对象:关键流程,核心用例和非功能需求;
    2)流程建模:梳理需求关键流程,分析业务对象,子系统,模块,设计出系统的交互流程;
    3)领域建模:梳理业务流程中涉及的对象,子系统模块,划分子系统,模块,核心对象,通信机制,事务模型等
    4)输出总体架构:根据领域模型和业务流程模型,结合组件架构,部署架构,通信机制,输出系统体架构方案。
    5)架构验证:验证架构可用性,可以用评审或架构原型的方式,进行评审或实际测试验证。
    主要参与者:架构师,架构委员会
    辅助参与者:系统设计师,开发人员,测试人员
    设计模型:在架构师指导下,根据系统架构,完成各子系统,模块,功能,接口的概要或详细设计。
    主要参与者:系统设计师,高级工程师
    辅助参与者:架构师
    解决方案模型:架构模型,设计模型,架构原型等统一组成架构解决方案。
    一个完整的系统架构应包括:整体架构,子系统,模块,功能概要或详细设计,通信机制,事务机制,接口定义(内部,外部),领域模型,业务流程,数据库设计,中间件,组件架构,部署架构等
    系统架构解决方案标准
    1)满足系统的功能和非功能性需求;
    2)符合项目要求的规模和成本;
    3)满足开发,测试和发布要求;

    五、架构师成长路径
    本质:学习,实践,总结,个人进步和能力成长的过程。
    开发工程师:主要在指导下进行开发或独立进行简单功能开发。本阶段的核心是学好技术本身,多做一些项目,勤奋,思考,总结。这个时期就是学习,实践让自己的技能水平不断提升。空闲时间可以学一些设计模式,软件工程方面的知识,用于拓展视野和为高级工程师做准备。
    当自己的技术能力,项目经验,编码水平,设计能力达到一定程度后,就可以升级为高级工程师。
    一句话:写好代码,积累经验。
    高级工程师:可以独立或带领工程师负责某模块/系统的设计和开发,在技术和项目上有一定的经验。本阶段可以根据自己的职业目标选择深入技术或学习管理知识。
    学习的方向:技术深度,技术广度,分布式,架构知识和管理知识等。
    一句话:技术深入全面,思考完善的系统设计。
    系统架构师(技术专家):在某一方面技术达到一定深度,在某些方面有自己的见解和独立解决问题的能力。可带领一个技术团队进行开发和管理工作。可完成需求分析,系统设计,技术选型,架构设计,开发管理等工作。
    一句话:技术专家,架构实践和管理能力。
    资深架构师:具备丰富的大型项目,多种项目的需求分析,系统架构,系统设计,项目管理等经验。在技术的广度和深度方面,业务知识方面具备专业的建树。
    一句话:大型项目,领域专家和解决方案。
    技术总监,CTO,技术副总裁:负责公司整体技术规划,技术管理,把握技术方向,精通业务和技术,具备良好的沟通,组织和协调能力。
    一句话:方向,流程,制度,规范,管理。
    以上是个人对职位和能力的总结,供参考。

    六、架构师能力模型
    从宏观角度和专业领域,简单介绍架构师的能力模型。
    6.1 宏观角度
    深度:在某一项或多项技术领域有一定深度,掌握技术的特点,适应场景和缺点
    广度:多项技术,掌握非技术知识,比如需求,项目,管理等
    6.2 专业领域
    技术:精通一方面或多方面技术,有自己的见解和实践经验;
    业务:精通负责领域的业务知识,达到或基本达到领域专家级别;
    架构:精通需求分析,系统架构,设计模型,架构模型,具备丰富的架构经验;
    管理:精通技术管理,项目管理和通用管理知识和能力;

    七、架构扩展知识
    以下内容可自行脑补。
    1. 软件工程
    2. 需求工程
    3. 项目管理
    4. 干系人,涉众

    八、本章总结
    从架构的本质,项目角色,架构师职责,软件工程,成长路径等方面,介绍了什么是架构,架构流程以及架构师职责,成长路径和能力模型。
    本篇是根据学到的知识,工作经验和个人思考 ,进行的总结,供学习参考。不足之处,欢迎大家一起交流。
    预告: 第二篇 架构知识领域
    2.1架构方法论:面向过程,面向对象,面向方面,面向服务
    2.2系统划分:系统,子系统,模块,功能,接口
    2.3架构基本原则:通用专用,职责分离等
    2.4模式:设计模式,架构模式,基础设施模式
    2.5架构视图:4+1视图

  • 相关阅读:
    net.sf.json.JSONObject maven下载到了但是java后台一直用不了问题
    创建springboot2.1项目运行报错
    百度地图,加载顺序异步问题,用定时器解决
    大话设计模式--(1)简单工厂模式
    H5页面单点登录跳回首页 http url参数转义
    H5页面,百度地图点击事件
    批量给数据两边加上双引号和逗号
    java基础源码 (6)--ArrayListt类
    前端 移动端H5页面 DEBUG
    H5页面,华为手机打开不加载JS的问题
  • 原文地址:https://www.cnblogs.com/huilixieqi/p/6497084.html
Copyright © 2020-2023  润新知