基于架构的软件开发方法

基于架构的软件开发方法

基于架构的软件开发方法是由架构驱动的,即指由构成体系结构的商业、质量和功能需求的组合驱动的。使用ABSD 方法,设计活动可以从项目总体功能框架明确就开始,这意味着需求抽取和分析还没有完成(甚至远远没有完成),就开始了软件设计。设计活动的开始并不意味着需求抽取和分析活动就可以终止,而是应该与设计活动并行。特别是在不可能预先决定所有需求时(例如,产品线系统或长期运行的系统),快速开始设计是至关重要的。
在这里插入图片描述
基于架构的软件开发过程

基于架构的软件开发方法的三个基础

ABSD 方法有3 个基础。第1个基础是功能的分解。在功能分解中,ABSD 方法使用已有的基于模块的内聚和耦合技术。第 2个基础是通过选择体系结构风格来实现质量和商业需求,第3个基础是软件模板的使用,软件模板利用了一些软件系统的结构。
ABSD 方法是递归的,且迭代的每一个步骤都是清晰定义的。因此,不管设计是否完成,体系结构总是清晰的,这有助于降低体系结构设计的随意性。

功能分解

基于架构的软件开发方法(ABSD)的第一个基础是功能的分解,ABSD方法使用已有的基于模块的内聚和耦合技术 。在功能分解中,ABSD方法将复杂系统简化为更小、更易于管理和可理解的部分。功能分解使设计、分析和实现复杂系统变得容易。

选择体系结构风格

基于架构的软件开发方法(ABSD)在选择架构风格时,应该考虑商业、质量和功能需求的组合。ABSD方法强调由商业、质量和功能需求的组合驱动软件架构设计。ABSD是一个自顶向下,递归细化的软件开发方法,它以软件系统功能的分解为基础,通过选择架构风格实现质量和商业需求 。

在候选的分布式架构中,低级别的事件驱动或微服务架构与大多数架构特性相匹配。在这两者中,微服务更好地支持不同的操作架构特性,纯粹的事件驱动架构通常不会因为这些操作架构特性而获得优势。

选择架构模版

在ABSD方法中,软件模板是一个重要的概念。软件模板利用了一些软件系统的结构,但是它们并不是一个完整的解决方案。相反,它们提供了一些可重用的元素,这些元素可以在多个项目中使用。在使用软件模板时,应该根据项目的需求进行适当的修改和扩展。

基于架构的软件开发方法的六个步骤

架构需求

重点是标识构件的三步
在这里插入图片描述

架构设计

将需求阶段的标识构件映射为构件进行分析
在这里插入图片描述

架构文档化

架构文档化主要产生2种文档,架构规格说明书,测设架构需求的质量设计说明书,文档至关重要,关系到开发的成败。

架构评审

由外部人员 (独立于开发组织之外的人,如用户代表和领域专家等)参加的复审,复审架构是否满足需求,质量问题,构件划分合理性等。若复审不过,则返回架构设计阶段进行重新设计、文档化,再复审。

架构实现

用实体来显示出架构。实现构件,构件组装成系统
在这里插入图片描述

架构演化

对架构进行改变,按需求增删构件,使架构可复
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/67661.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis——通用命令介绍

Redis官方文档 redis官方文档 核心命令 set 将key和value存储到Redis中,key和value都是字符串 set key valueRedis中不区分大小写,字符串类型也不需要添加单引号或者双引号 get 根据key读取value,如果当前key不存在,则返回…

Sentinel使用实例

不说了,直接上官方文档 https://github.com/alibaba/spring-cloud-alibaba/blob/master/spring-cloud-alibaba-examples/sentinel-example/sentinel-core-example/readme-zh.md Sentinel Example 项目说明 本项目演示如何使用 Sentinel starter 完成 Spring Clo…

2023国赛数学建模C题思路分析

文章目录 0 赛题思路1 竞赛信息2 竞赛时间3 建模常见问题类型3.1 分类问题3.2 优化问题3.3 预测问题3.4 评价问题 4 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 竞赛信息 全国大学生数学建模…

《零基础实践深度学习》(第2版)学习笔记,(二)机器学习和深度学习综述

文章目录 1. 人工智能、机器学习、深度学习的关系2. 机器学习2.1 实现原理2.2 如何实施 3. 深度学习神经网络核心概念 1. 人工智能、机器学习、深度学习的关系 **人工智能(Artificial Intelligence,AI)**是研发用于模拟、延伸和扩展人的智能…

如何使用CSS实现一个响应式网格布局?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用CSS实现响应式网格布局⭐ 设置基本的HTML结构⭐ 创建基本的CSS样式⭐ 添加媒体查询以实现响应式效果⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端…

问题:【IntelliJ IDEA】解决idea自动声明变量加finall修饰符问题

问题:【IntelliJ IDEA】解决idea自动声明变量加finall修饰符问题 场景复现 1 new String() 2 快捷方式生成变量 final修饰的 final String s new String();步骤一:确保settings配置信息 settings-----》Editor------》Code Style--------》java下的这两个选项不…

LangChain入门:构建LLM驱动的应用程序的初学者指南

LangChain & DemoGPT 一、介绍 你有没有想过如何使用大型语言模型(LLM)构建强大的应用程序?或者,也许您正在寻找一种简化的方式来开发这些应用程序?那么你来对地方了!本指南将向您介绍LangChain&#x…

如何使用Redis实现内容推送功能

导读 在日常使用中,我们经常能看见内容推送功能。 常见的场景有,比如你在bilibili关注了某个up主,当up主发布视频后,就会推送到你的收件箱或者是动态中,让粉丝能够及时得知所关注的人发布了内容。 又比如朋友圈&…

spark的使用

spark的使用 spark是一款分布式的计算框架,用于调度成百上千的服务器集群。 安装pyspark # os.environ[PYSPARK_PYTHON]解析器路径 pyspark_python配置解析器路径 import os os.environ[PYSPARK_PYTHON]"D:/dev/python/python3.11.4/python.exe"pip inst…

【Java】2021 RoboCom 机器人开发者大赛-高职组(复赛)题解

7-8 人工智能打招呼 号称具有人工智能的机器人,至少应该能分辨出新人和老朋友,所以打招呼的时候应该能有所区别。本题就请你为这个人工智能机器人实现这个功能:当它遇到陌生人的时候,会说:“Hello X, how are you?”其…

用于构建生成式 AI 应用程序备忘单的最佳 Python 工具

推荐:使用 NSDT场景编辑器 助你快速搭建可二次编辑器的3D应用场景 新一代的声音 KDnuggets发布了一份富有洞察力的新备忘单,重点介绍了用于构建生成AI应用程序的顶级Python库。 毫无疑问,读者都知道,生成式人工智能是目前数据科…

汽车制造业上下游协作时 外发数据如何防泄露?

数据文件是制造业企业的核心竞争力,一旦发生数据外泄,就会给企业造成经济损失,严重的,可能会带来知识产权剽窃损害、名誉伤害等。汽车制造业,会涉及到重要的汽车设计图纸,像小米发送汽车设计图纸外泄事件并…