总结

什么是软件架构?

什么是架构师?

如何做软件架构?

4+1视图模型

什么是模型?

为什么要建造模型?

UML建模

作业


总结

架构师职责

架构师能力

什么是软件架构?



什么是软件架构,了解其核心概念——是有关软件整体结构与组件的抽象描述,用于指导大型软件系统的各个方面设计。

软件架构={元素,形式,关系/约束}

什么是架构师?

架构师是做系统架构,对系统架构负责的那个人。

架构师是一顶帽子,而不是一把椅子;架构师是一个角色而不是一个职位。

如何做软件架构?

  • 设计系统架构

  • 编写架构设计文档

  • 开发编程框架

  • 重构软件代码

  • 进行技术选型、解决技术应用中的问题

  • 优化系统性能

  • 模块划分与微服务架构重构

  • 保障系统安全和高可用

  • 大数据应用

  • 技术创新

  • 沟通管理

4+1视图模型



用例视图(Use Cases View,最初称为场景视图,关注最终用户需求,为整个技术架构的上下文环境.通常用UML用例图和活动图描述。

逻辑视图(Logical view,主要是整个系统的抽象结构表述,关注系统提供最终用户的功能,不涉及具体的编译即输出和部署,通常在UML中用类图,交互图,时序图来表述,类似与我们采用OOA的对象模型。

开发视图(Development View),描述软件在开发环境下的静态组织,从程序实现人员的角度透视系统,也叫做实现视图(implementation view)。开发视图关注程序包,不仅包括要编写的源程序,还包括可以直接使用的第三方SDK和现成框架、类库,以及开发的系统将运行于其上的系统软件或中间件UML中用组件图,包图来表述。开发视图和逻辑视图之间可能存在一定的映射关系:比如逻辑层一般会映射到多个程序包等。

处理视图(Process view,处理视图关注系统动态运行时,主要是进程以及相关的并发、同步、通信等问题。处理视图和开发视图的关系:开发视图一般偏重程序包在编译时期的静态依赖关系,而这些程序运行起来之后会表现为对象、线程、进程,处理视图比较关注的正是这些运行时单元的交互问题,在UML中通常用活动图表述。

物理视图(Physical view ,物理视图通常也叫做部署视图(deploymentview),是从系统工程师解读系统,关注软件的物流拓扑结,以及如何部署机器和网络来配合软件系统的可靠性、可伸缩性等要求。物理视图和处理视图的关系:处理视图特别关注目标程序的动态执行情况,而物理视图重视目标程序的静态位置问题;物理视图是综合考虑软件系统和整个IT系统相互影响的架构视图。



什么是模型?



为什么要建造模型?



UML建模

需求分析:用例图(功能场景) 活动图(关键业务流程) 时序图(系统与外部系统调用关系) 状态图(关键业务状态变迁)。

概要设计:部署图、组件图、时序图(组件、子系统)、活动图(组件、子系统)。

详细设计:类图、类时序图、状态图、活动图(复杂方法)。



总结,通常我们说的系统架构应包括业务架构、数据架构、应用架构、技术架构、部署架构,从这几部分着手做细做精做透,有深度才有宽度;架构师做事的一般套路:定义问题->确定架构->提出方案->落地拿结果。这四步中,越是前面的步骤,越是重要,越是抽象,也越是困难,越能体现架构师的功力。架构的本质是管理复杂性,架构师应具备对复杂事物的抽象、分层、分治和演化思维;兼具技术的广度(多领域知识)和深度(技术前瞻);兼具思维的高度(抽象思维)和深度(问题到本质);兼具感性(沟通)和理性(平衡)。

作业

题目:

食堂就餐卡系统设计

  • 系统中每个消费者都有一张卡,在管理中心注册缴费,卡内记着消费者的身份、余额。

  • 使用时将卡插入收款机则显示卡上余额,服务员按收款机上数字键,收款机自动计算并显示消费额及余额。

  • 管理中心的管理员监视每一笔消费,可打印出消费情况的相关统计数据。



用例图



组件图



组件时序图(只画了部分)



部署图



李智慧 - 架构师训练营 第一周相关推荐

  1. 架构师的第一步:学习两种抽象视角(Abstraction View)

    [ IT史上最完整.最经典的软件框架开发技术宝典 (上百篇经典文章&eBooks) ] ee                                                   ...

  2. .NET 云原生架构师训练营(设计原则设计模式)--学习笔记

    ▲ 点击上方"DotNet NB"关注公众号 回复"1"获取开发者路线图 学习分享 丨作者 / 郑 子 铭 这是DotNet NB 公众号的第180篇原创文章 ...

  3. .NET 云原生架构师训练营(系统架构)--学习笔记

    ▲ 点击上方"DotNet NB"关注公众号 回复"1"获取开发者路线图 学习分享 丨作者 / 郑 子 铭 这是DotNet NB 公众号的第176篇原创文章 ...

  4. .NET 云原生架构师训练营(模块二 基础巩固 安全)--学习笔记

    2.8 安全 认证 VS 授权 ASP .NET Core 认证授权中间件 认证 JWT 认证 授权 认证 VS 授权 认证是一个识别用户是谁的过程 授权是一个决定用户可以干什么的过程 401 Una ...

  5. .NET 云原生架构师训练营(模块二 基础巩固 REST RESTful)--学习笔记

    2.3.1 Web API -- REST && RESTful 什么是 REST,什么是 RESTful RESTful API 设计 RESTful 成熟度模型 什么是 REST, ...

  6. .NET 云原生架构师训练营(模块二 基础巩固 配置)--学习笔记

    2.2.3 核心模块--配置 IConfiguration Options ASP.NET Core 中的配置:https://docs.microsoft.com/zh-cn/aspnet/core ...

  7. .NET 云原生架构师训练营(模块二 基础巩固 日志)--学习笔记

    2.2.2 核心模块--日志 ILogger 的使用 日志的 ID 日志的分类 日志的级别 LoggerProvider 日志的最佳实践 .NET Core 和 ASP.NET Core 中的日志记录 ...

  8. .NET 云原生架构师训练营(模块二 基础巩固 依赖注入)--学习笔记

    2.2.1 核心模块--依赖注入 什么是依赖注入 .NET Core DI 生命周期 服务设计 服务范围检查 ASP.NET Core 依赖注入:https://docs.microsoft.com/ ...

  9. .NET 云原生架构师训练营(模块二 基础巩固 引入)--学习笔记

    2.1 引入 http协议 web server && web application framework .net 与 .net core asp .net core web api ...

最新文章

  1. 怎样才算熟悉python-怎么样才算是精通 Python?
  2. Rnotebook中用python画图
  3. 用DriverStudio开发USB驱动程序
  4. Oracle 子查询
  5. [pytorch] 通过一个例子分析torch.matmul矩阵与向量相乘的维度
  6. 一位非常要好的朋友,零基础转行 Python!
  7. [转]半角全角互转函数[JS版 VBS版]
  8. python中return和printf的区别_Python格式化输出:%s和format()用法比较
  9. 【HNOI 2016】序列
  10. C# 实现简易的串口监视上位机功能附源码下载
  11. Java基础视频教程(最适合初学者入门)
  12. 绕过cdn探测真实ip方法大全
  13. 一文纵览无监督学习研究现状:从自编码器到生成对抗网络
  14. 苹果ios9.2 html白屏,苹果游戏中心白屏怎么办 苹果游戏中心白屏解决方法【详解】...
  15. android2.1操作系统,电脑安卓操作系统
  16. html为图片设置边框
  17. 【SSE-HARD】
  18. 网格员计算机应用基础知识,计算机应用基础(第3版)周南岳(win7office10)期末复习及答案.doc...
  19. 手机计算机游戏攻略,迫击炮计算器手机版 | 手游网游页游攻略大全
  20. CMAC(GBT 15852.1)和OMAC(RFC4493/NIST SP800-38B)的java实现和测试

热门文章

  1. 谭浩强C++课后习题13——整数转化为字符串,求i平方和
  2. WPS如何批量删除工作表
  3. unity鼠标点击显示粒子特效
  4. transform a 3d plane to xy-plane
  5. Qt上位机软件串口通讯
  6. 2.4.2 算术逻辑单元的功能和结构(改进)
  7. 解决Mac中微信\QQ无法截图的问题
  8. EXCEL VBA创建sheet/工作簿
  9. 写在初七,回味下过年的意义
  10. 创建更好的移动Demo:工具篇