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

系统架构设计师 软件架构的定义与生命周期

软件架构的定义

通过一系列的设计活动,以满足系统的功能性需求和符合一定的非功能性需求质量属性有相似含义的软件系统框架模式。在软件体系结构设计过程中,主要考虑的是系统的非功能性需求

软件体系结构设计经验的总结与重用是软件工程的重要目标之一,所采用的手段主要包括体系结构风格DSSA(特定领域的架构)

软件架构设计的重要性

了解

  1. 架构设计能够满足系统的品质
  2. 架构设计使受益人达成一致的目标
  3. 架构设计能够支持计划编制过程
  4. 架构设计对系统开发的指导性
  5. 架构设计能够有效管理复杂性
  6. 架构设计能够为复用奠定基础
  7. 架构设计能够降低维护费用
  8. 架构设计能够支持冲突分析

架构设计的生命周期

选择题,但是你要知道有哪些阶段,对于每一个阶段干什么事情要知道

  1. 需求分析
  2. 设计阶段
  3. 实现阶段
  4. 构件组装阶段
  5. 部署阶段
  6. 后开发阶段

需求分析

起步阶段

需求和软件架构设计面临的是不同的对象:

  1. 问题空间
  2. 解空间
    保持二者的可追踪行和转换,一直是软件工程领域追求的目标

从软件需求模型向软件架构模型的转换主要关注两个问题

  1. 如何根据需求模型构件软件架构模型
  2. 如何保证模型转换的可追踪性

设计阶段

主要研究如下内容

  1. 软件架构模型的描述
  2. 软件架构模型的设计与分析方法
  3. 对软件架构设计经验的总结与复用

有关软件架构模型描述的研究分为三个层次

  1. SA的基本概念

SA模型由哪些元素组成,这些组成元素之间按照何种原则组织
传统的设计概念只包括构件以及一些基本的模块互联机制。随着研究的深入,构件间的互联机制逐渐独立出来,成为与构件同等级别的实体,被称之为连接子

  1. 体系结构描述语言 , ( A r c h i e t c t u r e   D e s c r i p t i o n   L a n g u a g e , A D L ) 体系结构描述语言,(Archietcture\ Description\ Language,ADL) 体系结构描述语言,(Archietcture Description Language,ADL)

支持构件、连接子及其配置的描述语言是如今所说的体系结构描述语言。
你可以认为VDL就是你画架构图的时候用的哪些图形文字之类的东西

  1. 软件架构模型的多视图表示

即从不同的视角描述特定系统的体系结构,从而得到多个视图,并将这些视图组织起来以描述整体的软件架构模型。
典型的包括4+1视图

实现阶段

干的活有如下几个方面

  1. 研究基于软件架构的开发过程支持,如项目组织结构、配置管理等等
  2. 寻求从软件架构向实现过渡的途径,如将程序设计语言元素引入软件架构阶段、模型映射、构建组装,复用中间件平台等
  3. 研究基于软件架构的测试技术。

构件组装阶段

研究的内容如阿西哎

  1. 如何支持可复用构件的互联,即对SA设计模型中规约的连接子的实现提供支持
  2. 组装过程中,如恶化检测并消除体系结构失配问题。这些问题主要包括
  • 由构件引起的失配

包括由于系统对构件基础设施、构件控制模型和构建数据模型的假设存在冲突引起的失配

  • 由连接子引起的失配

包括由于系统对构件交互协议、连接子数据模型的假设存在冲突引起的失配

  • 由于系统成分对全局体系结构的假设存在冲突引起的失配

要解决失配问题,首席按需要检测出失配问题,并在此基础上通过适当的手段消除检测出的适配问题

即你去宜家,家具都是组装而成的,但不幸的是,我们找到的板材和螺丝钉连接不起来,对不上,你就可以认为这是构件之间引起的失配,连接子引起的失配,往大的说,就是对全局体系结构的失配

部署

  1. 提供更高层的体系结构视图描述部署阶段的软硬件模型
  2. 基于软件架构模型可以分析部署方案的质量属性,从而选择合理的部署方案

后开发阶段

软件部署安装之后的阶段

主要研究围绕维护演化复用等方面进行。典型的研究方向包括动态软件体系结构体系结构恢复与重建等等


http://www.kler.cn/news/366702.html

相关文章:

  • 在多数据中心环境中,自动化运维如何保证跨区域的一致性?网络延迟导致的数据不一致是否可以完全避免?|自动化运维|跨区域一致性
  • 研发运营一体化(DevOps)能力成熟度模型
  • 2024年全球 MoonBit 编程创新赛-零基础早鸟教程-使用wasm4八小时开发井子棋小游戏
  • 面试篇!!!!!
  • P2818 天使的起誓
  • Vue 自定义指令 Directive 的高级使用与最佳实践
  • week08 zookeeper多种安装与pandas数据变换操作-new
  • UE5学习笔记26-添加游戏热身时间,比赛时间,重新开始比赛
  • 【jvm】所有的线程都共享堆吗
  • 【mysql进阶】4-7. 通用表空间
  • 理解 python 类
  • 某ai gpt的bug
  • go的web服务器框架
  • 南京林业大学生态学博士在1区top期刊揭示人工林发育促进土壤团聚体的形成与稳定:对土壤碳氮固存的启示
  • 多端项目开发全流程详解 - 从需求分析到多端部署
  • C语言 | Leetcode C语言题解之第508题斐波那契数
  • 24. Lammps命令学习-系统定义部分总结
  • MySQL-日志
  • qt QWidget详解
  • LeetCode刷题日记之贪心算法(五)
  • Vim 编辑器从入门到入土
  • Ubuntu安装repo
  • 基于plc的楼宇自动化控制系统(开题报告)
  • 构建高效房屋租赁平台:SpringBoot应用案例
  • 07_Linux网络配置与管理:命令与工具指南
  • 【华为HCIP实战课程二十一】OSPF区域间汇总配置详解,网络工程师