从零开始学架构(⼀):架构师成长路径(转)
内容摘要
从架构的本质,软件⼯程,架构师职责,成长路径等⽅⾯,介绍什么是架构,架构流程以及架构师职责和成长规划。
本篇主题
⼀、什么是架构
⼆、项⽬中的⾓⾊
三、架构师职责和⼯作内容
四、架构⼯作流
五、架构师成长路径
六、架构能⼒模型
七、扩展知识
⼋、本章总结
⼀、什么是架构
架构是系统的蓝图,描述了系统的结构和关键决策。包含系统的功能和⾮功能性需求,如何实现的,系统与⼦系统是如何划分的,系统之间如何通信的,系统功能如何设计的和交互的。
包含重要的架构决策,系统组成,功能设计,技术选型,成本分析等
架构的基础是设计满⾜客户需求的系统,其中包含功能性,⾮功能性以及质量和约束。
⼆、项⽬中的⾓⾊
客户:为系统开发买单的⼈,关注系统的业务价值。
⽤户:使⽤系统的⼈,关注是否满⾜功能需求,提升效率和易⽤性等。
项⽬经理:负责项⽬管理,组织,协调,沟通等管理⼯作。
需求分析师:负责需求相关⼯作,⽐如业务分析,需求获取,需求调研,需求管理,编写需求规格说明书等
系统架构师:负责整体的系统分析,架构规划,技术选型,核⼼功能需求和⾮功能性需求的架构设计。
系统设计师:在架构模型的基础上,进⾏核⼼功能和⾮核⼼功能的详细设计。
开发⼈员:根据架构设计和详细设计完成编码和单元测试,达到提测标准。
测试⼈员:验证开发功能是否满⾜需求,⽐如进⾏功能测试,集成测试,性能测试,压⼒测试,安全性测试,回归测试等。
运维⼈员:负责部署环境搭建,部署和⽇常维护。
三、架构师职责和⼯作内容
架构师在项⽬中起到承上启下的作⽤。建议参与到系统建设过程的全流程中。
架构师的职责如下:
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视图
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论