概述
软件架构设计就是确定软件系统的组织结构和运行模式。
架构设计填补了用户需求和系统设计之间的鸿沟。
这句话怎么理解?系统设计,就是我们平时张嘴就来的概要设计和详细设计。为什么有了系统设计,在前面还要有个架构设计(软件开发过程可以分为:系统总体规划、系统分析、架构设计、系统设计、系统编码、系统测试和系统实施)?架构设计是个啥?
一、什么是软件架构
软件架构为软件系统提供了一个结构、行为和属性的高级抽象,由构件的描述、构件的相互作用(连接件)、指导构件集成的模式以及这些模式的约束组成。软件架构不仅指定了系统的组织结构和拓扑结构,并且显示了系统需求和构件之间的对应关系,提供了一些设计决策的基本原理。
以上文字比较晦涩。我的理解是,软件架构的作用是定义了软件系统的组织结构和运行模式。软件的系统设计针对的是业务逻辑,而软件架构则是决定如何运行这些业务逻辑。
比如说,我们要做一个OA系统,用来管理考勤啦,请假啦,下达任务啦之类的日常工作。这个系统,既可以做成CS,也可以做成BS。那么OA本身各业务的设计,就是系统设计;而决定捣鼓成CS或BS,就是架构设计。不管什么形式,都能实现OA业务,只不过,有个谁更合适的问题。架构架构,就是给软件搭的架子和戏台。正如演员知道怎么演戏,但他们需要一个舞台才能演一样,业务逻辑并非运行于空气中,它需要许多支撑。架构就是业务逻辑的具体支撑。
结合我们的实际工作,我认为,系统需求分析完成以后,进行技术选型,选择开发语言,开发工具,软件框架,数据库产品,是否采用SOA或微服务架构,是否需要上云,这些都属于架构设计。
软件架构在软件需求和系统设计之间架起一座桥梁,解决了系统需求向实现平坦过渡的问题。也就是解决了需求如何落地的问题。
二、软件架构的意义
软件设计有设计模式,架构也有架构模式。就是说,构建系统,有一些现成的套路。类似于设计模式,架构在软件开发中为不同的人员提供了共同交流的语言,体现并尝试了系统早期的设计决策,并作为系统设计的抽象,为实现框架和构件的共享和重用、基于架构的软件开发提供了有力的支持。
三、软件架构分类
也叫软件架构风格。软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式。架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个构件有效地组织成一个完整的系统。
1、经典架构风格
1)数据流风格
如批处理系统,管道等
2)调用/返回风格
如主程序/子程序等
3)独立构件风格
如事件驱动的系统。
4)虚拟机风格
如解释器
5)仓库风格
如数据库系统、超文本系统
2、层次架构风格
1)C/S架构
2)三层C/S架构
3)B/S架构
BS架构本质上也算是三层CS架构。
3、富互联网应用
Rich Internet Application,RIA,B/S架构的变种。所谓CS是胖客户端,BS是瘦客户端,说的是CS的客户端交互能力很强,可以做许多工作,BS就不同了,浏览器功能太弱,啥都提交到服务器,极端依赖服务器。但BS发展至今时今日,客户端功能越来越强,体验越来越好,之前的flex,slivelight就不说了,阿贾克斯,以及现在的单页应用,前后端分离,以及浏览器功能的增强,客户端也日益强壮富裕。窃以为,现在的BS程序,就是富互联网应用程序。
4、面向服务的架构
无须多言
5、微服务架构
无须多言
四、软件架构建模
软件架构建模就是如何表达软件架构。根据建模侧重点不同,可以将软件架构的模型分为5忠:结构模型、框架模型、动态模型、过程模型和功能模型。5种模型各有所长,将它们有机统一,形成一个完整的模型来刻画软件架构更合适,比如4+1视图模型:
开发视图又叫模块视图;物理视图又叫部署视图。
场景是重要系统活动的抽象,它将其余4个视图有机联系起来。对应UML中的用例视图。
最后
以上就是搞怪白开水为你收集整理的软件架构设计的全部内容,希望文章能够帮你解决软件架构设计所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复