架构方法
什么是架构师
架构师是一个角色,而不是一个职位。只要从事架构设计工作,对系统架构负责,便可以称为架构师
架构师的职责
编写软件设计文档,指导项目开发
划分系统模块,定义边界
开发编程框架及通用公共组件
重构系统
技术选型
性能调优
沟通管理
架构师的能力要求
编程能力,在某些技术领域比较资深
熟悉常见基础软件、编程框架、架构模式
量化能力、权衡取舍
抽象建模
业务理解
文档编写方法论
沟通表达能力
如何成为架构师
跳槽
主动寻求进行架构设计的机会
什么是架构
软件架构是有关软件整体结构与组件的抽象描述,用于指导软件系统各方面的设计
指导代码编写、服务部署,最终交付出有价值的软件服务产品。
架构由元素与元素之间的关系组成,每个系统都有架构,系统有多个相关方,会对架构由不同的关注点
架构可以用架构文档来表达,对不同的相关方关注点,可以有不同的架构视图
如何做软件架构设计
如何展现一个架构
抽象建模
输出用统一建模语言表达的图形及文档
架构图及文档要点
明确目标读者,是给谁看的,他的关注点是什么
保留少数、重要的图
避免过多的内容及实现细节
4+1架构视图
表达完整的架构需要完整的视图集合
逻辑视图:系统的功能元素以及交互,指导开发组织划分
开发视图:系统如何开发实现,指导开发设计及实现
物理视图:系统逻辑组件与物理设备的部署配置映射,指导发布部署
过程视图:系统运行时的情况(线程、队列、资源消耗等),指导运维及性能管控
场景:最典型或最有风险的场景及非功能性需求,阐明架构的广度和约束
UML
统一建模语言:以图形的方式描述软件的概念
静态图:描述系统、组件、类之间不变的逻辑关系
Use Case Diagrams:描述系统的功能需求,包括参与者、用例及用例之间的关系
Class Diagrams:描述类信息,包含对象属性、操作,对象之间的关系
属性:类的特征、需要处理什么数据
操作:类能做什么工作,对属性数据的具体处理方法
动态图:描述执行流程或实体状态变化的过程
Sequence Diagrams:对象之间的交互关系及行为次序,着重体现对象间消息传递的时间顺序
Activity Diagrams:操作实现过程中完成的步骤工作,执行流程
State Diagrams:系统的状态及转换方式
实现模型:描述系统实现时的一些特性,包括代码的静态结构及运行时的实现结构
Component Diagrams:代码的逻辑结构,系统中存在的构件及之间的依赖关系
Deployment Diagrams:系统的运行时结构,软硬件部署配置结构,节点之间的通信类型
对于软件开发过程中的不同阶段可以有针对性地选择
需求分析:用例图,时序图,活动图,状态图
概要设计:部署图,组件图,时序图,活动图
详细设计:类图,时序图,活动图,状态图
UML等工具的细节不是重点,重点是在进行架构设计时,什么时候用,如何用好这些工具
评论