当前位置: 首页 > news >正文

软考-系统架构设计师 软件架构复用详细讲解

个人博客:blogs.wurp.top

一、核心概念:什么是软件架构复用?

1. 定义

软件架构复用是指在多个系统中,系统地、大规模地复用先前项目中定义、设计、验证过的软件架构架构片段及其相关工作产物(如设计决策、文档、代码组件等)。

  • 核心思想“不要重复发明轮子”。通过复用经过验证的架构资产,避免从零开始设计,从而降低成本和风险,提高质量和开发速度。
  • 与代码复用的区别:架构复用是更高层次、更粗粒度的复用。它复用的不仅是代码,更是结构、决策、模式和质量属性。代码复用是战术性的,而架构复用是战略性的。

2. 复用的三个层次

架构复用通常发生在三个层次上,从抽象到具体:

  1. 架构风格与模式的复用:复用最高层的设计思想。例如,决定新系统采用 “微服务架构风格” 或使用 “MVC模式” 。这是最抽象、但影响最深远的一层。
  2. 参考架构的复用:复用为特定领域定义的、通用的、高层级的架构模板。它定义了系统的标准结构、组件类型和交互方式。例如,为“电商系统”定义一个包含用户中心、商品中心、订单中心、支付中心的标准参考架构。
  3. 软件产品线的复用:这是架构复用的最高级形式。它基于一个核心资产库(包括共通的架构、组件、工具等),通过系统化的配置和定制,快速生成该产品线下的多个具体产品。

二、软件架构复用的对象(复用什么?)

架构师领导复用的不仅仅是代码,而是一个完整的可复用资产库,包括:

  1. 架构设计与决策
    • 架构风格:如分层、微服务等。
    • 架构模式:如代理模式、门面模式等。
    • 架构决策本身:特别是那些与关键质量属性(性能、安全)相关的决策及其决策依据(Rationale)
  2. 架构文档:需求规格说明书、架构设计文档(如4+1视图)、接口规范等。
  3. 可复用组件
    • 架构级组件:如认证授权中心、API网关、配置中心、消息队列等。
    • 业务级组件:如工作流引擎、规则引擎、报表生成器等。
  4. 测试用例与测试框架:与架构和组件相关的自动化测试脚本和测试环境。
  5. 工具与环境:代码生成器、持续集成/持续部署(CI/CD)流水线、监控工具等。

三、实现架构复用的主要方法与技术

1. 软件构件技术

这是实现组件复用的基础。

  • 核心思想:将功能封装为独立部署、接口明确的构件,通过组装而非编码来构建应用。
  • 技术标准CORBA, COM/DCOM, EJB, .NET Assemblies
  • 现代实践:以 Docker容器 为载体,将组件及其依赖打包成一个标准化的、可复用的单元。

2. 架构风格与模式

  • 方法:通过教育和培训,让团队掌握并习惯于使用成熟的架构风格(如分层、事件驱动)和设计模式(如工厂、观察者)。
  • 价值:这是一种“思维复用”,确保不同项目在高层设计上保持一致性和高质量。

3. 框架

  • 定义:框架是一个半成品的应用程序,它提供了某个领域内应用的整体结构默认行为
  • 工作原理控制反转(IoC)。框架定义了程序的控制流,开发人员只需在框架预留的“插槽”(如继承父类、实现接口、添加注解)中填充特定业务的代码。
  • 例子Spring Framework(Java企业应用)、Ruby on Rails(Web应用)、Angular/React(前端应用)。
  • 价值:框架强制开发者遵循其预设的架构,是实现架构复用最有效、最普遍的技术之一。

4. 领域特定软件架构与软件产品线工程

这是最系统化、组织级的复用方法。

  • DSSA:针对一个特定应用领域(如航空电子、电子商务),构建一套通用的参考架构、标准组件和开发工具。
  • 软件产品线工程
    • 双生命周期模型
      1. 领域工程核心资产开发。构建和维护一个包含共性架构、共性组件、工具等在内的核心资产库。这是架构师的核心职责。
      2. 应用工程产品开发。利用核心资产库,通过配置、定制和扩展,快速组装出特定的产品。
    • 过程需求 -> [领域工程] -> 核心资产库 -> [应用工程] -> 产品家族
    • 成功关键:需要识别出产品家族中高度共性的部分,并将其设计到可复用的核心架构中。

5. 面向服务的架构

  • 方法:将业务功能封装为粗粒度的、松耦合的服务。这些服务通过标准接口(如Web Service)发布,可以被多个不同的应用系统复用和组合
  • 价值:实现了企业级的业务功能复用和系统集成。

四、架构复用的过程

将复用从一个美好的愿望变为可执行的工程实践,需要系统化的过程管理:

  1. 识别与规划:在项目初期,识别哪些部分可以复用现有资产,并制定具体的复用计划。
  2. 领域分析:(针对产品线)分析产品家族的共同点和变化点,为设计可复用的架构奠定基础。
  3. 资产开发/获取:创建或购买可复用的资产(构件、框架、模式)。此时必须高度重视资产的质量和文档。
  4. 资产管理:建立可复用资产库,对资产进行分类、存储、版本控制和检索,方便开发者查找和使用。
  5. 资产复用:开发者在开发新系统时,从资产库中检索、选择、评估并集成合适的资产。
  6. 维护与演化:根据使用反馈和新技术发展,持续维护和演进可复用资产。

五、架构复用的优势与挑战(软考高频考点)

1. 优势

  • 提高开发效率,缩短上市时间:减少重复设计和编码的工作量。
  • 提高软件质量与可靠性:复用的资产经过多个项目的验证,比新开发的代码更稳定可靠。
  • 降低开发成本与风险:减少了人月投入,并降低了在自有代码中引入新缺陷的风险。
  • 提高系统间的一致性:复用共同的架构和组件,使得系统在结构、行为和用户体验上保持一致。
  • 促进技术传承:将优秀的设计和经验固化在可复用资产中,降低了对特定人员的依赖。

2. 挑战与代价

  • 创建可复用资产的成本高:设计通用、灵活、文档齐全的资产比完成特定功能需要更多的投入。
  • “非我发明”综合症:开发者倾向于相信自己编写的代码,抗拒使用他人开发的组件。
  • 发现与评估困难:在庞大的资产库中快速找到并准确评估一个合适的组件并非易事。
  • 集成与适配成本:复用的组件可能不完全符合需求,需要编写适配器(Adapter) 或进行配置,这可能抵消部分复用收益。
  • 维护与演化的复杂性:当复用的资产需要升级时,所有使用它的系统都可能需要同步测试和更新,管理复杂度高。

六、软考考点总结与应用

  1. 选择题

    • 直接考查架构复用的定义层次对象
    • 考查实现复用的主要方法与技术(构件、框架、模式、产品线)。
    • 考查架构复用的主要优点和挑战
    • 区分领域工程应用工程
  2. 案例分析题

    • 题目描述一个组织希望提升开发效率和质量,要求提出改进方案。
    • 问题:请为你设计一套推行软件架构复用的方案。
    • 答题要点
      1. 建立复用文化:解决“非我发明”问题,建立激励机制。
      2. 构建核心资产库
        • 提炼参考架构通用架构模式
        • 将通用功能(如用户认证、日志记录)抽象为可复用构件
        • 引入或开发统一的技术框架(如Spring Cloud)。
      3. 建立管理流程:制定资产的创建、认证、入库、检索和维护流程。
      4. 试点项目:选择合适项目进行试点,积累经验。
  3. 论文题

    • 可能围绕“论软件复用技术在系统开发中的应用”、“企业级构件库的规划与设计”、“软件产品线工程实践”等主题。
    • 写作时,可以详细论述:
      • 你如何识别和规划复用机会。
      • 你如何领导团队设计和开发可复用的架构资产(如一个统一的微服务治理平台)。
      • 你如何建立和管理可复用资产库
      • 在推行复用过程中遇到的阻力与挑战(技术、管理、文化)以及你的应对策略
      • 复用为项目带来的量化收益(如开发周期缩短百分比、缺陷率下降)。

总结

对于软考架构师,掌握软件架构复用的关键在于:

  • 树立战略性思维:将复用视为一项长期的、需要投入的战略性工程,而非临时技巧。
  • 掌握系统性方法:精通从资产识别、开发、管理到使用的全过程。
  • 精通核心技术:深刻理解构件、框架、产品线等核心复用技术的原理和实施要点。
  • 具备权衡与管理能力:能够评估复用的成本与收益,并管理其带来的复杂性。
http://www.dtcms.com/a/467136.html

相关文章:

  • 3.3 可靠数据传输的原理
  • 软考-系统架构设计师 特定领域软件体系结构详细讲解
  • 网站需要备案才能建设吗风云办公ppt模板网站
  • 计量基础知识(计量管理员)
  • 从 0 到 1,用 Chainlit 打造「多文件知识库对话」Web 应用
  • 深圳网站建设网站制作网站推广资阳自贡网站建设平台
  • 个人网站建立步骤网店美工设计
  • wordpress 全站pjax263企业邮箱管理员登录入口
  • 17-查看单片机的栈地址使用情况
  • 军事网站大全军事网做网站去哪里找
  • python学习之文件的基础操作
  • 为什么需要延迟双删,两次删除的原因是什么?
  • 深圳电商网络网站建设wordpress 备案号插件
  • 局网站建设管理制度财务软件免费
  • 怎么看网站是dede模板心理网站 模版
  • 如何制作响应式网站网站建设费应开具互联网信息服务吗
  • 企业级BPM低代码平台JMEEV深度解析
  • 网站建设关键词布局wordpress全部文件夹
  • 东城区网站排名seo如何进行网络营销服务创新
  • Arbess从入门到实战(10) - 使用Arbess+GitLab实现.Net 项目自动化部署
  • 重庆帝一网络网站建设专家南京房地产网站
  • 《K8s集群多节点部署》(Ubuntu22.04)
  • 做网站赚大钱php手机网站建设
  • 如何把网站主关键词做到百度首页中国重大新闻
  • 免费做app和网站的平台有哪些最贵网站建设多少钱
  • 36kr网站用什么做的wordpress开发人力资源
  • 亚马逊网站建设网站seo关键词排名优化
  • 软件下载网站如何履行北京外包公司都有哪些
  • 网站建设中出现的错误代码自己建立一个网页
  • 音乐网站开发 群云南百度推广开户