赞
踩
人们通常说软件架构是演化来的,而不是设计来的。
(1) 保障软件系统具备诸多好的特性。
(2) 有效管控软件系统的整体复杂性和变化性,降低软件检修和修改成本。
(3) 保证软件系统演化的一致性和正确性,增加便捷性。
软件架构包括 组件、连接件和约束 三大要素,此软件架构演化主要关注组件、连接件和约束的
添加、修改和删除。
对架构设计的动态行为产生影响的演化包括 Add Object(AO)
和 Delete Object(DO)
。
消息演化包括 Add Message(AM)
、Delete Message(DM)
、Swap Message Order(SMO)
、 Overturn Message(OM)
、Change Message Module(CMM)
。
复合片断的演化包括 Add Fragment(AF)
、Delete Fragment(DF)
、Fragment Type Change (FTC)
、Fragment Condition Change(FCC)
。
约束演化包括 Add Constraint(AC)
、Delete Constraint(DC)
。
三种比较典型的软件架构演化方式的分类,如图 :
(1)设计时演化 (Design-Time Evolution)
: 发生在体系结构模型与之相关的代码编译之前。
(2)运行前演化 (Pre-Execution Evolution)
: 发生在执行之前、编译之后。
(3)有限制运行时演化(Constrained Runtime Evolution)
: 只发生在某些特定约束满足时。
(4)运行时演化 (Runtime Evolution)
: 发生在运行时不能满足要求时。
(1)静态演化需求: 设计时演化需求、运行前演化需求。
(2)静态演化的一般过程: 软件理解→需求变更分析→演化计划→系统重构→系统测试
(3)静态演化的原子演化操作。
AMD(Add Module Dependence)
、RMD(Remove Module Dependence)
、AMI(Add Module Interface)
、RMI(Remove Module Inferface)
、AM(Add Module)
、 RM(Remove Module)
、SM(Split Module)
、AGM(Aggregate Modules)
。AMS(Add Message)
、RMS(Remove Message)
、AO(Add Object)
、RO(Remove Object)
、AF(Add Fragment)
、RF(Remove Fragment)
、CF(Change Fragment)
、 AU(Add Use Case)
、RU(Remove Use Case)
、AA(Add Actor)
、RA(Remove Actor)
。(1) 动态演化需求:
软件内部执行所导致的体系结构改变、软件系统外部的请求对软件进行 的重配置。
(2) 动态演化的类型。
(3) 动态软件架构(DSA)。
(4) 动态软件架构应用实例— PKUAS:
包括 容器系统、公共服务、工具和微内核 4 种类型。
(5)动态重配置。
软件结构包括18 种可持续演化原则:
演化成本控制原则
: 演化成本要控制在预期的范围之内。进度可控原则
: 架构演化要在预期的时间内完成。风险可控原则
: 架构演化中的经济风险、时间风险、人力风险、技术风险和环境风险在可控范围内。主体维持原则
: 软件演化的平均增量的增长须保持平稳,保证软件系统主体行为稳定。系统总体结构优化原则
: 使演化后的软件系统整体结构(布局)更加合理。平滑演化原则
: 软件的演化速率趋于稳定。目标一致原则
: 架构演化的阶段目标和最终目标要一致。模块独立演化原则
: 软件中各模块自身的演化最好相互独立。影响可控原则
: 如果一个模块发生变更,给其他模块带来的影响在可控范围内。复杂性可控原则
: 必须控制架构的复杂性,保障软件的复杂性在可控范围内。有利于重构原则
: 使演化后软件架构便于重构。有利于重用原则
: 演化最好能维持,甚至提高整体架构的可重用性。设计原则遵循性原则
: 架构演化最好不能与架构设计原则冲突。适应新技术原则
: 软件要独立于特定的技术手段,可运行于不同平台。环境适应性原则
: 架构演化后的软件版本比较容易适应新的硬件环境和软件环境。标准依从性原则
: 演化不违背相关质量标准(国际标准、国家标准、行业标准等)。质量向好原则
: 使所关注的某个质量指标或质量指标的综合效果变更好。适应新需求原则
: 很容易适应新的需求变更。评估流程: 将架构度量应用到演化过程中,通过对演化前后的不同版本的架构分别进行度量, 得到度量结果的差值及其变化趋势,并计算架构间质量属性距离,进而对相关质量属性进行评估。
演化过程未知时的架构演化评估过程示意图如下:
应用程序、数据库、文件等所有资源都在一台服务器上。
将应用和数据分离,整个网站使用 3 台服务器:应用服务器、文件服务器、数据服务器。
包括在应用服务器上的本地缓存和在专门的分布式缓存服务器上的远程缓存。
通过负载均衡调度服务器,将来自用户浏览器的访问请求分发到应用服务器集群中的任何一台
服务器上,解决高并发、海量数据问题。
应用服务器在写数据时,访问主数据库,主服务器通过主从复制机制将数据更新同步到从服务
器。在应用服务器读数据时,访问从数据库。
CDN 和反向代理的基本原理都是 缓存。
进行业务分库,将不同业务的数据部署在不同的物理服务器上。
使用 NoSQL 和搜索引擎。
将一个网站拆分成许多不同的应用,每个应用独立部署。
分布式服务。
软件架构维护过程包括 软件架构知识管理、软件架构修改管理、软件架构版本管理 等。
架构知识的定义: 架构知识=架构设计+架构设计决策
。
架构知识管理的含义: 侧重于软件开发和实现过程所涉及的架构静态演化,在架构文档等信息来源中捕捉架构知识,提供架构的质量属性及其设计依据进行记录和评价。
架构知识管理的需求: 防止关键的设计知识“沉没”在软件架构中。
主要是建立一个隔离区域,保障该区域中任何修改对其他部分影响最小。
为软件架构演化的版本演化控制、使用和评价提供可靠依据。
架构可维护性的 6 个度量指标: 圈复杂度(CNN)、扇入扇出度(FFC)、模块间耦合度(CBO)、 模块的响应(RFC)、紧内聚度(TCC)、松内聚度(LCC)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。