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

基于架构的软件开发方法

1.ABSD概念

基于架构的软件设计(Architecture-Based Software Design,ABSD)方法强调由商业、质量和功能需求的组合驱动软件架构设计。ABSD是一个自顶向下,递归细化的软件开发方法,软件系统的体系结构通过该方法得到细化,直到能产生软件构件和类。它以软件系统功能的分解为基础,通过选择架构风格实现质量和商业需求,并强调在架构设计过程中使用软件架构模板

ABSD方法有三个基础:

第一个基础是功能分解,在功能分解中使用已有的基于模块的内聚和耦合技术。

第二个基础是通过选择体系结构风格来实现质量和商业需求。

第三个基础是软件模板的使用。

ABSDM模型把整个基于体系结构的软件过程划分为体系结构需求、设计、文档化、复审、实现、演化等六个子过程。

2.体系结构需求(即软件架构需求)

软件架构需求是指用户对目标软件系统在功能、行为、性能和设计约束等方面的期望。

需求过程主要是获取用户需求标识系统中所要用到的构件并进行架构需求评审

其中标识构件又详细分为生成类图、对类图进行分组和将类打包成构件三步。软件架构需求并不应该包括设计构件的过程。

3.架构复审

架构复审是基于架构开发中一个重要的环节。架构设计、文档化和复审是一个迭代的过程。从这个方面来说,在一个主版本的软件架构分析之后,要安排一次由外部人员(用户代表和领域专家)参加的复审。架构复审过程中,通常会对一个可运行的最小化系统进行架构评估和测试。架构复审的目标是标识潜在的风险,及早发现架构设计的缺陷和错误。

4.体系结构演化

体系结构演化是使用系统演化步骤去修改应用,以满足新的需求。主要包括以下6个步骤。

1. 需求变化归类 首先必须对用户需求的变化进行归类,使变化的需求与已有构件对应。对找不到对应构件的变动,也要做好标记,在后续工作中,将创建新的构件,以对应这部分变化的需求。

2.制订体系结构演化计划 在改变原有结构之前,开发组织必须制订一个周密的体系结构演化计划,作为后续演化开发工作的指南。

3.修改、增加或删除构件 在演化计划的基础上,开发人员可根据在第1步得到的需求变动的归类情况,决定是否修改或删除存在的构件、增加新构件。最后,对修改和增加的构件进行功能性测试。

4.更新构件的相互作用 随着构件的增加、删除和修改,构件之间的控制流必须得到更新。

5.构件组装与测试 通过组装支持工具把这些构件的实现体组装起来,完成整个软件系统的连接与合成,形成新的体系结构。然后对组装后的系统整体功能和性能进行测试。

6.技术评审 对以上步骤进行确认,进行技术评审。评审组装后的体系结构是否反映需求变动、符合用户需求。如果不符合,则需要在第2到第6步之间进行迭代。在原来系统上所做的所有修改必须集成到原来的体系结构中,完成一次演化过程。

相关文章:

  • 访问后端接口报错:net::ERR_CONNECTION_RESET
  • SpringCloud(六) Nacos配置管理
  • 延时摄影视频制作工具 LRTimelapse mac中文版特点介绍
  • python 实时读取文件数据生成折线图——Matplotlib
  • Spring Boot 使用断言抛出自定义异常,优化异常处理机制
  • okhttp post请求 header post参数加密遇到的两个问题
  • 怎么让重要文件自动备份到OneDrive?
  • 【QT】基本的绘图操作和高级绘图
  • 算法:查找数组中第K大的元素
  • ONNX的结构与转换
  • 数仓建模—数仓建设概论
  • js替换字符串中的某个字符
  • TypeScript深度剖析:TypeScript 中枚举类型应用场景?
  • Maven Repository使用
  • 进程空间管理:用户态和内核态
  • Android框架之Volley
  • Apache的基本使用
  • canvas 高仿 Apple Watch 表盘
  • es6(二):字符串的扩展
  • JavaScript异步流程控制的前世今生
  • Koa2 之文件上传下载
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • Quartz初级教程
  • Zsh 开发指南(第十四篇 文件读写)
  • 笨办法学C 练习34:动态数组
  • 原生 js 实现移动端 Touch 滑动反弹
  • HanLP分词命名实体提取详解
  • Prometheus VS InfluxDB
  • 湖北分布式智能数据采集方法有哪些?
  • ​flutter 代码混淆
  • #1014 : Trie树
  • (4)事件处理——(7)简单事件(Simple events)
  • (iPhone/iPad开发)在UIWebView中自定义菜单栏
  • (rabbitmq的高级特性)消息可靠性
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (阿里云万网)-域名注册购买实名流程
  • (附源码)ssm高校实验室 毕业设计 800008
  • (黑客游戏)HackTheGame1.21 过关攻略
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)大型网站架构演变和知识体系
  • (转)使用VMware vSphere标准交换机设置网络连接
  • (转载)利用webkit抓取动态网页和链接
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .CSS-hover 的解释
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .NET core 自定义过滤器 Filter 实现webapi RestFul 统一接口数据返回格式
  • .net framework4与其client profile版本的区别
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET4.0并行计算技术基础(1)
  • @JSONField或@JsonProperty注解使用
  • [100天算法】-不同路径 III(day 73)
  • [20170713] 无法访问SQL Server