软件架构复用相关知识总结

一、软件产品线

        软件产品线是指一组软件密集型系统,它们共享一个公共的、可管理的特性集,满足某个特定市场或任务的具体需求,是以规定的方式用公共的核心资产集成开发出来的。即围绕核心资产库进行管理、复用、集成新的系统。采用产品线能够提高生产效率,降低生产成本和缩短上市时间。

        核心资产库包括:软件架构及其和剪裁的元素。包括:设计方案及其文档、用户手册、项目管理的历史记录、软件测试计划和测试用例。

        双生命周期模型:

         软件产品线的建立方式:

                1. 将现有产品演化为产品线

                2. 用软件产品替代现有产品集

                3. 全新软件产品线的演化

                4. 全新软件产品线的开发

演化方式革命方式
基于现有产品基于现有产品架构设计产品线的架构,经演化现有构件,开发产品线构建核心资源的开发基于现有的需求和可预测的、将来需求的超集
全新产品线产品线核心资产随产品新成员的需求而演化开发满足所有预期产品线成员的需求和核心资源

二、软件架构复用

        软件复用是指系统化的软件开发过程:开发一组基本的软件构造模块,以覆盖不同的需求/体系结构之间的相似性,从而提高系统开发的效率、质量和性能。

        软件复用是一种系统化的软件开发过程,通过识别、开发、分类、获取和修改软件实体,以便在不同的软件开发过程中重复使用它们。

        软件复用的分类:

                机会复用:开发过程中,只要发现有可疑复用的资产,就对其进行复用

                系统复用:在发开之前,就进行规划,以决定哪些需要复用

        软件复用的纬度:

                水平复用:通用领取

                垂直复用:特定领域

        软件复用的目的:减少开发工作、减少开发时间以及降低开发成本,提高生产力

        软件架构复用的基本过程:

                1. . 构造/获取可复用的软件资产:构造恰当的、可服用的资产。这些资产必须是可靠

                      的、可被广泛使用过的、易理解和修改的。(理想情况下是直接复用构件库中现成

                      的构件)

                2. 管理可复用资产:最重要的是建立构件库,对可复用构建进行存储和管理。

                        1. 构件的分类

                        2. 构件的检索:

                                基于关键字的检索:树形、有向无环图

                                刻面检索发:利用facet描述构件执行的功能、被操作的数据、构件应用的语

                                                        境或任意其他特征

                                超文本检索法:按照人的联想思维方式任意跳转到包含相关概念或构件的文档

                3. 使用可复用资产 :通过获取需求,检索复用资产库,获取可复用资产,形成最终系

                     统。

        构件组装:

                  1. 顺序组装:按顺序调用已存在的构件,构造一个新的构件

                2. 层次组装:一个构件直接调用另一个构件所提供的服务,被调用的构件提供的接口需

                                        要与调用构件的请求接口兼容。

                3.  叠加组装:两个或两个以上构件放在一起来创建一个新的构件,新的构件合并了原

                                        构件的所有功能

三、基于构架的软件工程(CBSE)

        定义:CBSE强调通过可复用的构件设计与构造软件系统的软件复用途径。强调购买而不是重新构造。(瀑布模型 + 基于构件的软件模型)

        构件的定义:构件是一个独立的软件单元,可以与其他构件构成一个软件系统。

        CBSE的特性:
                1. 可组装性所有外部交互必须通过公开定义的接口进行

                2. 可部署性必须能够作为一个独立实体在构件平台上运行,构件是二进制形式的,无

                                        需在部署前编译

                3. 文档化:构件必须是完全文档化的,用户根据文档来判断构件是否满足需求

                4. 独立性:构件是独立的,可以在无其他特殊构件的情况下组装和部署

                5. 标准化:必须是符合某种标准化的构件模型

        CBSE过程:

                1.  系统需求概述;2. 识别候选构件;3. 根据发现的构件修改需求;4. 体系结构设计;5. 构件定制和适配;6. 组装构件,创建系统

        CBSE与传统开发过程的不同:

                  1. CBSE早期需要完整需求

                2. 在过程早起阶段根据可利用的构件细化话和修改需求

                3. 在体系结构设计完成后,会有一个进一步的对构件搜索及设计精化的活动

                4. 开发就是将已经找到的构件集合组装的过程

        构件不兼容的情况:

                1. 参数不兼容:接口名字相同,但参数的类型或个数不相同

                2. 操作不兼容:提供接口和请求接口的操作名不同

                3. 操作不完备:一个构件的提供接口是另一个构件请求接口的一个子集,或者相反

        可以采用适配器构件来解决上述不兼容的情况。


四、常见的构件标准与CORBA标准

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端学习-HTML基础

一、简介 1.介绍 网页就是html文件,前端编写代码->浏览器解析代码->呈现网页 谷歌浏览器Blink内核最好 2.Web标准 让网页设计排版更统一规范 结构:对网页元素进行整理和分类,html 表现:设置网页元素的板式、颜色、大小等外…

工作中总结的30个常用Linux指令,实在记不住就别硬记了,看这篇就够了

写在开头 最近发现自己记忆力严重下滑,很多sql命令,linux命令都记不住,特别是linux命令,很多命令参数很多,一段时间不用,再去使用就需要从网上重查了,很烦人,为此花了一些时间把之前…

初始化hive数据库问题记录

1、问题复现:完成了初始化hive数据库后没有看到生成的表格 2、检查后发现是NaviCat连接时主机号写错了,写成了localhost,这里修改为node01的主机号 3、修改后再次刷新就看到之前初始化后自动生成好的数据库表格了

C++之模板和可变模板参数

目录 一、为什么要定义模板 模板的优点: 二、模板的定义 三、模板的类型 3.1、函数模板 3.1.1、实例化:隐式实例化与显示实例化 3.1.2、函数模板、普通函数间的关系 3.1.2.1易错点: 3.1.2.2重载例子: 3.1.2.3优先级与执行顺序: 3.1.3、模板头文件与实现文…

vue3+threejs新手从零开发卡牌游戏(十四):调整卡组位置,添加玩家生命值HP和法力值Mana信息

由于之前的卡组位置占了玩家信息的位置,所以这里将它调整到site区域: 修改game/site/p1.vue,在site右下角添加一个卡组区域: // 初始化己方战域 const init () > {let sitePlane scene.getObjectByName("己方战域Plan…

【工具-MobaXterm】

MobaXterm ■ MobaXterm简介■ MobaXterm下载安装■ MobaXterm主要功能■ 创建SSH session■ 创建串口session■ 远程文件传输和下载■ 运行图形应用程序■ Unix 命令集(GNU/ Cygwin)工具箱功能 ■ MobaXterm配置■ 设置黑色主题■ 设置终端字体■ 右键粘贴■ 右键复制■ 文件保…

【干货】Apache DolphinScheduler2.0升级3.0版本方案

升级背景 因项目需要使用数据质量模块功能,可以为数仓提供良好的数据质量监控功能。故要对已有2.0版本升级到3.0版本以上,此次选择测试了3.0.1 和 3.1.1 两个版本,对进行同数据等任务调度暂停等操作测试,最后选择3.0.1 版本 原因…

【每日力扣】70. 爬楼梯与746. 使用最小花费爬楼梯

🔥 个人主页: 黑洞晓威 😀你不必等到非常厉害,才敢开始,你需要开始,才会变的非常厉害。 70. 爬楼梯 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢…

Java基础入门day21

day21 思考:构造方法能否实现重写 引申出来三个问题: 一个类是否可以继承它自身 一个类是否可以继承它的同名类 构造方法能否实现重写 结论: 一个类如果继承了自己,会出现递归构造调用 一个类可以继承它的同名类,必…

ESCTF-逆向赛题WP

ESCTF_reverse题解 逆吧腻吧babypybabypolyreeasy_rere1你是个好孩子完结撒花 Q_W_Q 逆吧腻吧 下载副本后无壳,直接拖入ida分析分析函数逻辑:ida打开如下:提取出全局变量res的数据后,编写异或脚本进行解密: a[0xBF, …

matlab和stm32的安装环境。能要求与时俱进吗,en.stm32cubeprg-win64_v2-6-0.zip下载太慢了

STM32CubeMX 6.4.0 Download STM32CubeProgrammer 2.6.0 Download 版本都更新到6.10了,matlab还需要6.4,除了st.com其他地方都没有下载的,com.cn也没有。曹 还需要那么多固件安装。matlab要求制定固件位置,然后从cubemx中也指定…

python3游戏GUI--开心打地鼠游戏By:PyQt5(附下载地址)

文章目录 一.前言二.游戏预览1.启动2.开始游戏3.游戏结束4.排行榜 三.游戏思路四.总结 一.前言 第一次用PyQt做游戏,有点小紧张呢。本次使用PyQt5制作一款简单的打地鼠游戏,支持基本游戏玩法、…

本地部署大模型的几种工具(下-相关比较)

比较项目chatglm.cppvllmOllamalmstudio功能特点通过C优化性能,支持多平台运行推理加速简化易用、本地运行大模型简化操作、本地运行大模型操作系统要求都可以,linux下运行更方便都可以,linux下运行更方便都可以,windows目前还是预…

2024华为产业链企业名单大全(附下载)

更多内容,请前往知识星球下载:https://t.zsxq.com/18fsVdcjA 更多内容,请前往知识星球下载:https://t.zsxq.com/18fsVdcjA

利用 Scapy 库编写 ARP 缓存中毒攻击脚本

一、ARP 协议基础 参考下篇文章学习 二、ARP 缓存中毒原理 ARP(Address Resolution Protocol)缓存中毒是一种网络攻击,它利用了ARP协议中的漏洞,通过欺骗或篡改网络中的ARP缓存来实施攻击。ARP协议是用于将IP地址映射到物理MAC…

【Leetcode每日一题】 动态规划 - 解码方法(难度⭐)(43)

1. 题目解析 题目链接:91. 解码方法 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 2.算法原理 这是一道类似斐波那契数列的题目~ 当我们遇到一个类似斐波那契数列的问题时,我们通常会想到使用动态规划&…

网络安全学习路线(2024)

国家和企业越来越重视网络安全了,现在也有很多很厂商加招网络安全岗位,同时也有很多对网络安全感兴趣的朋友,准备转行或从事网络安全。 通常,网络安全的内容包括: 网络安全技术、网络安全管理、网络安全运作&#xff…

【MySQL数据库】数据类型和简单的增删改查

目录 数据库 MySQL的常用数据类型 1.数值类型: 2.字符串类型 3.日期类型 MySQL简单的增删改查 1.插入数据: 2.查询数据: 3.修改语句: 4.删除语句: 数据库 平时我们使用的操作系统都把数据存储在文件中&#…

谷歌关键词优化十招搞定提升你的存在感-华媒舍

在当今的数字化时代,谷歌已成为我们生活中不可或缺的一部分。作为世界上最大的搜索引擎之一,谷歌每天处理着海量的搜索请求。要在谷歌上获得更多的曝光和存在感,关键词优化是必不可少的。本文将向您介绍十招搞定谷歌关键词优化的方法&#xf…

力扣刷题44-46(力扣0062/0152/0198)

62. 不同路径 题目描述: 一个机器人位于一个 m x n 网格的左上角 ,机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角。问总共有多少条不同的路径? 思路: 其实就是问(0,0)->(m-1,n-1)一共有几条路。 第一个…