从生物学的角度对中间件和构件的思考

2024-01-12 04:32

本文主要是介绍从生物学的角度对中间件和构件的思考,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

软件发展现状

软件开发是典型的知识密集型、复杂度高、开发周期长、可靠性保证难的活动。随着软件应用范围的迅速扩大,以及软件运行平台从单机到网络环境 的转变,软件的规模越来越大,复杂性越来越高,这将导致软件在反映对象、开发基础、关注内容、运行方式、提交形式开销比重等方面的重要发展。从个体计算过 程到群体合作过程的发展;由电子服务延伸到现代服务;从以单个软件开发为主向以集成开发为主的顺延;从以产品为中心到以服务为中心,如应用服务提供商 (ASP,Application Service provider)和Web Service等都体现了软件向服务发展的趋势。已经存在大量发展运行的软件,如:金融、电信、航天等;软件应用的范围不断扩大,商务、交通、家电,已经 无处不在;软件的规模与复杂性持续增加,越来越多的知识正在由软件进行显式表达;出现了大量与软件相关的标准;软件危机仍然存在;软件应用范围将继续扩 大,成为信息社会的物理设施;遗留的软件仍继续发挥作用;最近一段时间,延长软件生命、维护、演化等问题同时受到了学术界和产业界的双重关注,诸如:柔性 结构技术、远程维护技术、自适应技术等将受到重视。

软件的不断发展和演化,逐步的将中间件和构件分离出来,用于处理诸如:数据资源互操作的数据访问中间件、远程过程条用中间件、面向消息中间件、分布异构环境下的事务处理中间件,以及分布、异构的网络环境下的将各种对象有机结合的对象中间件。

Booch于2001年曾经说过:“管理变化性与复杂性是基于构建软件开发的动力”。在日趋复杂的网络环境中,如何将软件分布于不同的节点 上。在现有的软件体系结构中,如何协调构件与构件的关系,如何突出软件复用这一思路。近十年来面向对象技术逐步成为主流的软件开发技术,为软件复用提供了 基本的技术支持。软件复用被视为解决软件危机,提高软件生产质量和效率的现实可行途径。

那么如何更好的实现软件复用,我们不妨可以从我们自身这个最精密的、有智能的“机器”来借鉴一下。

生命的基本单位——构件

细胞——生命体的基本构成单位。在某种角度来看,它就是构件,有机构成了形形色色的各种生命体,各自执行着自己在自然界独特的功能。计算机作为人类进化的一个触角和延伸,似乎还没传承生命体特有的有机和严谨,貌似一堆相对松散的机械和电子行为。

人类发明工具的过程看起来是使人类逐渐的从劳动不断解脱出来的过程,而终极目标则是让工具自主代替人本身进行劳动,这就要求机器要具有某种 形式的思维,而软件则是人类的思维的拓展,恰恰给了机器这种初级的思维形式。而这种机器的初级的思维形式还处在混沌状态,在于软件的开发思想和方式还未达 到极致,如何达到这种极致,看来从解析生命界中最高等的动物,人类自身似乎能得到一些启示。

生命起源和物种进化及软件复用

生命从最初的一个小小有机体,进化到现在丰富多样,层次不同的物种,经历若干年的磨砺和不断修正,结构变得越来越复杂,组织形式越来越有 效,分工也越来也细致,从单细胞生物,到具有思维形式的人类,其实就是那些无机元素和有机元素相互组合而构成一个构件产品,因为他们都有相同基本的组成单 位。这种复用的思想在生命体中体现的淋漓尽致,它是如何的精确和协调啊!

在设计计算机程序的这条路上,人们可谓是历尽了千辛万苦。最开始,开发了一个又一个的程序,而每个程序只能运行于特定的运行环境,离开 了这个环境,软件就变成了废品。由此,人们进行了大量的重复性劳动。而随着软件越来越庞大,越来越复杂,有一种不可调和的矛盾伴随着产生,软件的生产效率 如何能得到有效的提高,以前的软件设计如何能得到最大限度的重用,并且来降低重复性劳动所带来的成本。现在似乎出现了曙光,面向对象思想的出现给软件复用 带来最原初的萌芽。但是光知道这一思想是远远不够的,还要知道如何使他们变成行之有效的构件,用恰当的方式来组织他们,使之变成人类所需要的应用软件。从 不断探索生命的组织形式过程中,应该可以从中借鉴到很多最有效的方式。

信号传导和消息传递

生命体作为一个能动的反映个体,在于能够感知外界的信息,通过一系列的手段,方法将所接触到的外界消息,翻译成生命内部能够流通的信号,传 递到生命体的各个部分,各个部分协同工作后,再将信息反馈回来,从而和外界进行交互和响应。生命体内部的细胞表面有很多接受信息的触点,根据信号的不同, 这种信号的不同主要是由其不同的化学结构来区分的,这和我们面向对象方法中的重载多么类似,可以通过不同的参数类型,调用不同的方法来处理。那么这些大量 的信号是如何在生命体中传递,协同作用,以及事务处理机制和容错的呢?掌握了这些也许对我们的软件过程中处理大量相关的消息映射和传递机制的改善有莫大的 帮助。

自我修复和灾难恢复

生命体在受到一定限度的外界伤害后,会有自我修复和保护机制,它利用基因中的原始遗传信息重新表达,再造细胞和组织。这其中在于它自身利用 基因,一个体积很小但是全息的单位,来重新构造、复制、组织受伤害的部分。如果我们的应用系统受到了类似的伤害,是不是也应该学习一下这种生命体自我修复 的机制,有一套类似的“基因系统”,系统受到伤害时触发,从而对构件进行自我修复。

生命运行环境和构件运行环境

构件的创建和运行离不开构件运行环境,通过这个运行环境将构件有效有机的组织在一起。生命运行环境似乎更复杂,因为对于生命体而言,这似乎 是人类抽象出来的一个概念,因为它包括了太多的东西。生命体是如何有效的和外界环境进行交互的,弄明白了这种交互机制,对于我们的构件运行环境也会有莫大 的好处。

基因表达和特定的应用系统建造

生命孕育的过程是由最初的精卵细胞融合,不断吸取外界的分子和物质,通过基因模板信息精确的指导,不断的复制自身,然后分化成不同的组织,去执行不 同的功能,从一个小小的人类肉眼看不到的细胞,构造出各种功能组合体的生命个体,这是一个何等精妙的过程。从而对我们进行应用系统的构造是不是也会有些启 示呢?我们只用一套很小的应用系统构件全息的模板,通过调控这种模板的表达,来构造出我们所需要的特定的应用系统呢?

这篇关于从生物学的角度对中间件和构件的思考的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/596804

相关文章

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

开源分布式数据库中间件

转自:https://www.csdn.net/article/2015-07-16/2825228 MyCat:开源分布式数据库中间件 为什么需要MyCat? 虽然云计算时代,传统数据库存在着先天性的弊端,但是NoSQL数据库又无法将其替代。如果传统数据易于扩展,可切分,就可以避免单机(单库)的性能缺陷。 MyCat的目标就是:低成本地将现有的单机数据库和应用平滑迁移到“云”端

【编程底层思考】详解Java的JUC多线程并发编程底层组件AQS的作用及原理

Java中的AbstractQueuedSynchronizer(简称AQS)是位于java.util.concurrent.locks包中的一个核心组件,用于构建锁和其他同步器。AQS为实现依赖于FIFO(先进先出)等待队列的阻塞锁和相关同步器提供了一套高效、可扩展的框架。 一、AQS的作用 统一同步状态管理:AQS提供了一个int类型的成员变量state,用于表示同步状态。子类可以根据自己

基于shard-jdbc中间件,实现数据分库分表

一、水平分割 1、水平分库 1)、概念: 以字段为依据,按照一定策略,将一个库中的数据拆分到多个库中。 2)、结果 每个库的结构都一样;数据都不一样; 所有库的并集是全量数据; 2、水平分表 1)、概念 以字段为依据,按照一定策略,将一个表中的数据拆分到多个表中。 2)、结果 每个表的结构都一样;数据都不一样; 所有表的并集是全量数据; 二、Shard-jdbc 中间件 1、架构图 2、特点

一道算法题引发的动态内存管理的思考

在做PKU2762时,需要建邻接表。 于是按部就班写了下面一个插入边到邻接表中的函数: const int VMAX = 1010;typedef struct Graph{int vex;Graph* next;}Graph;Graph ArcGraph[VMAX];void insert(int u, int v){Graph* t = new Graph;Graph*

zdppy+vue3+onlyoffice文档管理系统实战 20240906 上课笔记 整合权限校验中间件

基于角色方法的中间件基本用法 import zdppy_api as apiimport zdppy_apimidauthasync def index(request):return api.resp.success()async def login(request):token = zdppy_apimidauth.get_role_token(role="admin")return ap

go 和 java 技术选型思考

背景:       go和java我这边自身都在使用,感受比较深,java使用了有7年多,go也就是今年开始的,公司需要所以就学了使用,发现这两个语言都很好,需要根据场景选择,我写下我这边的看法。 关于go和java语言层面和特性就不说了,网上都有,我这边从我这边实际使用的场景情况来说,供大家参考。 给我最大的感受,php转go的不少,也是符合未来技术大趋势的,目前来看,java转go也比较

如何从SEO角度解读“地摊经济”?

如果你是一名SEO人员,经常我们需要做的第一件事就是做关键词挖掘与分析,特别是当我们试图去做热点新闻事件排名的时候。 我们只有深刻的理解目标关键词背后真正潜在的搜索需求,我们才可以根据关键词的属性,撰写高质量的相关性文章,比如:地摊经济,依然成为各地市广为热议的话题。 那么,如何从SEO角度解读“地摊经济”? 根据以往关键词优化的经验,曾庆平将通过如下内容阐述: 1、关键词拓展 通常

思考自己写博客的意义

感想 从今年2月份开始,我就要求自己以每周4篇的速度写博客。然而问题是:每周的空闲时间是不稳定的,这导致我没法保证花费相同的时间去输出稳定质量的博客。当时间不够时,我将面临选择:是减少数量来保证稳定的质量,还是降低质量来保证稳定的数量? 我选择的是——牺牲质量。因为,相比于“质量”,“数量”是准确可见的。我担心:一旦有一次没能完成目标数量,便会出现“破窗效应”,让我潜意识里再也不认同“目标”了