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

软考高级架构-7.2-基于架构的软件开发方法-超详细讲解+精简总结

7.2 - 基于架构的软件开发方法

7.2.1 概述

ABSD:基于体系结构的软件设计 (Architecture-Based Software Design,ABSD) 方法。
ABSD方法 是架构驱动的,即商业、质量和功能需求的组合驱动的。
设计先行:在需求分析未完成时,ABSD 就可以开始设计工作,特别适合需求不明确的系统。
ABSD 方法基于三个关键原则:
  1. 功能分解:将系统分解为模块,基于模块的内聚和耦合技术

  2. 选择架构风格来实现质量和商业需求

  3. 使用软件模板:利用已有的软件系统结构模板,帮助加速设计和开发。

7.2.2 概念与术语

1、架构设计元素

2、视图与视角:需要从不同视角观察架构,所以有不同的视图。

3、用例与质量场景:

例是系统给用户的一个功能点,用来捕获功能需求。 

质量场景用来捕获质量需求,需要考虑变更场景性能场景可靠性场景交互性场景的预期的和非预期的情况。

7.2.3基于体系结构的开发模型

1、体系结构需求

  1. 需求获取:用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。如果以前有类似的需求,我们可以从需求库中取出,加以利用和修改。
  2. 标识构件:系统的初始逻辑结构,分为生成类图->对类进行分组->把类打包成构件三步。
  3. 架构需求评审:获取的需求是否真实地反映了用户的要求、 类的分组是否合理,构件合并是否合理等。

2、体系结构设计

  1. 提出架构模型:选定合适的架构风格,建立初步模型。
  2. 映射构件:将已标识的构件放入架构模型中,生成中间结构。
  3. 分析构件相互作用:分析构件之间的关系,确保协同工作。
  4. 产生软件体系结构:根据中间结构进行精细化、完善,生成完整的软件架构。
  5. 设计评审:邀请外部人员评审架构,确保合理性。

3、体系结构文档化

        体系结构文档化是为了将抽象的架构转换为程序员实现的具体内容。

        文档是团队沟通的桥梁,也是用户和开发者之间的协议,它的完整性和准确性对体系结构的成功至关重要。必须以使用者的角度编写,并定期更新,确保所有开发人员都能获取最新版本。

主要文档输出

  1. 体系结构规格说明:提供架构的详细说明,定义系统的构件和关系。
  2. 质量设计说明书:描述如何测试和验证体系结构需求,确保架构满足质量要求。

4、体系结构复审

        体系结构设计、文档化和复审 是一个不断迭代的过程。

        为了评估体系结构设计是否满足需求,通常会根据设计搭建一个可运行的最小化系统,用于测试和识别技术和协作风险,参与者包括用户代表和领域专家。

复审目的是早期识别潜在的风险,发现架构中的缺陷,确保:

  • 体系结构是否满足用户需求、质量需求、层次是否清晰;
  • 构件划分是否合理、构件设计是否满足功能和性能要求。
  • 文档表达是否明确;

5、体系结构实现

        实现软件体系结构 是将抽象的架构转换为具体的系统,实现过程遵循架构设计的决策,将系统分解为构件,并确保构件按照规定的方式交互。实现过程是基于复审后的体系结构说明书。

  1. 查找或开发构件:根据体系结构中定义的接口约束,从构件库中查找符合要求的构件,必要时开发新的构件。
  2. 组装构件:通过工具将符合接口要求的构件组装起来,完成整个系统的连接与集成。
  3. 测试:进行单个构件的功能测试,以及整个系统的功能和性能测试,确保系统按预期工作。

6、体系结构的演化

        体系结构演化 是为了适应用户需求的变化或系统环境的迁移,对软件架构进行调整的过程。体系结构演化过程包括以下6个步骤:

  • 需求变化归类:分类需求变化,标记无法匹配的构件。
  • 制定演化计划:制定计划,指导后续修改。
  • 修改或新增构件:修改、删除或新增构件,并进行测试。
  • 更新构件关系:调整构件间的交互关系。
  • 组装与测试:组装系统,测试整体功能和性能。
  • 技术评审:评审架构,确保满足新需求,不符合时迭代修改。


http://www.mrgr.cn/news/58878.html

相关文章:

  • Java使用dom4j生成kml(xml)文件遇到No such namespace prefix: xxx is in scope on:问题解决
  • 腾讯云DBA面试(一面)
  • 【C++篇】栈的层叠与队列的流动:在 STL 的韵律中探寻数据结构的优雅之舞
  • 解读 Java 经典巨著《Effective Java》90条编程法则,第2条:遇到多个构造器参数时要考虑使用构建器
  • ERR_PNPM_LINKING_FAILED Error: EPERM: operation not permitted, rename...
  • ubuntu linux安装nessus企业版
  • Redis混合持久化原理
  • android——渐变色
  • Spring Boot技术在厨艺社交平台中的应用
  • django游戏门户系统
  • springboot体重管理与健康饮食推荐小程序计算机设计毕业源码15351
  • Linux 中的编译器 GCC 的编译原理和使用详解
  • Linux:ELF文件格式和重谈进程地址空间
  • 第 24 章 - Elasticsearch 索引生命周期管理
  • Java 中 String 字符串使用避坑指南:少走弯路的实用经验
  • 中兴校招薪资一览表
  • 国内短剧系统源码搭建系统平台小程序新玩法
  • 05.MyISAM主键和二级索引树
  • 5-15 连接脚本(2)
  • 2024年中国超级智能计算力枢纽建设白皮书——全面解析智算中心构建方案
  • leetcode 有重复字符串的排列组合
  • 2535.数组元素和与数字和的绝对差
  • 文件夹变文件:数据恢复全攻略
  • 聚簇索引与非聚簇索引
  • 论文略读:MoRA: High-Rank Updating for Parameter-Efficient Fine-Tuning
  • LLM - 使用 Neo4j 可视化 GraphRAG 构建的 知识图谱(KG) 教程