本博客地址:https://security.blog.csdn.net/article/details/136542641
一. 软件架构
1、软件架构或称软件体系结构,是指系统的一个或者多个结构,这些结构包括软件的构件(可能是程序模块、类或者是中间件)、构件的外部可见属性及其之间的相互关系。体系结构的设计包括数据库设计和软件结构设计,后者主要关注软件构件的结构、属性和交互作用,并通过多种视图全面描述。
2、软件架构的生命周期:
● 需求分析阶段:有利于各阶段参与者的交流,也易于维护各阶段的可追踪性
● 设计阶段:关注的最早和最多的阶段
● 实现阶段:有效实现从软件架构设计向实现的转换
● 构件组装阶段:可复用构件组装的设计能够提高系统实现的效率
● 部署阶段:组织和展示部署阶段的软硬件架构、评估分析部署方案
● 后开发阶段:主要围绕维护、演化、复用进行
3、需求分析阶段。需求关注的是问题空间,架构关注的是解空间,需要保持二者的可追踪性和转换。从软件需求模型向软件架构模型的转换主要关注两个问题:如何根据需求模型构建软件架构模型、如何保证模型转换的可追踪性。
4、设计阶段。研究主要包括:软件架构模型的描述、软件架构模型的设计与分析方法,以及对软件架构设计经验的总结与复用等。
5、实现阶段。研究的内容有:基于 SA 的开发过程支持、寻求从 SA 向实现过渡的途径、研究基于 SA 的测试技术。缩小软件架构设计与底层实现概念差距的手段:模型转换技术、封装底层的实现细节、在 SA模型中引入实现阶段的概念(如用程序设计语言描述)。
6、构件组装阶段。研究的内容包括:如何支持可复用构件的互联、组装过程中,如何检测并消除体系结构失配问题
7、部署阶段。部署阶段的软件架构对软件部署的作用:一是提供高层的体系结构视图描述部署阶段的软硬件模型;二是基于软件架构模型可以分析部署方案的质量属性,从而选择合理的部署方案。
8、后开发阶段。部署安装后(后开发阶段)的系统架构研究方向包括:动态软件体系结构、体系结构恢复与重建。体系结构重建的方法有:手工体系结构重建、工具支持的手工重建、通过查询语言来自动建立聚集、使用其他技术(如数据挖掘)。
9、软件架构设计是降低成本、改进质量、按时和按需交付产品的关键因素。
二. 基于架构的软件开发方法
1、基于体系结构(架构)的软件设计(ABSD)方法是体系结构驱动的。在基于体系结构的软件设计方法中,采用视角与视图来描述软件架构,采用用例来描述功能需求,采用质量场景来描述质量需求。ABSD 方法具有三个基础:功能的分解、通过选择体系结构风格来实现质量和商业需求、软件模板的使用。
2、基于体系结构的开发模型(ABSDM 模型)把整个基于体系结构的软件开发过程划分为体系结构需求、体系结构设计、体系结构文档化、体系结构复审、体系结构实现和体系结构演化六个子过程。
3、体系结构的需求工作包括:获取用户需求和标识系统中拟用构件。
● 需求获取。体系结构需求的获取一般来自三个方面:质量目标、系统的商业目标和系统开发人员的商业目标。
● 标识构件。标识构件分三步完成:生成类图→对类进行分组→把类打包成构件。
● 架构需求评审的审查重点包括需求是否真实反映了用户的要求、类的分组是否合理、构件合并是否合理等。
4、软件的体系设计过程:提出软件体系结构模型→映射构件→分析构件相互作用→产生体系结构设计评审。设计评审必须邀请独立于系统开发的外部人员。
5、体系结构文档化过程的主要输出结果是体系结构规格说明和测试体系结构需求的质量设计说明书。
6、一个主版本的软件体系结构分析之后,要安排一次由外部人员(用户代表和领域专家)参加的复审。复审的目的是标识潜在的风险、及早发现体系结构设计中的缺陷和错误。
7、体系结构的实现过程是以复审后的文档化体系结构说明书为基础的,具体为:分析与设计→构件实现→构件组装→系统测试。体系结构说明书中定义了系统中构件与构件之间的关系。测试包括单个构件的功能性测试及被组装应用的整体功能和性能测试。
8、体系结构演化史使用系统演化步骤去修改应用,以满足新的需求。系统演化步骤为:需求变化归类→体系结构演化计划→构件变动→更新构件的相互作用→构件组装与测试→技术评审→演化后的体系结构。
三. 软件架构风格
1、软件体系结构设计的核心目标是重复的体系结构模式(软件复用/重用)。软件体系结构(架构)风格是描述某一特定应用领域中系统组织方式的惯用模式。体系结构风格定义一个系统家族,即一个体系结构定义一个词汇表和一组约束。体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统
● 词汇表:包含构件和连接件。
● 约束:约束定义构件和连接件的组合方式。
2、数据流体系结构风格
● 批处理体系结构风格:每个处理步骤是一个独立的程序,每一步必须在前一步结束后才能开始,且数据必须是完整,以整体的方式传递。
● 管道和过滤器:把系统分为几个序贯地处理步骤,每个步骤之间通过数据流连接,一个步骤的输出是另一个步骤的输入,每个处理步骤都有输入和输出
3、调用/返回体系结构风格
调用-返回风格在系统中采用了调用与返回机制,主要思想是将一个复杂的大系统分解为若干个子系统,降低复杂度,增加可修改性。
● 主程序/子程序风格:采用单线程控制,把问题划分为若干处理步骤,构件即为主程序和子程序
● 面向对象体系结构风格:构件是对象,即抽象数据类型的实例
● 层次型体系结构风格:每一层为上层服务,并作为下层的接口。仅相邻层间具有层接口
● 客户端/服务器体系结构风格:主要分为二层C/S模式(数据库服务器、客户应用程序和网络)、三层C/S模式(瘦客户端模式。应用该功能分为表示层、功能层和数据层)
● 浏览器/服务器风格(B/S):三层结构分别为:浏览器;Web 服务器;数据库服务器
4、以数据为中心的体系结构风格
● 仓库体系结构风格:由中央数据结构(说明当前数据状态)和一组独立构件(对中央数据进行操作)组成
● 黑板体系结构风格:是一种问题求解模型,是组织推理步骤、控制状态数据和问题求解之领域知识的概念框架
5、虚拟机体系结构风格
● 解释器体系结构风格:通常被用来建立一种虚拟机以弥合程序语义与硬件语义之间的差异,缺点是执行效率较低
● 规则系统体系结构风格:包括知识库、规则解释器、规则/数据选择器及工作内存(程序运行存储区)
6、独立构件体系结构风格
独立构件体系结构风格强调系统中的每个构件都是相对独立的个体,它们之间不直接通信,以降低耦合度,提升灵活度。
● 进程通信体系结构风格:构件是独立的过程,连接件是消息传递。
● 事件系统体系结构风格:构件不直接调用一个过程,而是触发或广播一个或多个事件。
7、C2 风格
C2 风格通过连接件连接构件或某个构件组,构件与构件之间无连接
四、软件架构复用
1、软件复用是系统化的软件开发过程:开发一组基本的软件构件模块,以覆盖不同的需求/体系结构之间的相似性,提高系统开发的效率、质量和性能。
2、软件架构复用的类型包括机会复用和系统复用。机会复用是在开发过程中,只要发现有可复用的资产就复用。系统复用是在开发前进行规划,决定哪些复用。
3、软件架构复用的原因:减少开发工作、减少开发事件、降低开发成本、提高生产力、提高产品质量、更好的互操作性。
4、软件架构复用的对象包括:需求、架构设计、元素、建模分析、测试、项目规划、过程+方法+工具、人员、样本系统、缺陷消除。
5、软件架构复用的一般形式包括:函数的复用、库的复用、面向对象开发中的类、接口和包的复用。
6、软件架构复用的基本过程:首先构建/获取可复用的软件资产(复用前提)→管理可复用资产→使用可复用资产。
五、特定领域软件架构
1、特定领域软件架构(DSSA)是在一个特定应用领域中为一组应用提供组织结构参考的标准软件体系结构,即用于某一类特定应用领域的标准软件构件集合。DSSA 的特征:领域性、普遍性、抽象性、可复用性。
2、DSSA 的基本活动有领域分析、领域设计、领域实现。
3、参与 DSSA 的人员有领域专家、领域分析师、领域设计人员和领域实现人员。
4、DSSA 的建立过程是并发的、递归的、反复的螺旋模型,分为五个阶段:
● 定义领域范围。
● 定义领域特定元素。
● 定义领域特定的设计和实现约束。
● 定义领域模型和体系结构。
● 产生、搜集可重用的单元。
5、DSSA 通常是一个具有三个层次的系统模型,包括领域开发环境、领域特定应用开发环境和应用执行环境,其中应用工程师主要在领域特定应用开发环境中工作