zoukankan      html  css  js  c++  java
  • 从零开始学架构(一):架构师成长路径

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

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

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

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

    三、架构师职责和工作内容
    架构师在项目中起到承上启下的作用。建议参与到系统建设过程的全流程中。
    架构师的职责如下:
    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视图

  • 相关阅读:
    BZOJ 3744 Gty的妹子序列
    BZOJ 3872 Ant colony
    BZOJ 1087 互不侵犯
    BZOJ 1070 修车
    BZOJ 2654 tree
    BZOJ 3243 向量内积
    1003 NOIP 模拟赛Day2 城市建设
    CF865D Buy Low Sell High
    CF444A DZY Loves Physics
    Luogu 4310 绝世好题
  • 原文地址:https://www.cnblogs.com/itfly8/p/6107068.html
Copyright © 2011-2022 走看看