1 软件架构的概述 ✅✅✅ #
1.1 软件架构的概念 ✅✅✅ #
从本质上看,需求和软件架构设计面临的是不同的对象:一个是问题空间;另一个是解空间。保持两者的可追踪性和转换,一直是软件工程领城追求的目标。
软件架构设计是降低成本、改进质量、按时和按需交付产品的关键因素。软件架构设计能够满足系统的性能、安全性、可维护性等品质,软件架构设计能够帮助项目干系人(Stakeholder)更好地理解软件结构;软件架构设计能够有效地管理系统的复杂性,并降低系统维护费用,软件架构设计对系统开发具有指导性;软件架构设计为系统复用奠定的基础;软件架构设计能够支持冲突分析。总体来说,软件架构设计更在意的是性能、质量、成本、安全、可靠、易维护等,对于功能需求,软件架构设计并不在意。架构设计的目标是把项目做好,而不是把项目做完。
软件架构贯穿于软件的整个生命周期,但在不同的阶段对软件架构的关注力度并不相同。其中需求分析阶段主要关注问题域;设计阶段主要将需求转换为软件架构模型,软件实现阶段主要关注将架构设计转换为实际的代码,软件部署阶段主要通过组装软件组件提高系统的实现效率。其中设计与实现阶段在软件架构上的工作最多,也最重要,因此关注力度最大。
在架构描述阶段,描述了构成系统的抽象组件以及各个组件之间的连接规则,特别是相对细致地描述了组件之间的交互关系。在架构实现阶段,这些抽象组件被细化为实际的组件,比如具体类或者对象。软件系统架构不仅指定了软件系统的组织和拓扑结构,而且显示了系统需求和组件之间的对应关系,包括设计决策的基本方法和基本原理。
软件架构即软件体系结构,软件架构设计过程就是需求的分配过程,即将满足需求的职责分配到组件上。它搭建起了需求分析(偏业务)与软件设计(偏技术)之间的鸿沟。如下图:
架构的本质:软件架构为软件系统提供了一个结构、行为和属性的高级抽象。
架构的作用
1. 软件架构是项目干系人进行交流的手段。
2. 在设计变更相对容易的阶段,考虑系统结构的可选方案。
3. 展现软件的结构、属性与内部交互关系。
1.2 软件架构的发展 ✅✅✅ #
软件架构的发展经历了无架构模式(汇编语言)、萌芽阶段(程序结构设计:顺序分支循环)、初级阶段(统一建模语言UML)、高级阶段(4+1视图)。
- 4+1视图如下:多视图是一种描述软件架构的重要途径,体现了关注点分离的思想。
整体来说架构视图和UML视图是一致的,需要单独记忆的是,逻辑视图在前者表示功能需求、对应于后者的类和对象;架构视图中的物理视图在UML视图中叫做部署视图;进程视图又叫过程视图。其中的1,在架构视图中指的是场景,在UML视图中指的是用例。
1.3 架构描述语言 ✅ #
ADL(Architect Describe Language),它由三个基本的元素构成:
1、构件:计算或者存储数据的单元。
2、连接件:用于构件之间交互建模的连接块。
3、架构配置:描述架构的构件与连接件的连接图。