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

news/2024/10/23 9:41:40/

目录

​编辑

一.体系结构设计过程

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.ppmy.cn/news/1152792.html

相关文章

Java - 发送 HTTP 请求的及其简单的方法模块 - hutool

目录 一、POST 传递简单的字符串内容 .body(params)二、POST 传递 Json 数据,以表单类型传递 .form(params)二、POST 传递 Json 数据,以表单类型传递 .form(params) 和 .body(params) 方法效果等效的思路四、传统接口带 token 验证的代码模板参考链接 一…

为什么手机会莫名多出许多软件?

许多手机用户都曾遭遇过这样的问题,他们在使用手机的过程中,突然发现手机屏幕上出现了一些未知的软件。这些软件并非他们主动下载的,但它们却显现在屏幕上。这些软件从何而来? 其实,这些软件往往是在浏览网页、阅读小…

Chrome 同站策略(SameSite)问题

问题产生 问题复现: A项目页面使用 iframe 引用了B项目 B项目登录页面输入账号密码后点击登录 无法跳转 尝试解决: 在B项目修改了跳转方式 但无论是 this.$router.push 还是 window.herf 都无法实现跳转在iframe中使用 sandbox 沙箱属性 同样无法实现跳…

龙迅LT86102UXE HDMI2.0转二路HDMI2.0/1.4,支持音频剥离,支持4K60HZ

龙迅LT86102UXE 1.描述: 龙迅 LT86102UXE HDMI2.0 分路器具有符合 HDMI2.0/1.4 规范的 1:2 分路器、最大 6Gbps 高速 数据速率、自适应均衡 RX 输入和预加重 TX 输出(用于支持长电缆应用)、内部 TX 通道交换以 实现灵活的 PCB…

利用人工智能提升企业培训的个性化体验

随着科技的不断进步,人工智能(AI)正逐渐渗透到各个领域。而在企业培训领域,人工智能也展现出了巨大的潜力。利用人工智能技术的企业培训系统,企业可以为员工提供个性化、高效的培训体验,进一步提升他们的专…

001flutter基础学习

flutter基础学习 参考:https://book.flutterchina.club/chapter1/flutter_intro.html Flutter是谷歌的移动UI框架跨平台: Linux,Android, IOS,Fuchsia原生用户界面:它是原生的,让我们体验更好,性能更好开源免费:完全开源,可以进行商用Flutter与主流框架的对比 Cor…

标定板生成网址,可以直接打印,matlab标定工具箱

Camera Calibration Pattern Generator – calib.io matlab 打开标定的成像 cameraCalibrator 点击完成之后 命令行中输入 cameraParams.IntrinsicMatrix

SAAS模式和本地化部署哪种更好?

导 读 ( 文/ 1798 ) 在制造执行系统(MES)的选择和部署过程中,企业面临着SAAS(软件即服务)模式和本地化部署两种选择。SAAS模式以云端服务的形式提供MES系统,而本地化部署则将系统部署在企业自身的服务器上。…