软件架构基本概念

软件架构(software architecture)

学习笔记,内容来自网络,橙色为自己总结,如有错误还请指正。

目录

软件架构(software architecture)

一、架构的定义

二、软件架构定义

三、架构的种类

逻辑架构:软件系统中元件之间的关系,比如用户界面,数据库,外部系统接口、商业逻辑元件等

物理架构:软件元件是怎样放到硬件上的

系统架构:系统的非功能性特征,如可扩展性、强壮性、灵活性、可靠性、性能等

四、架构的表现形式----4+1视图

逻辑视图(Logic View)

处理视图(Process view)

物理视图(PhysicalView)

开发视图(DevelopmentView)

场景视图(用例视图)

五、软件架构设计的目标

六、软件架构的作用

七、五种常见软件架构

1.分层架构

2.事件驱动架构

 3.微核架构

4.微服务架构

 5.云架构


一、架构的定义

参考资料:https://www.cnblogs.com/ivaneye/p/9752478.html

软件架构的定义大体分为“决策”论“组成”论

比较著名的“决策”论的定义是Booch,Rumbaugh和Jacobson于1999年提出的:架构就是一系列重要的决策,这些决策涉及软件系统的组织、组成系统的结构化元素及其接口的选择、元素之间协作时特定的行为、结构化元素和行为元素形成更大子系统的组合方式以及引导这一组织(也就是这些元素及其接口)、他们之间的协作以及组合(架构风格)。

“组成”论中最受推崇的是SEI(Software Engineering Institute)的Len Bass等人提出的定义:程序或计算系统的软件架构是系统的一个或多个结构,它包括软件元素、这些元素的外部可见属性以及它们之间的关系。

架构是规划、设计、构建的过程及最终成果。


参考资料里对架构下的定义为:架构是特定约束决策结果,并且这是一个循环递进的过程。

  • 特定约束

任何行为、言语、结论都有一个context(上下文)为前提,某一个架构换一个场景可能并不适用。这个context就称为约束。但是必须是特定约束,不能是泛约束(约束必须具体,不能宽泛)。

  • 决策

决策是一个过程,实际上就是选择。选择技术、结构、通信方式等内容,去符合特定约束。

  • 结果

是决策的最终产物,可能是运行良好、满足需求的系统。也可能是一堆文档。如果这个结果是五视图(架构表现形式)、组件、接口、子系统、及其之间的关系,那么这个架构就是软件架构

完善的需求(功能性、非功能性),实际就是架构的「特定约束」。而对上面这些问题的选择,就是「决策」。这些决策确定后,需要相关的设计图,这些图纸就是你决策的部分结果最终交付给客户的才是你架构的最终成果


架构和设计的关系架构是顶层设计

从操作层面做决策:用户从哪里进入、页面应该跳转到哪里、应该输入哪些信息.....这就是流程设计!

从代码层面决策,代码该怎么写:模块如何组织、包如何组织、类如何组织、方法如何组织......这就是代码设计!

从系统整体层面决策:子系统如何组织、组件如何组织、接口如何设计......这就是架构设计!


二、软件架构定义

参考资料:百度百科

软件架构(software architecture)是一系列相关的抽象模式用于指导大型软件系统各个方面的设计。软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。在面向对象领域中,组件之间的连接通常用接口来实现

软件架构是指在一定的设计原则基础上,从不同角度对组成系统的各部分进行搭配和安排,形成系统的多个结构而组成架构,它包括该系统的各个组件,组件的外部可见属性及组件之间的相互关系。组件的外部可见属性是指其他组件对该组件所做的假设。

David GArlan和 Mary Shaw认为软件构架“在计算的算法和数据结构之外,设计并确定系统整体结构成为了新的问题。结构问题包括总体组织结构和全局控制结构;通信、同步和数据访问的协议;设计元素的功能分配;物理分布;设计元素的组成;定标与性能;备选设计的选择。”

但构架不仅是结构

IEEEWorking Group on Architecture 把其定义为“系统在其环境中的最高层概念”。构架还包括“符合”系统完整性、经济约束条件、审美需求和样式。

它并不仅注重对内部的考虑,而且还在系统的用户环境和开发环境中对系统进行整体考虑,即同时注重对外部的考虑。

一般而言,软件系统的架构(ArchitECture)有两个要素:

1.它是一个软件系统从整体到部分的最高层次的划分。

2.一个系统通常是由元件组成的,而这些元件如何形成、相互之间如何发生作用,则是关于这个系统本身结构的重要信息。

详细地说,就是要包括架构元件(Architecture Component)、联结器(Connector)、任务流(TASk-flow)。所谓架构元素,也就是组成系统的核心"砖瓦",而联结器则描述这些元件之间通讯的路径、通讯的机制、通讯的预期结果,任务流则描述系统如何使用这些元件和联结器完成某一项需求。

总结:软件架构是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计,包括架构元件(构成系统的各种组件)、联结器(组件之间通信的路径和机制)、任务流(系统如何使用元件和联结器完成需求)。不仅注重对系统内部(功能因素)的考虑,同时注重对系统外部(非功能因素)的考虑

三、架构的种类

根据关注的角度不同,可以将架构分成三种

  • 逻辑架构:软件系统中元件之间的关系,比如用户界面,数据库,外部系统接口、商业逻辑元件等

  • 22
    点赞
  • 201
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值