四 、软件架构之构件组装模型

  1 、概念:

       随着软构件技术的发展,人们开始尝试利用软构件进行搭积木式的开发,即构件组装模

型。

        在构建组装模型中,当经过需求分析定义出软件功能后,将对构件的组装结构进行设计,

将系统划分成一组构件的集合,明确构件之间的关系。在确定了系统构件后,则将独立完成

每一个构件,这时既可以开发软件构件,也可以重用已有的构件,当然也可以购买或选用第

三方的构件。构件是独立的、自包容的,因此架构的开发也是独立的,构件之间通过接口相

互协作。

2、构件组装的过程

构件组装模型的一般开发过程:设 计 构 件 组 装--》 建 立 构 件 厍--》 构 建 应 用 件--》测 试 与 发 布

 3 构件组装模型的优点

 (1)构件的自包容性让系统的扩展变得更加容易

 (2)设计良好的构件更容易被重用,降低软件开发成本

 (3)构件的粒度较整个系统更小,因此安排开发任务更加灵活,可以将开发团队分成

若干组,并行地独立开发构件。(这是主要有点:也是很多团队需要优化的点)

 4、鱼与熊掌不可兼得,构件组装模型也有明显的缺点:

 (1)对构件的设计需要经验丰富的架构设计师,设计不良的构件难以实现构件的优点,

降低构件组装模型的重用度。

 (2)在考虑软件的重用度时,往往会对其他方面做出让步,如性能等。

 (3)使用构件组装应用程序时,要求程序员熟练地掌握构件,增加了研发人员的学习

成本。

(4)第三方构件库的质量会最终影响到软件的质量,而第三方构件库的质量往往是开

发团队难以控制的

   总结:好的设计源于对各个环节的完美把握,由上而下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/730423.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Dockerfile的使用,怎样制作镜像

Docker 提供了一种更便捷的方式,叫作 Dockerfile docker build命令用于根据给定的Dockerfile构建Docker镜像。 docker build命令参数: --build-arg,设置构建时的变量 --no-cache,默认false。设置该选项,将不使用Build …

C++指针(四)万字图文详解!

个人主页:PingdiGuo_guo 收录专栏:C干货专栏 前言 相关文章:C指针(一)、C指针(二)、C指针(三) 本篇博客是介绍函数指针、函数指针数组、回调函数、指针函数的。 点赞破六…

本鲸:打造科技招商新引擎、实现政企资源高效对接

在当今这个快速变化的时代,科技创新已成为推动社会进步和经济发展的核心动力。本鲸,作为科技创新创业服务的平台,正以其独特的视角和专业服务,为政府和企业提供一站式科技招商解决方案,助力构建创新驱动的经济发展新模…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:ImageAnimator)

提供帧动画组件来实现逐帧播放图片的能力,可以配置需要播放的图片列表,每张图片可以配置时长。 说明: 该组件从API Version 7开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 无 接口 ImageAni…

MySql 组合索引的使用

MySql 组合索引的使用 测试Mysql组合索引在不同的查询条件组合下的索引使用情况。当有abc 3个字的的组合索引时,按照MySql 的左匹配原则,abc,ab,a 是满足左匹配原则,肯定是会走索引的,但是其他的场景&…

ubuntu 命令行配置WiFi 密码

文章目录 一、命令行设置WiFi密码的意义二、Ubuntu的命令行设置WiFi密码步骤 一、命令行设置WiFi密码的意义 提供了一种不依赖图形界面的方式来配置WiFi连接。这对于那些没有图形界面或者需要远程配置WiFi的情况非常有用。通过命令行设置WiFi密码,可以方便地在终端中…

“一键批量自定义重命名:轻松驾驭文件海洋,让管理变得如此简单!“

在信息爆炸的时代,我们每天都会接触到大量的文件,从文档、图片到视频、音频等,各种类型、各种格式的文件充斥着我们的电脑和移动设备。如何有效地管理和组织这些文件,成为了我们不得不面对的问题。今天,我们为您带来了…

PyCharm无法debug调试os.system执行的py文件

import subprocess subprocess.run("python sub.py")

在vue2中使用tailwindcss(完整教程)

如果你看过好多教程之后,还是报错,无法使用tailwindcss,我希望本教程可以让你成功上岸。 环境要求 node:>v14.17.0 安装tailwindcss 由于最新的tailwind css使用post css 8版本,vue2框架暂时还不支持&#xff0…

使用docker安装运行rabbitmq---阿里云服务器

目录 0、阿里云没开端口的得要去安全组规则去添加: 1、下载RabbitMQ镜像: 2、查看镜像是否下载成功,得到docker镜像id: 3、运行RabbitMQ: 4、查看RabbbitMQ容器是否启动成功: 5、启动RabbitMQ中的插件管理 6、访…

混合输入矩阵乘法的性能优化

作者 | Manish Gupta OneFlow编译 翻译|宛子琳、杨婷 AI驱动的技术正逐渐融入人们日常生活的各个角落,有望提高人们获取知识的能力,并提升整体生产效率。语言大模型(LLM)正是这些应用的核心。LLM对内存的需求很高&…

js教程(3)——数组

一、数组 数组(Array)是一种可以按顺序保存数据的数据类型,我们在有多个相同类型的数据可以用数组保存起来,在一个变量中存放管理会很方便。 1.基本使用 (1)数组的声明 方法一: let 数组名 …

LeetCode148题:排序链表(python3)

在数组排序中,常见的排序算法有:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序等。 而对于链表排序而言,因为链表不支持随机访问,访问链表后面的节点只能依靠 next 指针从头…

Flip Clock(not good)

最近体验了一下iOS的翻页时钟app,很想自己做一个,但是效果不好 public class main {public static void main(String[] args) {//psvmnew MyFrame();} }import javax.swing.*; import java.awt.*; import java.io.File; import java.io.IOException; im…

Vue的HTML插入——v-html指令

有时我们希望将数据作为HTML代码插入到HTML模板中&#xff0c;而不是以纯文本的形式显示。在这种情况下&#xff0c;我们需要使用Vue.js的v-html指令&#xff1a; <template><div><p>纯文本: {{ rawText }}</p><p>属性: <span v-html"r…

influxdb2.0插入数据字段类型出现冲突问题解决

一、问题出现 一个学校换热站自控系统&#xff0c;会定时从换热站获取测点数据&#xff0c;并插入到influxdb数据库中。influxdb插入数据时&#xff0c;报错提示&#xff1a; com.influxdb.exceptions.UnprocessableEntityException: failure writing points to database: par…

购买云服务器注意事项,创业者必经之路

最近买了一台云服务器&#xff0c;把遇到注意事项和问题写出来&#xff0c;供大家学习&#xff0c;创业路上寻找志同道合的人&#xff0c;也给见证的你避坑指南。 国内比较大的厂商有腾讯云、阿里云、华为云&#xff0c;亚马逊云、百度云等等。 腾讯云&#xff1a;如果你业务很…

AlexNet 网络结构详解

一、基本了解 什么是过拟合&#xff1f; 解决方法 AlexNet网络结构通过使用dropout方法&#xff0c;使一些神经元失活&#xff0c;变相的减少了网络训练的参数化&#xff0c;从而实现减少过拟合。 二、AlexNet网络结构的详细解释 他是由上下两组GPU进行运算的&#xff0c;所以…

13 OpenCv自定义线性滤波

文章目录 卷积算子示例 卷积 卷积是图像处理中一个操作&#xff0c;是kernel在图像的每个像素上的操作。Kernel本质上一个固定大小的矩阵数组&#xff0c;其中心点称为锚点(anchor point) 把kernel放到像素数组之上&#xff0c;求锚点周围覆盖的像素乘积之和&#xff08;包括锚…

灵魂指针,教给(二)

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看&#xff0c;已成习惯 创作不易&#xff0c;多多支持&#xff01; 目录 一、数组名的理解 二、使用指针访问数组 三、一维数组传参本质 四、冒泡排序 五、二级指针 六、指针数组 七、指针数组…