CN106507686A - 设计不同技术领域的复杂信息物理系统的具有其各种软件工件的软件架构的方法和工具 - Google Patents

设计不同技术领域的复杂信息物理系统的具有其各种软件工件的软件架构的方法和工具 Download PDF

Info

Publication number
CN106507686A
CN106507686A CN201580020236.4A CN201580020236A CN106507686A CN 106507686 A CN106507686 A CN 106507686A CN 201580020236 A CN201580020236 A CN 201580020236A CN 106507686 A CN106507686 A CN 106507686A
Authority
CN
China
Prior art keywords
node
dependence
dep
software
information
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.)
Granted
Application number
CN201580020236.4A
Other languages
English (en)
Other versions
CN106507686B (zh
Inventor
D.T.丹尼尔
E.乌赫纳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Siemens AG
Original Assignee
Siemens AG
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Siemens AG filed Critical Siemens AG
Publication of CN106507686A publication Critical patent/CN106507686A/zh
Application granted granted Critical
Publication of CN106507686B publication Critical patent/CN106507686B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

为了向设计不同技术领域的复杂信息物理系统的软件架构的软件的架构师给出一种有力的方式来识别并控制所述复杂信息物理系统的代码库中的架构侵蚀,其中所述软件架构具有其各种软件工件,提出了一种方法或工具,所述方法或工具会:(i)以通过修订或提交触发的方式,诊断并分类复杂信息物理系统的软件架构中的软件工件依赖性(SWA,DEP);(ii)使经诊断的和经分类的依赖性(DEP)中的改变与软件工件(SWA)上的改变事件、诸如特别是由以下中的至少一个所引起的那些事件相联系:用如市场需求所需的新的特征来增强所述复杂信息物理系统,以及修补在操作中发现的和/或在复杂信息物理系统的维护期间产生的缺陷;以及(iii)表示经诊断的和经分类的依赖性(DEP)和在经诊断的和经分类的依赖性(DEP)中的相关改变。

Description

设计不同技术领域的复杂信息物理系统的具有其各种软件工 件的软件架构的方法和工具
技术领域
本发明涉及一种用于设计或维护不同技术领域的复杂信息物理系统的具有其各种软件工件的软件架构的方法和工具。
背景技术
在下文中使用的术语“设计”意味着在不同技术领域中使用的复杂信息物理系统的软件架构的上下文中的所有可能的动作,诸如维护复杂信息物理系统的软件架构。
在下文中使用的术语“信息物理系统”指的是协作控制物理实体的计算元件的系统(查阅2014年7月23日的版本中的http://en.wikipedia.org/wiki/Cyber-physical_ system),由此所述技术领域可以多样化到像航空航天、汽车、化学工艺、民用基础设施、能源、医疗保健、制造、运输、娱乐、消费电器等那样的范围,并且可以包括技术资本和/或生产资料。
在下文中使用的术语“软件架构”指的是软件系统的高层结构、创建这样的高层结构的学科以及该结构的文档编制(查阅2014年7月24日的版本中的http:// en.wikipedia.org/wiki/Software_architecture)。因此,当在下文中使用术语“软件架构”时,应覆盖不同技术领域的复杂信息物理系统的所有软件结构。
通常在大量称作“视图”的系统模型中捕获大型的和复杂的信息物理系统的架构方面。
关于这样的方法或工具,已知以下内容:
I. 低级图形渲染
低级绘制和布局工具包(像[1]中的“Graphviz”)和库(像[2]中的“Eclipse Zest”)帮助用户将信息在视觉上渲染为具有节点和边的图形。然而,这些工具的缺省输出经常并不加以分类并且要求许多定制来取得期望的结果。
“Graphviz”仅知道节点和边并且依靠用户给出关于节点的分组和其放置的指导。“Graphviz”支持像“dot”那样的通用布局算法,这是一种工具。使用“Graphviz”提供的较低级构件来设计用户自己的可视化是由用户决定的。另外,“Graphviz”仅为渲染器并且不能够支持交互式使用。像“Eclipse Zest”那样的库允许用户创建交互式渲染;然而,用户仍不得不设计与该问题有关的表示。
II. 层次化(Levelization)算法
由“John Lakos”在[3]中首先描述了确定针对依赖性的层次的基本层次化算法。层次化基于每个软件工件的依赖性给每个软件工件分配编号。在该系统外部的组件为第0层,并不具有任何依赖性的系统组件为第1层。依赖于第1层组件的组件被视为第2层,以此类推。然而,没有规定该分析的结果的显式表示。
在[4]中的描述“层次化算法的NDepend实现”的备忘单中,发现说明性表示(illustrative representation)。
这个表示在视觉上分离了分层的、缠结的(tangled)以及第三方的工件,但是并没有提供像分组那样的用以管理大型图表的便利。该表示也没有指定任何交互式改编,以使得诊断更加高效。与此相反,该表示明确地解决了对针对真实世界场景的表示进行缩放(scaling),同时也扩展了基本表示,以支持软件演化信息。
III. 分等级视图(Hierarchical views)
根据[5]的示出合成边和嵌套节点的“简单的分等级多视角(SHriMP)”工具允许用户查看复杂信息空间软件依赖性和知识库。该工具提供分等级视图,这些分等级视图允许用户深度探讨和探究复杂图形。用户可以切换(toggle)用于渲染这些节点的布局,例如,使用树型布局或网格布局。也可以聚集这些边,以合成更易于给出其概观的边。然而,该工具并不支持软件演化信息、根据标准将这些节点分割成多个类别、循环检测,以及更重要地并不支持这些节点的层次化视图。
来自[6]中的“Structure101”的层次化结构图(LSM)也是软件依赖性的分等级视图。LSM支持识别依赖性的循环并且能够进行关于架构约束的层分析。
由“Structure101”提供的附加的图形视图正示出了通过依赖性中的循环而一般性地被聚类的图形图表(从而示出了依赖性中的缠结)。然而,这些视图并不支持如下演化视图:所述演化视图联系维护事件,以用于更全面地理解为什么曾引入了这样的缠结的依赖性。
像Visual Studio和Eclipse那样的集成开发环境(IDE)也具有如下插件:所述插件也提供类似视图,但是这些插件遭受相同的限制。
IV. 依赖性结构矩阵
像根据[7]的“Lattix”和根据[8]的“NDepend”的大众化商业工具依靠基于依赖性结构化矩阵(Dependency Structured Matrix)的可视化。利用用于指示依赖性信息的单元,在考虑中的实体被放置成n x n矩阵。例如,如果实体i依赖于实体j,那么可能会用特殊标志或者表示依赖性数目的某个度量来填充该单元(i,j)
在充足的训练的情况下,用户可以解释大型的依赖性图形。然而,这些依赖性图形并不是与节点和边图表一样是可理解的,并且也不传达软件演化信息。
图3:NDepend层次化图解。
该表示在视觉上分离了分层的、缠结的以及第三方的工件,但是并没有提供像分组那样的用以管理大型图表的便利。该表示也没有指定任何交互式改编,以使得诊断更加高效。与此相反,该表示明确地解决了对所述针对真实世界场景的表示进行缩放,同时也扩展了基本表示,以支持软件演化信息。
III. 分等级视图
根据[5]的“简单的分等级多视角(SHriMP)”工具允许用户查看复杂信息空间软件依赖性和知识库。该工具提供分等级视图,所述分等级视图允许用户深度探讨和探究复杂图形。用户可以切换用于渲染这些节点的布局,例如使用树型布局或网格布局。也可以聚集这些边,以合成更易于给出其概观的边。然而,该工具并不支持软件演化信息、根据标准将节点分割成多个类别、循环检测,以及更重要地并不支持节点的层次化视图(查阅图4)。
图4:示出合成边和嵌套节点的SHriMP视图。
来自[6]中的“Structure101”的层次化结构图(LSM)也是软件依赖性的分等级视图,如在图5中所示。LSM支持识别依赖性的循环并且能够进行关于架构约束的层分析。
图5:层次化结构图。
图6:示出了依赖性中的缠结的通过Structure101得到的图形视图。
由“Structure101”提供的附加视图正示出了通过依赖性中的循环而一般性地被聚类的图形图表,如图6中所示。然而,这些视图并不支持如下演化视图:所述演化视图联系维护事件,以用于更全面地理解为什么曾引入这样的缠结的依赖性。
像Visual Studio和Eclipse那样的集成开发环境(IDE)也具有如下插件:所述插件也提供类似视图,但是这些插件遭受相同的限制。
IV. 依赖性结构矩阵
像根据[7]的“Lattix”和根据[8]的“NDepend”那样的大众化商业工具依靠基于依赖性结构化矩阵的可视化。图7表示这样的矩阵的实例。利用被用于指示依赖性信息的单元,在考虑中的实体被放置成n x n矩阵。例如,如果实体i依赖于实体j,那么可能用特殊标志或者表示依赖性数目的某个度量来填充单元(i,j)
在充足的训练的情况下,用户可以解释大型的依赖性图形。然而,这些依赖性图形并不是与节点和边图表一样是可理解的,并且也不传达软件演化信息。
图7:依赖性结构矩阵的实例。
为了设计或维护具有其各种软件工件的软件系统的软件架构/结构,应考虑以下内容:
(A) 软件系统中的数量庞大的依赖性
在软件产品的生命周期期间的大多数努力(以及因而引起的成本)转到维护软件:用如市场需求所要求的新的特征增强软件系统,以及修补在操作中发现的缺陷。软件产品的可维护性直接受像子系统、组件、软件包和类那样的各种软件工件依赖于彼此的方式影响。每个紧密耦合的工件都难于被替换或被重新安置到整个软件系统结构的其它位置。如果系统具有紧密耦合在一起的若干工件,那么在一个工件中进行改变可能引起在直接依赖的工件中的级联改变。这导致增加的编译和链接时间、要执行的更大的回归测试、用以理解整个结构和改变的含意的延长的时间,因而导致设计时间的增加和更高的维护成本。
(B) 由于依赖性的自动化提取造成的信息超载
可能的是使用自动化方法来从软件工件提取依赖性信息。然而,所收集的信息的数量非常大,并且不能够以原始形式被理解。不得不以域内(scoped)方式呈现该数据量,以便避免挫败用户。
(C) 缺少关于与其它演化信息的关系的信息
依赖性关系单独地经常不足以回答面对系统架构师的问题。这有助于对依赖性曾在开发进程期间如何演化加以考虑。这可以回答像“哪个问题曾引起了这个依赖性循环被添加到系统?”那样的问题,从而允许架构师识别并补救引起不想要的耦合发生的情况。
发明内容
本发明的目标在于提出一种用于设计不同技术领域的复杂信息物理系统的软件架构的方法和工具,所述软件架构具有其各种软件工件,这给如下架构师一种有力的方式来在所述复杂信息物理系统的代码库中识别并控制架构侵蚀:所述架构师设计复杂信息物理系统的这样的具有其各种软件工件的软件架构的软件。
该目标由权利要求1的特征来解决。
该目标还由权利要求9的特征来解决。
本发明的主要思想是要提出一种方法或工具,所述方法或工具会:(i) 以通过修订或提交而触发的方式,诊断和分类不同技术领域的复杂信息物理系统的软件架构中的软件工件依赖性;(ii)使经诊断的和经分类的依赖性中的改变与软件工件上的改变事件相联系,诸如与特别地由以下中的至少一个所引起的那些事件相联系:用如市场需求所要求的新的特征增强复杂信息物理系统,以及修补在操作中发现的和/或在复杂信息物理系统的维护期间产生的缺陷;以及(iii)表示经诊断的和经分类的依赖性以及在经诊断的和经分类的依赖性中的相关改变。
概括地说,本发明的基础是要高效地诊断软件工件依赖性的质量,而同时及时考虑相关的设计改变事件。
由此,关于本发明使用或需要以下术语定义:
软件工件:在物理上作为软件系统的部分被管理的实体,所述软件系统例如是不同技术领域的复杂信息物理系统。工件通常包括源文件、目录、配置文件和可部署的组件。也存在物理工件描述的像类、函数、模块那样的(通常涉及编程语言的)逻辑实体。然而,出于本发明的目的,一致地对待这些实体。
版本控制:作为设计过程的部分,软件工件经历改变。版本控制系统保持跟踪在作为系统的部分的工件集中曾进行了什么改变,所述系统例如是不同技术领域的复杂信息物理系统。
问题/改变事件:也称作特征/需求、缺陷、改变请求。这些是被记录为设计过程的部分的条目,这些激发了对系统中的一个或多个软件工件的改变。它们通常在专用问题管理系统中利用唯一识别符被管理,使得它们可以在软件设计过程的其它部分中被参考。
修订/提交:修订或提交是如由版本控制系统考虑的一个改变单元。提交可以与问题相关联,并且该事实可以被记录在由版本控制系统提供的字段中。
依赖性:软件工件经常不能够单独完成它们的责任并且因而与其它工件协作。如果工件A使用由工件B提供的逻辑实体,那么我们可以说成A依赖于B。可以经由函数调用、命名空间导入、类实例化等来实际上表明依赖性。另一方面在于不得不在编译时、在链接时或在运行时应付这些依赖性。然而,所有这些情况都一致地被对待。
独一无二的设计地,本发明的主题优选地为方法或工具,由此,根据权利要求17和18的工具包括在计算机上运行的至少一个程序模块,或者另外地被存储在存储介质上,所述存储介质可插入到具有用户可滚动的显示器的计算机中或者为所述具有用户可滚动的显示器的计算机的部分。关于两个选项(替换方案),所述工具优选地为在计算机上运行的“App”(应用软件),所述计算机可以是台式PC或“一体机”PC、智能电话、笔记本计算机、平板计算机等。换言之,作为数字工具,优选地是为特定目的设计的计算机程序产品。所述工具可以被分离地售卖或分布,或者与不同技术领域的复杂信息物理系统一样被设计、被开发和/或被用于技术资本和/或产品货品。这样的货品可能会例如是电信设备、家用电器、医疗器具、工业自动化系统、能源供应系统、医疗供应系统等。
根据本发明的有利的另外的扩展方案,从属权利要求2和12教导了:依赖性诊断过程、针对单个修订或提交诊断软件工件依赖性,其中软件工件被视为依据不同的诊断标准提供的节点和至少三个节点组,
(i) 输入图形G=<N,E>,其中N为节点集合且E为表示在a,b∈N时从a到b的依赖性的元组(a,b)的集合,以及
(ii) 输出至少三个节点集合,即:具有通过层次被分组的分层节点的分层节点集合;具有缠结节点的缠结节点集合,所述缠结节点由于“强连通分量(SCC,Strongly ConnectedComponents)”而被分组,由此该组包括参与缠结节点集合的所有节点;以及具有上下文节点的上下文节点集合,所述上下文节点被分组用于降低杂乱且并不要求表示详细的依赖性信息。
根据本发明的替换方案以及又有利的扩展方案,从属权利要求3和13教导了:依赖性诊断过程、针对单个修订或提交诊断软件工件依赖性,其中所述软件工件被视为依照不同的诊断标准提供的节点和至少三个节点组,
(i) 输入图形H=<N,E>,其中N为节点集合且E为表示在a,b∈N时从a到b的依赖性的元组(a,b)的集合,以及
(ii) 输出至少四个节点集合,即:具有通过层次被分组的分层节点的分层节点集合;具有缠结节点的缠结节点集合,所述缠结节点由于“强连通分量(SCC)”而被分组,由此该组包括参与缠结节点集合(T)的所有节点;具有独立节点的独立节点集合,所述独立节点没有经由依赖性关系进行的固有排序且因而渲染来在所提供的界限内使用典型的力布局(force layout);以及具有上下文节点的上下文节点集合,所述上下文节点关于较低层上下文和高层上下文被分组,用于降低杂乱,并且所述上下文节点并不要求表示详细的依赖性信息,所述较低层上下文持有仅具有引入的依赖性的上下文节点,所述高层上下文有仅具有引出的依赖性的上下文节点。
根据本发明的另一有益改进方案,从属权利要求4和14教导了节点、节点组、节点集合通过图形表示来表示,所述图形表示在单个图形中针对每个修订或提交在用户可滚动的显示器上将节点表示为几何图形、特别是圆圈(cycle),将节点组或者说节点集合表示为子区域、特别是矩形区域,并将节点之间的依赖性表示为箭头。
根据本发明的有利的进一步的扩展方案,从属权利要求5和15教导了,在依赖性在软件系统的演化进程上随时间变化的情况下,基于修订或提交的与相对应的演化信息相关联的该变化通过时间条表示来表示。
对照上述陈述的背景,本发明通过使设计或维护信息与软件工件的依赖性信息中的改变相联系来提供先进的架构诊断。因此,本发明允许软件系统的架构师在软件取得修订时检测到依赖性中的改变。针对检测到的每个改变,(如通过时间条上的标记所示出的那样),本方法或工具允许取得关于为什么已引入了所述改变的相关信息,如经由相关设计或维护信息(例如,提交消息、问题描述和问题优先级)所解释的那样。
这增加了对改变的理解,并且本发明可以将如下情况发信号报告给软件系统的架构师:(通过所述问题/改变事件来寻址的)所述特征和其实现方式很大程度上与整个软件架构依赖性结构相矛盾。当最初架设该软件系统时,所述特征可能不适合且可能根本没被预料到。
所述优势是用于重新设计规划并改善架构质量的更好的信息。
此外,关于架构质量的直接表示且由于节点的系统呈现和诊断分类,所述方法和工具能够给出对架构质量的快速理解图。如果软件系统并不具有缠结部分,则这意味着已很好地管理了依赖性。如果存在缠结部分,则它们可以快速地被隔离,以用于进一步研究。
因此,具有优势:可以自动地监控架构质量。
另外,关于到大型代码库的可缩放性方面,诊断过程明确地分割软件系统的节点。本发明进一步提供了子分组机制,像CTX_PART_FUNC(),以及提供了被连通的组特征,使得本方法和工具可以自动地基于这些节点属于哪些组而删去信息。例如,可以将所有第三方依赖性瓦解成它们相应的组,使得这样的较不重要的信息并没有分散整个诊断图的注意力。
此外,支持性视图(supporting view)允许用户根据当前在观察中的架构层次(例如,局限于目录层次或软件包层次或类层次)来过滤输入的节点集合。
因此,优势在于高效地处理大型软件系统的架构分析,而不会挫败用户。
最后,关于“逐步软件系统理解”,本发明允许对架构的顶部和底部层次的直观理解。这允许架构师认出如下节点:这些节点因为没有许多节点依赖于它们而可以容易地被替换。该表示还允许理解在修改软件系统的使用量高的部分时引起的级联效应。
优势在于:允许用户通过首先取得概观并然后深度探讨细节来控制信息流,以及理解第三方依赖性可以揭露:该架构如何依赖于合作伙伴,以及由于供应商改变、缺少第三方维护等等而对软件系统的战略影响。
在其它从属权利要求中陈述了本发明的与相对应的优势相关联的其它有利改进方案。
附图说明
此外,本发明的有利的进一步的扩展方案由于本发明的根据图1到8的优选实施例的以下描述而产生。所述图1到8:
图1示出了根据本发明的一个实施例的经诊断的并经分类的软件工件依赖性和在经诊断的并经分类的依赖性中的相关改变的图形表示,所述相关改变具有软件工件上的改变事件,
基于图1中所示的表示,图2示出了附加时间条表示,在依赖性在软件系统的演化进程上随时间变化的情况下,所述附加时间条表示表示基于修订或提交的与相对应的演化信息相关联的这个变化,
图3基于功能块图示出了根据本发明的优选实施例的工具的基本架构,
图4示出了根据本发明的一个优选实施例(图1)的依赖性诊断过程的基本进程,
图5示出了根据本发明的另一实施例的经诊断的并经分类的软件工件依赖性和在经诊断的并经分类的依赖性中的相关改变的图形表示,所述相关改变具有软件工件上的改变事件,
图6示出了根据本发明的其它优选实施例(图5)的依赖性诊断过程的基本进程,
基于图1中所示的表示,图7示出了如下内容的第一可替换的图形表示:经诊断的并经分类的软件工件依赖性,和具有软件工件上的改变事件的在经诊断的并经分类的依赖性中的相关改变,
基于图1中所示的表示,图8示出了如下内容的第二可替换的图形表示:经诊断的并经分类的软件工件依赖性,和具有软件工件上的改变事件的在经诊断的并经分类的依赖性中的相关改变。
具体实施方式
A.关于本发明的一个优选实施例,根据图1描述如下技术手段和特征:所述技术手段和特征表达不同技术领域的复杂信息物理系统(在下文中也被简称为“软件系统”)的软件架构中的软件工件SWA的依赖性DEP的诊断分类,以及表达在用户可滚动的显示器DLP上的对经诊断的并经分类的软件工件依赖性SWA、DEP的表示;以及根据图2描述表达复杂信息物理系统的演化信息的技术手段和特征,从而使用以下诊断分类:
1. 依赖性中的一些被分层(层次化)。
2. 依赖性中的一些在圆圈中。
3. 一些依赖性在范围外或在第三方上(相对于在检查中的系统来说),其精确的细节较不重要。
4. 乍一看,重要的是仅取得依赖性的概观和诊断分类。用户然后可以与该图表交互,以取得更多细节。
5. 依赖性在复杂信息物理系统的演化进程上随时间而变化,但是需要突出显示一些重要模式,像圆圈的引入、新的第三方依赖性。
为了解决这些点“1.…4.”,图1示出了分类的图形表示,特别是在用户可滚动的显示器DPL上针对每个修订或提交在单个图形中表示信息。假定软件工件集合及其依赖性被准备为输入。在图1中,示出了:
a. 节点:软件工件是被渲染为简单的几何图形(像如在该实例中示出的圆圈)的SWA。文本标签可以与节点相关联。通过节点属于哪个节点组来确定该节点的位置。
b. 节点组:这个表示的主要优势在于依照不同的诊断标准对这些节点进行分组。这允许对整个依赖性关系的直接评估。
i. 分层的(层次化的):并未被卷入任何循环依赖性中的节点被分组为分层节点。不具有引出的依赖性的节点被放置在底部(在第1层处)。底部层的直接依赖者被放置在第2层上,并且随后的依赖者被放置在依次更高的层上。不具有引入的依赖性DEP的节点被放置在最顶层处。
ii. 缠结的:参与依赖性循环的节点被放置在称为缠结节点的另一组中。在依赖性图表中可以存在多于一个的循环,并且因而这些循环可以被呈现为被连通的节点组,使得用户可以容易地确定循环数。
iii. 被连通的组:参与缠结部分中的一个循环的所有节点。被连通的组是成员节点很可能要求重新构成的指示。例如,要么将被连通的组中的所有组成的软件工件SWA组合成复合组(例如,自己的目录),要么其软件工件SWA被分成若干组。
iv. 上下文:在系统外部的软件工件SWA经常是较不感兴趣的,并且并不要求表示详细的依赖性信息。因而,首先要将这样的节点分离成上下文组,并且然后通过像常见的命名空间或常见的库模块那样的标准进一步对这些节点分组。如果在子分组中存在大量节点,则使用省略符号来指示存在更多节点。在这个地方,这应该是足够的,因为不意图用非关键信息来挫败用户(阅读者)。
c.依赖性:节点之间的依赖性DEP被表示为箭头,其中箭头头部在依赖性的目标处。要求这些边必须比节点具有更小的对比度,使得节点的位置更清晰。因为节点的位置给出更至关重要的信息,所以这些边是可以不再给予强调的细节。类似地,最初并没有示出对各个单独的上下文节点的依赖性DEP。另外,依赖性目标在被连通的节点组处终止,再次删去非关键信息,使得用户不被这些信息转移注意力。
为了解决点“5.”,图2基于图1中所示的表示通过时间条TB示出了附加表示,在依赖性在软件系统的演化进程上随时间变化的情况下,所述时间条TB表示这个基于修订或提交与相对应的演化信息相关联的变化,所述时间条TB特别是在用户可滚动的显示器DPL上针对每个修订或提交再一次在单个图形中表示信息。
时间条TB的目的在于向用户传达演化信息的呈现。演化信息可用作从版本控制系统(查阅图3)获得的一系列修订。每个修订都具有特定的软件依赖性配置。从一个修订移动到另一个修订可导致添加节点、更新依赖性。层次图经由动画反映了这样的改变。因而,用户能够如同像视频一样查看依赖性中的改变。
时间条TB包括以下子组件:
d.回放控制:用于用户控制信息的迁移(transition)。
e.修订信息:例如,以X/Y的格式,其中Y为存在于在考虑中的范围中的修订总数,并且X为已经被迁移通过(transition through)的修订的数目。
f.进度条:用于直观地指示迁移通过的演化信息的百分比。
g.诊断事件:这些诊断时间是放置在时间条上的标记,以指示已发生感兴趣的事件。重要事件包括:
● 循环的添加/移除
● 上下文节点的添加/移除
● 紧密耦合节点的演化点
● 用户可配置条件。
图3基于功能块图表示出了根据本发明的优选实施例的工具的示意性实现方案。
该工具的两个主要子系统为:
I.源储存库分析SRAM:该子系统经由适配器与外部数据源、版本控制系统VCS和问题/改变事件管理系统ICEMS接口连接(interface)。源储存库分析SRAM利用以下组件来提取并准备数据以用于呈现。它包括:
版本控制适配器VCA:使用这个组件,特别是必需该组件,用于对用于特定的版本控制系统VCS的数据导入过程进行定制。该组件将源储存库分析SRAM与版本控制系统VCS接口连接。
换言之 :源储存库分析SRAM与版本控制系统VCS相连接。通过使用术语“所连通的”,不是仅仅意味着物理连通,而宁可说是意味着在用于数据传输的软件相关分配意义上的连通,因为图3描绘了本质上且优选地通过程序模块实现的(数字)工具的功能块图。此外,可以有多个这样的适配器。
问题/改变事件系统适配器ICESA:类似地,问题改变事件管理系统ICEMS具有用于外部方提取数据的特定接口,并且因而这个组件可以用于将源储存库分析SRAM与问题改变事件管理系统ICEMS或者说与它们(respectively with them)接口连接。
再次换言之 :源储存库分析SRAM与问题改变事件管理系统ICEMS相连接。通过使用术语“所连通的”,不是仅仅意味着物理连通,而宁可说是意味着在用于数据传输的软件相关分配意义上的连通,因为图3描绘了本质上且优选地通过程序模块实现的(数字)工具的功能块图。
工件分析器AAL:这是实际上从软件工件SWA提取依赖性信息的组件。依赖于编程语言,不得不使用特定的分析器。
分析引擎ALE:该分析引擎ALE与工件分析器AAL一起形成第一公共功能单元FTU1。分析引擎ALE是如下组件:所述组件协调在先前组件之间的数据流,并确保将相互链接的且一致的数据记录到分析储存库(查阅随后的要点)。该分析引擎ALE追踪各种版本的工件之间的改变并记录对软件依赖性的修改。该分析引擎ALE还创建在问题/改变事件与曾引起改变的修订或提交之间的映射。
分析储存库ALP:这是如下持久性存储:该持久性存储需要避免重新导入整个范围的版本,并且这支持增量更新。
表示支持装置RSM(Representational Support Means):被链接到分析储存库ALP的这个组件将数据变换成可被表示装置使用的形式,所述表示装置被设计为用于用户的工作空间和接口(查阅随后的要点)。
II.表示装置RPM(Representational Means):这个子系统如上面所提及的那样为用户准备工作空间,以检查复杂信息物理系统,该子系统经由被包括于其中的表示支持装置RSM与源储存库分析SRAM接口连接。
换言之 :经由表示支持装置RSM将源储存库分析SRAM与表示装置RPM相连通。通过使用术语“所连通的”,不是仅仅意味着物理连通,而宁可说是意味着在用于数据传输的软件相关分配意义上的连通,因为图3描绘了本质上且优选地通过程序模块实现的(数字)工具的功能块图。
此外,表示装置RPM允许用户指定并加载相关修订。工作空间包括以下组件,这些组件形成第二公共功能单元FTU2:
图形表示生成器GRG:这个组件使用上面描述的表示来呈现由源储存库分析提取的信息。在下一部分中描述生成算法。
单元支持表示USR:除了图形视图之外,该工具还曾提供像树型视图那样的附加视图,以帮助用户深度探讨多层次的工件。这允许用户依照信息需要来探索,而不是马上暴露于所有信息。支持信息的实例为:
1. 修订/提交消息,
2. 用提交指定的问题id的问题/改变事件描述。
可以在任意选择遍布于软件系统的分等级结构的软件工件的情况下完成图形呈现。该用户能够开始呈现最高层次的软件结构,以取得高层次概览。例如,所表示的节点反映了软件目录结构的最高层软件目录(如软件工件)。在这样的高层目录之下的所有软件工件(像另外的子目录和它们的文件)和它们的依赖性被聚集,并通过这个高层软件目录工件来表示这些软件工件和它们的依赖性。
通过识别分层部分的紧密耦合的软件目录工件或缠结部分的连通组,工程师或软件架构师可以深度探讨在目录的最高等级层上的相应软件工件目录的子目录和文件的子结构。可以重复该过程若干次,直到整个软件结构的最低层软件目录/文件工件。
图4示出了根据本发明的优选实施例的针对单个修订/提交的依赖性诊断过程的基本进程。该过程被划分/分离成:
输入:图形G=<N,E>,其中N为节点集合且E为表示在a,b∈N时从a到b的依赖性的元组(a,b)的集合。通过这样的图形之一表示每个修订或提交。
处理
根据SYS_PART_FUNC()(其为用户定义的分割函数),将N分割成两个集合、即系统S和上下文C。为了方便起见,可以提供查找预定义的节点属性的缺省函数。在该步骤结束时,第三方软件工件会是在集合C中,并且被诊断的系统在集合S中。
在S中找到“强连通分量(SCC)”,使得针对缠结集合T,创建集合{T1,T2…Tn},其中每个Ti都是所连通的分量。
创建集合L=S-(T1 U T2 … U Tn),从而表示分层节点。
针对集合L,
执行层次化算法,并且使相应的层次编号附属于每个节点。
根据层次对这些节点进行分组,从而结果是集合{L1,L2…Ln}
针对上下文集合C,根据CTX_PART_FUNC()分割这些节点,所述CTX_PART_FUNC()为用户定义的用于对第三方依赖性进行分组的分割函数。为了方便起见,可以提供查找典型的第三方软件包命名惯例的缺省函数。分割函数产生集合{C1,C2…Cn}。
针对每个集合Ci
添加Ci为N中的节点
如果E中存在(a,x)来使得x∈C,则在E中添加边(a,Ci)。这允许将目标边渲染成组节点,而不是单独的第三方依赖性。
输出
集合
L:通过层次分组的分层节点集合
T:通过“强连通分量(SCC)”分组的缠结节点集合
C:按需要分组以降低杂乱的上下文节点集合。
可以如下完成在演化数据上的诊断(演化分析):
输入
R:修订集合,要在所述修订集合上实行依赖性诊断、通过排序标准(sort criterion)(例如,提交日期)来排序。
差分析:在依赖性之间的差上运行的分析集合。分析取该差作为输入,并返回修订标记和描述,从而意指该差是显著的,且值得检查的。
过程
针对R中的每个修订rj,如在第(d.)部分中描述的那样执行依赖性诊断,从而给出结果DepDiag(rj)=<Lj,Tj,Cj>
针对除最后一个之外的每个结果元组,计算差Diffj = DepDiag(rj+1)- DepDiag(rj
将每个差Diffj传到作为输入被给出的该差分析集合。收集返回的任何标记并将这些标记与修订rj相关联。
输出
包含标记的被注释的修订集合,所述包含标记的被注释的修订集合现在可以通过层次图形表示中的时间条来显示。
B.关于本发明的另一优选实施例,根据图5描述如下技术手段和特征:所述技术手段和特征表达不同技术领域的复杂信息物理系统(在下文中也被简称为“软件系统”)的软件架构中的软件工件SWA的依赖性DEP的诊断分类,以及所述技术手段和特征在用户可滚动的显示器DLP上表达经诊断的并经分类的软件工件依赖性的表示SWA、DEP。
依赖性分析是用于评估现有软件系统的架构的关键技术之一。节点链接图表经常用于使依赖性信息的提取的结果可视化。然而,这些节点链接图表经常用太多的信息和不充足的组织而挫败用户。
因此,设计了一种经结构化的依赖性表示,所述经结构化的依赖性表示(i)允许用户高效地使他们自己与不熟悉的代码库相适应,(ii)进行关于依赖性结构的一些定性观察。
在架构描述中使用多个视角来根据特定的关注点集合(set of concerns)对信息进行结构化。定义了面向视角的方法来使用被定义的且名为“分类别的依赖性视角(CDV,Classified Dependencies Viewpoint)”的新颖视角开发可视化。给定了分等级信息空间,CDV表示在等级的每个节点处的依赖性。CDV将指定的节点的子节点分类成层次化节点、缠结节点、独立节点和上下文节点,从而使得用户易于取得对依赖性结构的快速印象。从根层次开始,用户可以然后判定探索例如从目录到文件的感兴趣的节点,以设计像类和函数那样的软件工件SWA。
在下文中,通过将所述方法应用于真实世界代码库来在原型中论证所述方法的可行性,并讨论可以充当针对看上去实施这样的方法的从业者的引导的问题。
如在[13]中定义的视角用于经由特定的关注点集合的镜头来查看架构信息。这允许项目的各种利益相关者查看仅与他们负责的区域相关的信息,而不被通常包含在架构描述中的大量数据挫败。
将要相信的是,视角允许可视化设计者着手处理由典型的软件可视化方法面对的规模和复杂度问题。为了这个目的,设计了可以用于开发自定义可视化的轻量过程,并将论证这样的方法可以如何导致用于经常研究的可视化(像依赖性图形)的新颖方法。
B.1. 面向视角的方法(过程)的解释
1. 视角定义
a. 定义如下视角关注点和任务:视角的可视表示可以帮助这些视角关注点和任务
b. 确定要被支持来用以援助这些任务的可视编码和交互
c. 确定详述所卷入的实体、关系和约束的视角模型
d. 开发帮助例示该模型所需的任何要求的算法
2. 视角例示
a. 判定要用于手头任务的视角的具体配置
b. 针对所草拟的实体和关系,在软件工件中找到源
c. 准备进行任何过滤或重复项消除(de-duplication)步骤的视角输入数据
d. 例示该视角以及所需的任何支持的基础结构
3. 如通过结果通知的那样井然有序地再访问这些步骤。
B.2. 根据这个过程的分类别的依赖性视角(CDV)
当面临新代码库时的典型用例是要理解该系统的各种部分。还必要的是取得“定向的”,即理解顶层或底层部分是什么。同时,将会很可能使逐步方法吸收该信息,从概览开始并然后交互式地探索感兴趣区域。因此,判定了开发帮助这些和类似的系统任务的名为分类别的依赖性视角(CDV)的新的视角。
表1总结了如[13]所要求的视角信息。依照该过程中的第一步骤,添加任务部分,以指示如下种类的场景:该视角的可视化会帮助所述种类的场景。
表1 “CDV总结”
CDV在分等级信息空间上操作,即,在从根节点开始的为树状样式的实体之间存在包含关系。根据典型的树的结构,一些节点是叶节点(不包含其它节点),而其它节点是复合节点(包含子节点)。
在软件工件方面的等级实例是目录文件方法或dll≻组件≻方法(在稍后部分中解释“≻”,但是目前可以将其解读为“可以包含”)。通过要检查的工件、编程环境的语义和从工件自身中可以可靠地提取哪些信息,确定所选的具体等级。
可以从根层次开始逐渐地探索多个等级,从而允许逐渐地向用户暴露工件之间的依赖性细节。给定复合节点,则该复合节点可以被选择来检查仅子节点集合或兄弟集合的依赖性信息。被卷入与这些子节点的依赖性中的另外的节点集合被添加,以被检查。这些节点形成依赖性上下文并向用户揭露兄弟集合的“周围的事物”。
B.2.1. 可以如何对兄弟集合中的节点分类别的描述
独立节点:在兄弟集合内,被认为独立的一些节点,即这些节点并不在兄弟集合内共享任何依赖性。然而,这些节点可能与上下文节点具有依赖性。
缠结节点:一些节点可能当在依赖性图形方面被观察时被卷入强连通分量中。可能在某些场景中允许这样的依赖性,然而,重要的是警告用户存在这样的模式。
可层次化的节点:如果从兄弟集合中移除独立节点和缠结节点,则剩余节点适合于要执行的层次化算法[3]。该算法的结果为可层次化集合中的每个节点都被分配有层次。不具有引出的依赖性的节点处于第0层,在较高层次处的节点被分配有第n+1层,其中n为最高层次引出的依赖性。这确保了在顶层节点和底层节点之间将存在清晰的划界,同时允许用户观察剩余的中间层节点是如何组织的。
B.2.2. 可视编码
在已判定了视角的关注点和任务的情况下,针对指定的各种节点的适当的可视表示被确定。当在视觉上表示数据时,位置通道在理解任务中具有最多影响[14]。因而,根据图5,使用针对各种节点清晰地被划界的区域,即层次化的L、缠结的T、独立的I和上下文C。特别地,存在用于上下文C的两个区域:(i)较低上下文CLO,其持有仅具有引入的依赖性DEP的上下文节点,以及(ii)较高上下文CUP,其有仅具有引出的依赖性DEP的上下文节点。
这种可视分割允许用户取得在所选复合节点处的这些种类的依赖性DEP的快速图片。
在图5中示出了可视编码的示意图。然后每个分割可以遵照其自己的布局规则。
每个分割只有在存在属于该分割的节点的情况下才是可视的。首先对节点的定位进行按优先序排列,并且然后仅渲染这些边。针对每个分割的节点定位如下:
层次化的
根据最长路径分层布局[16]的变型布置属于该分割的节点。这个布局渲染节点和从顶层节点开始的不同层次。顶层节点的直接依赖性被放置在下一层次中,以此类推。仅有的变型是在算法结束时将底层节点渲染成最低层次。选择该特定方案,以援助快速区分顶层和底层节点的任务。
缠结的
这个分割的主要任务在于给予用户如下印象:在当前兄弟集合中存在多少“强连通分量(SCC)”。每个SCC都是曾变成被凸包(convex hull)包围的组。在每个组内,使用力布局(force layout)[11]来散布节点。在力布局计算期间,必要的是指定在其上发生计算的界限。SCC不应重叠,或者用户会难于区分这些SCC。这暗指针对缠结节点被划界的区域不得不被再分并被分派给每个SCC。然而,也会很可能使更多区域被分派给具有最多节点的组,使得较小的SCC并没有从较大的SCC掠夺有价值的渲染空间。因而,首先使用通过每个SCC的尺寸加权的正方化树型图[10]算法再分给定的渲染区域。然后在相应的子区域内执行力布局估算。
独立的
独立节点并不具有经由依赖性关系的固有排序,并且因而仅在所提供的界限内使用典型的力布局被渲染。
上下文
关于两个上下文部分的内部布局同等地对待这两个上下文部分。这些下上下文节点服务于次要信息的目的:所述上下文节点允许用户理解当前兄弟集合引入和引出的依赖性是什么。因而有用的是,采用可用的任何分组机制并“提升”依赖性[12]到该组自身。这降低了要被渲染的边的数目,并且如果用户需要的话则通过与该组交互而可以渲染实际的边。如空间允许的那样,以从左到右的流畅的布局来布置这些组,其中指示被包围的节点。另外,不需要示出组中的所有节点,其中省略符号指示存在更多要被考虑的节点。在组之内,以网格模式布置上下文节点。以网格模式在可用的空间中渲染未在这些组中呈现的节点。
在已经定位这些节点之后,执行边的渲染。通过在节点之下的层处渲染这些边来对边不再给予强调,使得并不跨越节点。通过使用低透明度笔画进一步对这些边不再给予强调,以便不用大量细节来挫败用户。依赖性是定向关系,然而这些边最初也没有被画有箭头,以再次避免用更多标志使渲染杂乱。当聚焦在节点上时,箭头似乎强化依赖性方向。
B.2.3. 分类别的依赖性视角(CDV)模型
现在详述关于要由CDV使用的具体模型。避免极其复杂的元模型基础结构,以便保持讨论以及实施方式简单。代之以使用简单的二元关系和图形,如由像[12]和[9]那样的经典的逆向设计工具(reverse engineering tool)所提出的那样。
以下是模型元素:
实体
● E:意指所有实体的集合。任何唯一可识别的对象可以被视为实体。实体可以具有多个属性,这些属性为具有任意数据的键值对。
● T:类型集合,所述类型集合可以用于识别不同种类的软件工件[例如,“目录”、“文件”、“类”]。
关系
存在卷入视角中的三个核心关系:
● 包含:指示实体是否被包含在另一实体中的分等级关系[例如,contains(Dir1,File1)]。
● 依赖:指示两个实体之间的依赖性的关系。这个关系可以根据较低层次关系来组成[例如,依赖:=调用∪导入∪扩展]。
● typeLessThan(<):这个关系用于指示T中类型之间的排序[例如,(文件<目录)]。
输入函数
针对该视角需要以下函数来被例示
• idfunc: E → 串,针对每个实体返回全局唯一识别符
• nameFunc: E → 串,返回可以用于显示该实体的友好名称
• typeFunc: E → T,返回输入实体的类型
• sysPartFunc: E → S → C,给定兄弟集合时返回的函数,S为上下文节点集合,C...E,其中C ∩ S = ∅,从而包含被视为外部依赖性的那些实体。
• (可选的)ctxPartFunc: C → {C1, C2, ... Cn},允许对上下文节点进行分组以便交互式地紧缩核心(collapsed)的函数。
约束
要对该视角的实体和关系强制执行以下约束:
对于包含的唯一的、独立的根(C1):必须只存在一个元素,该元素是实体的等级中的根,并且该元素不能够依赖于任何其它实体。要求这样,使得sysPartFunc可以可靠地计算来自顶层自身的兄弟。
强制属性(C2):针对所有的E要求,
o e:id = idFunc(e)
o e:名称 = nameFunc(e)
o e:类型 = typeFunc(e)
T的线性排序(C3):该类型集合不得不全部关于“<”被排序,例如(方法<类<文件<目录)。这被用来明确地制作可以被分等级地相联系的该类工件。
上下文节点类型(C4):
o 给定Ts = {t, t = typeFunc(s);s∈S},以及
o Tc = {t, t = typeFunc(c); c∈C} ,那么Tc ⊆ Ts
o 这个约束被用于确保sysPartFunc将外部依赖性的正确层次向上拉。例如,当集合S包含目录和文件夹时,不想要示出正被依赖于的具体外部类,而是将上下文节点限制到包含所述类的文件。
等级关系是全部的,即,不存在在等级中并不具有一席之地的实体。
B.2.4.依赖性分类别算法(Dependency Classification Algorithm)
现在呈现用于分类别过程的算法。在图6中提供该算法的示意图。
输入:
1. 图形H=<N,E>,其中N为节点集合且E为表示在a,b∈N时从a到b的依赖性的元组(a,b)的集合。通过这样的图形之一表示每个修订或提交。H = ⟨E, contains⟩,其分等级地对所有实体进行排序。
2. 假设提供如在部分“B.2.3.”中定义的先决条件视角函数。
3. 特定实体e selected
处理:
1.令Children= contains(e s elected),所选节点的所有子节点的集合。
2.令C = sysPartFunc(Children),包含在当前层次外部的工件。
3.令I init  = Children − field(depends),其隔离子节点之间的独立节点。
4.令S = Children − I init ,其给出卷入依赖性关系的兄弟。
5.令A = Children ∪ C为待处理的实际节点集合,用于确定所连通的分量。
6.根据⟨A, depends⟩计算图形GVtx, Edg⟩,其为依赖性图形,在所述依赖性图形处,A中的所有实体是Vtx中的顶点且依赖的每个元组为Edg中的有向边。
7.找到G中的强连通分量,使得创建集合SCC = Scc 1, Scc 2Scc n ,其中每个Scc i 都为所连通的分量。令SCC nodes  = Scc 1 ∪ Scc 2Scc n ,卷入SCC的所有节点的集合。
8.创建集合L = S − SCC nodes ,从而表示分层的节点。
9.令Ctx part  = C − SCC nodes 为没有卷入任何循环的上下文节点的集合。
10.令I = I init  − SCC nodes 为没有卷入任何循环的独立节点的集合。
11.针对集合L,
1.执行层次化算法,并把相应的层次编号赋于每个节点。
2.根据层次对这些节点进行分组,从而结果是集合LEVEL = L 1, L 2L n ,其中i = 1为最底层且i = n为最顶层。
12.针对上下文集合Ctx part ,根据ctxPartFunc()分割节点。分割函数产生集合CTX =Ctx 1, Ctx 2Ctx n
13.针对每个集合Ctx i
1.添加Ctx i Vtx中的顶点
2.如果∃(a, x) ∈ Edg(其中x ∈ C),则在G中添加新的边(a, Ctx i )。类似地,添加边 (Ctx i , a)。这允许将目标边渲染成组节点,而不是单独的第三方依赖性。
输出:根据图6的集合
1. 层次 :通过层次分组的分层节点的集合
2. SCC :通过相应分量分组的强连通分量的集合
3. CTX :按需分组以降低杂乱的上下文节点的集合
4. I :独立节点的集合
5. G:依赖性图形,所述依赖性图形包含来自上述集合的节点作为顶点且依赖性作为边。注意,G还包含表示组的顶点和到那些组的边。
B.3. 结果和结论
现在,CDV视角被应用于“网状”代码库(查阅“网状”项目根)[15],以看看是否可能从真实世界代码库取得结果(查阅在“网状”传输子文件夹中检测到的循环)。
图8:“网状”项目根。
图9:离子网状传输子文件夹检测到的循环。
关于这两个实施例,已呈现了关于理解如下软件依赖性而相对基本的场景:所述软件依赖性可以关于用户所想到的任务系统性地被设计。另外,已讨论了卷入的具体算法以及关于可视编码和交互的判定。因此,可以在遵照这样的面向视角的方法时实现新颖且高效的软件可视化。
图7和8基于图1中所示的表示描绘了实例或替换表示,尽管这些实例或替换表示从事于相同的基本思想。
图7通过基于依赖性DEP的数目对节点着色描绘了如下内容的第一可替换的图形表示:经诊断的和经分类的软件工件依赖性SWA、DEP,和具有软件工件SWA上的改变事件的在经诊断的和经分类的依赖性DEP中的相关改变。在图7中,被使用的不同节点颜色每一个都被描绘为突出显示的节点、非突出显示的节点或画有阴影线的区域节点。
图8基于分区图通过对时间条的关键帧方法描绘了如下内容的第二替换图形表示:经诊断的和经分类的软件工件依赖性SWA、DEP,和具有软件工件SWA上的改变事件的在经诊断的和经分类的依赖性DEP中的相关改变。这里,不是使改变成为动画,而是每个改变都被保持为分离的图表或被保持为用户可以滚动通过的关键帧。在每个点处,以不同颜色突出显示与先前图相比的改变。在图8中,不同节点、箭头或被用于关于节点、箭头和/或布局区域的改变的布局区域颜色每一个都描绘为画有阴影线的区域节点、突出显示的布局区域或虚线和点划线箭头。
参考文献
[1] "2014P06309_SdT [1]_Graphviz.pdf" 取自:http://www.graphviz.org/
[2] "2014P06309_SdT [2]_Eclipse Zest.pdf" 取自:http://www.eclipse.org/ gef/zest/index.php
[3] Lakos, John的 "Large-scale C++ software design." Reading, MA; 第五章,第312-324页; 艾迪森维斯理专业出版社(Addison-Wesley Professional),1996年
[4] NDepend Cheatsheet: http://www.hanselman.com/blog/content/binary/ NDepend%20metrics%20placemats%201.1.pdf
[5] "2014P06309_SdT [5]_SHriMP.pdf" 取自:http://thechiselgroup.org/2003/ 07/06/shrimp-views/
[6] "2014P06309_SdT [6]_Structure101.pdf" 取自:http://structure101.com/ products/
[7] "2014P06309_SdT [7]_Lattix.pdf" 取自:http://www.lattix.com/
[8] "2014P06309_SdT [8]_NDepend.pdf" 取自:http://www.ndepend.com/
[9] Bildhauer, Daniel和Jürgen Ebert的(2008年)“Querying SoftwareAbstraction Graphs.” (Working on Query Technologies and Applications for Program Comprehension
[10] Bruls、Mark、Kees Huizing和Jarke J Van Wijk的(2000年)“SquarifiedTreemaps.”于Data Visualization 2000, 33–42. 斯普林格(Springer)。
[11] Dwyer, Tim的(2009年) “Scalable, Versatile and Simple ConstrainedGraph Layout.” 于Computer Graphics Forum, 28:991–998. 3. Wiley OnlineLibrary.
[12] Holt, Richard C. 的(1998年) “Structural Manipulations of SoftwareArchitecture Using Tarski Relational Algebra.”于Reverse Engineering, 1998年。学报,第五工作会议,210–219. IEEE.
[13] ISO 2011. “ISO/IEC 42010 Systems and Software Engineering —Architecture Description.”
[14] Mackinlay, Jack的(1986年) “Automating the Design of GraphicalPresentations of Relational Information.” ACM Transactions on Graphics (TOG)5 (2): 110–141.
[15] "Netty Project" 2014 http://github.com/netty/netty/.
[16] Sugiyama, Kozo的 "Graph Drawing and Applications for Software andKnowledge Engineers." In 11:64–65. World Scientific, 2002年。

Claims (20)

1.用于设计不同技术领域的复杂信息物理系统的软件架构的方法,所述软件架构具有其各种软件工件(SWA),所述方法包括以下步骤:
a) 特别是关于所述复杂信息物理系统的所述软件架构中的数量庞大的软件工件依赖性(SWA,DEP)中的至少一个,以通过修订或提交而触发的方式诊断并分类所述软件工件(SWA)的依赖性(DEP),从而解决信息超载,所述信息超载是由于所述依赖性(DEP)的自动化提取和缺少关于与所述复杂信息物理系统的演化信息的关系的信息而导致的,
b) 使所述经诊断的和经分类的依赖性(DEP)中的改变与在所述软件工件(SWA)上的改变事件相联系,诸如与特别是由以下中的至少一个所引起的那些事件相联系:用如市场需求所要求的新的特征增强所述复杂信息物理系统,以及修补在操作中发现的或在所述复杂信息物理系统的维护期间产生的缺陷,以及
c) 表示所述经诊断的和经分类的依赖性(DEP)和在所述经诊断的和经分类的依赖性(DEP)中的所述相关改变。
2.根据权利要求1所述的方法,其特征在于,根据依赖性诊断过程,针对单个修订或提交诊断所述软件工件依赖性(SWA,DEP),所述软件工件(SWA)被视为依照不同的诊断标准提供的节点和至少三个节点组,
(i) 输入图形G=<N,E>,其中N为节点集合且E为表示在a,b∈N时从a到b的依赖性的元组(a,b)的集合,以及
(ii) 输出至少三个节点集合,所述至少三个节点集合为:具有通过层次分组的分层节点的分层节点集合(L);具有缠结节点的缠结节点集合(T),所述缠结节点由于“强连通分量(SCC)”而被分组,由此该组包括参与所述缠结节点集合(T)的所有节点;以及具有上下文节点的上下文节点集合(C),所述上下文节点被分组用于降低杂乱,并且所述上下文节点并不要求表示详细的依赖性信息。
3.根据权利要求1所述的方法,其特征在于,根据依赖性诊断过程,针对单个修订或提交诊断所述软件工件依赖性(SWA,DEP),所述软件工件(SWA)被视为依照不同的诊断标准提供的节点和至少三个节点组,
(i)输入图形H=<N,E>,其中N为节点集合且E为表示在a,b∈N时从a到b的依赖性的元组(a,b)的集合,以及
(ii)输出至少四个节点集合,所述至少四个节点集合为:具有通过层次分组的分层节点的分层节点集合(L);具有缠结节点的缠结节点集合(T),所述缠结节点由于“强连通分量(SCC)”而被分组,由此该组包括参与所述缠结节点集合(T)的所有节点;具有独立节点的独立节点集合(I),所述独立节点没有经由依赖性关系进行的固有排序;以及具有上下文节点的上下文节点集合(C),所述上下文节点关于较低层上下文(CLO)和高层上下文(CUP)被分组,以用于降低杂乱,并且所述上下文节点并不要求表示详细的依赖性信息,所述较低层上下文(CLO)持有仅具有引入的依赖性(DEP)的上下文节点,所述高层上下文(CUP)有仅具有引出的依赖性(DEP)的上下文节点。
4.根据权利要求2或3所述的方法,其特征在于,通过图形表示来表示所述节点、所述节点组、所述节点集合,在用户可滚动的显示器(DPL)上,针对每个修订或提交,所述图形表示在单个图形中将所述节点表示为几何图形、特别是圆圈,将所述节点组或者说所述节点集合表示为子区域、特别是矩形区域,并将所述节点之间的所述依赖性(DEP)表示为箭头。
5.根据权利要求1到4中的一个所述的方法,其特征在于,在所述依赖性(DEP)在所述软件架构的演化进程上随着时间变化的情况下,基于所述修订或提交与相对应的演化信息相关联的这个变化通过时间条(TB)表示来表示。
6.根据权利要求5所述的方法,其特征在于,所述时间条表示包括表示控制元件,用于指示或标记回放控制、修订信息、所述演化信息被迁移通过的进度以及诊断事件。
7.根据权利要求2、3和4中的一个所述的方法,其特征在于,基于每个节点具有的依赖性(DEP)的所述数目,所述节点被着色。
8.根据权利要求1到5中的一个所述的方法,其特征在于,不是使所述经诊断的和经分类的依赖性(DEP)中的相关改变成为动画,而是所述经诊断的和经分类的依赖性(DEP)中的每个相关改变在所述用户可滚动的显示器(DPL)上都被保持为分离的图表,由此以不同颜色突出显示与先前图表相比的相关改变。
9.用于设计不同技术领域的复杂信息物理系统的软件架构的工具,所述软件架构具有其各种软件工件(SWA),所述工具包括:
a) 源储存库分析装置(SRAM)
a1)特别是关于所述复杂信息物理系统的所述软件架构中的数量庞大的软件工件依赖性(SWA,DEP)中的至少一个,用于以通过修订或提交而触发的方式来诊断并分类所述软件工件(SWA)的依赖性(DEP),从而解决信息超载,所述信息超载是由于所述依赖性(DEP)的自动化提取和缺少关于与所述复杂信息物理系统的演化信息的关系的信息而导致的,以及
a2)用于使所述经诊断的和经分类的依赖性(DEP)中的改变与在所述软件工件(SWA)上的改变事件相联系,诸如与特别是由以下中的至少一个所引起的那些事件相联系:用如市场需求所要求的新的特征增强所述复杂信息物理系统,以及修补在操作中发现的或在所述复杂信息物理系统的维护期间产生的缺陷,以及
b) 表示装置(RPM),用于表示所述经诊断的和经分类的依赖性(DEP)和在所述经诊断的和经分类的依赖性(DEP)中的相关改变,所述表示装置(RPM)与所述源储存库分析装置(SRAM)相连接。
10.根据权利要求9所述的工具,其特征在于,所述源储存库分析装置(SRAM)被连接到用于通过修订或提交的触发目的的版本控制系统(VCS),并且所述源储存库分析装置(SRAM)被连接到问题/改变事件管理系统(ICEMS),用于使所述经诊断的和经分类的依赖性(DEP)中的改变与所述软件工件(SWA)上的所述改变事件相联系的目的。
11.根据权利要求9或10所述的工具,其特征在于,所述源储存库分析装置(SRAM)包括表示支持装置(RSM),所述表示支持装置(RSM)将在所述源储存库分析装置(SRAM)中处理的数据变换成能被所述表示装置(RPM)使用的形式,所述表示装置(RPM)被设计为用于用户的工作空间和接口。
12.根据权利要求9、10或11所述的工具,其特征在于,所述源储存库分析装置(SRAM)被设计,特别是所述源储存库分析装置(SRAM)包括形成第一公共功能单元(FTU1)的工件分析器(AAL)和分析引擎(ALE),使得根据依赖性诊断过程,针对单个修订或提交诊断所述软件工件依赖性(SWA,DEP),所述软件工件(SWA)被视为依照不同的诊断标准提供的节点和至少三个节点组,
(i) 输入图形G=<N,E>,其中N为节点集合且E为表示在a,b∈N时从a到b的依赖性的元组(a,b)的集合,以及
(ii) 传输至少三个节点集合,用于向所述表示装置(RPM)输出的目的,所述至少三个节点集合为:具有通过层次分组的分层节点的分层节点集合(L);具有缠结节点的缠结节点集合(T),所述缠结节点由于“强连通分量(SCC)”而被分组,由此该组包括参与所述缠结节点集合(T)的所有节点;以及具有上下文节点的上下文节点集合(C),所述上下文节点被分组,用于降低杂乱,并且所述上下文节点并不要求表示详细的依赖性信息。
13.根据权利要求9、10或11所述的工具,其特征在于,所述源储存库分析装置(SRAM)被设计,特别是所述源储存库分析装置(SRAM)包括形成第一公共功能单元(FTU1)的工件分析器(AAL)和分析引擎(ALE),使得根据依赖性诊断过程,针对单个修订或提交诊断所述软件工件依赖性(SWA,DEP),所述软件工件(SWA)被视为依照不同的诊断标准提供的节点和至少三个节点组,
(i)输入图形H=<N,E>,其中N为节点集合且E为表示在a,b∈N时从a到b的依赖性的元组(a,b)的集合,以及
(ii)传输至少四个节点集合,用于向所述表示装置(RPM)输出的目的,所述至少四个节点集合为:具有通过层次分组的分层节点的分层节点集合(L);具有缠结节点的缠结节点集合(T),所述缠结节点由于“强连通分量(SCC)”而被分组,由此该组包括参与所述缠结节点集合(T)的所有节点;具有独立节点的独立节点集合(I),所述独立节点不具有经由依赖性关系进行的固有排序;以及具有上下文节点的上下文节点集合(C),所述上下文节点关于较低层上下文(CLO)以及高层上下文(CUP)被分组,用于降低杂乱,并且所述上下文节点并不要求表示详细的依赖性信息,所述较低层上下文(CLO)持有仅具有引入的依赖性(DEP)的上下文节点,所述高层上下文(CUP)有仅具有引出的依赖性(DEP)的上下文节点。
14.根据权利要求12或13所述的工具,其特征在于,所述表示装置(RPM)被设计,特别是所述表示装置(RPM)包括形成第二公共功能单元(FTU2)的图形表示生成器(GRG)和单元支持表示(USR),使得通过图形表示来表示所述节点、所述节点组、所述节点集合,在用户可滚动的显示器(DPL)上,针对每个修订或提交,所述图形表示在单个图形中将所述节点表示为几何图形、特别是圆圈,将所述节点组或者说所述几点集合表示为子区域、特别是矩形区域,并将所述节点之间的所述依赖性(DEP)表示为箭头。
15.根据权利要求9和11到14中的一个所述的工具,其特征在于,或者所述表示装置(RPM)或者所述源储存库分析装置(SRAM)、特别是所述表示支持装置(RSM)和所述表示装置(RPM)被设计,使得在所述依赖性在所述软件系统的演化进程上随着时间变化的情况下,基于所述修订或提交与相对应的演化信息相关联的这个变化通过时间条(TB)表示来表示。
16.根据权利要求15所述的工具,其特征在于,所述表示装置(RPM)被设计,使得所述时间条(TB)表示包括表示控制元件,用于指示或标记回放控制、修订信息、所述演化信息被迁移通过的进度以及诊断事件。
17.根据权利要求12、13和14中的一个所述的工具,其特征在于,所述表示装置(RPM)被设计,使得基于每个节点具有的依赖性(DEP)的所述数目来对所述节点着色。
18.根据权利要求9和11到15中的一个所述的工具,其特征在于,所述表示装置(RPM)被设计,使得不是使所述经诊断的和经分类的依赖性(DEP)中的所述相关改变成为动画,而是所述经诊断的和经分类的依赖性(DEP)中的每个相关改变在所述用户可滚动的显示器(DPL)上都被保持为分离的图表,由此以不同颜色突出显示与所述先前图表相比的相关改变。
19.根据权利要求9到18中的一个所述的工具,其特征在于至少一个程序模块,所述至少一个程序模块包括所述装置(SRAM,RPM)并在计算机上运行,使得执行具体表现所述至少一个程序模块的计算机可读存储介质。
20.根据权利要求19所述的工具,其特征在于,所述至少一个程序模块被存储在存储介质上,所述存储介质能被插入到具有所述用户可滚动的显示器(DPL)的计算机中或者是所述具有所述用户可滚动的显示器(DPL)的计算机的部分。
CN201580020236.4A 2014-04-15 2015-04-13 设计不同技术领域的复杂信息物理系统的具有其各种软件工件的软件架构的方法和系统 Active CN106507686B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP14164745.3 2014-04-15
EP14164745 2014-04-15
PCT/EP2015/057983 WO2015158663A1 (en) 2014-04-15 2015-04-13 Method and tool for engineering software architectures with its various software artifacts of complex cyber-physical systems of different technical domains

Publications (2)

Publication Number Publication Date
CN106507686A true CN106507686A (zh) 2017-03-15
CN106507686B CN106507686B (zh) 2020-12-22

Family

ID=50624406

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201580020236.4A Active CN106507686B (zh) 2014-04-15 2015-04-13 设计不同技术领域的复杂信息物理系统的具有其各种软件工件的软件架构的方法和系统

Country Status (4)

Country Link
US (1) US10452366B2 (zh)
EP (1) EP3001869A1 (zh)
CN (1) CN106507686B (zh)
WO (1) WO2015158663A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110347954A (zh) * 2019-05-24 2019-10-18 北京因特睿软件有限公司 面向复杂Web应用的服务化方法
CN111699472A (zh) * 2018-03-05 2020-09-22 西门子股份公司 确定用于开发、设计和/或部署不同技术领域的复杂的嵌入式或信息物理系统,特别是其中使用的复杂的软件架构的措施的方法和计算机程序产品

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8756614B2 (en) 2013-06-05 2014-06-17 Splunk Inc. Central registry for binding features using dynamic pointers
US9594545B2 (en) * 2013-06-05 2017-03-14 Splunk Inc. System for displaying notification dependencies between component instances
US10061626B2 (en) 2013-06-05 2018-08-28 Splunk Inc. Application framework providing a registry for mapping names to component instances
US10452366B2 (en) * 2014-04-15 2019-10-22 Siemens Aktiengesellschaft Method and tool for engineering software architectures with its various software artifacts of complex cyber-physical systems of different technical domains
US10073678B2 (en) * 2016-10-06 2018-09-11 International Business Machines Corporation Locating features in a layered software application
US10769250B1 (en) * 2017-10-26 2020-09-08 Amazon Technologies, Inc. Targeted security monitoring using semantic behavioral change analysis
CN110830427A (zh) * 2018-08-13 2020-02-21 北京京东尚科信息技术有限公司 一种netty环境下的消息编码、消息解码的方法和装置
CN111831541B (zh) * 2019-04-22 2022-10-28 西安邮电大学 一种基于风险轨迹的软件缺陷定位方法
TWI760817B (zh) * 2019-08-16 2022-04-11 新加坡商台達電子國際(新加坡)私人有限公司 分散式虛實整合系統
US11620454B2 (en) 2020-02-05 2023-04-04 Hatha Systems, LLC System and method for determining and representing a lineage of business terms and associated business rules within a software application
US11836166B2 (en) * 2020-02-05 2023-12-05 Hatha Systems, LLC System and method for determining and representing a lineage of business terms across multiple software applications
US11288043B2 (en) * 2020-02-05 2022-03-29 Hatha Systems, LLC System and method for creating a process flow diagram which incorporates knowledge of the technical implementations of flow nodes
CN111352632B (zh) * 2020-03-02 2023-07-04 抖音视界有限公司 软件产物检测装置、系统、方法及存储介质
US11797316B2 (en) * 2021-10-08 2023-10-24 Bank Of America Corporation System and method for automatic generation and management of feature level application directory
CN114428632B (zh) * 2022-01-21 2024-09-17 西安交通大学 一种基于自适应网格划分聚类的软件架构恢复方法
WO2023183829A1 (en) * 2022-03-22 2023-09-28 Hatha Systems, LLC System and method for determining and representing a lineage of business terms across multiple software applications

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1585942A (zh) * 2000-04-05 2005-02-23 微软公司 上下文关系察觉系统和利用层级树型结构的方法
CN1682196A (zh) * 2002-09-11 2005-10-12 国际商业器公司 分布式系统中的识别根原因和确定问题的方法和设备
US20060010425A1 (en) * 2001-10-29 2006-01-12 Willadsen Gloria J Methods and apparatus for automated mangement of software
CN1836208A (zh) * 2003-10-23 2006-09-20 微软公司 计算机系统和分布式应用程序的基于模型管理

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10452366B2 (en) * 2014-04-15 2019-10-22 Siemens Aktiengesellschaft Method and tool for engineering software architectures with its various software artifacts of complex cyber-physical systems of different technical domains

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1585942A (zh) * 2000-04-05 2005-02-23 微软公司 上下文关系察觉系统和利用层级树型结构的方法
US20060010425A1 (en) * 2001-10-29 2006-01-12 Willadsen Gloria J Methods and apparatus for automated mangement of software
CN1682196A (zh) * 2002-09-11 2005-10-12 国际商业器公司 分布式系统中的识别根原因和确定问题的方法和设备
CN1836208A (zh) * 2003-10-23 2006-09-20 微软公司 计算机系统和分布式应用程序的基于模型管理

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JON FROEHLICH 等: "Unifying Artifacts and Activities in a Visual Tool for Distributed Software Development Teams", 《PROCEEDINGS.26TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING(ICSE)》 *
杨正武: "动态组件的依赖关系分析与研究", 《软件导刊》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111699472A (zh) * 2018-03-05 2020-09-22 西门子股份公司 确定用于开发、设计和/或部署不同技术领域的复杂的嵌入式或信息物理系统,特别是其中使用的复杂的软件架构的措施的方法和计算机程序产品
CN111699472B (zh) * 2018-03-05 2024-04-16 西门子股份公司 确定用于开发复杂嵌入式或信息物理系统的方法
CN110347954A (zh) * 2019-05-24 2019-10-18 北京因特睿软件有限公司 面向复杂Web应用的服务化方法
CN110347954B (zh) * 2019-05-24 2021-06-25 因特睿科技有限公司 面向复杂Web应用的服务化方法

Also Published As

Publication number Publication date
EP3001869A1 (en) 2016-04-06
WO2015158663A1 (en) 2015-10-22
US10452366B2 (en) 2019-10-22
CN106507686B (zh) 2020-12-22
US20170031663A1 (en) 2017-02-02

Similar Documents

Publication Publication Date Title
CN106507686A (zh) 设计不同技术领域的复杂信息物理系统的具有其各种软件工件的软件架构的方法和工具
Rufiange et al. Treematrix: A hybrid visualization of compound graphs
Lungu Reverse engineering software ecosystems
Cao et al. g-miner: Interactive visual group mining on multivariate graphs
US8799859B2 (en) Augmented design structure matrix visualizations for software system analysis
CN102236549A (zh) 跨动态边界的运行时分析的可视化
Asadi et al. The effects of visualization and interaction techniques on feature model configuration
Agarwal et al. Set Streams: Visual exploration of dynamic overlapping sets
Kerren et al. Network visualization for integrative bioinformatics
Cleary et al. Workspace: A workflow platform for supporting development and deployment of modelling and simulation
Gorton et al. Tool support for just-in-time architecture reconstruction and evaluation: an experience report
Lavbič et al. Facilitating information system development with Panoramic view on data
Jusufi Multivariate networks: visualization and interaction techniques
Diehl et al. Multivariate networks in software engineering
Chen et al. Employing a parametric model for analytic provenance
Liu et al. Visual exploration of software evolution via topic modeling
Wilkins MELD: a pattern supported methodology for visualisation design
Ahmad et al. Requirements framework for engineering human-centered artificial intelligence-based software systems
Mostaeen Towards Collaborative Scientific Workflow Management System
Thomas et al. A visual analytics framework for the examination timetabling problem
Ghazi FlexiView: a physics-based focus+ context navigation technique for requirements modeling tools
Nadarajan Semantics and planning based workflow composition and execution for video processing
Santos et al. Using workflow medleys to streamline exploratory tasks
Mitsyuk et al. Layered layouts for software systems visualization using nested petri nets
Di Sciascio et al. Interactive Quality Analytics of User-generated Content: An Integrated Toolkit for the Case of Wikipedia.

Legal Events

Date Code Title Description
C06 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