Day28-46|7.4.1 软件架构复用的定义及分类

一、教材定位

软件架构复用是第7章从“如何设计架构”转向“如何利用已有架构资产”的关键知识点。架构复用不是把旧项目代码复制到新项目,也不是看到微服务、分层或事件驱动就照搬,而是识别已有系统中的稳定决策、结构关系、约束条件和实现经验,在新的业务环境中经过适配后再次使用。高级系统架构设计师需要回答三个问题:复用的到底是什么,为什么能够复用,以及复用后如何证明新系统仍然满足质量属性。

二、核心定义

软件复用是利用已有的软件知识、构件、设计、文档、测试资产和过程资产来构造新软件。架构复用的对象处于代码之上,主要体现为系统分解方式、职责分配、协作机制、部署拓扑、数据边界、质量属性策略和演进约束。它的价值在于把经过验证的设计决策前置,减少重复分析和试错。

需要区分三个概念:

概念 关注对象 复用粒度 典型例子
代码复用 函数、类、组件 小 日期处理库、SDK
构件复用 可部署或可组装的软件单元 中 用户中心、消息服务
架构复用 结构、决策、约束与模式 大 分层架构、事件驱动平台

架构复用的核心不是“拿来”,而是“在新上下文中重新验证”。同一套架构在低并发内部系统中可能表现良好,放到高并发交易系统中就必须重新评估吞吐量、延迟、可用性和一致性。

三、架构复用的分类

1. 按复用对象分类

第一类是概念和原则复用,例如高内聚低耦合、关注点分离、依赖倒置、接口隔离。这类复用最稳定,但需要架构师根据场景解释其边界。第二类是架构风格和模式复用,例如层次式、管道-过滤器、事件驱动、微内核、微服务。第三类是参考架构复用,例如电商、政务、工业互联网平台的通用分层和能力中心。第四类是架构决策复用,例如“订单写入采用事件最终一致性”“敏感数据必须分区加密”等。第五类是实现和运维资产复用,如网关、配置中心、监控体系、容灾脚本和部署模板。

2. 按复用范围分类

局部复用发生在单个子系统或模块内,风险较低;产品线复用服务于多个相近产品,要求抽取稳定变化点;组织级复用面向多个项目,通常需要资产库、治理规则和维护责任;行业级复用则表现为标准、参考模型和成熟解决方案。

3. 按复用方式分类

直接复用是上下文高度相似时直接采用;适配复用需要通过配置、包装、接口转换或部署调整满足新环境;裁剪复用是在通用资产上删除不需要的能力;扩展复用是在稳定核心上增加领域插件;组合复用则是把多个资产按新的架构关系重新组装。考试案例中最常见的是适配、裁剪和组合,而不是完全不变的直接复用。

四、复用的前提与边界

能够复用的资产通常具有明确职责、稳定接口、可观察行为、完整文档和可验证质量。若资产依赖隐含配置、个人经验或特定组织流程,即使代码能够运行,也不适合直接作为架构资产。复用前要检查:业务假设是否相同,数据语义是否一致,安全等级是否满足,性能容量是否足够,故障模型是否相容,许可证和供应商约束是否允许。

可以把复用判断抽象成一个矩阵:

维度 关键问题 不满足时的措施
业务 目标、流程、角色是否相近 重新建模或仅复用技术资产
结构 分层、边界、依赖是否兼容 适配或重新划分边界
数据 主数据、事务边界、一致性要求是否一致 数据转换、双写或重新设计
质量 性能、可用性、安全目标是否达到 压测、加固或放弃复用
运维 发布、监控、备份、容灾是否可接入 补齐平台能力

五、案例分析

某集团已经建设统一身份认证、消息通知和审计平台,现要建设供应链系统。架构师不能只说“复用现有平台”,而应先识别资产:身份平台可复用认证协议和用户目录,但供应链系统的组织层级需要适配;消息平台可复用主题、重试和死信机制,但订单通知必须增加幂等键;审计平台可复用日志格式和检索能力,但金融级操作需要增加防篡改存储。最终复用的是架构契约和平台能力,不是把旧系统数据库表直接复制过来。

六、练习题

题1

某旧系统采用三层架构,业务稳定但性能一般。新系统要求高并发、跨地域容灾。能否直接复用原架构?

参考答案

不能直接复用。可以复用分层职责和部分领域模型,但必须重新评估数据分片、缓存、异步化、读写扩展、容灾拓扑和一致性策略。答题时要写清“复用对象、适配措施、验证方法”。

题2

区分代码复用、构件复用和架构复用。

参考答案

代码复用粒度最小,关注实现片段;构件复用关注可替换、可部署的软件单元;架构复用关注系统整体结构、质量属性策略和关键约束。架构复用必须重新验证上下文和质量目标。

七、论文与案例答题素材

可采用“资产识别—适用性评估—复用方式选择—接口与数据适配—质量验证—持续治理”的论述链。不要把“使用了成熟框架”当成复用成果,应说明它解决了什么问题、引入了什么约束、如何通过测试和运行指标证明复用有效。

八、今日复盘

记住一句话:架构复用复用的是经过验证的设计知识和约束,不是盲目复制旧系统。分类题抓住对象、范围和方式三个维度;案例题抓住上下文差异与验证证据。

九、进一步理解:复用层次与决策风险

复用层次越高,收益通常越大,但错误传播范围也越大。复用一段工具代码,问题可能局限于一个模块;复用一个公共服务,问题可能影响多个应用;复用一套企业参考架构,错误的边界和治理规则可能被几十个项目继承。因此复用前要根据影响范围设置不同的评审等级。局部构件可以由项目组评审,组织级平台应由架构委员会、运维、安全和领域代表共同评审。

从决策角度看,架构资产还可以分为可逆决策和不可逆决策。日志格式、接口命名等决策相对容易调整;数据分区、组织边界和核心事务模型一旦落地,迁移成本很高。对于不可逆决策,应优先复用已有证据,同时保留小范围验证和回滚方案。对于可逆决策,可以通过试点快速验证。

十、综合练习

复用层次越高,收益通常越大,但错误传播范围也越大。复用一段工具代码,问题可能局限于一个模块;复用一个公共服务,问题可能影响多个应用;复用一套企业参考架构,错误的边界和治理规则可能被多个项目继承。因此应根据影响范围设置不同评审等级,并优先验证数据边界、权限和不可逆决策。

复用判定还要考虑时间维度:今天稳定的技术,未来可能进入维护衰退期;今天可接受的性能,业务增长后可能成为瓶颈。因此资产卡片要记录创建时间、最近验证时间、支持版本、已知问题和替代方案。架构师不仅要问“现在能不能复用”,还要问“预计三年后是否仍可维护”。

这也是架构复用与简单复制的本质区别。

复用的目标不是消灭设计,而是把设计活动从重复劳动提升为基于证据的选择。 这也是本节最重要的结论。

某公司准备复用一个“统一用户中心”。旧系统只有一个组织层级,新系统要求集团、子公司、部门和项目组四级组织;旧系统密码认证已满足要求,但新系统增加外部合作方和多因素认证。请说明复用判断和处理方式。

参考答案:首先确认用户、组织、角色和租户的概念是否可以映射。组织层级差异说明不能直接复用数据模型,可以复用身份协议、用户生命周期接口和审计机制,通过扩展组织模型或适配层承接新层级。外部合作方需要增加联邦身份和隔离策略,多因素认证需要重新评估安全场景。最后通过权限越权测试、登录峰值压测、组织变更一致性测试和故障恢复测试验收。结论应是“部分复用、适配扩展、重新验证”,而不是简单复制。