CN117348852B - 基于细粒度软件要素构建数据链路的方法、装置及介质 - Google Patents
基于细粒度软件要素构建数据链路的方法、装置及介质 Download PDFInfo
- Publication number
- CN117348852B CN117348852B CN202311650768.9A CN202311650768A CN117348852B CN 117348852 B CN117348852 B CN 117348852B CN 202311650768 A CN202311650768 A CN 202311650768A CN 117348852 B CN117348852 B CN 117348852B
- Authority
- CN
- China
- Prior art keywords
- relation
- relationship
- rule
- association
- communication
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 163
- 238000004891 communication Methods 0.000 claims abstract description 210
- 230000008569 process Effects 0.000 claims abstract description 125
- 230000006870 function Effects 0.000 claims description 317
- 239000012634 fragment Substances 0.000 claims description 55
- 230000001360 synchronised effect Effects 0.000 claims description 39
- 230000004048 modification Effects 0.000 claims description 32
- 238000012986 modification Methods 0.000 claims description 32
- 239000000969 carrier Substances 0.000 claims description 2
- 230000008520 organization Effects 0.000 abstract description 8
- 238000010248 power generation Methods 0.000 description 17
- 230000001960 triggered effect Effects 0.000 description 13
- 238000011156 evaluation Methods 0.000 description 11
- 230000008676 import Effects 0.000 description 10
- 230000008859 change Effects 0.000 description 9
- 238000009877 rendering Methods 0.000 description 9
- 238000011161 development Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000005611 electricity Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000009432 framing Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/75—Structural analysis for program understanding
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供基于细粒度软件要素构建数据链路的方法、装置及介质。所述方法包括:获取软件要素;获取与所述软件要素对应的节点,所述节点用于指代所述软件要素;根据软件要素之间的关系,确定节点之间的连接关系,其中,软件要素之间的关系包括软件要素之间的关联关系、调用与通信关系和读写关系中的任一种或多种;根据所述节点之间的连接关系,确定与所述连接关系对应的有向边;通过所述节点与所述有向边的组合,形成软件数据链路;所述软件数据链路用于刻画软件的结构、函数调用通信关系以及数据流动过程。本发明能够对软件的要素组织形态、函数调用关系、数据流动过程等关键信息进行直观且清晰的刻画。
Description
技术领域
本发明涉及软件工程领域,特别涉及一种基于细粒度软件要素构建数据链路的方法、装置及介质。
背景技术
在大型分布式软件开发中,为了实现软件设计与编码的敏捷迭代,很多开发者和研究者正在寻找一种能够直观展现软件设计思想和软件结构的软件要素组织方法,并且基于上述方法开展将可视化表达自动转化为代码以及将代码自动解析为可视化表达的工作。这要求上述软件要素组织方法需要足够全面以及足够精细,能够支撑各类大型分布式软件进行可视化表达与实际工程代码的相互转换。
然而,现有技术往往无法全面且精细地对软件要素进行组织。目前工业界中对软件要素及其关系考虑得较为周全的技术为《将软件要素组织为软件数据链路的方法、装置及存储介质》(专利号CN202310570792.5),该技术提出了包括数据对象、UI对象、逻辑函数、存储单元等四种软件要素及其七种连接关系的数据链路组织方法,其仍存在以下明显不足。
其一,无法刻画逻辑分支,对大型分布式软件设计与开发不友好。
其二、无法区分函数之间的调用方法,普通调用、异步调用、同步通信、异步通信等方法皆是同一种表达方式,不利于梳理软件逻辑。
其三、无法定义软件要素之间的从属关系,如UI对象之间的从属关系、数据对象之间的从属关系等,导致软件的刻画不全面。
其四、实际代码中的变量与如鼠标单击事件、键盘键入事件等UI对象关联的事件都在数据链路中表达为数据对象,容易造成误解。
其五、将开发团队自行编写的普通函数、循环持续执行的函数皆表达为逻辑函数,不利于梳理软件逻辑;并且,忽略了非自行编写的外部函数,导致软件内外部交互关系不清晰。
其六、数据对象变化驱动的程序逻辑与UI对象事件触发的程序逻辑在数据链路的表达方式上十分相似,皆为UI对象指向数据对象,仅由UI对象与数据对象的属性进行区分,容易造成误解。
发明内容
为了至少解决现有技术中存在的问题之一,本发明提供一种基于细粒度软件要素构建数据链路的方法、装置及介质,通过增加软件要素及其关系的种类、完善软件要素及其关系的定义,提出更全面、更精细的基于细粒度软件要素构建数据链路的方法,支持对软件的要素组织形态、函数调用关系、数据流动过程等关键信息进行直观且清晰的刻画,从而进一步更高效地解决大型分布式软件由于数据多源异构、耦合关系复杂造成的设计与管理效率低下的问题。
为了实现本发明目的,本发明提供的基于细粒度软件要素构建数据链路的方法,包括以下步骤:
获取软件要素,所述软件要素包括环境、函数、作业、过程片段、数据库、外部API、对象、事件和数据中的多种,环境为具有全局作用域的数据实体,函数用于执行特定的任务或操作,作业为循环执行的函数,数据库为存储、管理和组织数据的载体,外部API为编写的外部函数,过程片段为函数或作业的部分代码段,用于刻画逻辑分支,对象为结构化的数据,事件为某一时间段内所发生事情的指代,数据用于描述事物的信息;
获取与所述软件要素对应的节点,所述节点用于指代所述软件要素;
根据软件要素之间的关系,确定节点之间的连接关系,其中,软件要素之间的关系包括软件要素之间的关联关系、调用与通信关系和读写关系中的任一种或多种;
根据所述节点之间的连接关系,确定与所述连接关系对应的有向边;
通过所述节点与所述有向边的组合,形成软件数据链路;所述软件数据链路用于刻画软件的结构、函数调用通信关系以及数据流动过程。
本发明还提供一种基于细粒度软件要素构建数据链路的装置,包括存储器和处理器,所述存储器用于存储至少一个程序,所述处理器用于加载所述至少一个程序以执行前述方法。
本发明还提供一种存储介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于执行前述方法。
与现有技术相比,本发明能够实现的技术效果为:
本发明方法提出了包括环境、函数、作业、过程片段、数据库、外部API、对象、事件、数据等九种软件要素及其关系的数据链路组织方法,不仅具备对软件要素及其关系的基本组织能力,还有效地解决了现有技术的不足。
其一,提出了过程片段这一种软件要素,用于刻画逻辑分支,支持在更细粒度的层面对大型分布式软件进行逻辑设计;
其二,提出了普通调用、异步调用、同步通信、异步通信四种调用与通信关系,在更细粒度上区分了软件要素之间的调用与通信关系,有效提升大型分布式软件设计图纸的阅读效率;
其三,支持通过关联关系定义软件要素之间的从属关系,例如UI对象之间的从属关系、数据对象之间的从属关系等,支持在更细粒度的层面组织软件要素,可以更全面地刻画大型分布式软件;
其四,对现有技术中“数据”的含义进行了细粒度划分,将如鼠标单击事件、键盘键入事件等UI对象关联的事件表达为事件这一软件要素,将数据对象表达为对象这一软件要素,与数据相区分,有效避免误解;
其五,对现有技术中“函数”的含义进行了细粒度划分,将开发团队自行编写的普通函数、循环执行的函数分别表达为函数、作业这两种软件要素,将非自行编写的外部函数表达为外部API这一种软件要素,有利于梳理软件逻辑且清晰表达软件内外部交互关系;
其六,将数据对象变化驱动的程序逻辑表达为“数据通过关联关系联系事件”,将UI对象事件触发的程序逻辑表达为“对象通过关联关系联系事件”,对二者表达方式进行了细粒度划分,有效避免误解。
附图说明
图1为本发明实施例提供的基于细粒度软件要素构建数据链路的方法的步骤流程图;
图2-图4为本发明实施例提供的城市屋顶光伏发电资源评估系统的示意图,图2为导入界面示意图,图3为导入后的地图示意图,图4为扫描识别结果示意图;
图5为本发明实施例提供的城市屋顶光伏发电资源评估系统的部分软件数据链路的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都是本发明保护的范围。
实施例1
请参阅图1,本实施例提供的一种基于细粒度软件要素构建数据链路的方法,包括以下步骤:
步骤S1:获取软件要素;
步骤S2:获取与所述软件要素对应的节点;所述节点用于指代所述软件要素;
步骤S3:根据软件要素之间的关系,确定节点之间的连接关系,其中,软件要素之
间的关系包括软件要素之间的关联关系、调用与通信关系和读写关系中的任一种或多种;
步骤S4:根据所述节点之间的连接关系,确定与所述连接关系对应的有向边;
步骤S5:通过所述节点与所述有向边的组合,形成软件数据链路;所述软件数据链路用于刻画软件的结构、函数调用通信关系以及数据流动过程。
其中,步骤S1中,所述软件要素的种类包括:
环境,为具有全局作用域的数据实体,所述环境具有名字、类型属性;
函数,为一个可重复使用的代码块,用于执行特定的任务或操作,指开发团队自行编写的代码块,所述函数具有名字、表达方式、类型、语言、成员函数所属类属性;
作业,为循环执行的函数,所述作业具有名字、表达方式、类型、语言、成员函数所属类属性;
数据库,为存储、管理和组织数据的载体,所述数据库具有名字、DSN属性;
外部API,特指非开发团队自行编写的外部函数,所述外部API具有名字、所属外部包及版本、成员函数所属类属性;
过程片段,为函数或作业的部分代码段,所述过程片段具有条件与分支属性;
对象,为一种结构化的数据,包括UI对象、数据对象、表达式对象、语句对象,所
述对象具有类型、名字、DOM组件类型、DOM组件关联要素、所述类、表达式内容属性;
事件,为某一时间段内所发生事情的指代,所述事件具有类型属性;
数据,为描述事物的信息,所述数据具有名字、类型、关键字、值类型、初始值属性。
在一个实施例中,所述软件要素至少包括函数、对象、数据。
其中,步骤S2中,所述软件要素对应的节点包括环境节点、函数节点、作业节点、数据库节点、外部API节点、过程片段节点、对象节点、事件节点和数据节点,所述节点与对应的软件要素为多对一的索引关系。
其中,步骤S3中,根据软件要素之间的关系,确定节点之间的连接关系这一步骤,
具体包括:
根据软件需求,确定所述软件要素之间的关联关系,所述关联关系表示所述软件要
素之间的从属关系,所述软件要素之间的关联关系表示为对应节点的正向连接关系;
根据第一关联关系规则,建立所述环境与所述函数之间的关联关系;其中,所述第一关联关系规则为一个所述环境允许与一个或多个所述函数建立关联关系,一个所述函数只允许与一个所述环境建立被关联关系;
根据第二关联关系规则,建立所述环境与所述数据之间的关联关系;其中,所述第二关联关系规则为一个所述环境允许与一个或多个所述数据建立关联关系,一个所述数据只允许与一个所述环境建立被关联关系;
根据第三关联关系规则,建立所述作业与所述过程片段之间的关联关系;其中,所述第三关联关系规则为一个所述作业允许与一个或多个所述过程片段建立关联关系,一个所述过程片段只允许与一个所述作业建立被关联关系;
根据第四关联关系规则,建立所述作业与所述对象之间的关联关系;其中,所述第四关联关系规则为一个所述作业允许与一个或多个所述对象建立关联关系,一个所述对象只允许与一个所述作业建立被关联关系;
根据第五关联关系规则,建立所述作业与所述事件之间的关联关系;其中,所述第五关联关系规则为一个所述作业允许与一个或多个所述事件建立关联关系,一个所述事件只允许与一个所述作业建立被关联关系;
根据第六关联关系规则,建立所述作业与所述数据之间的关联关系;其中,所述第六关联关系规则为一个所述作业允许与一个或多个所述数据建立关联关系,一个所述数据只允许与一个所述作业建立被关联关系;
根据第七关联关系规则,建立所述函数与所述作业之间的关联关系;其中,所述第七关联关系规则为一个所述函数允许与一个或多个所述作业建立关联关系,一个所述作业只允许与一个所述函数建立被关联关系;
根据第八关联关系规则,建立所述函数与所述函数之间的关联关系;其中,所述第八关联关系规则为一个所述函数允许与一个或多个所述函数建立关联关系,一个所述函数只允许与一个所述函数建立被关联关系;
根据第九关联关系规则,建立所述函数与所述过程片段之间的关联关系;其中,所述第九关联关系规则为一个所述函数允许与一个或多个所述过程片段建立关联关系,一个所述过程片段只允许与一个所述函数建立被关联关系;
根据第十关联关系规则,建立所述函数与所述对象之间的关联关系;其中,所述第十关联关系规则为一个所述函数允许与一个或多个所述对象建立关联关系,一个所述对
象只允许与一个所述函数建立被关联关系;
根据第十一关联关系规则,建立所述函数与所述事件之间的关联关系;其中,所述第十一关联关系规则为一个所述函数允许与一个或多个所述事件建立关联关系,一个所述事件只允许与一个所述函数建立被关联关系;
根据第十二关联关系规则,建立所述函数与所述数据之间的关联关系;其中,所述第十二关联关系规则为一个所述函数允许与一个或多个所述数据建立关联关系,一个所述数据只允许与一个所述函数建立被关联关系;
根据第十三关联关系规则,建立所述外部API与所述对象之间的关联关系;其中,所述第十三关联关系规则为一个所述外部API允许与一个或多个所述对象建立关联关系,一个所述对象只允许与一个所述外部API建立被关联关系;
根据第十四关联关系规则,建立所述过程片段与所述作业之间的关联关系;其中,所述第十四关联关系规则为一个所述过程片段允许与一个或多个所述作业建立关联关系,一个所述作业只允许与一个所述过程片段建立被关联关系;
根据第十五关联关系规则,建立所述过程片段与所述函数之间的关联关系;其中,所述第十五关联关系规则为一个所述过程片段允许与一个或多个所述函数建立关联关系,一个所述函数只允许与一个所述过程片段建立被关联关系;
根据第十六关联关系规则,建立所述过程片段与所述过程片段之间的关联关系;其中,所述第十六关联关系规则为一个所述过程片段允许与一个或多个所述过程片段建立关联关系,一个所述过程片段只允许与一个所述过程片段建立被关联关系;
根据第十七关联关系规则,建立所述过程片段与所述对象之间的关联关系;其中,所述第十七关联关系规则为一个所述过程片段允许与一个或多个所述对象建立关联关系,一个所述对象只允许与一个所述过程片段建立被关联关系;
根据第十八关联关系规则,建立所述过程片段与所述事件之间的关联关系;其中,所述第十八关联关系规则为一个所述过程片段允许与一个或多个所述事件建立关联关系,一个所述事件只允许与一个所述过程片段建立被关联关系;
根据第十九关联关系规则,建立所述过程片段与所述数据之间的关联关系;其中,所述第十九关联关系规则为一个所述过程片段允许与一个或多个所述数据建立关联关系,一个所述数据只允许与一个所述过程片段建立被关联关系;
根据第二十关联关系规则,建立所述对象与所述函数之间的关联关系;其中,所述第二十关联关系规则为一个所述对象允许与一个或多个所述函数建立关联关系,一个所
述函数只允许与一个所述对象建立被关联关系;
根据第二十一关联关系规则,建立所述对象与所述过程片段之间的关联关系;其中,所述第二十一关联关系规则为一个所述对象允许与一个或多个所述过程片段建立关联关系,一个所述过程片段只允许与一个所述对象建立被关联关系;
根据第二十二关联关系规则,建立所述对象与所述对象之间的关联关系;其中,所述第二十二关联关系规则为一个所述对象允许与一个或多个对象建立关联关系,一个所述对象只允许与一个所述对象建立被关联关系;
根据第二十三关联关系规则,建立所述对象与所述事件之间的关联关系;其中,所述第二十三关联关系规则为一个所述对象允许与一个或多个事件建立关联关系,一个所述事件只允许与一个所述对象建立被关联关系;
根据第二十四关联关系规则,建立所述对象与所述数据之间的关联关系;其中,所述第二十四关联关系规则为一个所述对象允许与一个或多个数据建立关联关系,一个所述数据允许与一个或多个所述对象建立被关联关系;
根据第二十五关联关系规则,建立所述数据与所述对象之间的关联关系;其中,所述第二十五关联关系规则为一个所述数据允许与一个或多个对象建立关联关系,一个所述对象只允许与一个所述数据建立被关联关系;
根据第二十六关联关系规则,建立所述数据与所述事件之间的关联关系;其中,所述第二十六关联关系规则为一个所述数据允许与一个或多个事件建立关联关系,一个所述事件允许与一个或多个所述数据建立被关联关系;
根据第二十七关联关系规则,建立数据与数据之间的关联关系;其中,所述第二十七关联关系规则为一个数据允许与一个或多个数据建立关联关系,一个数据只允许与一个数据建立被关联关系。
根据软件需求,确定所述软件要素之间的普通调用、异步调用、同步通信、异步通信关系,所述软件要素之间的调用与通信关系表示为对应节点的正向连接关系;
根据第一调用与通信关系规则,建立作业与作业之间的普通调用、异步调用、异步通信关系;其中,所述第一调用与通信关系规则为一个作业允许与一个或多个作业建立调用与通信关系,一个作业允许与一个或多个作业建立被调用与通信关系;
根据第二调用与通信关系规则,建立所述作业与所述函数之间的普通调用、异步调用、同步通信、异步通信关系;其中,所述第二调用与通信关系规则为一个所述作业允许与一个或多个所述函数建立调用与通信关系,一个所述函数允许与一个或多个所述作
业建立被调用与通信关系;
根据第三调用与通信关系规则,建立所述作业与所述数据库之间的同步通信关系;其中,所述第三调用与通信关系规则为一个所述作业允许与一个或多个所述数据库建立调用与通信关系,一个所述数据库允许与一个或多个所述作业建立被调用与通信关系;
根据第四调用与通信关系规则,建立所述作业与所述外部API之间的普通调用、异步调用、同步通信、异步通信关系;其中,所述第四调用与通信关系规则为一个所述作业允许与一个或多个所述外部API建立调用与通信关系,一个所述外部API允许与一个或多个所述作业建立被调用与通信关系;
根据第五调用与通信关系规则,建立所述函数与所述作业之间的异步调用、异步通信关系;其中,所述第五调用与通信关系规则为一个所述函数允许与一个或多个所述作业建立调用与通信关系,一个所述作业允许与一个或多个所述函数建立被调用与通信关系;
根据第六调用与通信关系规则,建立函数与函数之间的普通调用、异步调用、同步通信、异步通信关系;其中,所述第六调用与通信关系规则为一个函数允许与一个或多个函数建立调用与通信关系,一个函数允许与一个或多个函数建立被调用与通信关系;
根据第七调用与通信关系规则,建立所述函数与所述数据库之间的同步通信关系;其中,所述第七调用与通信关系规则为一个所述函数允许与一个或多个所述数据库建立调用与通信关系,一个所述数据库允许与一个或多个所述函数建立被调用与通信关系;
根据第八调用与通信关系规则,建立所述函数与所述外部API之间的普通调用、异步调用、同步通信、异步通信关系;其中,所述第八调用与通信关系规则为一个所述函数允许与一个或多个所述外部API建立调用与通信关系,一个所述外部API允许与一个或多个所述函数建立被调用与通信关系;
根据第九调用与通信关系规则,建立所述外部API与所述函数之间的同步通信、异步通信关系;其中,所述第九调用与通信关系规则为一个所述外部API允许与一个或多个所述函数建立调用与通信关系,一个所述函数允许与一个或多个所述外部API建立被调用与通信关系;
根据第十调用与通信关系规则,建立所述过程片段与所述作业之间的异步调用、异步通信关系;其中,所述第十调用与通信关系规则为一个所述过程片段允许与一个或多个所述作业建立调用与通信关系,一个所述作业允许与一个或多个所述过程片段建立被调用与通信关系;
根据第十一调用与通信关系规则,建立所述过程片段与所述函数之间的普通调用、
异步调用、同步通信、异步通信关系;其中,所述第十一调用与通信关系规则为一个所述过程片段允许与一个或多个所述函数建立调用与通信关系,一个所述函数允许与一个或多个所述过程片段建立被调用与通信关系;
根据第十二调用与通信关系规则,建立所述过程片段与所述数据库之间的同步通信关系;其中,所述第十二调用与通信关系规则为一个所述过程片段允许与一个或多个所述数据库建立调用与通信关系,一个所述数据库允许与一个或多个所述过程片段建立被调用与通信关系;
根据第十三调用与通信关系规则,建立所述过程片段与所述外部API之间的普通调用、异步调用、同步通信、异步通信关系;其中,所述第十三调用与通信关系规则为一个所述过程片段允许与一个或多个所述外部API建立调用与通信关系,一个所述外部API允许与一个或多个所述过程片段建立被调用与通信关系;
根据第十四调用与通信关系规则,建立所述对象与所述函数之间的普通调用关系;其中,所述第十四调用与通信关系规则为一个所述对象允许与一个或多个所述函数建立调用与通信关系,一个所述函数允许与一个或多个所述对象建立被调用与通信关系;
根据第十五调用与通信关系规则,建立所述事件与所述函数之间的普通调用关系;其中,所述第十五调用与通信关系规则为一个所述事件只允许与一个所述函数建立调用与通信关系,一个所述函数允许与一个或多个所述事件建立被调用与通信关系;
根据第十六调用与通信关系规则,建立所述数据与所述函数之间的普通调用关系;其中,所述第十六调用与通信关系规则为一个所述数据允许与一个或多个所述函数建立调用与通信关系,一个所述函数允许与一个或多个所述数据建立被调用与通信关系。
根据软件需求,确定所述软件要素之间的读写关系,所述读写关系包括读取数据或对象关系,以及,修改数据或对象或事件关系,所述读取数据或对象关系表示为软件要素与数据或对象对应节点的反向连接关系,所述修改数据或对象或事件关系表示为软件要素与数据或对象或事件对应节点的正向连接关系;
根据第一读写关系规则,建立所述函数与所述对象的修改关系,其中,所述第一读写关系规则为一个所述函数允许与一个或多个所述对象建立修改关系,一个所述对象允许与一个或多个所述函数建立被修改关系;
根据第二读写关系规则,建立所述函数与所述数据的读取关系、修改关系,其中,所述第二读写关系规则为一个所述函数允许与一个或多个所述数据建立读取关系、修改
关系,一个所述数据允许与一个或多个所述函数建立被读取关系、被修改关系;
根据第三读写关系规则,建立所述函数与所述事件的修改关系,其中,所述第三读写关系规则为一个所述函数允许与一个或多个所述事件建立修改关系,一个所述事件允许与一个或多个所述函数建立被修改关系;
根据第四读写关系规则,建立所述作业与所述对象的修改关系,其中,所述第四读写关系规则为一个所述作业允许与一个或多个所述对象建立修改关系,一个所述对象允许与一个或多个所述作业建立被修改关系;
根据第五读写关系规则,建立所述作业与所述数据的读取关系、修改关系,其中,所述第五读写关系规则为一个所述作业允许与一个或多个所述数据建立读取关系、修改关系,一个所述数据允许与一个或多个所述作业建立被读取关系、被修改关系;
根据第六读写关系规则,建立所述作业与所述事件的修改关系,其中,所述第六读写关系规则为一个所述作业允许与一个或多个所述事件建立修改关系,一个所述事件允许与一个或多个所述作业建立被修改关系;
根据第七读写关系规则,建立所述过程片段与所述对象的修改关系,其中,所述第七读写关系规则为一个所述过程片段允许与一个或多个所述对象建立修改关系,一个所述对象允许与一个或多个所述过程片段建立被修改关系;
根据第八读写关系规则,建立所述过程片段与所述数据的读取关系、修改关系,其中,所述第八读写关系规则为一个所述过程片段允许与一个或多个所述数据建立读取关系、修改关系,一个所述数据允许与一个或多个所述过程片段建立被读取关系、被修改关系;
根据第九读写关系规则,建立所述过程片段与所述事件的修改关系,其中,所述第九读写关系规则为一个所述过程片段允许与一个或多个所述事件建立修改关系,一个所述事件允许与一个或多个所述过程片段建立被修改关系;
根据第十读写关系规则,建立对象与对象的读取关系,其中,所述第十读写关系规则为一个对象允许与一个或多个对象建立读取关系,一个对象允许与一个或多个对象建
立被读取关系;
根据第十一读写关系规则,建立所述对象与所述数据的读取关系,其中,所述第十一读写规则为一个所述对象允许与一个或多个所述数据建立读取关系,一个所述数据允许与一个或多个所述对象建立被读取关系。
实施例2
本实施例提供一种基于细粒度软件要素构建数据链路的装置,包括存储器和处理器,所述存储器用于存储至少一个程序,所述处理器用于加载所述至少一个程序以执行实施例1所提供的方法。
实施例3
本实施例提供一种存储介质,其中存储有处理器可执行的指令,所述处理器可执行的指令在由处理器执行时用于执行实施例1所提供的方法。
实施例4
本实施例中,参照图2-4,通过一种城市屋顶光伏发电资源评估系统的具体示例来本发明方法进行详细描述。
该城市屋顶光伏发电资源评估系统支持导入地图及其关联信息,随后可扫描全图测算出各建筑物屋顶面积,并预测出屋顶光伏板的敷设数量及其发电量,用户可在客户端页面上对上述信息进行查看。具体来说,用户可通过点击“导入”按钮将特大型城市的地图数据导入至软件中,软件可对地图进行展示。进一步,用户可通过点击“扫描”按钮识别地图中的建筑物以及评估屋顶光伏发电资源,相应的建筑物会在图中标记出来(图4中的一个旗子表示一个供电单元内所有可识别建筑物的集合),用户可通过点击图中的标记或框选多个标记,在右侧栏中查看对应的详细信息和统计信息。
如图5所示,城市屋顶光伏发电资源评估系统的软件数据链路,描述了包括“点击导入按钮”、“点击扫描按钮”、“点击标识符号”、“框选标识符号”在内的4个用户触发流程,1个数据变化触发的流程,以及对象读取数据的关系。图中,A:外部API,B:数据库,D:数据,E:事件,F:函数,O:对象,W:环境。
上述4个用户触发流程分别是由4个DOM对象触发的,这4个DOM对象都从属于“页面渲染函数”,即“页面渲染函数”定义并返回了上述4个DOM对象。“页面渲染函数”函数的表达方式为“普通函数定义”,类型为“客户端”,语言为JavaScript,非成员函数。
本实施例中,“点击导入按钮”这一流程描述的是,用户左键单击导入按钮后,客
户端页面将导入的地图进行呈现。下面对该流程的软件数据链路内涵进行阐述:
(1)“导入按钮”对象的类型为DOM对象,非HTML原生组件,为外部API“Button”的返回值。
(2)“左键单击”事件的类型为“左键单击”;“导入按钮”与其关联,表示该事件由“导入按钮”所触发。
(3)“导入地图数据函数”函数的表达方式为“普通函数定义”,类型为“客户
端”,语言为JavaScript,非成员函数;被“左键单击”事件调用,表示上述事件发生
时会同时调用该函数。
(4)“地图数据”数据的类型为“全局变量”,与“页面全局变量”环境关联,被“导入地图数据函数”修改。
本实施例中,“点击扫描按钮”这一流程描述的是,用户左键单击扫描按钮后,客户端将导入的地图发送至服务端,服务端函数调用外部API进行图像识别,得到结果后进行光伏发电资源评估,包括进行光伏发电量评估以及建筑物用电量评估,最后将扫描结果存入数据库并返回至客户端,客户端收到返回数据后刷新页面。下面对该流程的软件数据链路内涵进行阐述:
本实施例中,“点击扫描按钮”这一流程对应的软件数据链路内涵如下:
(1)“扫描按钮”对象的类型为DOM对象,非HTML原生组件,为外部API“Button”的返回值。
(2)“左键单击”事件的类型为“左键单击”;“扫描按钮”与其关联,表示该事件由“扫描按钮”所触发。
(3)“扫描函数”函数的表达方式为“普通函数定义”,类型为“客户端”,语言为JavaScript,非成员函数;被“左键单击”事件调用,表示上述事件发生时会同时调用该函数。
(4)“地图数据”数据的属性已在前文介绍;除前文的关系外,其还被“扫描函数”读取。
(5)“扫描处理函数”函数的表达方式为“普通函数定义”,类型为“服务端”,语言为Golang,非成员函数;被“扫描函数”通过同步通信的方式调用,同步通信的通信方式为HTTP。
(6)“图像识别屋顶函数”函数的表达方式为“普通函数定义”,类型为“服务端”,语言为Golang,非成员函数;被“扫描处理函数”调用。
(7)“图像识别外部辅助接口”外部API被“图像识别屋顶函数”通过同步通信的方式调用,同步通信的通信方式为HTTP。
(8)“光伏发电资源评估函数”函数的表达方式为“普通函数定义”,类型为“服务端”,语言为Golang,非成员函数;被“扫描处理函数”调用。
(9)“光伏发电量评估函数”函数的表达方式为“普通函数定义”,类型为“服务
端”,语言为Golang,非成员函数;被“光伏发电资源评估函数”通过同步通信的方式
调用,同步通信的通信方式为gRPC。
(10)“建筑物用电量评估函数”函数的表达方式为“普通函数定义”,类型为“服务端”,语言为Golang,非成员函数;被“光伏发电资源评估函数”通过同步通信的方式调用,同步通信的通信方式为gRPC。
(11)“光伏发电资源数据库”数据库的类型为“PostgreSQL”;被“扫描处理函数”通过同步通信的方式调用。
(12)“修改表示符号信息”函数的表达方式为“普通函数定义”,类型为“客户端”,语言为JavaScript,非成员函数;被“扫描函数”调用。
(13)“标识数据集合”数据的类型为“全局变量”,与“页面全局变量”环境关联,被“修改表示符号信息”函数修改。
本实施例中,“点击标识符号”这一流程描述的是,用户左键单击图中的标识符号后,客户端会向服务端发起查询请求,服务端从数据库中读取信息并返回至客户端,客户端收到返回数据后刷新侧栏。下面对该流程的软件数据链路内涵进行阐述:
(1)“标识符号”对象的类型为DOM对象,为HTML原生组件div。
(2)“左键单击”事件的类型为“左键单击”;“标识符号”与其关联,表示该事件由“标识符号”所触发。
(3)“查询详细信息函数(前)”函数的表达方式为“普通函数定义”,类型为“客户端”,语言为JavaScript,非成员函数;被“左键单击”事件调用,表示上述事件发生时会同时调用该函数。
(4)“查询详细信息函数(后)”函数的表达方式为“普通函数定义”,类型为“服务端”,语言为Golang,非成员函数;被“查询详细信息函数(前)”通过同步通信的方式调用,同步通信的通信方式为HTTP。
(5)“光伏发电资源数据库”的属性已在前文介绍;除前文的关系外,其同时被“查询详细信息函数(后)”通过同步通信的方式调用。
(6)“修改侧栏和图标注数据”函数的表达方式为“普通函数定义”,类型为“客户端”,语言为JavaScript,非成员函数;被“查询详细信息函数(前)”调用。
(7)“配置栏数据”数据的类型为“全局变量”,与“页面全局变量”环境关联,被“修改侧栏和图标注数据”函数修改。
本实施例中,“框选标识符号”这一流程描述的是,用户按下鼠标、移动鼠标两项
行为共同形成了“框选标识符号”这一复杂行为,上述两项行为是在修改选框的位置与大小;用户鼠标释放后,选框消失,同时客户端识别出选框内的所有标识符号,向服务端发起查询请求,服务端从数据库中读取信息并返回至客户端,客户端收到返回数据后刷新侧栏。下面对该流程的软件数据链路内涵进行阐述:
(1)“地图容器”对象的类型为DOM对象,为HTML原生组件div。
(2)“鼠标按下”事件的类型为“鼠标按下”;“地图容器”与其关联,表示该事件由“地图容器”所触发。
(3)“修改选框绝对坐标函数”函数的表达方式为“普通函数定义”,类型为“客户端”,语言为JavaScript,非成员函数;被“鼠标按下”事件调用,表示上述事件发生时会同时调用该函数。
(4)“选框坐标”数据的类型为“局部变量”,与“页面渲染函数”关联,被“修改选框绝对坐标函数”修改。
(5)“鼠标移动”事件的类型为“鼠标移动”;“地图容器”与其关联,表示该事件由“地图容器”所触发。
(6)“修改选框大小函数”函数的表达方式为“普通函数定义”,类型为“客户端”,语言为JavaScript,非成员函数;被“鼠标移动”事件调用,表示上述事件发生时会同时调用该函数。
(7)“选框大小”数据的类型为“局部变量”,与“页面渲染函数”关联,被“修改选框大小函数”修改。
(8)“鼠标释放”事件的类型为“鼠标释放”;“地图容器”与其关联,表示该事件由“地图容器”所触发。
(9)“鼠标释放触发函数”函数的表达方式为“普通函数定义”,类型为“客户端”,语言为JavaScript,非成员函数;被“鼠标释放”事件调用,表示上述事件发生时会同时调用该函数。
(10)“重置选框”函数的表达方式为“普通函数定义”,类型为“客户端”,语
言为JavaScript,非成员函数;被“鼠标释放触发函数”调用。
(11)“选框坐标”、“选框大小”数据的属性已在前文介绍;除前文的关系外,其还被“重置选框”函数修改。
(12)“查询统计信息函数(前)”函数的表达方式为“普通函数定义”,类型为“客户端”,语言为JavaScript,非成员函数;被“鼠标释放触发函数”调用。
(13)“选框坐标”、“选框大小”、“标识数据集合”数据的属性已在前文介绍;
除前文的关系外,其还被“查询统计信息函数(前)”函数读取。
(14)“查询统计信息函数(后)”函数的表达方式为“普通函数定义”,类型为“服务端”,语言为Golang,非成员函数;被“查询统计信息函数(前)”(客户端)通过同步通信的方式调用,同步通信的通信方式为HTTP。
(15)“光伏发电资源数据库”的属性已在前文介绍;除前文的关系外,其同时被“查询统计信息函数(后)”通过同步通信的方式调用。
(16)“修改侧栏和图标注数据”的属性已在前文介绍;除前文的关系外,其同时被“鼠标释放触发函数”调用。
本实施例中,数据变化触发的这一流程描述的是,当地图数据发生变化时,会触发地图的重新渲染。
(1)“地图数据发生变化”事件的类型为“useEffect”;“页面渲染函数”与该事件关联,表示该事件定义在上述函数中;“地图数据”与“地图数据发生变化”事件关联,表示“地图数据发生变化”事件是由于“地图数据”变化而发生的。
(2)“地图渲染函数”函数的表达方式为“普通函数定义”,类型为“客户端”,语言为JavaScript,非成员函数;被“地图数据发生变化”事件调用。
(3)“标识数据集合”、“地图数据”的属性已在前文介绍;除前文的关系外,其还被“地图渲染函数”读取。
本实施例中,还有对象之间的关联关系以及对象读取数据的关系。
(1)“选框”对象的类型为DOM对象,为HTML原生组件div;“地图容器”对象与其关联,表示“选框”对象包含在“地图容器”对象内。
(2)“选框坐标”、“选框大小”数据的属性已在前文介绍;除前文的关系外,其还被“选框”对象读取,表示上述数据作用于“选框”对象的属性上。
(3)“配置栏”对象的类型为DOM对象,为HTML原生组件div。
(4)“建筑性质”对象的类型为DOM对象,为HTML原生组件span;“配置栏”对
象与其关联,表示“建筑性质”对象包含在“配置栏”对象内。
(5)“建筑性质”数据的类型为“全局变量”,与“配置栏数据”关联,表示“建筑性质”数据包含在“配置栏数据”内。
(6)“屋顶面积”对象的类型为DOM对象,为HTML原生组件span;“配置栏”对象与其关联,表示“屋顶面积”对象包含在“配置栏”对象内。
(7)“屋顶面积”数据的类型为“全局变量”,与“配置栏数据”关联,表示“屋
顶面积”数据包含在“配置栏数据”内。
(8)“自发电量”对象的类型为DOM对象,为HTML原生组件span;“配置栏”对象与其关联,表示“自发电量”对象包含在“配置栏”对象内。
(9)“自发电量”数据的类型为“全局变量”,与“配置栏数据”关联,表示“自发电量”数据包含在“配置栏数据”内。
(10)“自用电量”对象的类型为DOM对象,为HTML原生组件span;“配置栏”对象与其关联,表示“自用电量”对象包含在“配置栏”对象内。
(11)“自用电量”数据的类型为“全局变量”,与“配置栏数据”关联,表示“自用电量”数据包含在“配置栏数据”内。
(12)“上网规模”对象的类型为DOM对象,为HTML原生组件span;“配置栏”对象与其关联,表示“上网规模”对象包含在“配置栏”对象内。
(13)“上网规模”数据的类型为“全局变量”,与“配置栏数据”关联,表示“上网规模”数据包含在“配置栏数据”内。
下面对本实施例中涉及的软件要素进行总结。
表1描述了全体环境的信息,表1如下表所示:
表2描述了全体函数的信息,表2如下表所示:
表3描述了全体外部API的信息,表3如下表所示:
表4描述了全体数据库的信息,表4如下表所示:
表5描述了全体对象的信息,表5如下表所示:
表6描述了全体事件的信息,表6如下表所示:
表7描述了全体数据的信息,表7如下表所示:
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (7)
1.基于细粒度软件要素构建数据链路的方法,其特征在于,包括以下步骤:
获取软件要素,所述软件要素包括环境、函数、作业、过程片段、数据库、外部API、对象、事件和数据中的多种,环境为具有全局作用域的数据实体,函数用于执行特定的任务或操作,作业为循环执行的函数,数据库为存储、管理和组织数据的载体,外部API为编写的外部函数,过程片段为函数或作业的部分代码段,用于刻画逻辑分支,对象为结构化的数据,事件为某一时间段内所发生事情的指代,数据用于描述事物的信息;
获取与所述软件要素对应的节点,所述节点用于指代所述软件要素;
根据软件要素之间的关系,确定节点之间的连接关系,其中,软件要素之间的连接关系包括软件要素之间的调用与通信关系;
根据所述节点之间的连接关系,确定与所述连接关系对应的有向边;
通过所述节点与所述有向边的组合,形成软件数据链路;所述软件数据链路用于刻画软件的结构、函数调用通信关系以及数据流动过程;
所述对象包括UI对象、数据对象、表达式对象和语句对象;所述环境具有名字、类型属性,所述函数具有名字、表达方式、类型、语言、成员函数所属类属性,所述作业具有名字、表达方式、类型、语言、成员函数所属类属性,所述数据库具有名字、DSN属性,所述外部API具有名字、所属外部包及版本、成员函数所属类属性,所述过程片段具有条件与分支属性,所述对象具有类型、名字、DOM组件类型、DOM组件关联要素、类、表达式内容属性,所述事件具有类型属性,所述数据具有名字、类型、关键字、值类型、初始值属性;
所述根据软件要素之间的关系,确定节点之间的连接关系,包括:根据软件需求,确定所述软件要素之间的普通调用、异步调用、同步通信、异步通信关系,所述软件要素之间的调用与通信关系表示为对应节点的正向连接关系,包括建立所述作业与所述作业之间、所述作业与所述函数之间、所述作业与所述数据库之间、所述作业与所述外部API之间、所述函数与所述作业之间、所述函数与所述函数之间、所述函数与所述数据库之间、所述函数与所述外部API之间、所述外部API与所述函数之间、所述过程片段与所述作业之间、所述过程片段与所述函数之间、所述过程片段与所述数据库之间、所述过程片段与所述外部API之间、所述对象与所述函数之间、所述事件与所述函数之间、所述数据与所述函数之间的调用与通信关系。
2.根据权利要求1所述的基于细粒度软件要素构建数据链路的方法,其特征在于,所述软件要素对应的节点,包括环境节点、函数节点、作业节点、数据库节点、外部API节点、过程片段节点、对象节点、事件节点和数据节点,所述节点与对应的软件要素为多对一的索引关系。
3.根据权利要求1所述的基于细粒度软件要素构建数据链路的方法,其特征在于,所述根据软件要素之间的关系,确定节点之间的连接关系,包括:根据软件需求,确定所述软件要素之间的关联关系,所述关联关系表示所述软件要素之间的从属关系,所述软件要素之间的关联关系表示为对应节点的正向连接关系,其中:
根据第一关联关系规则,建立所述环境与所述函数之间的关联关系;其中,所述第一关联关系规则为一个所述环境允许与一个或多个所述函数建立关联关系,一个所述函数只允许与一个所述环境建立被关联关系;
根据第二关联关系规则,建立所述环境与所述数据之间的关联关系;其中,所述第二关联关系规则为一个所述环境允许与一个或多个所述数据建立关联关系,一个所述数据只允许与一个所述环境建立被关联关系;
根据第三关联关系规则,建立所述作业与所述过程片段之间的关联关系;其中,所述第三关联关系规则为一个所述作业允许与一个或多个所述过程片段建立关联关系,一个所述过程片段只允许与一个所述作业建立被关联关系;
根据第四关联关系规则,建立所述作业与所述对象之间的关联关系;其中,所述第四关联关系规则为一个所述作业允许与一个或多个所述对象建立关联关系,一个所述对象只允许与一个所述作业建立被关联关系;
根据第五关联关系规则,建立所述作业与所述事件之间的关联关系;其中,所述第五关联关系规则为一个所述作业允许与一个或多个所述事件建立关联关系,一个所述事件只允许与一个所述作业建立被关联关系;
根据第六关联关系规则,建立所述作业与所述数据之间的关联关系;其中,所述第六关联关系规则为一个所述作业允许与一个或多个所述数据建立关联关系,一个所述数据只允许与一个所述作业建立被关联关系;
根据第七关联关系规则,建立所述函数与所述作业之间的关联关系;其中,所述第七关联关系规则为一个所述函数允许与一个或多个所述作业建立关联关系,一个所述作业只允许与一个所述函数建立被关联关系;
根据第八关联关系规则,建立函数与函数之间的关联关系;其中,所述第八关联关系规则为一个函数允许与一个或多个函数建立关联关系,一个函数只允许与一个函数建立被关联关系;
根据第九关联关系规则,建立所述函数与所述过程片段之间的关联关系;其中,所述第九关联关系规则为一个所述函数允许与一个或多个所述过程片段建立关联关系,一个所述过程片段只允许与一个所述函数建立被关联关系;
根据第十关联关系规则,建立所述函数与所述对象之间的关联关系;其中,所述第十关联关系规则为一个所述函数允许与一个或多个所述对象建立关联关系,一个所述对象只允许与一个所述函数建立被关联关系;
根据第十一关联关系规则,建立所述函数与所述事件之间的关联关系;其中,所述第十一关联关系规则为一个所述函数允许与一个或多个所述事件建立关联关系,一个所述事件只允许与一个所述函数建立被关联关系;
根据第十二关联关系规则,建立所述函数与所述数据之间的关联关系;其中,所述第十二关联关系规则为一个所述函数允许与一个或多个所述数据建立关联关系,一个所述数据只允许与一个所述函数建立被关联关系;
根据第十三关联关系规则,建立所述外部API与所述对象之间的关联关系;其中,所述第十三关联关系规则为一个所述外部API允许与一个或多个所述对象建立关联关系,一个所述对象只允许与一个所述外部API建立被关联关系;
根据第十四关联关系规则,建立所述过程片段与所述作业之间的关联关系;其中,所述第十四关联关系规则为一个所述过程片段允许与一个或多个所述作业建立关联关系,一个所述作业只允许与一个所述过程片段建立被关联关系;
根据第十五关联关系规则,建立所述过程片段与所述函数之间的关联关系;其中,所述第十五关联关系规则为一个所述过程片段允许与一个或多个所述函数建立关联关系,一个所述函数只允许与一个所述过程片段建立被关联关系;
根据第十六关联关系规则,建立所述过程片段与所述过程片段之间的关联关系;其中,所述第十六关联关系规则为一个过程片段允许与一个或多个过程片段建立关联关系,一个过程片段只允许与一个过程片段建立被关联关系;
根据第十七关联关系规则,建立所述过程片段与所述对象之间的关联关系;其中,所述第十七关联关系规则为一个所述过程片段允许与一个或多个所述对象建立关联关系,一个所述对象只允许与一个所述过程片段建立被关联关系;
根据第十八关联关系规则,建立所述过程片段与所述事件之间的关联关系;其中,所述第十八关联关系规则为一个所述过程片段允许与一个或多个所述事件建立关联关系,一个所述事件只允许与一个所述过程片段建立被关联关系;
根据第十九关联关系规则,建立所述过程片段与所述数据之间的关联关系;其中,所述第十九关联关系规则为一个所述过程片段允许与一个或多个所述数据建立关联关系,一个所述数据只允许与一个所述过程片段建立被关联关系;
根据第二十关联关系规则,建立所述对象与所述函数之间的关联关系;其中,所述第二十关联关系规则为一个所述对象允许与一个或多个所述函数建立关联关系,一个所述函数只允许与一个所述对象建立被关联关系;
根据第二十一关联关系规则,建立所述对象与所述过程片段之间的关联关系;其中,所述第二十一关联关系规则为一个所述对象允许与一个或多个所述过程片段建立关联关系,一个所述过程片段只允许与一个所述对象建立被关联关系;
根据第二十二关联关系规则,建立所述对象与所述对象之间的关联关系;其中,所述第二十二关联关系规则为一个对象允许与一个或多个对象建立关联关系,一个对象只允许与一个对象建立被关联关系;
根据第二十三关联关系规则,建立所述对象与所述事件之间的关联关系;其中,所述第二十三关联关系规则为一个所述对象允许与一个或多个事件建立关联关系,一个所述事件只允许与一个所述对象建立被关联关系;
根据第二十四关联关系规则,建立所述对象与所述数据之间的关联关系;其中,所述第二十四关联关系规则为一个所述对象允许与一个或多个数据建立关联关系,一个所述数据允许与一个或多个所述对象建立被关联关系;
根据第二十五关联关系规则,建立所述数据与所述对象之间的关联关系;其中,所述第二十五关联关系规则为一个所述数据允许与一个或多个对象建立关联关系,一个所述对象只允许与一个所述数据建立被关联关系;
根据第二十六关联关系规则,建立所述数据与所述事件之间的关联关系;其中,所述第二十六关联关系规则为一个所述数据允许与一个或多个事件建立关联关系,一个所述事件允许与一个或多个所述数据建立被关联关系;
根据第二十七关联关系规则,建立数据与数据之间的关联关系;其中,所述第二十七关联关系规则为一个数据允许与一个或多个数据建立关联关系,一个数据只允许与一个数据建立被关联关系。
4.根据权利要求1所述的基于细粒度软件要素构建数据链路的方法,其特征在于,所述软件要素之间的调用与通信关系表示为对应节点的正向连接关系,其中:
根据第一调用与通信关系规则,建立所述作业与所述作业之间的普通调用、异步调用、异步通信关系;其中,所述第一调用与通信关系规则为一个作业允许与一个或多个作业建立调用与通信关系,一个作业允许与一个或多个作业建立被调用与通信关系;
根据第二调用与通信关系规则,建立所述作业与所述函数之间的普通调用、异步调用、同步通信、异步通信关系;其中,所述第二调用与通信关系规则为一个所述作业允许与一个或多个所述函数建立调用与通信关系,一个所述函数允许与一个或多个所述作业建立被调用与通信关系;
根据第三调用与通信关系规则,建立所述作业与所述数据库之间的同步通信关系;其中,所述第三调用与通信关系规则为一个所述作业允许与一个或多个所述数据库建立调用与通信关系,一个所述数据库允许与一个或多个所述作业建立被调用与通信关系;
根据第四调用与通信关系规则,建立所述作业与所述外部API之间的普通调用、异步调用、同步通信、异步通信关系;其中,所述第四调用与通信关系规则为一个所述作业允许与一个或多个所述外部API建立调用与通信关系,一个所述外部API允许与一个或多个所述作业建立被调用与通信关系;
根据第五调用与通信关系规则,建立所述函数与所述作业之间的异步调用、异步通信关系;其中,所述第五调用与通信关系规则为一个所述函数允许与一个或多个所述作业建立调用与通信关系,一个所述作业允许与一个或多个所述函数建立被调用与通信关系;
根据第六调用与通信关系规则,建立所述函数与所述函数之间的普通调用、异步调用、同步通信、异步通信关系;其中,所述第六调用与通信关系规则为一个函数允许与一个或多个函数建立调用与通信关系,一个函数允许与一个或多个函数建立被调用与通信关系;
根据第七调用与通信关系规则,建立所述函数与所述数据库之间的同步通信关系;其中,所述第七调用与通信关系规则为一个所述函数允许与一个或多个所述数据库建立调用与通信关系,一个所述数据库允许与一个或多个所述函数建立被调用与通信关系;
根据第八调用与通信关系规则,建立所述函数与所述外部API之间的普通调用、异步调用、同步通信、异步通信关系;其中,所述第八调用与通信关系规则为一个所述函数允许与一个或多个所述外部API建立调用与通信关系,一个所述外部API允许与一个或多个所述函数建立被调用与通信关系;
根据第九调用与通信关系规则,建立所述外部API与所述函数之间的同步通信、异步通信关系;其中,所述第九调用与通信关系规则为一个所述外部API允许与一个或多个所述函数建立调用与通信关系,一个所述函数允许与一个或多个所述外部API建立被调用与通信关系;
根据第十调用与通信关系规则,建立所述过程片段与所述作业之间的异步调用、异步通信关系;其中,所述第十调用与通信关系规则为一个所述过程片段允许与一个或多个所述作业建立调用与通信关系,一个所述作业允许与一个或多个所述过程片段建立被调用与通信关系;
根据第十一调用与通信关系规则,建立所述过程片段与所述函数之间的普通调用、异步调用、同步通信、异步通信关系;其中,所述第十一调用与通信关系规则为一个所述过程片段允许与一个或多个所述函数建立调用与通信关系,一个所述函数允许与一个或多个所述过程片段建立被调用与通信关系;
根据第十二调用与通信关系规则,建立所述过程片段与所述数据库之间的同步通信关系;其中,所述第十二调用与通信关系规则为一个所述过程片段允许与一个或多个所述数据库建立调用与通信关系,一个所述数据库允许与一个或多个所述过程片段建立被调用与通信关系;
根据第十三调用与通信关系规则,建立所述过程片段与所述外部API之间的普通调用、异步调用、同步通信、异步通信关系;其中,所述第十三调用与通信关系规则为一个所述过程片段允许与一个或多个所述外部API建立调用与通信关系,一个所述外部API允许与一个或多个所述过程片段建立被调用与通信关系;
根据第十四调用与通信关系规则,建立所述对象与所述函数之间的普通调用关系;其中,所述第十四调用与通信关系规则为一个所述对象允许与一个或多个所述函数建立调用与通信关系,一个所述函数允许与一个或多个所述对象建立被调用与通信关系;
根据第十五调用与通信关系规则,建立所述事件与所述函数之间的普通调用关系;其中,所述第十五调用与通信关系规则为一个所述事件只允许与一个所述函数建立调用与通信关系,一个所述函数允许与一个或多个所述事件建立被调用与通信关系;
根据第十六调用与通信关系规则,建立所述数据与所述函数之间的普通调用关系;其中,所述第十六调用与通信关系规则为一个所述数据允许与一个或多个所述函数建立调用与通信关系,一个所述函数允许与一个或多个所述数据建立被调用与通信关系。
5.根据权利要求1所述的基于细粒度软件要素构建数据链路的方法,其特征在于,所述根据软件要素之间的关系,确定节点之间的连接关系,包括:根据软件需求,确定所述软件要素之间的读写关系,所述读写关系包括读取数据或对象关系,以及,修改数据或对象或事件关系,所述读取数据或对象关系表示为软件要素与数据或对象对应节点的反向连接关系,所述修改数据或对象或事件关系表示为软件要素与数据或对象或事件对应节点的正向连接关系,其中:
根据第一读写关系规则,建立所述函数与所述对象的修改关系,其中,所述第一读写关系规则为一个所述函数允许与一个或多个所述对象建立修改关系,一个所述对象允许与一个或多个所述函数建立被修改关系;
根据第二读写关系规则,建立所述函数与所述数据的读取关系、修改关系,其中,所述第二读写关系规则为一个所述函数允许与一个或多个所述数据建立读取关系、修改关系,一个所述数据允许与一个或多个所述函数建立被读取关系、被修改关系;
根据第三读写关系规则,建立所述函数与所述事件的修改关系,其中,所述第三读写关系规则为一个所述函数允许与一个或多个所述事件建立修改关系,一个所述事件允许与一个或多个所述函数建立被修改关系;
根据第四读写关系规则,建立所述作业与所述对象的修改关系,其中,所述第四读写关系规则为一个所述作业允许与一个或多个所述对象建立修改关系,一个所述对象允许与一个或多个所述作业建立被修改关系;
根据第五读写关系规则,建立所述作业与所述数据的读取关系、修改关系,其中,所述第五读写关系规则为一个所述作业允许与一个或多个所述数据建立读取关系、修改关系,一个所述数据允许与一个或多个所述作业建立被读取关系、被修改关系;
根据第六读写关系规则,建立所述作业与所述事件的修改关系,其中,所述第六读写关系规则为一个所述作业允许与一个或多个所述事件建立修改关系,一个所述事件允许与一个或多个所述作业建立被修改关系;
根据第七读写关系规则,建立所述过程片段与所述对象的修改关系,其中,所述第七读写关系规则为一个所述过程片段允许与一个或多个所述对象建立修改关系,一个所述对象允许与一个或多个所述过程片段建立被修改关系;
根据第八读写关系规则,建立所述过程片段与所述数据的读取关系、修改关系,其中,所述第八读写关系规则为一个所述过程片段允许与一个或多个所述数据建立读取关系、修改关系,一个所述数据允许与一个或多个所述过程片段建立被读取关系、被修改关系;
根据第九读写关系规则,建立所述过程片段与所述事件的修改关系,其中,所述第九读写关系规则为一个所述过程片段允许与一个或多个所述事件建立修改关系,一个所述事件允许与一个或多个所述过程片段建立被修改关系;
根据第十读写关系规则,建立对象与对象的读取关系,其中,所述第十读写关系规则为一个对象允许与一个或多个对象建立读取关系,一个对象允许与一个或多个对象建立被读取关系;
根据第十一读写关系规则,建立所述对象与所述数据的读取关系,其中,所述第十一读写关系规则为一个所述对象允许与一个或多个所述数据建立读取关系,一个所述数据允许与一个或多个所述对象建立被读取关系。
6.一种基于细粒度软件要素构建数据链路的装置,其特征在于,包括存储器和处理器,所述存储器用于存储至少一个程序,所述处理器用于加载所述至少一个程序以执行权利要求1-5任一项所述方法。
7.一种存储介质,其中存储有处理器可执行的指令,其特征在于,所述处理器可执行的指令在由处理器执行时用于执行如权利要求1-5任一项所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311650768.9A CN117348852B (zh) | 2023-12-05 | 2023-12-05 | 基于细粒度软件要素构建数据链路的方法、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311650768.9A CN117348852B (zh) | 2023-12-05 | 2023-12-05 | 基于细粒度软件要素构建数据链路的方法、装置及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117348852A CN117348852A (zh) | 2024-01-05 |
CN117348852B true CN117348852B (zh) | 2024-03-29 |
Family
ID=89363582
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311650768.9A Active CN117348852B (zh) | 2023-12-05 | 2023-12-05 | 基于细粒度软件要素构建数据链路的方法、装置及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117348852B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101179516A (zh) * | 2006-11-10 | 2008-05-14 | 北京航空航天大学 | 基于有向图的数据分发方法 |
CN110069334A (zh) * | 2019-05-05 | 2019-07-30 | 重庆天蓬网络有限公司 | 一种基于包管理的分布式数据作业调度的方法和系统 |
CN110109768A (zh) * | 2019-03-29 | 2019-08-09 | 阿里巴巴集团控股有限公司 | 一种数据质量巡检方法及装置 |
CN110162559A (zh) * | 2019-04-13 | 2019-08-23 | 山东公链信息科技有限公司 | 一种基于通用json同步和异步数据api接口调用的区块链处理方法 |
CN116301735A (zh) * | 2023-05-19 | 2023-06-23 | 华南理工大学 | 将软件要素组织为软件数据链路的方法、装置及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080091491A1 (en) * | 2002-04-18 | 2008-04-17 | Bdna Corporation | Method and/or system for flexible data handling |
CN103442049B (zh) * | 2013-08-22 | 2016-08-31 | 浪潮电子信息产业股份有限公司 | 一种面向构件的混合型云操作系统体系结构及其通信方法 |
-
2023
- 2023-12-05 CN CN202311650768.9A patent/CN117348852B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101179516A (zh) * | 2006-11-10 | 2008-05-14 | 北京航空航天大学 | 基于有向图的数据分发方法 |
CN110109768A (zh) * | 2019-03-29 | 2019-08-09 | 阿里巴巴集团控股有限公司 | 一种数据质量巡检方法及装置 |
CN110162559A (zh) * | 2019-04-13 | 2019-08-23 | 山东公链信息科技有限公司 | 一种基于通用json同步和异步数据api接口调用的区块链处理方法 |
CN110069334A (zh) * | 2019-05-05 | 2019-07-30 | 重庆天蓬网络有限公司 | 一种基于包管理的分布式数据作业调度的方法和系统 |
CN116301735A (zh) * | 2023-05-19 | 2023-06-23 | 华南理工大学 | 将软件要素组织为软件数据链路的方法、装置及存储介质 |
Non-Patent Citations (1)
Title |
---|
信息管理系统的要素构建法与实践;陈振兴;大众用电;20171230(第S1期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117348852A (zh) | 2024-01-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10983660B2 (en) | Software robots for programmatically controlling computer programs to perform tasks | |
De Kergommeaux et al. | Pajé, an interactive visualization tool for tuning multi-threaded parallel applications | |
Adam et al. | A new PHP web application development framework based on MVC architectural pattern and ajax technology | |
US9152656B2 (en) | Database data type creation and reuse | |
CN102520966B (zh) | 一种代码提示方法和装置 | |
Singh et al. | TKEH: an efficient algorithm for mining top-k high utility itemsets | |
CN113095995A (zh) | 网页水印添加方法、装置、电子设备及存储介质 | |
CN111414405A (zh) | 数据获取方法、装置及电子设备 | |
CN113326314A (zh) | 数据可视化方法、装置、电子设备及可读存储介质 | |
Kesavan et al. | Scalable comparative visualization of ensembles of call graphs | |
CN117348852B (zh) | 基于细粒度软件要素构建数据链路的方法、装置及介质 | |
CN109240664A (zh) | 一种采集用户行为信息的方法及终端 | |
US9052956B2 (en) | Selecting execution environments | |
CN111273980A (zh) | 界面线程可视化方法、装置、计算机设备及存储介质 | |
CN111126008A (zh) | 基于xsd的代码生成方法、装置、计算机设备及存储介质 | |
CN114371848A (zh) | 页面联调方法、装置、设备及存储介质 | |
CN114661272A (zh) | 表格页面开发方法、装置、电子设备及存储介质 | |
CN114222317A (zh) | 数据处理方法及装置、电子设备和存储介质 | |
Kommadi | Learn Data Structures and Algorithms with Golang: Level up your Go programming skills to develop faster and more efficient code | |
CN112422569B (zh) | 一种系统页面还原与可视化交互方法 | |
CN113704672B (zh) | 基于浏览器插件的评论方法、浏览器插件及可读存储介质 | |
CN113641698B (zh) | 一种连表查询代码生成方法、装置、电子设备及计算机可读存储介质 | |
CN116400892B (zh) | 基于mbse异构模型的统一解析及展示方法 | |
CN110045961B (zh) | 业务规则的管理方法及管理平台 | |
CN114489886A (zh) | 一种资源页面的生成方法、装置、设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |