软件工程与计算总结(十)软件体系结构设计与构建

目录

​编辑

一.体系结构设计过程

1.分析关键需求和项目约束

2.选择体系结构风格

3.体系结构逻辑设计

4.体系结构实现

5.完善体系结构设计

6.定义构件接口

二.体系结构原型构建

1.包的创建

2.重要文件的创建

3.定义构件之间的接口

4.关键需求的实现

三.体系结构的集成与测试

1.集成的策略

2.桩、驱动与集成测试用例

四.体系结构设计文档描述

五.体系结构评审


一.体系结构设计过程

1.分析关键需求和项目约束

  • 需求规格说明:作为表述用户实际需求的制品,高速软件开发人员应该做什么,是得到用户认可的唯一条件~
  • 关键需求:很少一部分影响到整体结构设计的需求才是关键性需求~
  • 项目约束:项目本身还有很多环境约束会对体系结构设计的选择产生影响~

2.选择体系结构风格

体系结构风格封装了已经重复验证、可复用并语义内聚的一组设计机制,是成功软件设计经验的总结,所以如果能够选择到满足关键需求和项目约束的软件体系结构风格就能够充分复用前人的设计成果~

不同风格有不同的特点,选择的依据是风格的特点是否能与关键需求和项目约束相兼容~

3.体系结构逻辑设计

目的是建立能够满足概要功能需求、质量需求与项目约束的软件体系结构抽象设计方案~

  • 依据概要功能需求与体系结构风格建立初始设计
  • 使用非功能性需求与项目约束评价和改进初始设计

4.体系结构实现

逻辑视角描述的是一个概念上抽象的系统,并不是一个实实在在物理上的系统,需要将软件体系结构的逻辑设计从开发、发布、部署3个角度进行实现,建立软件体系结构的物理设计

  • 开发包设计:逻辑情况下每一个包都可以转化为一个开发包
  • 运行时的进程:进程图主要是表明运行时的进程,以及各进程间如何通信的~
  • 物理部署:UML部署图描述了一个运行时的物理硬件节点,以及在这个节点上运行的软件构件的静态视图;部署图主要表明构建在物理节点上如何分布,同时也表明节点之间的物理连接~

5.完善体系结构设计

  • 有时还需要为软件体系结构添加辅助构件以完成系统的特殊功能
  • 结构设计方案如果仅仅停留在模块的层次,不利于验证其正确性,可以适当进行软件体系结构的细化

6.定义构件接口

定义构件之间的接口,这是进行软件体系结构文档化和交流的必要手段

二.体系结构原型构建

1.包的创建

包是用于将系统组织成层次结构的机制,可以根据构件的设计来创建项目的包

2.重要文件的创建

体系结构原型和一个完整项目类似,都包含类源文件,还包含接口源文件、数据文件、项目配置文件、构建配置文件等。我们需要根据前面的设计再对应的开发包和项目文件夹中创建相应的文件,创建之后还会产生类文件和可执行文件等~

3.定义构件之间的接口

包和文件定义之后,我们可以着力开始定义构件之间的接口~

4.关键需求的实现

创建好文件之后,我们需要实现一些关键功能需求

三.体系结构的集成与测试

1.集成的策略

当体系结构中原型各个模块的代码都编写完成并经过单元测试之后,需要将所有模块组合起来形成整个软件原型系统,这就是集成——目的是逐步让各个模块合成为一个系统来工作,从而验证整个系统的功能、性能、可靠性等需求~

常见的集成策略:

  • 大爆炸集成 :将所有模块一次性组合在一起,优点是短时间内迅速完成集成测试,缺点是一般情况下一次成功的可能性不大,这就使问题的定位和修改比较困难,许多接口错误很容易躲过测试
  • 自顶向下集成:先集成测试上层的模块,下层模块使用伪装的具有相同接口的桩,然后不断地加入下层的模块,再进行测试,直到所有的模块都被集成进来
  • 自底向上集成:与前者相反,从最底层的模块集成测试起,测试的时候上层的模块使用伪装的相同接口的驱动来替换,优点是底层组件开发可以并行,缺点是驱动的开发工作量大
  • 持续集成:提倡尽早集成和频繁集成,即不需要总是等待一个模块开发完才把他集成起来,而是在开发之初就利用桩集成起来;频繁集成式之开发者每次完成一些开发任务之后,就可以用开发结果替换桩中的相应组件,进行集成与测试~

2.桩、驱动与集成测试用例

桩是在软件测试中用来替换某些模块的,桩一般和所替代的模块有相同的接口,并且模拟地实现了模块的行为——相对于真实的实现要简单得多~

四.体系结构设计文档描述

描述软件整体结构,包含整个系统的逻辑组成等诸多内容~

五.体系结构评审

一方面是用户和所有开发人员再一次确认大家对软件功能理解是否一致,并确认一些细节分支情况的处理~

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

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

相关文章

屏幕亮度调节保护您的眼睛

官方下载地址: 安果移动 视频演示:屏幕亮度调节-保护您的眼睛_哔哩哔哩_bilibili 嗨,亲爱的用户,你是否有过这样的体验:夜晚安静的时刻,想要在抖音上看看热门的舞蹈、在快手上发现生活的 趣味、或是在哔…

Godot2D角色导航-自动寻路教程(Godot实现角色随鼠标移动)

文章目录 运行结果2D导航概述开始前的准备2D导航创建导航网格创建角色 其他文章 运行结果 2D导航概述 Godot为2D和3D游戏提供了多个对象、类和服务器,以便于基于网格或基于网格的导航和路径查找。 说到导航,就得说一下导航网格,导航网格定义…

区块链跨链技术

区块链跨链技术 背景 近年来,随着区块链技术的不断发展,区块链的应用场景逐渐从最初的加密货币领域扩展到金融、物流、医疗、公共服务等各个领域。随着区块链的应用场景不断增多,区块链的“数据孤岛”问题日益突出,不同场景下的…

发现更多美景!XnViewMP for Mac/Windows 图片浏览软件

想要轻松快捷地浏览、管理和编辑您的照片吗?XnViewMP for Mac 是您的最佳选择!这款强大而多功能的图片浏览软件将给您带来全新的视觉体验。 借助 XnViewMP,您可以方便地浏览各种图片格式,包括JPEG、PNG、GIF等,并支持…

贴片电容材质的区别与电容的主要作用

一、贴片电容材质NPO、COG、X7R、X5R、Y5V、Z5U区别 主要是介质材料不同,不同介质种类由于它的主要极化类型不一样,其对电场变化的响应速度和极化率也不一样。在相同的体积下的容量就不同,随之带来的电容器介质的损耗、容量的稳定性也就不同…

Linux 文件系统逻辑结构图的解释

task_struct进程结构体,表示一个运行的进程。 task_struct中的fs指向fs_struct结构体。fs_struct表示这个进程支持的文件系统。 root指向根目录dentry,dentry中的d_inode指向改进程根目录在存储设备中的inode节点。 pwd指向当前进程所在的目录结构体den…

Pytorch从零开始实战05

Pytorch从零开始实战——运动鞋识别 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——运动鞋识别环境准备数据集模型选择数据可视化模型预测总结 环境准备 本文基于Jupyter notebook,使用Python3.8,Pytorch2.0.1cu118…

加持智慧医疗,美格智能5G数传+智能模组让就医触手可及

智慧医疗将云计算、物联网、大数据、AI等新兴技术融合赋能医疗健康领域,是提高医疗健康服务的资源利用效率,创造高质量健康医疗的新途径。《健康中国2030规划纲要》把医疗健康提升到了国家战略层面,之后《“十四五”全面医疗保障规划》等一系…

如何导出带有材质的GLB模型?

1、为什么要使用 GLB 模型? GLB格式(GLTF Binary)是一种用于存储和传输3D模型及相关数据的文件格式,具有以下优点和作用: 统一性:GLB是一种开放标准的3D文件格式,由Khronos Group制定和维护。它融合了GL…

【C++入门】命名空间详解(从零开始,冲击蓝桥杯)

C入门 命名空间 南喵小鸡汤程序员可以让步,却不可以退缩,可以羞涩,却不可以软弱,总之,程序员必须是勇敢的。一 . 命名空间的介绍二.命名空间的实际应用1.为什么要有命名空间我们在使用变量时,通常会为他定义一个名字,在…

基于R和gephi做宏基因组与代谢组等多组学联合network相关性网络图

写在前面 拿到多组学的数据后一直在找合适的方法将二者进行关联,比如我这里是三种体液的代谢组与一种体液的宏基因组。需求是对多组学进行关联分析,直到最近看到不少文章里利用Gephi将相关性表格进行可视化的图,效果还不错,于是写…

vscode用密钥文件连接ssh:如果一直要输密码怎么办

commandshiftP:打开ssh配置文件 加上这么一段,host就是你给主机起的名字 对IdentityFile进行更改,改成相应的密钥文件 然后commandshiftP链接到主机就可以了 但是有时候它会让输入密码 这是由于你给这个IdentityFile的权限太多了&#xf…

【深度学习】DDPM,Diffusion,概率扩散去噪生成模型,原理解读

看过来看过去,唯有此up主,非常牛: Video Explaination(Chinese) 1. DDPM Introduction q q q - 一个固定(或预定义)的正向扩散过程,逐渐向图像添加高斯噪声,直到最终得到纯噪声。 p θ p_θ p…

Redis的Java客户端-Jedis

目录 一、Jedis基本用法二、Jedis连接池 一、Jedis基本用法 二、Jedis连接池

晨控CK-GW06系列网关与汇川可编程控制器MOSBUSTCP通讯手册

晨控CK-GW06系列网关与汇川可编程控制器MOSBUSTCP通讯手册 晨控CK-GW06系列是支持标准工业通讯协议 MODBUSTCP 的网关控制器,方便用户集成到PLC等控制系统中。本控制器提供了网络 POE 供电和直流电源供电两种方式,确保用户在使用无 POE 供电功能的交换机时可采用外…

Kopler.gl笔记:可视化功能总览

1 添加数据 2 添加图层 打开“数据层”菜单,开始可视化。 层(Layers)简单来说就是可以相互叠加的数据可视化。 3 添加过滤器 在地图上添加过滤器以限制显示的数据。过滤器必须基于数据集中的列。要创建新的过滤器,打开“过滤器…

手机拍摄的视频噪点很多怎么办,视频怎么做降噪处理?

现如今,智能手机已经成为了我们生活中必不可少的存在。而随着智能手机越来越强大,很多人已经开始使用手机来拍摄各种类型的视频。但是由于手机的限制,很多人会发现自己拍摄的视频存在着很多的噪点。那么,我们该怎样来解决拍摄视频…

BuyVM 挂载存储块

发布于 2023-07-13 on https://chenhaotian.top/linux/buyvm-mount-block-storage/ BuyVM 挂载存储块 参考: https://zhujitips.com/2653https://www.pigji.com/898.html 1 控制台操作 存储块购买完毕后,进入后台管理界面,进入对应 VPS …

发货100虚拟商品自动发货系统存在SQL注入

漏洞描述 该系统存在SQL注入漏洞,可获取敏感信息及账号密码。 漏洞复现 构造SQL注入延时payload: M_id11%20AND%20(SELECT%208965%20FROM%20(SELECT(SLEEP(5)))sdhh)&typeproduct漏洞证明: 文笔生疏,措辞浅薄,…

pycharm连接gitlab

1、下载安装gitlab 下载地址:Git - Downloading Package 下载后傻瓜式安装,注意勾选配置环境变量 未配置自己配置,电脑-属性-高级系统配置-环境变量 系统变量path:添加git安装目录下bin目录 2、检验安装完成 桌面右键git-open…