软考 系统架构设计师系列知识点之软件构件(1)
所属章节:
第2章. 计算机系统基础知识
第3节. 计算机软件
2.3.7 软件构件
1. 概述
构件又称为组件,是一个自包容、可复用的程序集。构建是一个程序集、或者说是一组程序的集合。这个集合可能会以各种方式体现出来,如源程序或二进制代码。这个集合整体向外提供统一的访问接口,构件外部只能通过接口来访问,而不能直接操作构建的内部。构件的两个最重要的特性是自包容与可重用。
2. 软件构件的组装模型
随着软件构件技术的发展,人们开始尝试利用软件构件进行搭积木式的开发,即构件组装模型。在构件组装模型中,当经过需求分析定义出软件功能后,将对构件的组装结构进行设计,将系统划分成一组构件的集合,明确构件之间的关系。在确定了系统构件后,则将独立完成每一个构件,这时既可以开发软件构件,也可以重用已有的构件,当然也可以购买或选用第三方的构件。构件是独立的、自包容的,因此架构的开发也是独立的,构件之间通过接口相互协作。
构件组装模型的一般开发过程分为以下4步:
(1)设计构件组装;
(2)建立构件库;
(3)构建应用软件;
(4)测试与发布。
构件组装模型的优点如下:
(1)构件的自包容性让系统的扩展变得更加容易;
(2)设计良好的构件更容易被重用,降低软件开发成本;
(3)构件的粒度较整个系统更小,因此安排开发任务更加灵活,可以将开发团队分成若干组,并行地独立开发构件。
构件组装模型也有明显的缺点:
(1)对构件的设计需要经验丰富的架构设计师,设计不良的构件难以实现构件的优点,降低构件组装模型的重用度;
(2)在考虑软件的重用度时,往往会对其它方面做出让步,如性能等;
(3)使用构件组装应用程序时,要求程序员能熟练地续航我构件,增加了研发人员的学习成本;
(4)第三方构件库的质量会最终影响到软件的质量,而第三方构件库的质量往往是开发团队难以控制的。
相关文章:
软考 系统架构设计师系列知识点之软件构件(1)
所属章节: 第2章. 计算机系统基础知识 第3节. 计算机软件 2.3.7 软件构件 1. 概述 构件又称为组件,是一个自包容、可复用的程序集。构建是一个程序集、或者说是一组程序的集合。这个集合可能会以各种方式体现出来,如源程序或二进制代码。这…...
RHCE8 资料整理(三)
RHCE8 资料整理 第三篇 网络相关配置第11章 网络配置11.1 网络基础知识11.2 查看网络信息11.3 图形化界面修改11.4 通过配置文件修改11.5 命令行管理11.6 主机名的设置 第12章 ssh12.1 ssh基本用法12.2 打开远程图形化界面12.3 ssh无密码登录12.4 ssh安全设置12.5 ssh限制用户1…...
C++ 使用httplib库,发送HTTP请求
简介 C 使用httplib库,发送HTTP请求 接口信息 ip地址 192.168.16.166 端口 8899 接口地址/abc/tk 请求方式GET 响应内容: { “result”: true, “message”: “”, “tk”: “yueguangsaxialexiangshuitan0ihai”, “datetimeout”: “2023-10-22 21…...
OceanBase自动安装部署演示环境demo
OceanBase自动安装部署 前提条件 官方给出硬件条件需要满足以下要求 本文操作系统为:Red Hat Enterprise Linux 8 64 位 下载链接:https://pan.baidu.com/s/1rZ39xJFhk0HdmC4wEJcxvg 提取码:c01x 下载并安装 all-in-one 安装包 执行如下…...
windows系统mysql服务启动失败
原因 电脑重启navicat连接mysql失败,在电脑-管理-服务没有mysql服务 解决方案 找到mysql的安装目录进入bin目录 执行mysqld --install 进行重新安装 提示服务安装成功 net start mysql mysql 启动成功 ...
B-tree(PostgreSQL 14 Internals翻译版)
概览 B树(作为B树访问方法实现)是一种数据结构,它使您能够通过从树的根向下查找树的叶节点中所需的元素。为了明确地标识搜索路径,必须对所有树元素进行排序。B树是为有序数据类型设计的,这些数据类型的值可以进行比较和排序。 下面的机场代…...
React环境初始化
环境初始化 学习目标: 能够独立使用React脚手架创建一个React项目 1.使用脚手架创建项目 官方文档:(https://create-react-app.bootcss.com/) - 打开命令行窗口 - 执行命令 npx create-react-app projectName 说明:…...
Hadoop3教程(二十八):(生产调优篇)NN、DN的多目录配置及磁盘间数据均衡
文章目录 (148)NN多目录配置(149)DataNode多目录配置及磁盘间数据平衡磁盘间数据均衡 参考文献 (148)NN多目录配置 NN多目录的意思是,本地目录可以配置成多个,且每个目录存放内容相…...
博客续更(五)
十一、后台模块-菜单列表 菜单指的是权限菜单,也就是一堆权限字符串 1. 查询菜单 1.1 接口分析 需要展示菜单列表,不需要分页。可以针对菜单名进行模糊查询。也可以针对菜单的状态进行查询。菜单要按照父菜单id和orderNum进行排序 请求方式 请求路径…...
看微功耗遥测终端机如何轻松应对野外环境挑战?
在野外,数据的实时监测和传输是至关重要的。无论是环境温度、湿度,还是水位、流量,都需要精准把控。然而,传统的监测方法往往受限于电源供应问题,而无法充分发挥其功能。这时候,一款微功耗遥测终端机&#…...
vue后台开发第一步
1、创建vue3.2的项目 2、安装前期组件 安装 安装 vue-router npm install vue-router4安装 vuex npm install vuexnext --save安装 element-plus npm install element-plus --save安装 element-plus图标 npm install element-plus/icons-vue 使用 创建router目录、目录下创…...
Vue3踩坑指南
vue.config.ts不起作用 关于项目 项目使用的还是vue-cli搭建的,底层还是webpack,没有使用新的vite搭建。 踩坑1:vue.config.ts不起作用 我本着既然是vue3 ts的项目,那么为了规范,项目中所有的js文件都得替换成ts文…...
第十七章 Java连接数据库
1.打卡“命令提示符”,用管理员身份运行 2.登录MySQL 3.创建库和表 4.使用Java命令查询数据库操作 5.右击——点击“Build Path”——选择第四个——找到包的位置——导入成功 一、创建java项目 二、连接数据库 1.注册驱动 2.获取链接 3.获取statment对象 4.…...
221 - Urban Elevations (UVA)
题目链接如下: Online Judge 首先,我的代码虽然AC了,但是是有问题的,uva的测试数据太水了所以侥幸通过而已。因为题目要求的数据是实数而非整数,我的代码是按所有数据都是整数来暴力做的……但因为刘汝佳的代码写得太…...
驱蚊“卷到”母婴,润本市值73亿
作者 | 若楠 禄存 排版 | Cathy 监制 | Yoda 出品 | 不二研究 从 " 驱蚊第二股 " 到 " 婴童护理第一股 " 润本终于敲钟了。 尽管宣称 " 婴童护理第一股 ",但实际上,润本最初是以驱蚊产品起家的。 10 月 17 日&#…...
Swingbench 压力测试(超详细)
目录 前提需要有配置好的oracle哦 1、环境准备 2、安装Swingbench 3、造数据 4、压测 前提需要有配置好的oracle哦 1、环境准备 启动监听 lsnrctl start 启动数据库 sqlplus / as sysdba startup 创建表 CREATE TABLESPACE soe DATAFILE /u01/app/oracle/oradata/or…...
【python】--python环境安装及配置
目录 一、python开发环境部署1、下载安装Miniconda2、python环境3、进入或退出python环境4、对应python环境安装工具/库5、进入pyhton环境,查看已安装的工具/库6、安装pycharm专业版7、pycharm创建项目并关联python版本环境 一、python开发环境部署 要安装一个pyth…...
Android前台服务和通知
前台服务 Android 13及以上系统需要动态获取通知权限。 //android 13及以上系统动态获取通知权限 if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q) {checkPostNotificationPermission(); } private void checkPostNotificationPermission() {if (ActivityCompat.chec…...
算法进修Day-36
算法进修Day-36 71. 简化路径 难度:中等 题目要求: 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 / 开头),请你将其转化为更加简洁的规范路径。 在 Unix 风格的文件系统中&am…...
postman自动化运行接口测试用例
做过接口测试的人,应该都知道postman ,我们在日常的时候都可以利用postman做接口测试,我们可以把接口的case保存下来在collection里面,那么可能会有这样的需求,我们怎么把collection的用例放到jenkins中定时执行呢&…...
哔哩下载姬DownKyi:5分钟快速掌握B站视频下载的终极指南
哔哩下载姬DownKyi:5分钟快速掌握B站视频下载的终极指南 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&…...
STM32F103片内Flash读写避坑指南:CubeMX配置虽简单,但这几个细节错了就HardFault
STM32F103片内Flash读写避坑指南:从硬件机制到实战优化 第一次在项目中尝试使用STM32片内Flash存储设备运行日志时,系统每隔几天就会莫名其妙死机。通过逻辑分析仪抓取异常时刻的波形,发现每次HardFault都发生在Flash写入操作后的20μs内。这…...
【实战部署+模型优化】YOLOv8花卉分类检测系统:从数据集构建到Web端应用全流程解析
1. 花卉分类检测系统的工程价值 在植物园做志愿者时,我经常遇到游客指着各种花卉询问品种。这让我意识到,如果能开发一个自动识别花卉的系统,不仅能提升游客体验,还能帮助园艺工作者高效管理植物。这就是我选择用YOLOv8构建花卉分…...
知壹网-中医资源库
知壹网,一站式中医资源共享平台。网罗古今中医精华,涵盖典籍文献、方药技法、养生科普、经验交流等多元内容,让经典易学、让知识好用,助力人人走近中医、学好中医、用好中医。 网站链接:https://my.feishu.cn/wiki/Mp…...
AI时代新型的项目管理应该是什么样的?众
AI训练存储选型的演进路线 第一阶段:单机直连时代 早期的深度学习数据集较小,模型训练通常在单台服务器或单张GPU卡上完成。此时直接将数据存储在训练机器的本地NVMe SSD/HDD上。 其优势在于IO延迟最低,吞吐量极高,也就是“数据离…...
Graphormer开源镜像保姆级教程:3.7GB纯Transformer模型GPU快速部署
Graphormer开源镜像保姆级教程:3.7GB纯Transformer模型GPU快速部署 1. 为什么选择Graphormer? Graphormer是微软研究院开发的基于纯Transformer架构的图神经网络模型,专门用于分子属性预测任务。与传统的图神经网络(GNN)相比,它…...
告别模糊坐标!自定义你的MATLAB Figure数据提示(DataTip)显示格式
告别模糊坐标!自定义你的MATLAB Figure数据提示(DataTip)显示格式 在科研数据可视化过程中,精确呈现坐标信息往往比我们想象的更重要。想象这样一个场景:你正在分析一组高频采样数据,当鼠标悬停在某个峰值点…...
告别海量标注!用SG-One的Masked Average Pooling,一个样本就能搞定图像分割
小样本图像分割实战:SG-One的Masked Average Pooling核心解析与PyTorch实现 当标注数据稀缺成为计算机视觉项目的常态时,传统分割方法往往陷入"巧妇难为无米之炊"的困境。SG-One提出的Masked Average Pooling技术,正在改变这一局面…...
dplyr和tidyr用法亚
1. 引入 在现代 AI 工程中,Hugging Face 的 tokenizers 库已成为分词器的事实标准。不过 Hugging Face 的 tokenizers 是用 Rust 来实现的,官方只提供了 python 和 node 的绑定实现。要实现与 Hugging Face tokenizers 相同的行为,最好的办法…...
CowPi嵌入式教学平台:内存映射I/O与轮询中断实践
1. CowPi 硬件教学平台概述CowPi 是一个专为嵌入式系统底层教学设计的硬件实验套件,其核心目标是系统性地训练学生掌握三大基础硬件交互范式:内存映射 I/O(Memory-Mapped I/O)、轮询(Polling)和中断&#x…...
