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…...

UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
浅谈 React Hooks
React Hooks 是 React 16.8 引入的一组 API,用于在函数组件中使用 state 和其他 React 特性(例如生命周期方法、context 等)。Hooks 通过简洁的函数接口,解决了状态与 UI 的高度解耦,通过函数式编程范式实现更灵活 Rea…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...

Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...

《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...