前言
大家好,我是小郭,最近 软件架构设计-程序员向架构师转型 这本书做一点读书笔记。
软件行业的人才结构是金字塔,我们的目标就是向塔尖走去,从程序员到技术经理或者程序员到架构
师,都是我们职业路上所追求的。
书籍
【软件架构设计-程序员向架构师转型】
什么是架构?
一千个观众眼中有一千个哈姆雷特,所以我们每个人对架构的认识也是不同的。
下面我们从四个方面入手了解架构的基础
- 软件架构的概念
- 概念思想的解析
- 概念架构设计是什么
- 架构设计视图
软件架构的概念
架构分为两个派系,但是他们之间是相辅相成的
- 组成派:计算组件及组件之间的交互,完成更高层次的计算
- 计算组件:细分为处理组件、数据组件、连接组件
- 组件:子系统、框架、模块、类
- 数据加工的处理元素、被加工信息的数据元素、用于把架构的不同部分组成在一起的连接元素
- 决策派:在一些重要方面所做出的决策的集合
- 不仅仅注重软件本身的结构和行为,还注重功能性、性能、弹性、经济和技术的限制及权衡
- 以人的决策为描述对象,不仅关注系统本身,更包括众多非功能性需求的决策
- 软件架构是一系列决策,如果决策错误,可能会造成项目失败
概念思想的解析
- 关注软件的分与合
- 我们现在所流行的MVC架构举例,将组件抽象出来
网络异常,图片无法展示
|
- 有层次的决策
- 按切分类决策,C/S系统 设计到模块的划分,模块职责的定义,模块之间的交互机制
- 按技术选型决策,B/S系统 技术选型,满足约束和质量属性的需求,如何适应需求的变化
概念架构设计什么
- 架构风格选型
- 开发技术选型
- 集成技术选型
- 二次开发技术选型
架构设计视图
什么是架构设计的视图? 有角度就有空间,从不同角度,规划“分割”和“交互”。
架构视图的本质
本质就是分而治之,大事化小小事化了,颗粒度越小越好。
之前在学习任务分解中听到一个马斯克的故事,记忆犹新。
埃隆·马斯克有一个目标是,送 100 万人上火星,但是呢,实现马斯克的目标,送 100 万人上火星就要 1 万万亿, 这真是一个天文数据,那马斯克是怎么解决的呢?
第一步,降低火箭运输成本,将100亿美金之后降低到50w美金,成本缩小 2 万倍
第二步,将这 2 万分解成 20×10×100
- 20: 成本降低 20 倍,现在的火星飞船一次只能承载 5 个人,马斯克的打算是,把火箭造大一点,一次坐 100 人
- 10:成本可以降到十分之一
- 100:可回收火箭,燃料成本降到一百分之一
现在回头看我们的架构,
逻辑架构:有哪些逻辑元素组成以及他们之间的关系,是不是层、子系统、模块进行更细致的划分,来完成相互之间的交互。
物理架构:组成软件系统的物理元素,以及他们之间的关系和它们部署到硬件上的策略
他们两个相互协作,为详细设计和编程开发实现作为指导。
架构为谁设计
用户:要功能也要质量
客户:充分考虑客户的业务目标和上线时间要求、预算限制等约束条件
开发人员:软件的扩展性、可重用性、可移植性、易理解性和易测试性,影响开发效率
管理人员:模块+交互,管理的基础
总结
我们看到架构就是一个不断拆分,不断整合的过程,这里面有很多需要深入学习的地方。
一图总结:
网络异常,图片无法展示
|