软考 系统架构设计师系列知识点之软件构件(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中定时执行呢&…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...