总结
架构师职责
架构师能力
什么是软件架构?
什么是软件架构,了解其核心概念——是有关软件整体结构与组件的抽象描述,用于指导大型软件系统的各个方面设计。
软件架构={元素,形式,关系/约束}
什么是架构师?
架构师是做系统架构,对系统架构负责的那个人。
架构师是一顶帽子,而不是一把椅子;架构师是一个角色而不是一个职位。
如何做软件架构?
-
设计系统架构
-
编写架构设计文档
-
开发编程框架
-
重构软件代码
-
进行技术选型、解决技术应用中的问题
-
优化系统性能
-
模块划分与微服务架构重构
-
保障系统安全和高可用
-
大数据应用
-
技术创新
-
沟通管理
4+1视图模型
用例视图(Use Cases View),最初称为场景视图,关注最终用户需求,为整个技术架构的上下文环境.通常用UML用例图和活动图描述。
逻辑视图(Logical view),主要是整个系统的抽象结构表述,关注系统提供最终用户的功能,不涉及具体的编译即输出和部署,通常在UML中用类图,交互图,时序图来表述,类似与我们采用OOA的对象模型。
开发视图(Development View),描述软件在开发环境下的静态组织,从程序实现人员的角度透视系统,也叫做实现视图(implementation view)。开发视图关注程序包,不仅包括要编写的源程序,还包括可以直接使用的第三方SDK和现成框架、类库,以及开发的系统将运行于其上的系统软件或中间件, 在UML中用组件图,包图来表述。开发视图和逻辑视图之间可能存在一定的映射关系:比如逻辑层一般会映射到多个程序包等。
处理视图(Process view),处理视图关注系统动态运行时,主要是进程以及相关的并发、同步、通信等问题。处理视图和开发视图的关系:开发视图一般偏重程序包在编译时期的静态依赖关系,而这些程序运行起来之后会表现为对象、线程、进程,处理视图比较关注的正是这些运行时单元的交互问题,在UML中通常用活动图表述。
物理视图(Physical view ),物理视图通常也叫做部署视图(deploymentview),是从系统工程师解读系统,关注软件的物流拓扑结,以及如何部署机器和网络来配合软件系统的可靠性、可伸缩性等要求。物理视图和处理视图的关系:处理视图特别关注目标程序的动态执行情况,而物理视图重视目标程序的静态位置问题;物理视图是综合考虑软件系统和整个IT系统相互影响的架构视图。
什么是模型?
为什么要建造模型?
UML建模
需求分析:用例图(功能场景) 活动图(关键业务流程) 时序图(系统与外部系统调用关系) 状态图(关键业务状态变迁)。
概要设计:部署图、组件图、时序图(组件、子系统)、活动图(组件、子系统)。
详细设计:类图、类时序图、状态图、活动图(复杂方法)。
总结,通常我们说的系统架构应包括业务架构、数据架构、应用架构、技术架构、部署架构,从这几部分着手做细做精做透,有深度才有宽度;架构师做事的一般套路:定义问题->确定架构->提出方案->落地拿结果。这四步中,越是前面的步骤,越是重要,越是抽象,也越是困难,越能体现架构师的功力。架构的本质是管理复杂性,架构师应具备对复杂事物的抽象、分层、分治和演化思维;兼具技术的广度(多领域知识)和深度(技术前瞻);兼具思维的高度(抽象思维)和深度(问题到本质);兼具感性(沟通)和理性(平衡)。
作业
题目:
食堂就餐卡系统设计
-
系统中每个消费者都有一张卡,在管理中心注册缴费,卡内记着消费者的身份、余额。
-
使用时将卡插入收款机则显示卡上余额,服务员按收款机上数字键,收款机自动计算并显示消费额及余额。
-
管理中心的管理员监视每一笔消费,可打印出消费情况的相关统计数据。
用例图
组件图
组件时序图(只画了部分)
部署图