十七、软件架构演化和维护

1,软件架构的演化定义

软件架构的演化和维护就是对架构进行修改和完善的过程,目的就是为了使软件能够适应环境的变化而进行的纠错性修改和完善性修改等,是一个不断迭代的过程,直至满足用户需求。

软件架构的定义包含组件、连接件、约束三大要素,这类软件架构演化主要关注的就是这三者之间的添加、修改和删除等。

2,面向对象软件架构演化

面向对象软件架构演化主要分为以下四种演化(顺序图类比):对象演化(顺序图中组件的实体是对象)、消息演化、复合片段演化(与消息同属于连接件范畴)和约束演化

1,软件架构演化的3种分类方法

1照软件架构的实现方式和实施粒度分类

2照研究方法将软件架构演化方式分为4类

3针对软件架构的演化过程是否处于系统运行时期,可以将软件架构演化分为静态演化和动态演化

3,软件架构的演化时期包括:

1静态演化 (系统未运行)更正性维护、适应性维护和完善性维护。

设计时演化

运行前演化

2动态演化 (系统运行) 两类需求: 软件内部执行所导致的体系结构改变(软件本身功能修改);系统外部的请求对软件进行的重配置(服务器环境变更)

有限制运行时演化

运行时演化

静态演化

架构演化的可维护性度量基于组件图表示

架构演化的可靠性评估基于用例图、部署图和顺序图

动态演化

软件的动态性分为3个级别::

交互动态性,要求数据在固定的结构下动态交互;

结构动态性,允许对结构进行修改,通常的形式是组件和连接件实例的添加和删除,这种动态性是研究和应用的主流;

架构动态性,允许软件架构的基本构造的变动,即结构可以被重定义,如新的组件类型的定义。

根据所修改的内容不同,软件的动态演化主要包括以下4个方面:

1属性改名(服务响应时间改为响应时间);

2行为变化(允许用户发布文字);

3拓扑结构改变(增删组件);

4风格变化(两层客户端/服务器(C/S变三)架构)

实现软件架构动态演化的技术主要有两种:

1采用动态软件架构(DSA) 过框架结构的动态演化实现对架构的修改

2进行动态重配置(DR)。 (在软件部署之后对配置信息的修改)从组件和连接件的配置人手,允许在运行过程中增删组件,增删连接件,修改连接关系等操作

动态重配置模式:主从模式、中央控制模式、客户端/服务器模式、分布式控制模式。

4,软件架构演化评估方法:

通过对架构演化过程进行度,对该演化过程中相关质量属性进行评估.

演化过程已知的评估(正向)和演化过程未知的评估(逆向)

5,大型网站架构演化:

第一阶段:单体架构 特点:所有业务在一个服务器上

第二阶段:垂直架构 特点:每种业务在一个单独服务器上

第三阶段:使用缓存改善网站性能 特点:使用缓存提高网站查询效率

第四阶段:使用服务集群改善网站并发处理能力 特点:多台应用服务器来解决访问量过大效率降低的问题

第五阶段:数据库读写分离 特点:数据库拆分为主从数据库

第六阶段:使用反向代理和CDN加速网站响应 特点:使用CDN解决不同地域访问效率差异问题

第七阶段:使用分布式文件系统和分布式数据库系统 特点:文件服务器和数据库服务器使用分布式来部署分摊访问压力

第八阶段:使用NOSQL和搜索引擎 特点:使用NOSQL数据库提升访问性能

第九阶段:业务拆分 特点:把所有业务拆分成微服务的形式,更加灵活方便部署和调整

第十阶段:分布式服务部 特点:把应用服务器也从集群改为分布式,进一步提署和调整升性能

6,软件架构维护

软件架构维护过程一般涉及架构知识管理架构修改管理架构版本管理