008_第一代软件系统架构
第一代软件系统架构
文章目录
- 第一代软件系统架构
- 项目介绍
- 软件架构和软件构架
- 系统框架
- 硬件组成
- 运行系统
- 基础库
- 软件层
- 系统架构
关键字:
Qt、
Qml、
关键字3、
关键字4、
关键字5
项目介绍
欢迎来到我们的 QML & C++ 项目!这个项目结合了 QML(Qt Meta-Object Language)和 C++ 的强大功能,旨在开发出色的用户界面和高性能的后端逻辑。
在项目中,我们利用 QML 的声明式语法和可视化设计能力创建出现代化的用户界面。通过直观的编码和可重用的组件,我们能够迅速开发出丰富多样的界面效果和动画效果。同时,我们利用 QML 强大的集成能力,轻松将 C++ 的底层逻辑和数据模型集成到前端界面中。
在后端方面,我们使用 C++ 编写高性能的算法、数据处理和计算逻辑。C++ 是一种强大的编程语言,能够提供卓越的性能和可扩展性。我们的团队致力于优化代码,减少资源消耗,以确保我们的项目在各种平台和设备上都能够高效运行。
无论您是对 QML 和 C++ 开发感兴趣,还是需要我们为您构建复杂的用户界面和后端逻辑,我们都随时准备为您提供支持。请随时联系我们,让我们一同打造现代化、高性能的 QML & C++ 项目!
重要说明☝
☀该专栏更新到第三代软件开发时将转为收费专栏
软件架构和软件构架
"软件架构"和"软件构架"这两个术语在软件工程领域经常被使用,它们有一些区别。下面是对它们的解释:
软件架构(Software Architecture):软件架构关注整体系统的结构和组织方式。它涉及到系统中各个组件之间的关系、功能模块的划分、通信协议、数据流以及系统的演化过程等。软件架构定义了系统的总体设计和框架,包括组件、子系统、模块之间的接口和交互方式。软件架构决定了系统的逻辑结构、性能特征、可靠性、安全性等方面。
软件构架(Software Engineering):软件构架指的是系统中具体的技术和工具的选择,以实现软件架构所定义的需求和目标。软件构架关注的是系统中所使用的编程语言、开发框架、数据库、通信协议、操作系统等技术选型。软件构架的选择是根据软件架构的要求,考虑可用的技术和工具,并根据项目需求做出决策。
简而言之,软件架构是关于系统总体设计、组织结构和交互方式的概念性描述,而软件构架则是在软件架构的指导下,选择具体的技术和工具进行实现。
在实际应用中,软件架构和软件构架密切相关且相互依赖。软件架构提供了一个整体的蓝图和设计方向,而软件构架则是将这些设计转化为可执行的代码。因此,在软件开发过程中,需要同时考虑软件架构和软件构架,以确保系统的设计和实现是一致的并满足项目需求。
系统框架
怎么说,我也没有见过真实的系统架构图张什么样子,工作中也基本都是敏捷开发的样子,所以我的不敢说我的图是系统架构图,暂时叫他系统框架图吧,我的框架图基本是伴随了我的整个软件开发周期的,随着需求的增加,不断的完善和迭代,这里看一下最终的效果。

硬件组成
如上图所示,我们第一代系统中硬件包含 X86架构的计算机、电生理信号采集处理信号板、病人信号接入盒、光电手柄、触摸显示屏以及没有列出的台车。
运行系统
我们写的软件虽然叫系统,其实就是个应用程序,就当时全屏看电影了。所以需要一个真真的操作系统去承载它,这里我们选择了嵌入式Windows 10 。
基础库
我们的软件使用了Qt作为开发框架,并且主要依赖于以下库和组件:
-
Qt库:作为开发框架,Qt提供了丰富的功能和工具,用于图形界面设计、事件处理、网络通信等方面的开发。
-
CJSON开源库:用于解析JSON数据。CJSON是一个轻量级的C语言库,用于解析和生成JSON格式的数据。
-
SQLite数据库:作为软件的数据库,我们使用了SQLite。SQLite是一种嵌入式关系型数据库管理系统,它具有轻量级、快速、可靠等特点,适合于小型应用程序的数据存储需求。
-
QCustcomPlot库:用于曲线绘制。QCustcomPlot是一个基于Qt的绘图库,它提供了强大的绘图功能,可以用于绘制各种类型的曲线、图表和数据可视化。
-
CH340驱动:在Windows下,我们使用了CH340驱动来识别手柄设备的串口连接。CH340是一款常用的USB转串口芯片,通过安装对应的驱动程序,可以实现将串口设备连接到计算机上。
软件层
软件层涉及内容有点多,自己看界面吧,每家一样,没有太多参考价值。
系统架构
目前我也没有系统架构图,我也不知道我的系统框架图是否可以说是架构图吧,这里只能补存一点就是架构图中需要包含的信息
组件/模块:系统中的各个独立部分或功能模块。这些组件可以是软件模块、硬件设备、第三方服务等,它们通过接口进行交互。
接口:组件之间的连接点,用于定义数据传输和通信方式。接口描述了组件之间的相互作用和依赖关系。
数据流:系统中的数据流动路径,显示了数据在不同组件和模块之间的传递和处理过程。这有助于理解系统中数据的流向和转换。
架构层次:系统的不同层次和组织结构。例如,分为客户端层、服务器层、数据库层等。每个层次都负责特定的功能,且彼此之间存在依赖关系。
部署环境:系统的物理或虚拟环境。它指定了系统组件的部署位置,如服务器、云平台、移动设备等。
关键功能:标识出系统中的重要功能或核心模块。这有助于理解系统的主要职责和特点。
性能指标:显示系统的性能要求和指标,如响应时间、吞吐量、可扩展性等。这些指标对于设计和评估系统的性能非常重要。
安全考虑:涉及到系统的安全需求和措施。这包括认证、授权、数据保护等方面,以确保系统的安全性和隐私性。
扩展性和可靠性:描述系统的扩展性和可靠性能力。系统应该能够满足未来的需求,并且具备容错和故障恢复机制。
标注和说明:对系统架构图中的各个元素进行标注和说明,以便读者理解和交流。
其他的,等我更厉害了咱再唠,目前就这点水平。

相关文章:
008_第一代软件系统架构
第一代软件系统架构 文章目录 第一代软件系统架构项目介绍软件架构和软件构架系统框架硬件组成运行系统基础库软件层 系统架构 关键字: Qt、 Qml、 关键字3、 关键字4、 关键字5 项目介绍 欢迎来到我们的 QML & C 项目!这个项目结合了 QML&…...
oracle客户端的安装(SQL Developer)
参考资料 软件首页:https://www.oracle.com/database/sqldeveloper/ 官方文档:https://docs.oracle.com/en/database/oracle/sql-developer/ 下载地址:https://www.oracle.com/database/sqldeveloper/technologies/download/ 安装指南&#…...
Mysql索引优化1
关闭查询缓存 set global query_cache_size 0; set global query_cache_type 0; force index(索引)where 条件 强制走索引 一般不推荐,因为mysql结构中会通过cost计算出最优sql路线 索引下推 5.6之前 会先从辅助索引表也就是二级索引…...
Spring常考知识点(IOC、事务、容器等)
作者:逍遥Sean 简介:一个主修Java的Web网站\游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有需要我的支持,请私信或评论留言! Spring需要理解的问…...
Leetcode 2867. Count Valid Paths in a Tree
Leetcode 2867. Count Valid Paths in a Tree 1. 解题思路2. 代码实现 题目链接:2867. Count Valid Paths in a Tree 1. 解题思路 这一题思路上的话由于要求路径上有且仅有一个质数点,因此,一个直接的思路就是考察所有质数的点作为中心点时…...
Jtti:Ubuntu下如何创建XFS文件系统的LVM
在 Ubuntu 下创建一个 XFS 文件系统的 LVM(Logical Volume Manager)分区需要一系列步骤。以下是详细的步骤: 1. 创建物理卷 (PV) 首先,将要用于 LVM 的硬盘分区(物理卷)初始化为物理卷。假设你有一个硬盘…...
做销售管理分析需要看哪些关键指标?
做销售管理分析需要看哪些关键指标? 销售管理分析时抓取关键指标,有着能够【分析和判断销售趋势、为销售决策提供数据支持、优化销售流程和客户管理】等的好处 在了解了分析关键指标的目的之后,我们就可以根据企业的需求来确定关键指标&…...
【Python】自动完成手写字体图片贴入以及盖章工具
简介 该工具完成了如下功能: 1.将文字转换为手写体填入到模板文件中 2.自动将文字转换为盖章格式填入到模板文件中 3.字体格式可以替换 4.有配置文件进行扩展功能 功能模块 1.界面模块 import sys from PyQt5.QtWidgets import QApplication, QMessageBox, QWid…...
基于Xml方式Bean的配置-初始化方法和销毁方法
SpringBean的配置详解 Bean的初始化和销毁方法配置 Bean在被实例化后,可以执行指定的初始化方法完成一些初始化的操作,Bean在销毁之前也可以执行指定的销毁方法完成一些操作,初始化方法名称和销毁方法名称通过 <bean id"userService…...
实时更新进度条:JavaScript中的定时器和异步编程技巧
前言 在Web开发中,有许多场景需要实时地更新页面上的进度,例如上传文件、数据处理等。本文将介绍如何利用JavaScript中的定时器和异步编程技巧来实现实时更新进度,并探讨一些其他解决方案。 处理进度实时更新: 利用异步编程实现实…...
【简单图论】CF898 div4 H
Problem - H - Codeforces 题意: 思路: 手玩一下样例就能发现简单结论: v 离它所在的树枝的根的距离 < m 离这个根的距离时是 YES 否则就是NO 实现就很简单,先去树上找环,然后找出这个根,分别给a 和…...
【大虾送书第十一期】适合新手自学的网络安全基础技能“蓝宝书”:《CTF那些事儿》
目录 🥮写在前面 🥮内容简介 🥮读者对象 🥮专家推荐 🥮目录 🥮文末福利 🦐博客主页:大虾好吃吗的博客 🦐专栏地址:免费送书活动专栏地址 写在前面 CTF比赛是快…...
IDEA安装离线插件后重启无法打开
解决方法 1.找到插件安装目录删除插件 插件的位置一般在C:\Users\19058\AppData\Roaming\JetBrains\IntelliJIdea2021.1\plugins 高亮部分是自己电脑的用户位置,把报错前的刚才最新安装的插件删除,再尝试打开idea即可解决该问题 2.补充说明 AppData是个隐…...
论软件的可靠性设计
摘要 2021年6月,我所在的公司中标某集团保险大数据平台一体化研发项目,该项目总投资2000万人民币,项目周期为2年,通过该项目,搭建该集团保险大数据平台,一方面将全国所有保险业务全部入库并保存࿰…...
AG35学习笔记(一):debug串口抓取模组log、debug串口测试AT指令、echo命令通过串口发送16进制数据
目录 一、概述二、抓取模组log2.1 硬件接口2.2 用户登录2.3 相关指令 三、测试AT指令3.1 查看端口3.2 进入模式 四、串口发16进制echo使用 一、概述 二、抓取模组log 在之前记录了通过USB,使用移远工具Qwinlog来抓取log(3.3 抓取模组log)。…...
Python进阶学习----一闭三器
目录 编辑 前言 一.三器 1. 迭代器(Iterator) 1.1 什么是可迭代对象 1.2什么是迭代器 1.3案例演示: 以下是一个简单的迭代器示例,遍历一个列表并打印每个元素: 1.4迭代器总结 2. 生成器(Generat…...
C/S架构学习之TCP客户端
TCP客户端的实现流程:一、创建套接字(socket函数):通信域选择IPV4网络协议、流式套接字; int sockfd socket(AF_INET,SOCK_STREAM,0); 二、填充服务器的网络信息结构体(struct sockaddr_in serveraddr&…...
系统集成|第十二章(笔记)
目录 第十二章 沟通管理12.1 沟通的基本概念12.2 主要过程12.2.1 规划沟通管理12.2.2 管理沟通12.2.3 控制沟通 12.3 常见问题 上篇:第十一章、项目人力资源管理 第十二章 沟通管理 沟通管理在项目计划、执行、监控过程中具有重要的作用,项目经理应该拿…...
图神经网络(GNN)最新顶会论文汇总【附源码】
得益于强大的建模和分析能力,图神经网络(GNN)在社交网络分析、推荐系统、知识图谱、文本分析、等诸多领域得到了广泛的应用,目前已成为了人工智能领域的热门研究方向。 在今年的各大顶会获奖论文中,图神经网络相关的论…...
【算法】算法设计与分析 课程笔记 第二章 递归与分治策略
2.1 递归 直接或间接地调用自身的算法称为递归算法。 用函数自身给出定义的函数称为递归函数。 2.1.1 阶乘 首先得想到一个求阶乘的函数: 这个函数的下面那个式子就用到了调用自身,所以可以用递归来实现,将主问题拆分成若干层的子问题&am…...
YOLO26优化:TIP2026 FourierSR | FourierSR引入YOLO C3k2:解决感受野局限,实现高效全局特征交互
💡💡💡现有 YOLO C3k2 模块主要基于卷积与跨阶段部分连接,虽能平衡计算与精度,但仍存在以下问题: 感受野受限:堆叠的小核卷积(如 33)感受野有限,难以捕获全局上下文,对尺度变化大或远距离依赖的目标(如小目标、遮挡目标)特征提取能力不足。 特征混合效率低:通…...
《字节码到JVM:Java基础核心知识点全解析(小林八股·上)》
🔥个人主页:北极的代码(欢迎来访) 🎬作者简介:java后端学习者 ❄️个人专栏:苍穹外卖日记,SSM框架深入,JavaWeb ✨命运的结局尽可永在,不屈的挑战却不可须臾或…...
量子卷积神经网络(QCNN)原理与实现解析
1. 量子卷积神经网络(QCNN)概述量子卷积神经网络(QCNN)是近年来量子计算与深度学习交叉领域最具突破性的研究方向之一。作为经典CNN的量子版本,QCNN通过在量子线路中实现卷积、池化等操作,充分利用量子态的叠加性和纠缠特性,在希尔伯特空间中…...
VSCode + Modelsim 搭建Verilog开发环境:除了语法检查,还能这样玩?
VSCode与ModelSim深度集成:打造高效Verilog开发工作流 在数字电路设计领域,Verilog作为硬件描述语言的标准之一,其开发效率直接影响项目进度。传统开发模式中,工程师需要在多个工具间频繁切换——编辑器用于编码,Model…...
A-59F所有应用模式说明
A-59F 是一款高集成语音处理模组,一体化实现 AI ENC 降噪、AEC 回音消除、扩音防啸叫、BF 波束拾音 四大核心能力。支持模拟 / 数字麦克风、模拟 / I2S 数字音频接口,邮票孔 SMT 封装,体积小巧、易嵌入,可大幅简化音频电路&#x…...
Vibe Coding 工具选型决策树:5 类项目场景对应 7 种组合配置方案
1. 项目概述:为什么“选对组合”比“选对单个工具”更重要 大多数人第一次听说 vibe coding,是在看到某位工程师用 Cursor 写完一个 Vue3 表单组件只花了 90 秒,或者用 Claude Code 在 VS Code 里补全了整套 Express 路由逻辑后脱口而出的那句“这哪是写代码,这是调 API”…...
电弧故障检测与定位片上系统【附程序】
✨ 长期致力于电弧故障采集、电弧故障检测、电弧故障定位、片上系统、全数字锁相环、逐次逼近型模数转换器、低功耗、低成本研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,点击《获取方式》 &…...
TS9580,TS3440,TS3400,G3000,G1810,G2810,G3810,G4810,TS9020,TS9120报错5B00,P07,E08,1700,5b04废墨垫清零,亲测有用。
下载:点这里下载 备用下载:https://pan.baidu.com/s/1WrPFvdV8sq-qI3_NgO2EvA?pwd0000 常见型号如下: G系列 G1000、G1100、G1200、G1400、G1500、G1800、G1900、G1010、G1110、G1120、G1410、G1420、G1411、G1510、G1520、G1810、G1820、…...
Windows 11 LTSC系统一键恢复Microsoft Store的终极解决方案
Windows 11 LTSC系统一键恢复Microsoft Store的终极解决方案 【免费下载链接】LTSC-Add-MicrosoftStore Add Windows Store to Windows 11 24H2 LTSC 项目地址: https://gitcode.com/gh_mirrors/ltscad/LTSC-Add-MicrosoftStore 你是否在使用Windows 11 24H2 LTSC版本时…...
用Python和pywifi写个WiFi密码测试工具(附完整GUI源码)
用Python构建WiFi安全测试工具:从原理到GUI实现 在数字化时代,WiFi安全已成为个人和企业网络安全的第一道防线。作为Python开发者,我们如何利用技术手段来验证自身网络的安全性?本文将带你从零开始构建一个基于pywifi库的WiFi连接…...
