遗产系统 legacy system 的定义和演化策略

news2024/11/16 12:52:44

原始英语叫做legacy system,被国内翻译成了“遗产系统”。实际上,legacy system,可以翻译为遗留系统、旧系统、老系统。

下文部分摘自《遗产系统及其解决方案的综述》一论文。

遗产系统的定义

遗产系统是 “一个已经运行了很长时间的,对我们的机构来说是很重要的,但是我们不知道如何处理的大的软件系统” 。

遗产系统的特征

遗产系统有三方面的特征。

业务特征:遗产系统执行的业务关键,它们通常是机构内信息流的主干。因此,遗产系统对机构的正常运转至关重要。比如银行支付系统、邮政管理系统等;

功能特征:遗产系统的功能稳定可靠,性能也可以接受。因此受到用户的信赖。

软件特征:

遗产系统的生命周期长。一般都有二十年以上的运行时间;

遗产系统的开发语言是汇编或早期的第三代语言,如 Cora1、Fortran一66或 Cobol;

遗产系统采用的软件技术相对落后,如多采用基于主机的中心处理方式、面向批处理。多采用文件系统来管理数据等;

遗产系统的领域特征。它包含特定域的系统需求。设计决策和业务规则在内的所有知识以及设计开发人员、维护人员在特定领域长期积累的经验和专业知识 。

对待遗产问题的不同态度和两难选择

大多数软件工程师更倾向于开发新系统.而不是维护过时的系统;但是系统用户对这种改变持抵制态度。因为尽管遗产系统的技术基础不强,但是它对客户的需求来说是可以信赖的。因此就产生了矛盾。一方面,遗产系统在机构内仍然发挥着重要的作用,简单地替换它风险很大。另一方面,遗产系统的维护开销也很大,无法满足市场变化的要求,丧失了商业机会。

这就产生了对遗产系统的两难选择,因此迫切需要一种既能降低替代带来的风险,又能改进遗产系统满足市场需要的方法。

遗产系统的演化策略

遗产系统的演化策略分为 ①淘汰策略、②继承策略、③改造策略、④集成策略。

按下图顺时针方向,可记忆为 (集成) (改造) (继承) (淘汰)

如上图,把对遗留系统的评价结果分列在坐标的四个象限内。对处在不同象限的遗留系统采取不同的演化策略。

淘汰策略:低水平、低价值区,即遗留系统的技术水平较低,且具有较低的业务价值。对这种遗留系统的演化策略为淘汰,即全面重新开发新的系统以代替遗留系统。完全淘汰是一种极端性策略,一般是企业的业务产生了根本变化,遗留系统已经基本上不再适应企业运作的需要;或者是遗留系统的维护人员、维护文档资料都丢失了。经过评价,发现将遗留系统完全淘汰,开发全新的系统比改造旧系统从成本上更合算。对遗留系统的完全淘汰是企业资源的根本浪费,系统分析师应该通过对遗留系统功能的理解和借鉴,可以帮助新系统的设计,降低新系统开发的风险。

继承策略低水平、高价值区,即遗留系统的技术含量较低,已经满足企业运作的功能或性能要求,但具有较高的商业价值,目前企业的业务尚紧密依赖该系统。对这种遗留系统的演化策略为继承。在开发新系统时,需要完全兼容遗留系统的功能模型和数据模型。为了保证业务的连续性,新老系统必须并行运行一段时间,再逐渐切换到新系统上运行。

改造策略高水平、高价值区,即遗留系统的技术含量较高,本身还有极大的生命力。系统具有较高的业务价值,基本上能够满足企业业务运作和决策支持的需要。这种系统可能建成的时间还很短,对这种遗留系统的演化策略为改造。

改造包括系统功能的增强和数据模型的改造两个方面。系统功能的增强是指在原有系统的基础上增加新的应用要求,对遗留系统本身不做改变;数据模型的改造是指将遗留系统的旧的数据模型向新的数据模型的转化。

集成策略高水平、低价值区,即遗留系统的技术含量较高,但其业务价值较低,可能只完成某个部门(或子公司)的业务管理。这种系统在各自的局部领域里工作良好,但对于整个企业来说,存在多个这样的系统,不同的系统基于不同的平台、不同的数据模型,形成了一个个信息孤岛,对这种遗留系统的演化策略为集成。

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

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

相关文章

【初学人工智能原理】【13】LSTM网络:自然语言处理实践

前言 本文教程均来自b站【小白也能听懂的人工智能原理】,感兴趣的可自行到b站观看。 代码及工具箱 本专栏的代码和工具函数已经上传到GitHub:1571859588/xiaobai_AI: 零基础入门人工智能 (github.com),可以找到对应课程的代码 正文 上节…

虹科技术|全新Linux环境PCAN驱动程序发布!CAN/CAN FD通信体验全面升级!

全新8.17.0版本的PCAN-Linux驱动程序正式发布,专为CAN和CAN FD接口量身打造。无论是CAN 2.0 a/b还是CAN FD的PCAN硬件产品,都能在我们的新驱动下“驰骋自如”。想要体验字符模式设备驱动接口(chardev)的便捷,还是Socke…

Navicat Lite导入为SQL,然后到服务器的SQLServer Management 里执行时,报各种错误,是文件的Encoding不一致导致的解决

1、好多时候,本地的操作系统与服务器的操作系统不一致,有的时候也是历史原因,我们不得不用老旧的版本的数据库,比如 SQLServer 2008R2的数据库系统。 2、然后本地因为操作系统是win11的,导致这个SQLServer 2008R2根本…

【自动化测试】处理页面加载元素过慢以及页面中存在frame框架页问题

在自动化测试中,处理页面加载元素过慢以及页面中存在frame框架页等问题,需要采用一些特定的策略和技术来确保测试的顺利进行。下面我将分别针对这两个问题给出一些解决方案: 1. 处理页面加载元素过慢的问题 1.1 等待机制 显式等待&#xf…

如何在Mac上使用VMware配置Windows虚拟机

作者:CSDN-PleaSure乐事 欢迎大家阅读我的博客 希望大家喜欢 使用环境:VMware Fusion 目录​​​​​​​ 1.下载windows虚拟机arm文件 2.打开VMware并拖入刚刚下载完成的iso文件 3.导入完成 4.固件类型 5.选择加密 6.完成 7.默认安装 8.现在安装…

NC 反转字符串

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 写出一个程序…

《React Hooks:让你的组件更灵活》

前端开发中非常流行的React框架。React是一个用于构建用户界面的JavaScript库,尤其适用于构建复杂的单页应用。 React Hooks:让你的组件更灵活 React 是当今最受欢迎的前端 JavaScript 库之一,用于构建用户界面。自从 React 16.8 版本开始&a…

图表操作——图表保存为图片+多个图表批量保存为压缩包——js技能提升

使用场景: echarts图表:生成的柱状图/折线图/饼图等可以实现图表的导出,导出格式为一个图片。也可以支持多个图表同时导出为图片,以压缩包的形式下载下来。 下面介绍单个导出批量导出的具体用法: 1.单个导出功能——…

使用seamless-scroll-v3 实现无缝滚动,自动轮播平滑的滚动效果

安装&#xff1a;npm地址&#xff1a;https://www.npmjs.com/package/seamless-scroll-v3 yarn add seamless-scroll-v3# 或者使用 npm npm install seamless-scroll-v3# 或者使用 pnpm pnpm add seamless-scroll-v3 实现效果&#xff1a; template中的代码&#xff1a; <…

pmp证书为何会被骂?他真的就是个垃圾证书?

说是垃圾到不至于。 毕竟PMP证书今年被北京市列入急需紧缺专业人才人员名单&#xff01;同时可以在创新创业、社会保障、评价激励等方面得到优先支。 其次&#xff0c;证书&#xff0c;其内容可以夯实基础&#xff0c;理清一个项目从启动、执行到最后的收尾做ppt结案的整个流…

Leetcode Day13 双指针

392 判断一个str是不是另一个str的子序列(不用连续) class Solution:def isSubsequence(self, s: str, t: str) -> bool:if len(t) < len(s):return Falsel 0r 0while l < len(s):if s[l] t[r]:l 1r 1else:r 1if r > len(t):return l len(s)return True自己…

pdf.js如何支持base64的查看

1.pdf.js 作为一个查看在线阅读pdf的软件&#xff0c;常常被运用到前端开发中&#xff0c;但是如何让pdf支持base64的查看&#xff0c;这边就需要去进行修改一些代码了 这边我们就进行开发修改 首先去下载 https://mozilla.github.io/pdf.js/ 当然了&#xff0c;低版本的可以…

react-native框架下,集成字体并应用全局

一、存放字体文件 将自定义字体文件&#xff08;例如 .ttf 或 .otf 文件&#xff09;放入项目的 assets/fonts 目录中。如果没有这个目录&#xff0c;可以手动创建。 二、配置字体 在项目根目录下建一个文件&#xff1a;react-native.config.js&#xff0c;文件内容如下&…

数据类型6.2.1

c语言的变量要先定义&#xff0c;而且要用确定类型 c以后的语言 c jave更强调类型&#xff0c;对类型的检查更严格 JavaScript。Python。PHP不看重类型&#xff0c;甚至不需要事先定义 c语言的类型 整数 char &#xff0c; short&#xff0c; int…

【MATLAB源码-第257期】基于matlab的QPSK调制解调COSTAS环载波同步仿真,对比前后星座图,输出锁相环响应曲线。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 QPSK&#xff08;Quadrature Phase Shift Keying&#xff0c;正交相移键控&#xff09;调制是一种常见的数字调制方式。它通过将比特数据映射到四个相位状态上来传输信息。每个符号代表两个比特的数据&#xff0c;因此与BPSK…

map和set(C++)

1.关联式容器 关联式容器&#xff1a;内部储存的是key或者k-v模型的数据 k-v模型&#xff1a;键值对 在STL中&#xff0c;键值对实际就是一个泛型的类&#xff0c;pair---->first(key) second(value) 分类&#xff1a;从底层数据结构上 红黑树结构 &#xff1a; …

单击视角复位按钮,即可看到整个地球【mars3d】

1.需要设置下初始默认视角&#xff0c;地图属性参数里面得 scene: { center: { 这个需要拿到一个参数&#xff0c;可以在示例里面随便抓一个想要的右键获取下 拿到之后再设置下&#xff0c;参考代码之后&#xff0c;就可以单击视角复位按钮&#xff0c;就回到可以看到整个地球…

19050 牛牛打气球

### 思路 1. **输入读取**&#xff1a; - 读取 n&#xff0c;a 和 b。 - 读取每个气球的坚韧度。 2. **计算最少释放次数**&#xff1a; - 使用二分查找来确定最少的释放次数。 - 每次释放武器时&#xff0c;选择一个气球多承受 a 点伤害&#xff0c;其他气球承受…

最简洁!四步完成C#——opencv环境配置

一.创建C#环境 二.右键点击管理NuGet 三.下载opencv环境 四.测试写入 using OpenCvSharp 不保存就完成了配置啦

Cycle inside Runner; building could produce unreliable results.

报错 Showing Recent Messages Cycle inside Runner; building could produce unreliable results. Cycle details: → Target Runner ○ That command depends on command in Target Runner: script phase “Thin Binary” ○ Target Runner has process command with outpu…