什么是架构?
1、组成派:站在目标系统的角度看,架构是名词,是目标系统
2、决策派:站在需求者的角度看,架构是动词,是愿景,是实现后的样子。
3、程序员:站在程序员的角度看,架构是名词,是实现后的u用哪个子
组成派
这个派别的思想源于物理世界的建筑行业的架构,也源于架构这个单词本身,
该派别认为:软件是一个系统,任何系统都是由组件、子系统、模块等组成的
通过分解还原一个软件系统,通过划分组件、子系统、模块来构建一个新的系统。
组成派是站在目标系统的角度,为外部提供服务的角度,以目标系统为目标和中心,而不是以用户为中心。
结构化分析与设计方法---就是组成派的杰出代码
决策派
核心思想:软件架构是在一些重要方面所作出的决策的集合。
软件架构并不仅仅注重软件本身的结构和行为,还注重其他特性,如:使用、功能性、性能、弹性、重用、可理解性,经济和技术的限制及权衡,以及美学等
决策派站在人的角度看目标系统,ta们认为 目标系统是人意愿的体现,是人决策的体现,展现的是一种 人对目标系统的一个愿景和规划。除了看得见的功能性需求,还包括看不见的非功能性需求。
面向对象分析与设计方法---属于决策派
用例图和用例就是需求,用需求衍生出各种视图
架构的种类?
单是IT行业,就有多种架构和架构师,下面列出几个最普遍的回答:
1、软件
2、硬件
3、基础设施
4、网络
5、数据
6、数据库
7、应用程序
8、安全
9、系统
......
可以看出,架构无处不在~
架构属于设计,但并非所有的设计都属于架构。
架构设计的决策,往往对整体质量、并行开发、适应变化等方面有着重大影响(否则就放到 详细设计环节 了)
· 模块如何划分
· 每个模块的职责是什么
· 每个模块的接口如何定义
· 模块间采用何种交互方式
· 开发技术如何选型
· 如何满足约束和质量属性的需求
· 如何适应可能发生的变化
......
软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构件的描述、构件的相互作用、指导构件集成的模式 以及 这些模式的约束 组成。
软件架构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构件之间的对应关系,提供了一些设计决策的基本原理。
软件架构研究的主要内容涉及:软件架构描述、软件架构风格、软件架构评估和软件架构的形式化方法等。
解决好软件的复用、质量和维护问题,是研究软件架构的根本目的。
- 架构是项目干系人进行交流的手段;
- 架构是早期设计决策的体现;
- 架构明确了 对系统实现的约束条件;
- 架构决定了开发和维护人员的组织结构;
- 架构制约着系统的质量属性;
- 架构使推理和控制更改更简单;
- 架构有助于循序渐进的原型设计;
- 架构可以作为培训的基础;
- 架构是可传递和可复用的模型。
软件架构技术发展过程
1、无架构设计阶段;
2、萌芽阶段:出现了程序结构设计主题,以控制流图和数据流图构成软件结构为特征;
3、初级阶段:出现了从不同侧面描述系统的结构模型,以UML为典型代表;
4、高级阶段:以描述系统的高级抽象结构为中心,不关心具体的建模细节,以"4+1"模型为标志
# 核心思想
1、关注软件系统的组成部分的分割与交互
软件系统的架构将系统描述为计算机 组件 及 组件之间的交互。
架构=组件+交互
任何系统,都由各个子系统组成,子系统和子系统之间,子系统与外界之间 一定存在一定的交互,没有交互的子系统是孤岛,注定没有存在的价值。
组件的本质就是子系统。
2、架构是自顶向下 逐步分层的 树型决策 ===》 分解过程也是决策过程 ===》 决策树
而实际的设计,往往是分层次 依次展开的---无论是决策如何分系统 还是决策技术选型都是如此
3、架构无处不在
架构设计就是需求分配,即将满足需求的职责分配到组件上。
可复用、可传递