架构到底是什么

原文链接:https://www.jianshu.com/p/200f9dca5338

 

1.系统与子系统

系统泛指由一群有关联的个体组成,根据某种规则运作,能完成个别元件不能单独完成的工作的群体。它的意思是“总体”“整体”或“联盟”。

  • 关联:系统是由一群有关联的个体组成的,没有关联的个体堆在一起不能成为一个系统。例如,把一个发动机和一台 PC 放在一起不能称之为一个系统,把发动机、底盘、轮胎、车架组合起来才能成为一台汽车。

  • 规则:系统内的个体需要按照指定的规则运作,而不是单个个体各自为政。规则规定了系统内个体分工和协作的方式。例如,汽车发动机负责产生动力,然后通过变速器和传动轴,将动力输出到车轮上,从而驱动汽车前进。

  • 能力:系统能力与个体能力有本质的差别,系统能力不是个体能力之和,而是产生了新的能力。例如,汽车能够载重前进,而发动机、变速器、传动轴、车轮本身都不具备这样的能力。

子系统也是由一群有关联的个体所组成的系统,多半会是更大系统中的一部分。

以微信为例,可以看出他们的关系

 

系统(微信).png

2.模块与组件

软件模块(Module)是一套一致而互相有紧密关连的软件组织。它分别包含了程序和数据结构两部分。现代软件开发往往利用模块作为合成的单位。模块的接口表达了由该模块提供的功能和调用它时所需的元素。模块是可能分开被编写的单位。这使它们可再用和允许人员同时协作、编写及研究不同的模块。

软件组件定义为自包含的、可编程的、可重用的、与语言无关的软件单元,软件组件可以很容易被用于组装应用程序中。

模块:从逻辑的角度来拆分系统后的单元,目的是:职责分离
组件:从物理的角度来拆分系统后的单元,目的是:单元复用(可以理解为零件)

学生管理系统从模块划分:

学生管理系统从组件划分:

3. 框架与架构

软件框架(Software framework)通常指的是为了实现某个业界标准或完成特定基本任务的软件组件规范,也指为了实现某个软件组件规范时,提供规范所要求之基础功能的软件产品。

框架是组件规范,框架提供基础功能的产品

软件架构指软件系统的“基础结构”,创造这些基础结构的准则,以及对这些结构的描述。

从定义的角度来看,框架和架构的区别还是比较明显的,框架关注的是“规范”,架构关注的是“结构”。框架的英文是 Framework,架构的英文是 Architecture。

采用不同的角度或者维度,可以将系统划分为不同的结构

  • 从业务逻辑的角度分解,“学生管理系统”的架构是:

    1.png

     

  • 从物理部署的角度分解,“学生管理系统”的架构是:

    2.png

     

  • 从开发规范的角度分解,“学生管理系统”可以采用标准的 MVC 框架来开发,因此架构又变成了 MVC 架构:

3.png

4.总结

架构:指软件系统的顶层结构。

首先,“系统是一群关联个体组成”,这些“个体”可以是“子系统”“模块”“组件”等;架构需要明确系统包含哪些“个体”。

其次,系统中的个体需要“根据某种规则”运作,架构需要明确个体运作和协作的规则。

第三,维基百科定义的架构用到了“基础结构”这个说法,我改为“顶层结构”,可以更好地区分系统和子系统,避免将系统架构和子系统架构混淆在一起导致架构层次混乱。

5.注:

架构是顶层设计;
框架是面向编程或配置的半成品;
组件是从技术维度上的复用;
模块是从业务维度上职责的划分;
系统是相互协同可运行的实体。

框架是规矩,架构是按照规矩做规划。
系统是学校,子系统是班级,
模块是学生老师,
组件是课桌椅。



作者:代码足迹
链接:https://www.jianshu.com/p/200f9dca5338
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

### 软件的定义及其本质 软件可以被定义为一组程序指令和相关文档,用于实现计算机或其他电子设备的功能操作。这些程序由人类编写并经过编译或解释后运行于硬件之上[^2]。从本质上讲,软件是一种逻辑实体,它通过抽象的方式将现实世界的问题映射到计算领域中解决。 #### 1. **软件的核心特性** 软件具有无形性和灵活性的特点。它的功能可以通过修改代码轻松调整,而不像硬件那样受限于物理形态的变化。这种可变性使得软件能够适应不同的需求场景,并支持复杂的业务逻辑处理[^3]。 #### 2. **软件的本质** 软件的本质在于它是对问题域的一种建模工具。通过对实际问题进行分析、分解和重构,开发者创建出满足特定目标的应用程序。这一过程涉及多个层面的设计决策,包括但不限于体系结构的选择、算法优化以及用户体验考量等方面[^1]。 此外,在现代信息技术环境中,“软件定义”的理念进一步深化了我们对软件本质的认识——即几乎所有的技术设施都可以通过软件来重新定义其行为模式和服务能力。这意味着无论是网络通信还是存储管理等功能都可能依赖灵活高效的软件解决方案而非传统的固定装置完成相应任务执行[^1]。 #### 3. **软件架构的重要性** 为了更好地理解和构建高质量的软件产品,人们提出了软件架构的概念。软件架构不仅描述了一个系统的主要组成部分及其交互方式,还明确了指导整个项目生命周期内的设计原则和发展方向。由于单靠个人难以全面考虑所有因素,因此通常采用多视角方法论来进行详细的规划与沟通说明工作[^2]。 以下是关于软件架构的一些关键点: - 它是由若干个构件组成的整体框架; - 这些构件之间存在明确的关系链接; - 存在一个或者多个规则集用来约束未来变更活动的方向及边界条件设定标准等事项。 综上所述,软件不仅仅是简单的命令序列集合体,而是承载着丰富的语义信息并与具体应用场景紧密结合在一起的人工制品。随着科技的进步与发展,特别是人工智能等领域内大型预训练模型(LLMs)的研究进展表明,未来的软件可能会变得更加智能化、自动化甚至自我进化型态出现成为趋势之一[^4]。 ```python # 示例:简单函数展示软件作为解决问题手段的作用 def calculate_area(length, width): """Calculate the area of a rectangle.""" return length * width print(calculate_area(5, 3)) # 输出矩形面积 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值