CN104412227A - 基于查询的软件系统设计表示 - Google Patents

基于查询的软件系统设计表示 Download PDF

Info

Publication number
CN104412227A
CN104412227A CN201380035652.2A CN201380035652A CN104412227A CN 104412227 A CN104412227 A CN 104412227A CN 201380035652 A CN201380035652 A CN 201380035652A CN 104412227 A CN104412227 A CN 104412227A
Authority
CN
China
Prior art keywords
design
data set
software
data
annotation
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
CN201380035652.2A
Other languages
English (en)
Other versions
CN104412227B (zh
Inventor
S·库克
S·肯特
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.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
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 Microsoft Corp filed Critical Microsoft Corp
Publication of CN104412227A publication Critical patent/CN104412227A/zh
Application granted granted Critical
Publication of CN104412227B publication Critical patent/CN104412227B/zh
Expired - Fee Related 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/30Creation or generation of source code
    • G06F8/33Intelligent editors
    • 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/73Program documentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/74Reverse engineering; Extracting design information from source code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/75Structural 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)
  • Library & Information Science (AREA)
  • Stored Programmes (AREA)

Abstract

一种用于提供软件系统的设计表示的计算机实现的方法包括将表示所述软件系统的多个软件代码元素的数据集存储在存储器中,其中存储所述数据集包括将设计数据合并到所述数据集中,所述设计数据表示与所述软件代码元素有关的相应设计属性。接收包括对所述数据集中的项的引用的数据集查询所述数据集查询是用与所述存储器通信的处理单元对所述数据集实现的。实现所述数据集查询包括基于对所述项的引用来定义所述数据集的子集。经由与所述处理单元通信的输出设备呈现的用户界面包括根据所述数据集的所定义的子集的、所述软件系统的设计表示的视图。

Description

基于查询的软件系统设计表示
发明背景
软件系统的开发通常伴随有为维护软件代码的设计文档或模型而作出的努力。这样的努力尝试提供对于软件代码的除了从插入到代码中的评论可用的信息之外的洞察,这些评论通常限于指定所声明函数的行为。不幸的是,在可具有数百万行的代码的较大软件系统的开发期间,维护设计文档是具有挑战性的。
在面向对象的系统中,大型软件系统可具有数千个对象。诸如C#之类的面向对象的编程语言可允许软件开发者通过将属性分配到对象来记录代码。所得到的文档因此限于引用软件代码自身内的元素。
图形建模工具已经被用于记录对象之间的交互和关系。一些图形建模工具是基于统一建模语言(UML)的。不幸的是,这些和其他用于维护设计文档的方式依然过于昂贵、耗时和/或由于在开发期间发生对于代码的改变而易于出错。
发明内容
各方法和各系统涉及提供软件系统的设计信息。经由对数据集执行查询来提供所述设计信息,其中,软件系统的元素与关于该软件系统的附加信息(包括例如设计抽象和设计注释)相结合地存储。经由呈现数据集的代表性视图、片或其他子集来提供查询的结果。附加设计信息可接着被覆盖在代表性视图上或以其他方式集成到代表性视图中。附加设计信息可包括例如系统性能数据和/或设计确认数据。
根据本公开的一个方面,可根据数据集查询来提供软件系统的设计表示的视图。设计数据被合并到代表软件系统的多个软件代码元素的数据集中。对该数据集实现数据集查询以定义在设计表示视图中呈现的数据集的子集。
提供本概述是为了以简化的形式介绍将在以下具体实施方式中进一步描述的概念选择。本概述并不旨在标识所要求保护主题的关键特征或必要特征,也不旨在用于限制所要求保护主题的范围。
附图说明
图1是被配置成根据一个实施例的提供软件系统的设计表示的示例性系统的框图。
图2是根据一个实施例的提供软件系统的设计表示的示例性计算机实现的方法的流程图。
图3-14是经由所公开的方法和系统生成的或呈现的示例性用户界面的示意图。
图15是根据用于一个或多个所公开的方法和系统的实现的一个实施例的计算环境的框图。
尽管所公开的系统和方法易于具有各种形式的实施例,但在附图中示出了(并将在下文描述)本发明的各具体实施例,其中要理解,本公开旨在是说明性的,而不将本发明限于本文所描述和示出的各具体实施例。
详细描述
所公开的各方法和各系统涉及提供软件系统的设计表示。可经由对软件系统的软件代码元素和设计数据的数据集的查询来提供所述设计表示。所公开的各方法和各系统的基于查询的性质允许所得到的设计表示被更新来反映软件系统中的改变。所公开的各方法和各系统可由此促进正在进行中的对软件系统的记录、分析、探索、理解、开发和维护。例如,所公开的各方法和各系统可有助于:开发软件系统的所需设计,接着确认软件系统的代码符合所需设计,和/或确定软件系统的代码中的哪个地方不满足所需设计。所公开的各方法和各系统的多个方面涉及维护设计的最新表示。
查询可被用于基于对各种不同代码构造(诸如汇编和命名空间)的引用来定义软件系统的子集。该子集可基于对构建定义或其他定义代码集合的构造的引用。这样的代码构造可被添加到要被查询的代码索引数据集。每个子集定义查询可引用名称、关系和与代码元素有关的其他信息以及代码索引数据集中的其他设计数据。子集由此通过对其运行查询的代码元素以及其他设计数据来对应于视图或片。在查询中使用软件系统的代码构造和其他代码元素可允许软件开发者避免必须在软件系统的分开的模型中创建对应的层、组件或其他元素。查询可经由用户界面(例如,文本编辑器)被配置为查询表达式。查询可被实现以及被重新实现来递送和更新软件系统的设计表示。
由所公开的各方法和各系统提供的设计表示可与底层软件代码集成,而非与底层软件代码分开。这样的集成允许在对底层代码的改变发生时,设计表示被更新。如以下描述的,更新可按自动化的方式通过重新实现数据集查询来提供。过去的查询可被持久保存或以其他方式为此变得可用。用于将设计表示与代码同步的额外努力被避免。所公开的各方法和各系统可由此提供对底层代码的实时或运行中的记录。
所公开的各方法和各系统与软件系统的集成还可避免对已经存在于软件代码中的信息的重复。如以下描述的,这样的信息可接着被附加的设计信息补充(而非仅仅重复)。设计表示由此可集成来自多个源的设计数据。例如,设计表示可由此避免被限制到特定类型的设计元素,诸如UML设计元素。设计信息到特定格式(例如,UML格式)的强制转换也可被避免。
尽管与软件系统的集成提供了多个益处,但是所公开的各方法和各系统可以是有用的,而不管对于在软件系统底层的源代码的访问是否可用。所公开的各方法和各系统不需要维护对于底层源代码的持续访问或其他访问或维持底层源代码的可用性。代码索引数据集可在构建时或者在提交查询并且确定代码索引数据集不是最新的时候被更新。在一些情况下,与软件系统有关的结构信息可从编译自源代码的二进制文件中提取。在其他情况下,与软件系统有关的结构信息可从源代码直接提取。
所公开的方法和系统的查询不限于对代码本身中的项的引用。在其上实现查询的数据集可包括与源代码或从中导出的代码元素不同的设计数据。如本文所使用的,所公开的方法和系统的用户界面可被配置成支持对这些附加设计数据的录入、存储、以及最终使用。作为替换或补充,所公开的方法和系统可被配置成支持经由对代码元素的分析来自动提取或生成这样的附加设计数据。
设计注释是被合并以供在软件系统的设计表示中使用的附加设计数据的一个示例。设计注释可涉及指定软件系统的代码元素的各层或依存关系。设计注释随后可在查询中被引用以找出与该层相关联的代码元素。注释不限于指定各层和依存关系,并且可被用来表示软件系统的各方面。例如,注释可表示软件模型框架的各组件,其中例如软件系统的各组件之间的联系被标识。作为替换或补充,注释可以表示(i)软件系统的各组件的定义,包括例如这些组件的边界的指示,(ii)各组件之间的各类依存关系,以及(iii)代码元素是焦点元素、附属元素还是附带元素的指示。注释还可指示软件系统的行为特性,包括例如软件系统的状态以及这些状态之间的转移。这些状态可通过属性和字段上的注释表达式来连接到代码。所公开的方法和系统中的注释因而不限于显式地引用代码元素。
所公开的方法和系统不限于经由所公开的方法和系统的用户界面提供的设计注释。设计数据的合并可通过从代码元素自动提取设计信息来促进。设计信息可以用各种形式来呈现。所公开的方法和系统可被配置成应用抽象函数来观察或检测代码中的设计模式,如框架中使用的模式。抽象函数可被配置成将对框架的设计抽象或其他模式的引用与相应代码元素相关联地合并到设计数据中。
设计注释和设计抽象增强了所公开的方法和系统所生成的设计表示。设计表示因而可避免仅冗余地表达代码中存在的信息。设计表示可被用于设计记录和/或确认。确认过程可结合软件系统的基于查询的设计来实现,以确定软件系统是否满足一个或多个设计策略或其他准则。设计策略可经由设计注释来建立。软件系统满足或不能满足设计策略或其他准则的指示可以与软件系统的设计表示视图一起呈现。
软件开发还可通过与软件系统的设计表示视图一起呈现性能数据来被增强。这样的性能数据可包括涉及软件度量的数据、运行时数据(例如,工作性能)、管理数据(例如,隐错计数)和其他数据。性能数据可以与软件系统的当前或实时构建的设计表示一起呈现。性能数据可覆盖在设计信息的呈现上或以其他方式与其集成在一起。
虽然在面向对象的软件代码的若干示例的上下文中描述,但所公开的方法和系统可以与各种各样的源代码语言和框架一起使用。所公开的方法和系统不限于基于任何特定架构、框架、或技术的软件系统。如下所述,所公开的方法和系统可配置有用于导入附加代码构造和其他信息以支持这样的其他语言、架构、框架或技术的一个或多个模块。
所公开的方法和系统可以结合集成开发环境(IDE)系统来实现。所公开的方法和系统的用户界面和其他功能可被集成到其中的IDE系统的一个示例是可从微软公司(华盛顿州雷蒙德市)购得的Visual产品族所呈现的IDE系统。尽管很适于用在该IDE系统中,所公开的方法和系统的实践不限于任何特定IDE系统、方法、框架或架构。
所公开的方法和系统所提供的设计表示的视图可以与代码索引数据集的子集相对应。该子集因而可包括代码索引数据集中的代码元素和任何其他设计数据。如下所述,其他设计数据可包括设计注释和设计抽象。该子集可通过数据集查询来定义,这可经由多个不同搜索项或功能来指定搜索准则。搜索项或功能的示例包括根据容器类型(例如,汇编、命名空间、类型、以及其他代码元素属性)、名称(包括通配符)、以及关系(例如,继承)来搜索。该查询还可包括配置成对结果编组或以其他方式结构化的构造、指令、或项。数据集查询因而可被用来定义软件系统的要被可视化、确认或用作工作集的子集。
经由所公开的方法和系统合并到设计数据中的设计注释可以定义与软件系统有关的附加事实。设计注释可被指定为软件系统的一个或多个代码元素的属性。设计注释不必直接从代码导出。设计注释仍然可与关联于该设计注释的代码元素相关。如本文描述的,设计注释可被用来定义或标识软件系统的体系结构组件和该设计的其他方面。
经由所公开的方法和系统合并到设计数据中的设计抽象也可以定义与软件系统有关的没有直接表示在代码中的附加事实。设计抽象可通过分析设计模式的代码元素来生成。该分析可以经由执行被配置成观察或检测特定模式的抽象函数来用自动方式来实现。该分析可被定向到设计数据而非代码本身。例如,设计数据中的注释可以提供有用于标识设计模式的信息。指示从该分析得到的设计抽象的设计数据随后可被存储在代码索引数据集中以供将来查询使用。例如,用于指定注释的用户界面可被配置有允许用户将某些设计抽象指定或接受为准确的构造。设计抽象随后被存储在代码索引数据集中作为没有从代码直接导出的进一步设计数据。
设计策略可以对应于和/或指定软件系统的预期或所需设计的准则或规则。所公开的方法和系统可被配置成促进一个或多个设计策略的指定和这些策略的实现,以确定软件系统是否符合所需设计准则。如下所述,设计策略可经由指示所需或预期设计的一个或多个设计注释来建立。例如,所需设计可经由软件系统要匹配或满足的依存关系图来表达。
以下描述多个示例性实施例以示出使用数据集查询来提供软件系统的设计表示。查询是针对数据集来实现的,在该数据集中,指示代码元素的信息与其他设计数据相组合,如用户指定的设计注释和观察到的设计抽象。查询的结果可被用来通过定义要被合并的进一步注释来改进该数据集。查询还可被用来定义软件系统的要针对设计策略来评估的子集,所述设计策略可按与设计注释相同的方式来指定。这样的基于查询的设计表示可被用来提供和/或支持实况设计记录、软件系统可视化、代码确认、以及其他系统评估。
图1描绘了被配置成根据一个示例性实施例来提供软件系统102的设计表示的系统100。系统100包括处理器104、耦合到处理器104的输出设备106以及耦合到处理器104的多个存储设备或其他存储器108。存储器108可包括一个或多个数据集存储器以及一个或多个系统存储器。数据集存储器涉及存储在系统100的操作期间使用或生成的数据。系统存储器涉及存储由处理器104实现的指令。数据集和系统存储器可被部署或分布在任意数量的设备、计算机或其他数据存储设备上,并可被集成到任意所需的程度。在这个示例中,存储器108包括用于代码索引数据集110的存储器,其中表示软件系统102的多个软件代码元素的数据被存储。可经由使得对多个用户可用的共享存储器来提供代码索引数据集110。可从软件系统102的一个或多个源代码文件112或代码制品文件114中获得软件代码元素。呈现在代码制品文件114中的信息的性质可变化。例如,代码制品文件114可包括所构建的制品或可用代码来部署的其他数据或信息,包括例如引用数据、资源、元数据和样式表。在其他实施例中,可从储存库而非文件中获得代码制品。
除了源代码或代码制品之外,代码索引数据集110包括设计数据。设计数据表示软件系统102的软件代码元素的各个设计属性。如在以下进一步描述的,代码索引数据集中的设计数据还可包括指示软件系统102的代码元素的设计注释和设计抽象的数据。设计数据可由此指示代码的结构并包括关于从结构中确定的抽象的信息。代码索引数据集110可被配置为数据库或任意其他保持关于软件系统的信息的持久存储数据结构。代码索引数据集110可将存储在其中的数据结合预定义的或先前使用的数据库查询安排为经索引的格式。在其他实施例中,设计数据不需要被存储在经索引的数据集或数据库中。
代码索引数据集110可包括软件系统102的多个版本或构建的设计数据。系统100可经由用户界面元素提供选择理想的构建或版本的机会,其中的一个示例在以下描述。
处理器104经由系统存储器中的指令被配置来实现所公开的各方法和各系统的一个或多个方面。指令可被安排在多个系统模块中。在这个示例中,系统模块被存储在存储器108的单个系统存储器中。存储器108的体系结构可以与所示示例不同。例如,系统模块的指令可被分布在任意数量的系统存储器、计算机或其他设备上。在这个示例中,提供用于涉及从软件系统102中导入或加载数据或者导入或加载与软件系统102有关的数据的模块(包括代码元素加载模块116和架构导入模块118)的指令。代码元素加载模块116涉及接收和/或获得指示源代码112和/或代码制品文件114的数据以及将这样的数据加载到代码索引数据集110中。架构导入模块118涉及导入指示软件系统102的可能的架构定义120的数据。架构可包括用于支持在由系统100提供的设计表示内使用新构造的定义。例如,新的架构可被合并到存储器108中以将系统100配置为用于存储指定附加的设计抽象、注释和/或编程语言或技术的信息。这样的信息还可被存储在一个或多个存储器、文件或代码索引数据集110外部的其他存储介质中。
提供用于分析代码索引数据集110中的代码元素来生成供系统100使用的设计数据的指令。在这个实施例中,经由抽象功能模块122来实现分析,该抽象功能模块122被配置成对代码索引数据集110中的代码元素和/或制品执行一个或多个抽象操作。抽象功能或操作被配置成分析代码索引数据集110以供软件设计模式的实例。例如,可通过识别指示软件设计模式的结构或属性、解析指示软件模式的文本的注释和其他分析技术来在代码元素和/或制品中观察到或检测到软件设计模式。该分析可实现在代码索引数据集110中的代码元素上的多个计算。例如,在用于发现使用托管可扩展性框架(MEF)实现的依存关系注入的示例性分析中,该分析可搜索MEF导入/导出属性(例如,在MEF命名空间中定义的各属性的实例)以及这些属性的参数,并随后计算涉及什么合同、什么组件在提供、以及什么组件在消费。在Ninject框架示例中,计算可以标识表示合同、提供者、以及消费者的那些组件。计算可以在一个以上分析技术中共享或使用。
对于软件设计模式的每一检测到的实例中,抽象操作可以向根据该模式的对应代码元素或制品分配设计抽象。例如,一个抽象操作可被配置成检测与依存关系注入模式的合同、客户、和提供者相对应的代码元素。抽象函数分析和后续将设计抽象信息存储为设计数据可使开发者或其他用户免于必须手动添加这样的抽象的设计注释。抽象函数和对应的设计抽象的进一步示例在下文中阐明。
可支持多个抽象函数。软件设计模式可与各种不同框架所使用的模式相对应,如托管可扩展性框架(MEF)、模型-视图-控制器(MVC)框架、以及Ninject。作为替换或补充,软件设计模式可以反映诸如表述性状态转移(REST)等体系结构方法,或诸如四人组(GoF)模式(状态,工厂,以及其他创建、结构或行为模式)。相应抽象函数可被提供以将代码元素或制品映射到软件设计模式的框架或体系结构的对应设计抽象。指定相应抽象函数的信息可经由通过例如抽象函数模块122的插件管理器124合并的插件或其他附件来提供。
如下所述,插件管理器124是可通过它将各种插件合并到系统100的多个插件管理器之一。每一插件可以定义或提供涉及扩展系统100的组件的功能的代码或信息存储。插件可以彼此相关联。例如,多个插件可被合并为群,以通过插件管理器中的每一个来合并特定软件设计模式或技术。该群的成员可以共享与软件设计模式或其他技术有关的多个公共定义或其他数据。
指示设计抽象的设计数据随后被存储在代码索引数据集110中。设计数据因而可被配置成将每一检测到的实例的软件代码元素与软件设计模式的对应设计抽象相关联。这样的设计数据随后可供稍后用于提供软件系统102的设计表示。
处理器104实现的抽象模块指令可通过将附加代码元素加载到代码索引数据集110中或通过某一其他事件来触发。作为替换或补充,抽象函数分析可在加载附加抽象函数时实现。在一些实施例中,该分析可以响应于经由系统100的用户界面的用户请求来实现。
存储在代码索引数据集110中的设计数据可被选择性地检索以提供软件系统102的特定设计表示视图。对要被检索的设计数据的选择是经由通过系统100所呈现的用户界面(例如,文本编辑器)输入的数据集查询来指定的。在代码索引数据集110上实现数据集查询以定义代码索引数据集100的要在设计表示视图中提供的子集。为此,数据集查询可包括对软件设计模式或对应的设计抽象的引用,或者可以指定容器类型、对象名、或对象关系。例如,数据集查询可涉及找出导出或提供合同-提供者-客户设计模式中的特定合同的所有类。要在设计表示视图中呈现的子集随后可被限于与所引用的软件设计模式或设计抽象、或指定的容器类型、名称、或关系相关联的那些代码元素(或其他设计数据)。设计表示视图可以按照所引用的模式或抽象的项、词汇和/或概念来呈现该子集。
在图1的示例中,用于解释数据集查询的指令在解释器模块126中阐明。解释器模块126可被配置成解释数据集查询并在代码索引数据集110上实现该数据集查询。例如,解释器模块126可被配置成通过解析数据集查询的文本表达式以标识该文本表达式中的每一项、评估每一项的句法、实现经由句法识别出的任何函数或操作(例如,逻辑或其他运算符,如“并”)以及其他处理,来生成用于代码索引数据集110的数据集查询。解释器模块126随后可将数据库查询发送给代码索引数据集110或根据数据库查询以其他方式来查询代码索引数据集110。
解释器模块126可根据用其表达数据库查询的查询或视图语言来配置。查询语言的句法可以变化。在一个示例中,程序语言可以经由XML(可扩展标记语言)结构来定义。多个示例性查询在下文结合图3-6来提供。
解释和查询语言可包括通用运算符、项和组件,以及可通过插件来引入的专用于特定技术的组件。例如,通用项可被提供用于总体表达式结构(例如,let、select、from,等等)、某些基本代数处理(例如,Boolean、Integer、谓项逻辑、串处理)、以及用于访问对象的属性(例如,点记号)。特定项可被提供以解释特定类型的对象(例如,汇编、命名空间、用于CLR的类型)、现有类型上的附加属性(例如,IsContract作为依存关系注入插件所引入的类型的新属性)、以及指示整个数据作用域的标准命名集(例如,assemblies=所选构建中的所有汇编,或mvcapps=所选构建中的所有MVC应用)。
数据集查询的结果经由系统100所生成或呈现的用户界面来呈现。用户界面包括根据该查询所定义的代码索引数据集110的子集的、软件系统102的设计表示的视图。演示模块128可以提供指令以用于生成用户界面。演示模块128可以指导处理器104经由输出设备104呈现用户界面。根据面向XML的对象模型或其他框架,或任何类型的浏览器相关的用户界面技术或其他用户界面框架,用于演示模块128的指令可被阐明为Windows演示基础(WPF)应用。演示模块128可被配置成经由各种各样的用户界面和用户界面元素来提供查询结果。例如,用户界面可包括各种类型的列表(例如,代码元素列表、源代码列表,等等)、各种类型的分层表示(例如,树)和各种图形视图(例如,图表)。多个示例性用户界面在下文结合图3-14来提供。用户界面可包括任何数量的用户界面元素。例如,选择一个用户界面的元素可使得生成或呈现揭示例如底层源代码的进一步用户界面以用于导航该底层源代码。
过去查询和查询结果或视图的历史可被持久保存并经由查询管理器130来检索。指示过去查询和查询结果的数据可被存储在由查询管理器130访问并控制的数据集中。在图1的示例中,数据集被配置为视图定义存储132。在其他实施例中,这样的查询历史数据可被存储在其中的数据集可以与存储器108中的其他数据集中的任何一个或多个集成在一起,如代码索引数据集110。
代码索引数据集110中的设计数据可包括设计注释。在一些实施例中,查询结果可被用来指定设计注释。例如,设计注释可以定义软件系统102的各层,并且每一层可经由相应数据集查询来定义。更一般地,设计注释可经由注释解释器模块134被指定并提供给代码索引数据集110。注释解释器模块134可以经由专用于创建设计注释的用户界面(如文本编辑器)接收表达式和/或设计注释的其他数据。经由用户界面创建设计注释可包括指定设计注释的名称或其他信息以及指定确定该设计注释应用于或与其相关联的代码元素或制品的定义。如在以下示例中所示,用户界面还允许指定注释类型和注释作用域。示例注释类型包括在抽象中使用的或与代码相关地存储在代码索引数据集110中的层、依存关系、继承关系、关联关系、组件、合同、提供者-合同-客户关系、以及其他概念。注释引入可以指代码中的元素、从代码导出的抽象中的元素、或其他注释。引用的复杂性可以变化(例如,依存关系的源是命名空间A,或由这一层表示的代码是运行这一特定查询的结果)。注释作用域可以指定设计注释是在全局或永久应用于代码元素(例如,以供用在将来数据集查询中),还是局部或临时应用(例如,只供用在当前设计表示视图内)。注释可以表达与代码有关的语句或与代码的所需将来状态有关的语句,如使特征被删除、添加或修改。
在一些实施例中,设计注释可以经由呈现来用于指定数据集查询的文本编辑器或其他用户界面来指定。设计注释因而可自动生成。例如,设计注释的创建可以在集成到被呈现来用于设计抽象及其结果的用户界面的覆盖层或其他用户界面元素中实现。设计注释因而可与作为查询结果返回的代码元素或制品相关联。一旦经由查询生成了设计注释,用户界面就可允许设计注释被编辑或移除。
设计注释可使用注释语言或句法来指定。注释解释器模块134可被配置成根据注释句法解析并处理经由用户界面输入的定义和其他信息。例如,处理可包括评估经解析定义中的每一项并实现在该定义中阐明的任何函数或运算符。
设计注释可引用代码中的元素或其他设计注释。详细的设计信息因而可被表达。引用可直接作出或通过查询来作出。例如,设计注释可被指定用于将相应查询所返回的代码元素集合编组的特定层。
设计注释中的一个或多个可被指定为指示软件系统102的预期或所需设计模型的设计规则。这样的设计注释可被称为策略注释。该指定可经由用于定义设计注释的用户界面来促进。例如,设计注释的作用域可被改变成“所需”作用域,如在以下示例中所示。
指示每一策略指示的数据可被存储在专用数据集中。在这一示例中,策略注释被持久存储在策略注释存储136中。策略注释可另选地与存储在代码索引数据集110或存储器108的其他组件的数据集成在一起。
策略注释可由配置成评估软件系统102的策略评估模块140使用来标识任何违反或错误。策略评估模块140可包括将处理器配置成基于设计注释数据在数据集的子集上实现确认过程的确认指令。确认过程的结果(包括任何确认错误)可通过演示模块128所生成的日志文件或用户界面来查看。演示模块128可被配置成在设计表示的视图中呈现确认过程的结果。例如,该结果可经由软件系统102的图形表示视图上的覆盖层来指示。错误可被突出显示,如在以下示例中所示。
对策略注释和设计表示视图的使用可被用来针对预期设计确认实际设计。设计表示视图定义确认过程的作用域。经由查询标识的代码索引数据集110的子集进而标识要针对预期模型来确认的代码元素和其他设计数据。
设计注释的使用可促进预期设计的细节的标识。在一些情况下,策略注释可依赖于代码中已存在的信息。例如,如果命名空间提供适当的分层机制,则各层不必经由作为命名空间的有效副本的注释来指定以表达以下事实:两层之间不应存在依存关系。相反,单个策略注释可足够。下文结合图13中描绘的实施例提供了进一步细节,其中方法调用注释在各层之间被指定。
系统100区分代码元素、策略注释、以及其他设计注释,如提供缺失设计信息的那些设计注释。这些类型的设计数据之间的区分可促进并发地描绘实际和预期设计状态的可视化的创建。
存储在存储器中的指令可以将处理器104配置成获得软件系统102的性能数据。可获得特定设计表示视图的子集中的软件代码元素的性能数据。在一个实施例中,演示模块128被配置成获得性能数据并将性能数据的表示合并到视图中作为覆盖层。作为替换或补充,性能数据和设计数据可经由查询结果导出模块142按其他格式提供。性能数据用户界面覆盖层的数据导出的示例在下文描述。
系统100可按多种方式来扩展或修改。附加或经修改的指令可经由多个插件管理器或实用程序被导入到存储器108中。指令可被配置成相关于附加编程语言、框架、或架构,或当前编程语言或架构的修改。系统100因而不限于例如与单个框架(如,.NET框架)一起使用。在图1的示例中,各模块是可单独扩展的。信息可经由架构导入模块118和抽象函数模块的插件管理器124来提供。对查询语言的添加或修改可经由查询解释器模块126的插件管理器144来导入。例如,一个或多个视图或查询处理程序可经由插件管理器144导入以使数据集查询语言能够处理并支持经由抽象函数模块122合并到设计数据中的属性或项。
对注释语言的添加或修改可经由插件管理器146来导入。在查询解释器模块126和注释解释器模块134是可插入或以其他方式可扩展的情况下,新种类的视图和注释可被构造为新编程语言、技术,且抽象函数被合并到代码索引数据集110中。代码元素加载模块116也可经由插件管理器148来更新,以支持附加源代码语言或各类代码制品。系统100的加载过程因而可以是可插入的或以其他方式可扩展的。或者,指令可经由配置成导入跨多个模块的软件设计构造的导入模块被导入并存储在存储器108中,
各模块的体系结构可以与所示示例不同。例如,每一模块可包括用于支持不同架构(诸如不同编程语言)的多个模块。多个模块可被包括以支持不同的抽象函数。
在操作中,处理器104可经由上述系统模块来配置,以提供软件系统102的所选子集或片的视图和其他设计表示。这些子集可经由指定代码元素名和其他属性(包括经由系统100添加的属性,如设计注释和设计抽象)的各种组合的查询来定义。设计表示视图可以呈现来自查询的设计数据结果,包括代码元素、设计注释以及设计抽象的列表、图表、以及其他表示。设计表示视图可通过重新实现数据集查询来被刷新。设计表示视图可被更新以反映代码元素或设计注释的变化。设计表示视图因而可以提供软件系统102的实时或当前设计记录。
设计表示视图不必是静态的,而是成为具有用于探索底层代码的链接或其他用户选项的用户界面的一部分。用户界面还可经由用于相关联的代码元素的性能数据的覆盖层或其他用户界面元素(如,代码覆盖、隐错计数、以及其他数据)来包括其他实时或当前信息。用户界面还可提供选项以比较或以其他方式探索代码结构、元素或制品是如何(例如在所选构建之间)随时间变化的。例如,设计表示视图的不同版本之间的语义差异可被突出显示。覆盖层可被用来描绘视图如何随时间变化。
图2描绘根据一个实施例的一种用于提供软件系统的设计表示的方法。该方法是计算机实现的。例如,图1的处理器104(或任何其他处理单元或系统)可被配置成实现该方法的各动作中的一个或多个。每一动作的实现可通过由处理器104或其他处理系统执行的相应计算机可读指令来指导。计算机可读指令可被编码在计算机可读存储介质上,如图1的存储器108中的一个或多个。附加的、另选的或更少的动作可被实现。例如,该方法所提供的设计表示可在不使用设计数据中的设计注释的情况下生成。各动作不必按所示次序实现。例如,设计注释可在查询结果的演示之后实现,以供使用这样的结果来自动指定设计注释。在另一示例中,设计抽象的分析可在一个或多个设计注释被合并到设计数据中之后实现。注释可帮助抽象函数模块122(图1)检测软件设计模式。
该方法可在动作200开始,将表示软件系统的多个软件代码元素的数据集存储在存储器或计算机可读存储介质中。软件代码元素可以是源代码或代码制品。软件代码元素可被直接导入或加载到数据集或者在被存储在数据集中之前被变换。
动作200可包括将设计数据存储在与表示源代码或代码制品的数据不同的数据集中。设计数据表示软件代码元素的相应设计属性。这样的设计数据的示例包括设计注释或设计抽象,如上所述。然而,在图2所示的示例中,如下所述,这样的设计数据被随后合并到数据集中。
一旦表示代码元素或制品的数据在数据集中可用,进一步设计数据就可基于这样的数据的分析及其他自动处理和使用来被生成。在动作202,分析数据集以寻找一个或多个软件设计模式的实例。软件设计模式可通过将软件设计抽象函数应用于多个软件代码元素来检测。所得的设计数据可被配置,使得该实例的相应软件代码元素的相应设计属性指示软件设计模式的对应设计抽象。在动作204,这样的设计数据可被合并。在一些情况下,设计数据可通过将该实例的每一软件代码元素与软件设计模式的对应的设计抽象相关联而被合并到数据集中。
在动作206,用户界面可经由输出设备被呈现,以促进一个或多个设计注释与多个软件代码元素中的一个或多个的关联。用户界面可包括配置成支持设计注释的命名和定义的多个用户输入元素(例如,表或其他数据输入字段)。例如,用户界面可包括用于输入指定设计注释与其相关联的软件代码元素的表达式的文本编辑器。用户界面还可允许用户指定每一设计注释的其他方面,如类型(例如,层或方法调用)和作用域(例如,局部、全局、或所需)。在动作208,一旦设计注释的定义和其他方面已被输入或指定,指示或根据设计注释的的设计数据就被合并到数据集中。
在动作210,在设计注释的定义或合并期间的任何时刻,经由用户界面定义的设计注释中的任何一个或多个可被指定为策略注释或以其他方式指示软件系统的预期设计模型。用户界面可被用来实现该指定。在一个示例中,设计注释的作用域属性或方面可被用于该指定,如上所述。
在动作212,在设计数据在数据集中可用的情况下,数据集查询可经由用户界面被接收。数据集查询是经由可包括对设计注释、软件设计模式、软件设计模式的设计抽象、或设计数据的其他项(如,容器类型、对象名、或多个软件代码元素的对象关系)的任何数量的引用的表达式来指定的。组合对设计数据的这些项的引用的数据集查询的示例结合图3-6来阐明。
在动作214,解释数据集查询。解释过程可根据查询语言或句法来实现。解释过程可包括解释经由用户界面输入的表达式以标识在该表达式中指定的设计数据项,如设计注释,设计抽象,软件设计模式,以及容器类型、名称、及关系。表达式的解析还可标识数据集查询的运算符和其他项。运算符可被用来在逻辑上组合或以其他方式操作设计数据的各项。作为替换或补充,运算符可被用来组织数据集查询的结果应用于设计表示的视图。例如,结果可按在数据集查询中指定的群来被组织。
在动作216,一旦数据集查询被解释,数据集查询可被实现。该实现可包括在数据集上实现一个或多个数据库查询。数据集查询的实现基于对设计数据的项的引用来定义数据集的子集,如上所述。在动作218,指示数据集查询的数据和/或查询结果可被存储。数据集查询或查询结果的存储可包括定义设计注释。例如,用户界面可以提供将数据集查询的每一结果与设计注释相关联的选项。
软件系统的视图或设计表示可在数据集查询的解释和实现之后的任何时刻呈现。在这一示例中,在动作220,设计表示视图被呈现。设计表示视图呈现与数据集的由数据集查询返回的子集有关的信息。例如,设计表示视图可包括多个软件代码元素中的经由数据集查询定义的子集中的相应软件代码元素的列表。如在图3的示例中所示,设计表示视图还可包括在相应软件代码元素中的所选一个软件代码元素底层的源代码的摘录的描绘。
在图2所示的实施例中,该方法还包括可结合数据集查询的结果来呈现与软件系统有关的信息的多个附加过程。设计表示的视图由此可通过这样的附加信息来增强或扩充。在动作222,确认过程被实现,其结果被呈现在设计表示视图中。确认过程可以基于指示预期或实现设计规则的设计注释,如上所述。确认过程可手动地或自动地(例如,在软件系统的每一构建之后)触发。
在动作224和226,获得软件系统的性能数据并将其合并到设计表示视图中。在每一过程中,附加信息可被呈现为设计表示视图的覆盖层。例如,确认过程返回的错误可通过设计表示的图形视图中的特定颜色或其他突出显示来指示。每一过程(以及相应的覆盖层)的作用域经由通过数据集查询所定义的数据集子集来确立。
图3到14提供所公开的方法和系统所呈现或生成的用户界面的多个示例。这些用户界面示出使用数据集查询来提供软件系统的设计表示。在每一示例中,数据集查询和设计注释是经由文本句法来表达的。文本句法的性质可随所示示例而变化。在其他实施例中,数据集查询和设计数据的其他项可不通过文本来阐明和定义(例如,经由一系列图形元素)。
所公开的方法和系统所呈现的用户界面不必共享各示例中所示的公共框架。所公开的方法和系统被限于具有单个集成用户界面的用户体验。用户可导航或访问用户界面的方式可随所示示例而变化,并且不必涉及选项卡。在每一用户界面内,设计表示视图的呈现的任何数量的方面可以随所示示例而变化。例如,呈现可以基于输出设备的类型(例如,平板或监视器)和/或用户输入设备的类型(例如,指针、指示笔、或触摸屏)而变化。
图3描绘提供示例性数据集查询的编辑器用户界面,所述数据集查询的结果返回具有方法集合的设计表示视图。数据集查询在文本输入框230中阐明,且设计表示视图在结果窗格232中呈现,结果窗格232将结果示出为数据集查询应用到的代码元素的列表。在这一示例中,设计表示的所得视图示出了具有名称包含或包括串“payment”的所有方法。查询语言的两个示例运算符“where”和“contains”被突出显示。选择所列出的代码元素之一在结果窗格234中揭示了底层源代码。用户可被允许经由滚动条和其他用户界面元素来导航源代码。底层源代码可按各种方式来获得,包括例如通过访问程序数据库(PDB)文件。用户界面还允许选择在其上运行数据集查询的软件系统的构建。用户界面还向用户提供存储或发送数据集查询和所得的设计表示视图以及访问保存的查询的历史的选项。
图4描绘具有输入到文本输入框230的另一示例性数据集查询的编辑器用户界面。在这一示例中,数据集查询涉及与其名称包含串“wzdCheckOut_FinishButtonClick”的方法以及被这些方法调用的任何方法的并集相对应的方法子集的视图。查询随后包括按类型对结果进行编组的指令。结果窗格232相应地呈现按类型编组的代码元素的列表。在这一示例中,用户选择结果窗格234呈现被可视化成图表(例如,UML图表)的结果。该图表也可呈现按类型来编组的结果图表中的每一元素可被选择以展开该元素来查看相应类型的方法或其他代码元素。在一些实施例中,类型可与.NET框架中的类型相对应,如类、结构、枚举、接口以及委托。
图5描绘具有输入到文本输入框230的又一示例性数据集查询的编辑器用户界面。数据集查询提供具有代码元素的设计抽象信息的视图。在这一示例中,设计抽象与来自依存关系注入模式的合同、客户、以及提供者相对应。查询返回来自汇编集合的合同、客户、以及提供者。依存关系注入模式的合同、客户以及提供者通过被配置成寻找对照依存关系注入框架(如MEF或Ninject)来编写的代码中的依存关系注入模式的对应抽象函数来检测。抽象函数的实现向与该模式的相应设计抽象相对应的代码元素添加了属性(例如,“合同”类型)。结果窗格234提供的图表视图提供了与抽象关系有关的信息。在这一示例中,查询还示出了结果中的各个编组可如何被标记(例如,命名空间的被标记的各编组)。
图6描绘了用于具有设计抽象信息的另一视图的、在文本输入框230中具有示例性数据集查询的编辑器用户界面。在这一示例中,在代码元素中先前观察到的模式涉及模型-视图-控制器(MVC)应用和服务。查询涉及示出MVC应用和该应用所使用的web服务。与其中代码元素中的类被标记的先前示例不同,查询语言允许该查询引入两个临时变量_mvcapps和_services,它们携带随后可被组合成最终结果以在结果窗格232和234中描绘的中间结果。在这一示例中,Fabrikam.CodeInspector应用与其所有服务一起被选择,以供按“deployedlocation(部署位置)”编组来显示。
图7描绘了图6的用户界面,其中性能数据覆盖在代码元素的视图上。在这一示例中,性能数据覆盖是经由文本输入框230中指定的指令来触发的。结果窗格232在柱状图中呈现性能数据。代码元素可在结果窗格232、234中被着色成热图,以描绘不同的性能水平。呈现性能数据的方式可以变化,并且用户界面可以提供用于供用户进行选择的选项。
图8描绘了具有从图3的数据集查询得到的视图的历史比较的编辑器用户界面。用户对历史比较选项(例如,“历史-比较”)的选择指导该系统提供结果窗格236和238,以用于软件系统的两个所选构建的并排比较。在这一示例中,视图呈现了对照软件系统的不同构建来计算得到的底层代码。结果窗格236和238可另选地提供不同构建的其他视图,如在上述示例中示出的。
用户界面可以呈现其他历史查看选项。例如,代替比较,历史视图可被呈现在趋势视图中,以描绘多个构建上的性能数据。用户界面可包括图7中示出的元素,与用于选择构建的滑块或其他用户界面元素相组合。滑块的使用可帮助用户探索性能数据如何随时间变化。用户界面还可向用户提供将性能数据导出到电子表格的选项。
图9描绘了用于定义设计注释的示例性用户界面。在这一示例中,设计注释被指定为定义软件系统的各层,其中每一层由该代码上的查询来定义。每一设计注释的名称和定义在文本输入框240中指定。文本输入框240提供指定每一设计注释的类型(例如,层)和作用域的选项。在这一示例中,每一注释被定义成对查询而言是全局的,而非局部的(或者不是策略注释)。与设计注释相关联的代码元素可在结果窗格242和244中示出。因为层设计注释被定义为是全局的,所以设计注释可看起来是其他查询的结果的一部分,如具有以下表达式的查询:“methods where name contains payment group by type bynamespace by layer(名称包含payment的方法按类型按命名空间按层来编组)”。
图10描绘在图9的用户界面中定义的注释可如何被用在后续数据集查询中。在这一示例中,查询返回层注释的集合。
图11-13描绘其中设计注释可被自动生成而非由用户单独地且手动地输入的各种技术。在一种技术中,用户可以创建基于实际代码捕捉基线的注释集合。基线可以指示软件系统的所需状态。某些构造可经由注释被基线化。在这一示例中,各层之间的所聚集的方法调用关系被基线化,其中各层之间的关系是在这些层中的各类中的方法之间的方法调用关系的聚集。方法调用注释的集合因而被创建,与从代码获得的实际方法调用关系相匹配。一旦注释被创建,注释就可被编辑、删除、以及指定为所需设计的一部分,如在图12中所示。在图13的示例中,两个方法调用关系被删除以指示不应当存在从BusinessLogic到WebClient层以及从WebClient到DataAccessInterface层的任何方法调用。结果,在图表中示出的关系可被突出显示(例如,经由不同的线型)以指示这些关系违反了所需的方法调用模型。
图14描绘其中具有所需注释的视图被标记为待评估的策略的示例性用户界面。用户界面可以提供用于选择例如在每一构建之后发生评估的选项。在被评估时,在结果窗格250中生成策略违反信息。结果窗格252被提供以允许用户从结果窗格250中标识的代码元素导航到视图(或代码)中发生错误的位置。用户界面可支持用于从错误导航到代码、突出显示代码中的违反、以及过滤视图以只示出违反的各种技术。
各种不同的设计抽象和其他构造可在代码元素中被揭示。所公开的方法和系统不限于上述注释、层以及方法调用示例。可从代码中发现的任何构造或抽象可通过所公开的方法和系统来与定义的注释相关联。
参考图15,示例性计算环境300可被用来实现上述方法和/或系统的一个或多个方面或元素。例如,图15的计算环境可被用于、合并到、或对应于系统100(图1)的一个或多个元素,如处理器104(图1)以及存储器108中的一个或多个(图1)。在每一情况下,图15的计算环境可被用作或包括为上述元素或相同组件中的任一个的客户端、网络服务器、应用服务器、或者数据库管理系统或其他数据存储管理器。
计算环境500包括具有计算机310形式的通用计算设备。计算机310的组件可包括,但不限于,处理单元320、系统存储器330、以及将包括系统存储器在内的各种系统组件耦合到处理单元320的系统总线321。系统总线321可以是若干类型的总线结构中的任一种,包括使用各种总线体系结构中的任一种的存储器总线或存储器控制器、外围总线、以及局部总线。作为示例而非限制,这样的体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子技术标准协会(VESA)局部总线和外围部件互连(PCI)总线(也称为夹层(Mezzanine)总线)。计算机310的单元、组件和其他硬件可以与所显示的示例不同。
计算机310通常包括各种被配置来存储指令和其他数据的计算机可读存储介质。这样的计算机可读存储介质可以是可由计算机310访问的任何可用介质并且包括易失性和非易失性介质、可移动和不可移动介质两者。作为示例而非限制,这样的计算机可读存储介质可包括与通信介质区分开的计算机存储介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但不限于,RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁带盒、磁带、磁盘存储或其他磁性存储设备、或能用于存储所需信息且可以由计算机310访问的任何其他介质。
系统存储器330包括具有易失性和/或非易失性存储器形式的计算机存储介质,如只读存储器(ROM)331和随机存取存储器(RAM)332。包含诸如在启动期间帮助在计算机310内的元件之间传输信息的基本例程的基本输入/输出系统333(BIOS)通常存储在ROM 331中。RAM 332通常包含处理单元320可立即访问和/或当前正在操作的数据和/或程序模块。作为示例而非限制,图15示出了操作系统334、应用程序335、其他程序模块336和程序数据337。例如,应用程序335中的一个或多个可涉及实现抽象函数模块122(图1)、查询解释器模块126(图1)、或注释解释器模块134(图1)。作为替换或补充,系统100的一个或多个组件(如演示模块128(图1)或查询结果导出模块142(图1))可经由其他程序模块336中的一个或多个来实现。在这一或另一示例中,代码索引数据集110(图1)、视图定义存储132(图1)、或策略注释存储136(图1)可被存储作为程序数据337。
操作系统334、应用程序335、其他程序模块336以及程序数据337中的任何一个或多个可被存储在片上系统(SOC)上或经由SOC来实现。上述模块中的任一个可经由一个或多个SOC设备来实现。上述模块被集成到SOC或其他设备的程度可以变化。
计算机310也可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图15示出了从不可移动、非易失性磁介质中读取或向其写入的硬盘驱动器341,从可移动、非易失性磁盘352中读取或向其写入的磁盘驱动器351,以及从诸如CD ROM或其他光学介质等可移动、非易失性光盘356中读取或向其写入的光盘驱动器355。可以在示例性操作环境中使用的其他可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,盒式磁带、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器341通常通过诸如接口340之类的不可移动存储器接口连接到系统总线321,并且磁盘驱动器351和光盘驱动器355通常通过诸如接口350之类的可移动存储器接口连接到系统总线321。
上文讨论并在图15中示出的驱动器及其相关联的计算机存储介质为计算机310提供了对计算机可读指令、数据结构、程序模块和其他数据的存储。例如,在图15中,硬盘驱动器341被示为存储操作系统344、应用程序345、其他程序模块346和程序数据347。这些组件可以与操作系统334、应用程序335、其他程序模块336,以及程序数据337相同,也可以不同。在此操作系统344、应用程序345、其他程序模块346以及程序数据347被给予了不同的编号,以说明至少它们是不同的副本。用户可以通过输入设备,例如键盘362和定点设备361——通常是指鼠标、跟踪球或触摸垫——向计算机310输入命令和信息。其他输入设备(未显示)可包括话筒(例如,用于语音控制)、触摸屏(例如,用于基于触摸的手势和其他移动)、测距传感器或其他相机(例如,用于手势和其他移动)、操纵杆、游戏垫和扫描仪。这些以及其他输入设备通常通过耦合到系统总线的用户输入接口360连接到处理单元320,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)之类的其他接口和总线结构来连接。监视器391或其他类型的显示设备也经由诸如视频接口390之类的接口连接至系统总线321。除了监视器以外,计算机还可包括诸如扬声器397和打印机396之类的其他外围输出设备,它们可通过输出外围接口395来连接。
计算机310可使用到一个或多个远程计算机(诸如,远程计算机380)的逻辑连接而在联网环境中操作。远程计算机380可以是个人计算机、服务器、路由器、网络PC、对等设备或其他常见网络节点,且通常包括上文相对于计算机310描述的许多或所有元件,但在图15中只示出存储器存储设备381。图15中所示的逻辑连接包括局域网(LAN)371和广域网(WAN)373,但也可以包括其他网络。此类联网环境在办公室、企业级计算机网络、内联网和因特网中是常见的。
当在LAN联网环境中使用时,计算机310通过网络接口或适配器370连接到LAN 371。当在WAN联网环境中使用时,计算机310通常包括调制解调器372或用于通过诸如因特网等WAN 373建立通信的其他手段。调制解调器372可以是内置的或外置的,可经由用户输入接口360或其他适当的机制连接到系统总线321。在联网环境中,相关于计算机310所示的程序模块或其部分可被存储在远程存储器存储设备中。作为示例而非限制,图15示出了远程应用程序385驻留在存储器设备381上。应当理解,所示的网络连接是示例性的,并且可使用在计算机之间建立通信链路的其他手段。
图15的计算环境300只是合适的计算环境的一个示例,并且不旨在对此处的技术的使用范围或功能提出任何限制。也不应该将计算环境300解释为对示例性操作环境300中示出的任一组件或其组合有任何依赖性或要求。
此处所描述的技术可用各种其他通用或专用计算系统环境或配置来操作。适合与此处的技术一起使用的公知的计算系统、环境和/或配置的示例包括,但不限于,个人计算机、服务器计算机(包括服务器-客户端体系架构)、手持式或膝上型设备、移动电话或设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型机、大型计算机、包含上述系统或设备中的任一个的分布式计算机环境等。
此处的技术可在诸如程序模块等由计算机执行的计算机可执行指令的通用上下文中描述。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。此处的技术也可以在任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。在分布式计算环境中,程序模块可以位于包括存储器存储设备的本地和远程计算机存储介质中。
尽管已经参考具体示例描述了本发明,其中这些示例旨在仅仅是说明性的而非本发明的限制,但本领域普通技术人员将明白,可以对所公开的实施例作出改变、添加和/或删除而不背离本发明的精神和范围。
上述描述只是出于清楚理解的目的给出的,并且不应从中理解出不必要的限制,因为本发明的范围内的修改对本领域普通技术人员而言是显而易见的。

Claims (15)

1.一种用于提供软件系统的设计表示的计算机实现的方法,所述计算机实现的方法包括:
将表示所述软件系统的多个软件代码元素的数据集存储在存储器中,其中存储所述数据集包括将设计数据合并到所述数据集中,所述设计数据表示与所述软件代码元素有关的相应设计属性;
接收包括对所述数据集中的项的引用的数据集查询;
用与所述存储器通信的处理单元在所述数据集上实现所述数据集查询,其中实现所述数据集查询包括基于对所述项的引用来定义所述数据集的子集;以及
经由与所述处理单元通信的输出设备呈现用户界面,所述用户界面包括根据所述数据集的所定义的子集的、所述软件系统的设计表示的视图。
2.如权利要求1所述的计算机实现的方法,其特征在于,合并所述设计数据包括通过将软件设计抽象函数应用于所述多个软件代码元素来生成所述设计数据。
3.如权利要求2所述的计算机实现的方法,其特征在于,应用所述软件设计抽象函数包括:
分析所述数据集以寻找所述软件设计抽象函数的软件设计模式的实例;以及
配置所述设计数据,使得所述实例的相应软件代码元素的相应设计属性指示所述软件设计模式的对应设计抽象。
4.如权利要求3所述的计算机实现的方法,其特征在于,在所述数据集查询中引用的项指示所述软件设计模式或所述软件设计模式的对应设计抽象中的相应一个设计抽象。
5.如权利要求1所述的计算机实现的方法,其特征在于,在所述数据集查询中引用的项指示与所述多个软件代码元素中的一个或多个软件代码元素相关联的设计注释。
6.如权利要求5所述的计算机实现的方法,其特征在于,进一步包括:
接收所述设计注释指示所述软件系统的预期模型的指示;以及
基于所述设计注释用所述处理单元实现所述多个软件代码元素的确认过程;
其中所述数据集的所述子集定义所述确认过程的作用域;并且
其中呈现所述用户界面包括呈现所述确认过程的结果。
7.如权利要求1所述的计算机实现的方法,其特征在于,合并所述设计数据包括经由所述用户界面的用户输入来定义所述多个软件代码元素中的数个软件代码元素的设计注释。
8.如权利要求1所述的计算机实现的方法,其特征在于,呈现所述用户界面包括:
获得所述子集中的软件代码元素的性能数据;
将所述性能数据的表示合并到所述设计表示的视图中。
9.如权利要求1所述的计算机实现的方法,其特征在于,所述数据集查询中的引用被配置成指定所述多个软件代码元素的容器类型、名称、或关系。
10.如权利要求1所述的计算机实现的方法,其特征在于,所述视图包括所述多个软件代码元素中的经由所述数据集查询定义的所述子集中的相应软件代码元素的列表。
11.如权利要求10所述的计算机实现的方法,其特征在于,所述视图还包括在所述相应软件代码元素的中的所选一个软件代码元素底层的源代码摘录。
12.一种用于软件系统的设计表示的系统,所述系统包括:
数据集存储器,表示所述软件系统的多个软件代码元素的数据集被存储在所述数据集存储器中,所述数据集包括表示与所述软件代码元素有关的相应设计属性的设计数据;
系统存储器,解释器模块指令、抽象模块指令、以及演示模块指令被存储在所述系统存储器中;
耦合到所述系统存储器和所述数据集存储器的处理器,所述处理器经由以下操作被配置:
所述抽象模块指令分析所述数据集以寻找软件设计模式的实例,并配置所述数据集中的设计数据以将所述实例的每一软件代码元素与所述软件设计模式的对应设计抽象相关联,以及
所述解释器模块指令解释包括对所述软件设计模式或所述对应设计抽象的引用的数据集查询,并在所述数据集上实现所述数据集查询以定义所述数据集的与所述软件设计模式或所述对应设计抽象相关联的子集;以及
耦合到所述处理器的输出设备,所述处理器经由以下操作被配置:所述演示模块指令经由所述输出设备呈现用户界面,所述用户界面包括根据所述数据集的所定义的子集的、所述软件系统的设计表示的视图。
13.如权利要求12所述的系统,其特征在于:
所述数据集包括与所述软件代码元素相关联且被指定为指示预期设计模型的设计注释数据;
确认指令被存储在所述系统存储器中,以配置所述处理器来基于所述设计注释数据在所述数据集的所述子集上实现确认过程;以及
所述演示模块指令配置所述处理器来在所述设计表示的视图中呈现所述确认过程的结果。
14.如权利要求12所述的系统,其特征在于,所述处理器经由以下操作来配置:存储在所述系统存储器中的导入指令将软件设计构造导入所述解释器模块指令或所述抽象模块指令。
15.一种包括其中存储计算机可读指令的一个或多个计算机可读存储介质的计算机程序产品,所述计算机可读指令在被处理系统执行时指导所述处理系统:
将表示软件系统的多个软件代码元素的数据集存储在存储器中;
分析所述数据集以寻找软件设计模式的实例;
将第一设计数据合并到所述数据集中以将所述实例的每一软件代码元素与所述软件设计模式的对应设计抽象相关联;
经由输出设备呈现用于将设计注释与所述多个软件代码元素中的一个或多个相关联的用户界面;
根据所述设计注释将第二设计数据合并到所述数据集中;
经由所述用户界面接收数据集查询,所述数据集查询包括对所述设计注释、所述软件设计模式、或所述软件设计模式的对应设计抽象的引用;
解释所述数据集查询以在所述数据集上实现所述数据集查询来定义所述数据集的子集;以及
经由所述用户界面呈现根据所述数据集的所定义的子集的、所述软件系统的设计表示视图。
CN201380035652.2A 2012-07-03 2013-07-02 基于查询的软件系统设计表示 Expired - Fee Related CN104412227B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/541,278 2012-07-03
US13/541,278 US20140013297A1 (en) 2012-07-03 2012-07-03 Query-Based Software System Design Representation
PCT/US2013/049111 WO2014008281A2 (en) 2012-07-03 2013-07-02 Query-based software system design representation

Publications (2)

Publication Number Publication Date
CN104412227A true CN104412227A (zh) 2015-03-11
CN104412227B CN104412227B (zh) 2018-04-24

Family

ID=48808521

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201380035652.2A Expired - Fee Related CN104412227B (zh) 2012-07-03 2013-07-02 基于查询的软件系统设计表示

Country Status (4)

Country Link
US (1) US20140013297A1 (zh)
EP (1) EP2870531A2 (zh)
CN (1) CN104412227B (zh)
WO (1) WO2014008281A2 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109240741A (zh) * 2018-08-01 2019-01-18 沈文策 一种框架扩展方法、装置、设备及计算机可读存储介质
CN109964219A (zh) * 2016-06-19 2019-07-02 数据.世界有限公司 经由分布式计算机网络的协作数据集整合
US11361396B2 (en) 2019-09-25 2022-06-14 Coupang Corp. Computer-implemented systems and methods for centralized logics monitoring

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140188815A1 (en) * 2013-01-03 2014-07-03 Amazon Technologies, Inc Annotation of Resources in a Distributed Execution Environment
WO2015042357A1 (en) * 2013-09-20 2015-03-26 Drexel University Design rule spaces and architecture root detection
US9170786B1 (en) 2013-12-20 2015-10-27 Emc Corporation Composable context menus
US9756147B1 (en) 2013-12-20 2017-09-05 Open Text Corporation Dynamic discovery and management of page fragments
US10466872B1 (en) * 2013-12-20 2019-11-05 Open Text Corporation Composable events for dynamic user interface composition
WO2016008087A1 (en) 2014-07-15 2016-01-21 Microsoft Technology Licensing, Llc Managing multiple data models over data storage system
EP3170100A4 (en) * 2014-07-15 2017-12-06 Microsoft Technology Licensing, LLC Data model change management
CN105518672B (zh) 2014-07-15 2019-04-30 微软技术许可有限责任公司 跨多个模型的数据检索
WO2016008086A1 (en) 2014-07-15 2016-01-21 Microsoft Technology Licensing, Llc Data model indexing for model queries
US9678746B2 (en) * 2014-07-31 2017-06-13 International Business Machines Corporation Coding convention discovery and enforcement
US20160063047A1 (en) * 2014-08-29 2016-03-03 Mckesson Financial Holdings Method and Apparatus for Providing a Data Manipulation Framework
WO2016040386A1 (en) * 2014-09-08 2016-03-17 Uri Braun System and method of controllably disclosing sensitive data
US9672010B2 (en) * 2015-07-29 2017-06-06 The Boeing Company Unified modeling language (UML) analysis system and method
US10169592B2 (en) * 2015-10-13 2019-01-01 International Business Machines Corporation Security systems GUI application framework
US11675814B2 (en) * 2020-08-07 2023-06-13 Target Brands, Inc. Ad hoc data exploration tool

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199199B1 (en) * 1998-09-16 2001-03-06 International Business Machines Corporation Presentation of visual program performance data
US20020103558A1 (en) * 2001-01-31 2002-08-01 Mikito Iwamasa Method and computer program product for realizing a system specification which is described in a system description language
US20070250810A1 (en) * 2006-04-20 2007-10-25 Tittizer Abigail A Systems and methods for managing data associated with computer code
WO2010136763A1 (en) * 2009-05-26 2010-12-02 The University Of Dundee Software development tool

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199199B1 (en) * 1998-09-16 2001-03-06 International Business Machines Corporation Presentation of visual program performance data
US20020103558A1 (en) * 2001-01-31 2002-08-01 Mikito Iwamasa Method and computer program product for realizing a system specification which is described in a system description language
US20070250810A1 (en) * 2006-04-20 2007-10-25 Tittizer Abigail A Systems and methods for managing data associated with computer code
WO2010136763A1 (en) * 2009-05-26 2010-12-02 The University Of Dundee Software development tool

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ALEXANDRU TELEA ET AL: "Architecting an Open System for Query Large C and C++ Code Bases", 《HTTP://WWW.CS.RUG.NL/~ALEXT/PAPER/SACJ/PAPER.PDF》 *
DENNIE RENIERS ET AL: "A Visual Analytics Toolset for Program Structure,Metrics,and Evolution Comprehension", 《HTTP://WWW.INFO.FUNDP.AC.BE/WASDETT2010/WP-CONTENT/UPLOADS/2010/08/RVET-WASDETT3.PDF》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109964219A (zh) * 2016-06-19 2019-07-02 数据.世界有限公司 经由分布式计算机网络的协作数据集整合
CN109240741A (zh) * 2018-08-01 2019-01-18 沈文策 一种框架扩展方法、装置、设备及计算机可读存储介质
US11361396B2 (en) 2019-09-25 2022-06-14 Coupang Corp. Computer-implemented systems and methods for centralized logics monitoring

Also Published As

Publication number Publication date
EP2870531A2 (en) 2015-05-13
WO2014008281A2 (en) 2014-01-09
CN104412227B (zh) 2018-04-24
WO2014008281A3 (en) 2014-04-24
US20140013297A1 (en) 2014-01-09

Similar Documents

Publication Publication Date Title
CN104412227A (zh) 基于查询的软件系统设计表示
EP3430529B1 (en) Intelligent metadata management and data lineage tracing
Brambilla et al. Interaction flow modeling language: Model-driven UI engineering of web and mobile apps with IFML
Weinreich et al. Software architecture knowledge management approaches and their support for knowledge management activities: A systematic literature review
US6571247B1 (en) Object oriented technology analysis and design supporting method
Dijkman et al. Managing large collections of business process models—Current techniques and challenges
Mäder et al. Towards automated traceability maintenance
US7613713B2 (en) Data ecosystem awareness
US11847040B2 (en) Systems and methods for detecting data alteration from source to target
Hessellund et al. Guided development with multiple domain-specific languages
KR102397495B1 (ko) 노 코드 애플리케이션 개발 및 운영 시스템과 그 서비스 방법
US8868386B2 (en) Navigation in simulated workflows
Weinreich et al. Towards supporting the software architecture life cycle
CN104106066A (zh) 用于查看和操纵在时间参考点处的产物的系统
CN104969230A (zh) 用于确定软件许可之间的兼容性的系统及方法
Reschenhofer et al. Lessons learned in aligning data and model evolution in collaborative information systems
Krogstie Capturing enterprise data integration challenges using a semiotic data quality framework
Rokis et al. Exploring Low-Code Development: A Comprehensive Literature Review
US8862457B2 (en) Method and system for smart mark-up of natural language business rules
Basciani et al. Exploring model repositories by means of megamodel-aware search operators.
Mäder et al. Ready-to-use traceability on evolving projects
Pepin et al. A Method for Business-IT Alignment of Legacy Systems.
Mahendra et al. Patterns in the requirements engineering: A survey and analysis study
US20080229305A1 (en) Workflow management system
Mafazi et al. Conflict resolution for on-the-fly change propagation in business processes

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20171020

Address after: Washington State

Applicant after: Micro soft technique license Co., Ltd

Address before: Washington State

Applicant before: Microsoft Corp.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20180424

Termination date: 20190702

CF01 Termination of patent right due to non-payment of annual fee