CN101283345A - 用于对象合成的可扩展机制 - Google Patents

用于对象合成的可扩展机制 Download PDF

Info

Publication number
CN101283345A
CN101283345A CNA2006800371838A CN200680037183A CN101283345A CN 101283345 A CN101283345 A CN 101283345A CN A2006800371838 A CNA2006800371838 A CN A2006800371838A CN 200680037183 A CN200680037183 A CN 200680037183A CN 101283345 A CN101283345 A CN 101283345A
Authority
CN
China
Prior art keywords
strategy
destination object
context
framework
synthesis
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
CNA2006800371838A
Other languages
English (en)
Other versions
CN101283345B (zh
Inventor
E·A·杰泽斯基
P·G·普洛福斯特
B·J·威尔森
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 CN101283345A publication Critical patent/CN101283345A/zh
Application granted granted Critical
Publication of CN101283345B publication Critical patent/CN101283345B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/24Object-oriented
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented

Abstract

一种用于面向对象的程序设计的可扩展框架包括接收涉及合成目标对象的定制策略的接收组件。实现组件至少部分地基于与该目标对象相关联的上下文来自动实现该定制策略以合成该目标对象。该可扩展框架还包括确定上下文的上下文组件,包括与目标对象相关联的应用程序的上下文、与目标对象相关联的现有对象、以及现有对象之间的关系。

Description

用于对象合成的可扩展机制
背景
计算技术的进步使得计算机能从可用于基本数学计算的高成本、低功能设备变为可用于文字处理、朋友和家人之间的即时通信、帐单支付、娱乐等的低成本、高功能设备。为了允许在相对较短的一段时间内的这种功能上的跳跃,极大地减小了晶体管的尺寸,由此允许集成电路与大量存储器以及增加的处理速度相关联(由于可位于单个集成电路上的晶体管的数目)。这些进步进而导致创建了更健壮且灵活的编程环境,这些编程环境由计算机程序员用于生成应用程序和/或改进现有的应用程序。更详细而言,现在存在多种编程语言,其中程序员可基于与所选语言相关联的熟悉程度和/或功能来选择一特定语言。
更详细而言,编程语言是特别地用于将指令传递到计算机或微处理器以供任务执行的形式语言。多年来,面向对象的程序设计已成为设计员和程序员用于实现计算机系统内的功能的许多熟悉且流行的模型之一。面向对象的程序设计相对于其它编程语言是独特的,因为其前提是按照对象或东西而非像其它模型中那样按照动作来查看程序设计。
对象技术的好处起因于以下三个基本原理:封装、多态性和继承。对象隐藏或封装了其数据和相关联方法的内部结构。对象呈现了清楚地代表其抽象而没有外来信息的接口,而非展示实现细节。多态性使得封装更进一步。多态性允许对不同数据类型使用相同代码-其理念是多种形状,一个接口。因此,软件组件可在不完全知道另一组件是什么的情况下对另一组件作出请求。接收该请求的组件解释该请求,并根据其变量和数据来弄清如何执行该请求。第三个原理是继承,这允许开发者重复使用预先存在的设计和代码。这一能力允许开发者避免从零开始创建所有软件。相反,通过继承,开发者可派生出继承并修改了其它类的状态和行为的子类。
面向对象的编程模型通常是通过基于类的方法来定义的。在这一系统中,对象是包括状态和行为的实体。一个对象的状态和行为都是由类来定义的,类标识了特定类型的对象。基于类定义创建的对象被认为是以动态类型反映的该类的一个实例。由此,类指定了对象可包含的数据(例如,状态)以及该对象可执行的方法、函数或行为。方法可用于通过更改其中包含的数据来修改相关联对象的内部状态。对象中这一数据和方法的组合在面向对象的程序设计中通常被称为封装。封装使得对象的状态只能通过与该对象相关联的定义良好的方法来改变。当对象的行为被限定到这一定义良好的位置和接口时,对象中的改变(例如,代码修改)将对系统中的其它对象和元素具有最小的影响。
当前与面向对象的程序设计相关联的一个缺陷是难以基于现有对象、应用程序上下文等来自动创建新对象,并且还难以修改现有对象(例如,修改现有对象之间的关系)。相反,熟练的程序员可能被迫生成多个另外的对象,其中每一对象用于不同的上下文。用于面向对象的程序设计的现有框架不允许实现关于合成对象的定制策略。
概述
以下提出了简化概述以便于提供对所要求保护的主题的某些方面的基本理解。本概述并非广泛综述,也不旨在确定所要求保护的主题的关键/决定性要素或勾画其范围。其唯一的目的是以简化的形式提出某些概念作为稍后提出的更详细描述的序言。
此处所描述的是一种可用于合成与一应用程序相关联的一个或多个对象的可扩展框架,其中对象符合面向对象的程序设计。与常规框架形成对比,以下描述的所要求保护的框架允许用户创建和实现各种合成策略。此处所使用的术语合成指的是创建新对象、定义与该新对象相关联的关系、定义与现有对象相关联的关系等等。合成对象可涉及几个具体示例,诸如通过调用适当的对象初始化程序来创建存储器中的新对象实例、建立对象和其它新的或现有的对象之间的关系、修改内部对象状态或调用内部状态上的方法等。合成在概念上涉及目标对象和上下文,其中上下文是用于表示应用程序中的现有实体的术语。例如,这些实体可包括现有的对象实例、政策和类型定义、应用程序配置等。基于上下文,可实现各种策略以按特定次序合成一个或多个对象。
更详细而言,一种合成策略可负责一特定样式或部分的合成。合成策略可取决于不同合成策略或一系列不同合成策略在这一策略的执行之前、期间或之后的执行(以允许合成策略完成其任务)。由此,可以认识到,合成策略的行为仅由其实现来确定。此外,合成策略能够(但不是必需)允许外部实体经由可由程序性的、声明性的、或基于配置的手段提供的一个或多个政策来更改其行为(临时或永久地)。这些合成策略可由一个或多个程序员生成,并在运行时被应用于应用程序,其中合成策略是基于所确定的上下文来执行的。此外,该合成策略可基于所确定的上下文以特定的次序来执行。例如,合成策略可作为被分类成各阶段的顺序合成策略链来运行-由此,多个策略可作用于同一对象和上下文。此外,如果上下文和应用程序需要,策略可并行执行。
在一具体示例中,应用程序可被部署,其中这一应用程序是通过面向对象的程序设计来编写的。在编写了应用程序之后,可能期望在这一应用程序内合成特定对象。因此,可生成与这一合成相关的合成策略,其中该合成策略不影响该应用程序或上下文。在应用程序的运行时,可执行该合成策略,并且可根据该合成策略和所确定的上下文来合成对象。
为实现上述和相关目的,此处结合以下描述和附图描述了某些说明性方面。然而,这些方面仅指示了可采用所要求保护的主题的原理的各种方式中的几种,并且所要求保护的主题旨在包括所有这些方面及其等效方面。当结合附图考虑以下详细描述时,其它优点和新颖特征可变得显而易见。
附图简述
图1是帮助在给定特定定制策略时合成对象的系统的高层框图。
图2是帮助采用多个策略来合成目标对象的系统的框图,其中策略的次序至少部分地基于所确定的上下文。
图3是可扩展编程框架的框图。
图4是帮助生成推论的系统的框图。
图5是用于在应用程序中合成对象的方法的代表性流程图。
图6是用于确定与合成一个或多个对象有关的策略的顺序的方法的代表性流程图。
图7是示出用于根据合成策略来执行构造函数依赖性注入的方法的代表性流程图。
图8是示出用于根据合成策略来执行设置函数注入的方法的代表性流程图。
图9是示出用于根据合成策略在容器中注册并储存目标对象的方法的代表性流程图。
图10是示出用于根据合成策略从容器内定位目标对象的方法的代表性流程图。
图11是示出用于根据合成策略来执行关于目标对象的类型映射的方法的代表性流程图。
图12是示出用于根据合成策略来执行关于目标对象的属性反射的方法的代表性流程图。
图13是示出用于根据合成策略来提供代理对象的方法的代表性流程图。
图14是示出一合适的操作环境的示意性框图。
图15是示例计算环境的示意性框图。
详细描述
现在参考附图描述所要求保护的主题,在全部附图中,相同的参考标号用于指代相同的要素。在以下描述中,出于解释的目的,阐明了众多具体细节以提供对所要求保护的主题的全面理解。然而,很明显,该主题可以在没有这些具体细节的情况下实施。在其它实例中,以框图形式示出了公知的结构和设备以便于描述本发明。
如本申请中所使用的,术语“组件”和“系统”指的是计算机相关的实体,无论是硬件、硬件和软件的组合、软件还是执行中的软件。例如,组件可以是,但不限于,运行在处理器上的进程、处理器、对象、可执行码、执行的线程、程序和/或计算机。作为说明,运行在服务器上的应用程序和服务器都可以是组件。一个或多个组件可驻留在进程和/或执行的线程中,并且组件可位于一个计算机上和/或分布在两个或多个计算机之间。此处使用词语“示例性”来意指用作示例、实例或说明。此处被描述为“示例性”的任何方面或设计不一定要被解释为相对于其它方面或设计是优选或有利的。
此外,所要求保护的主题的各方面可使用标准编程和/或工程技术而被实现的方法、装置或制品,这些技术产生控制计算机实现本发明的各方面的软件、固件、硬件或其任何组合。此处所使用的术语“制品”旨在包含可从任何计算机可读设备、载体或介质访问的计算机程序。例如,计算机可读介质可包括但不限于磁存储设备(例如,硬盘、软盘、磁带……)、光盘(例如,紧致盘(CD)、数字多功能盘(DVD)……)、智能卡、以及闪存设备(例如,卡、棒、钥匙驱动器……)。另外,应当理解,可采用载波来承载诸如在发送和接收电子邮件或访问如因特网或局域网(LAN)等网络时使用的计算机可读电子数据。当然,本领域的技术人员将认识到,可对这一配置作出许多修改而不背离此处所描述的范围或精神。
现在将参考附图来描述所要求保护的主题,在全部附图中相同的参考标号表示相同的要素。现在参考图1,示出了一可扩展对象合成系统100。对象的合成在概念上涉及至少部分地基于与一目标对象相关联的上下文来作用于该目标对象。上下文可被定义为特定应用程序中现有的实体以及这些实体之间的关系,而目标对象可被定义为在这一上下文中合成的对象。如此处所使用的合成可包括创建对象(例如,目标对象)并生成关于该对象的关系、接收现有对象(目标对象)并创建现有对象和其它对象之间的关系、删除与目标对象相关联的现有关系、更改与目标对象相关联的关系等等。关于一目标对象的合成可通过利用一个或多个定制的合成策略来进行,其中与实现该合成策略相关联的框架允许添加新的合成策略以及定义对这些策略的使用。
更具体而言,系统100包括接收定制合成策略的接收组件102,其中合成策略可从用户、程序、存储器、硬盘或任何其它适当的位置接收。定制合成策略可以是由接收组件102接收的几个策略之一,并且可包括可用于合成对象的任何适当的动作。例如,定制合成策略可涉及通过调用适当的对象初始化程序来创建存储器中的新对象实例、在一特定上下文中建立一对象与其它新的或现有的对象之间的关系、调用一对象上的方法、作用于一上下文内的其它对象而不作用于目标对象本身等等。可以理解,可以与定制合成策略相关联的这一动作列表本质上是示例性而非限制性的。所接收的合成策略可负责一特定样式的合成,并且可依赖于其它相关联的合成策略以在定制合成策略之前、在定制合成策略之后、和/或在定制合成策略期间运行,以便允许所接收的定制合成策略的正确运行。由此,合成策略的行为可仅由实现来确定,并且能够(但不必需是)允许外部实体通过政策来临时或永久地更改其行为。这些政策可通过程序性的、声明性的或基于配置的手段来提供。
定制合成策略可从接收组件102传送到实现组件104,其中实现组件104利用该合成策略来合成对象106。例如,实现组件104可由应用程序在运行时调用,并且应用程序可请求特定的定制合成策略以及指定与其相关联的默认政策。接收组件102之后可接收这一合成策略。然后可查明上下文(如上所述)并将其提供给实现组件104,其中上下文包括应用程序中的一组实体-例如,现有的对象实例、政策和类型定义、应用程序配置等。至少部分地基于上下文和应用程序调用,实现组件100可合成对象106。因此,可以查明系统100允许关于合成的可扩展性,用于实现合成的合成策略可被独立地构建和使用而不需要对消费应用程序或其它合成策略的更改。换言之,在一特定上下文中存在几个规则,并且利用这些规则可用一个调用来创建对象并将它们连线在一起,其中规则是可扩展的且是政策驱动的。对系统100的一种模拟是工厂线,其中系统100允许以用户的意愿来向该工厂线提供额外部分。这些部分(策略)然后可由应用程序在运行时消费和使用,其中与该应用程序相关联的上下文可确定要采用哪些合成策略、采用哪些政策、合成策略的排序等等。
在示出了系统100的好处的又一具体示例中,可能期望以基本上相似的方式将与一应用程序相关联的几个对象连线(wire-up)在一起,其中这一连线理想地是定制的。与静态系统相反,系统100允许在不更改应用程序或更改其它合成策略的情况下创建一个或多个定制合成策略并实现这些合成策略。更详细而言,个人可能希望连线对于与一应用程序相关联的几个对象是完整的。在常规的系统中,如果未对系统提供合成策略,则需要手动对每一对象完成连线。然而,系统100允许提供执行期望连线并自动对适当对象(可由上下文确定)执行连线的定制策略。例如,适当的定制策略可由程序员创建、在应用程序运行时提供给接收组件102、然后由实现组件104基于上下文来实现。
现在转向图2,示出了帮助借助通过可扩展框架提供的合成策略来进行对象合成的系统200。系统200包括接收多个定制合成策略的接收组件102,其中这些合成策略涉及至少合成目标对象106。如上所述,合成可涉及各种具体动作,包括创建存储器中的对象实例、建立对象之间的关系、修改内部对象状态、作用于一上下文中的各种对象等等。接收组件102可以与定义并实现关于多个定制合成策略中的每一个的政策的政策组件202相关联。例如,政策可以是永久的或临时的。永久政策在多次合成执行之间保持恒定,而临时政策仅对系统200的单次执行存在。政策组件202允许应用程序指定需要哪些合成策略以及指定默认政策。另外,政策组件202可至少部分地基于程序性的、声明性的或基于配置的命令来定义关于定制合成策略的政策。此外,临时政策可用于覆盖或扩展特别地与定制合成策略相关联的政策。此外,政策组件202可在涉及目标对象106的调用之间更改与策略相关联的政策。这一灵活性在常规系统中是无法达到的。
接收组件102还可与描述实现多个定制合成策略的次序的排序组件204相关联。此外,排序组件204可以与向排序组件204提供涉及对象106的上下文的上下文组件206相关联。如上所述,上下文可包括包含目标对象106的应用程序中的实体,诸如现有的对象实体、政策和类型定义、应用程序配置等。此外,现有的对象实例可以是本地或远程的,其中术语“远程”指的是另一计算机、网络、进程等中的对象。上下文组件206可确定上下文,并将其提供给排序组件204,后者利用该上下文来确定应用合成策略(以实现目标对象106的合成)的次序。排序组件204还可接收涉及次序的声明性或程序性语句。此外,排序组件204可使得合成策略在需要时并行地操作。
所确定的上下文以及合成策略的次序然后可被提供给实现组件104,后者使得这些策略在应用程序运行时以特定次序执行。因此,可以确定通过该图中所描述的组件实现了一种灵活且健壮的对象合成系统。
现在参考图3,示出了利用上述一个或多个方面来合成目标对象106的示例性系统300。系统300包括接收一个或多个定制合成策略的接收组件102。在示例性系统300中,由接收组件102接收的合成策略可涉及构建目标对象106。接收组件102与可实现关于目标对象106所接收的策略的实现组件106相关联。实现组件104可包括对象构建器组件302和/或与对象构建器组件302相关联,该组件可接收来自程序员的代码304和类定义306。给定代码304和定义306,目标对象106可由对象构建组件302根据所接收到的策略来构建。对合成策略的这种使用允许面向对象的程序员以与常规框架相比更高效的方式来完成高度复杂和困难的任务。
系统300还可包括可接收并询问用户定义的政策的政策询问器组件308。例如,政策可指定该策略是被采用单次还是对几个实例采用。实现组件104还可确定和/或接收与目标对象106相关联的上下文,其中上下文涉及应用程序中的一组实体,诸如现有的对象实例、政策和类型定义、应用程序配置等。系统300通过将实际合成工作委托给一个或多个合成策略来允许多个合成样式和要求。例如,每一策略可负责一特定样式的合成。所接收的策略可允许外部实体借助政策来更改其行为,其中政策可由程序性的、声明性的或基于配置的手段来提供。政策询问器组件308可询问这些政策以确定它是否为永久政策和/或临时政策。永久政策在多次合成执行之间保持恒定,而临时政策对构建器的单次执行存在。临时政策可覆盖或扩展提供给合成策略的政策。
由系统300实现的合成策略可被扩展,其中扩展可独立地构建和采用。此外,扩展可以是独立或相互依赖的。在系统300的一种具体的示例性使用中,工厂、构建器和责任链的模式都是公知的,并且已被应用于解决如在现有的依赖性注入容器和代理工厂中所示的合成问题。系统300以合成进行的方式来允许可扩展性,因为实现合成的策略可在不需要对消费应用程序或其它策略的更改的情况下独立构建和使用。
在一具体示例中,系统300可支持.NET事件,由此允许类作者用指定一事件的主题(topic)的发布者(publisher)属性来修饰该事件。另一类作者可用指定同一主题的订阅者(subscriber)属性来修饰事件。在运行时,此处所描述的框架可用于创建并连线这些类的实例而不需要来自调用代码的任何干预。换言之,对象构建器组件302可创建并联系类的实例。例如:
public class PublisherClass
{
    [EventPublisher(“MyTopic”)]
    public event EventHandler MyTopicEvent;
   //做激发该事件的某些事情…
}
public class SubscriberClass
{
    [EventSubscriber(“MyTopic”)]
    public void HandleMyTopicEvent(object sender,EventArgs e)
    {
    //对该事件做某些事情
    }
}
以上示出了可由系统300用于在创建对象时执行事件到处理程序的连线的示例性策略。
在另一示例中,定义306可包括以下C#类定义:
public class ParentClass
{
   private ChildClass child;
   public ParentClass(ChildClass child)
   {
       this.child=child;
    }
    public ChildClass Child
    {
       get{return child;}
    }
}
public class ChildClass
{
}
所接收的策略可用于提供允许以下示例性代码304生成自动用ChildClass(子类)的实例填充的ParentClass(父类)的新实例的类。
更详细而言,以下测试用例示出了利用称为ObjectBuilderContainer(对象构建器容器)的类来生成上述新实例,其中该类提供了可用提供简单的基于构造函数的依赖性注入的一组策略来填充的所要求保护的主题的实现。
[测试]
public void ConstructorDependencyInjectionTest()
{
   ObjectBuilder builder=new ObjectBuilder();
   ParentClass parent=builder.Build<ParentClass>();
   Assert.IsNotNull(parent.Child);
}
扩展该示例,这一代码(构建代码)可通过添加使用反射(reflection)来定位有属性的方法并执行这一方法的附加策略来扩展。
public class SomeClass
{
    public bool MethodInvoked=false;
    [InvokeMethod]
    public void DoSomething()
    {
        MethodInvoked=true;
    }
}
[测试]
public void MethodInvocationStrategyTest()
{
    ObjectBuilder builder=new ObjectBuilder();
    builder.AddStrategy(new MethodInvocationStrategy());
    SomeClass result=builder.Build<SomeClass>();
    Assert.IsTrue(result.MethodInvoked);
    }
可以查明构建器的行为通过在使用该构建器之前向其添加一策略而被迅速且容易地修改。
从以上示例中,可以确定系统300可实现执行诸如构造函数依赖性注入(constructor dependency injection)、设置函数注入(setter injection)、容器中的注册和存储、从容器中查找、类型映射、属性反射、代理返回以及其它适当任务等任务的策略。除了以上示出的简单策略之外,某些策略可采用要配置的政策。例如,特定实例中的用户可使用政策来配置某些策略。例如,用户可能希望对特定特性执行设置函数注入。在这一情况下,用户可能提供指示应如何由实现组件104来实现策略的政策(由政策询问器组件308分析)。例如:
public class Person
{
   private string name;
   public string Name
   {
       get{return name;}
       set{name=value;}
   }
}
[测试]
public void PropertyPolicyTest
{
    ObjectBuilder builder=new ObjectBuilder();
    builder.AddStrategy(new PropertySetterStrategy());
    builder.AddPolicy(new PropertyPolicy(“Name”,“John Doe”));
    Person result=builder.Build<Person>();
    Assert.AreEqual(“John Doe”,result.Name);
该政策是永久政策,这表现在对构建器的每次运行,具有名为“Name”(名字)的串特性的类将被设为“John Doe”。然而,可以理解,系统300(以及此处所描述的其它系统)可支持用于构建器的单次运行的政策。例如:
[测试]
public void TransientPolicyTest
{
    ObjectBuilder builder=new ObjectBuilder();
    Builder.AddStrategy(new PropertySetterStrategy());
    PropertyPolicy johnPolicy=new PropertyPolicy(“Name”,“John Doe”);
    Person john=builder.Build<person>(johnPolicy);
    PropertyPolicy samPolicy=new PropertyPolicy(“Name”,“Sam Smith”);
    Person sam=builder.Build<Person>(samPolicy);
    Assert.AreEqual(“John Doe”,john.Name);
    Assert.AreEqual(“Sam Smith”,sam.Name);
}
现在转向图4,示出了帮助合并并封装出现在面向对象的程序设计中的公共模式的系统400。系统400包括接收策略的接收组件102和在应用程序运行时实现该策略的实现组件104。在系统400的一种使用中,策略可涉及构造函数依赖性注入,这与在运行时发现类构造函数的要求、解析这些要求以确定需要检索或创建的对象、以及在创建对象本身时将其传递到用于对象的构造函数中。面向对象的程序设计中的构造函数是用于创建对象的新实例的一些方法,并可需要某些参数。构造函数依赖性注入是构造函数所需的方法可以经推理以使使用该类的开发者无需显式定义这些方法的理念。因此,当基于所推理的参数列表创建对象时,要求被注入到构造函数方法调用中,其中与实现组件104相关联的机器学习组件402可生成推理。
如此处所使用的,术语“推理”一般指从一组通过事件和/或数据捕捉的观察中推出或推断系统、环境和/或用户的状态的过程。例如,推理可用于标识特定的上下文或动作,或可生成状态的概率分布。推理可以是概率性的-即,基于数据和事件的考虑计算感兴趣的状态的概率分布。推理也可以指用于从一组事件和/或数据组成更高级事件的技术。这类推理导致从一组观察的事件和/或储存的事件数据构造新的事件或动作,无论事件是否在相邻的时间上相关,也无论事件是来自一个还是若干个事件和数据源。可使用各种分类方案和/或系统(例如,支持矢量机、神经网络、专家系统、贝叶斯信任网络、模糊逻辑、数据融合引擎…)来执行自动化和/或推理的动作。
在一个具体示例中,推理可通过策略和政策来控制。由此,推理可通过分析可应用于构造函数的参数的属性声明来实现。在另一示例中,推理可由机器学习组件402通过对对象类型的简单检查(在分析上下文时)来进行。再者,元数据可被提供给策略(可被认为是对策略的建议),从而允许机器学习组件402作出关于这一确定的更好决策。元数据例如可用外部文件404(例如,外部XML配置文件)的形式来提供。在另一示例中,元数据可以采用由程序员在代码中给出的建议的形式。在又一示例中,元数据可从诸如.NET等属性语言来获得。由此,构想了用于接收和/或提供元数据的任意合适的方式,并且这些方式旨在落入此处所附权利要求书的范围之内。此外,尽管系统400是参考构造函数依赖性注入来描述的,但是可以理解,推理可对于连线、设置函数注入、容器中的注册和存储、从容器中查找、类型映射、属性反射、返回代理对象等来进行。
现在参考图5-13,将借助一系列动作来描述根据所要求保护的主题的方法。可以理解和明白,所要求保护的主题不受动作次序的限制,因为某些动作可以按不同次序和/或与此处示出并描述的其它动作同时发生。例如,本领域的技术人员将理解和明白,方法可被替换地表示为诸如状态图中的一系列相互关连的状态或事件。此外,并非所有示出的动作都是实现根据所要求保护的主题的方法所必需的。另外,还应当理解,以下并贯穿本说明书所公开的方法能够被储存在制品上以便于将这些运输和传送到计算机。如此处所使用的术语制品旨在包含可从任何计算机可读设备、载体或介质访问的计算机程序。
具体地参考图5,示出了用于合成符合面向对象的程序设计的一个或多个对象的方法500。方法500在502处开始,并在504处接收多个合成策略。这些策略可由用户定制,并且可以依赖于或独立于其它策略。在506处,接收合成目标对象的命令。例如,应用程序的启动可使得对合成的请求在该应用程序的运行时出现。在508处,可分析与目标对象相关联的上下文,其中上下文涉及与该应用程序相关联的现有实体、关系、实例、类等。在510处,至少部分地基于该上下文执行多个合成策略中的至少一个。例如,合成策略可涉及创建对象、修改引用、创建关系或任何其它合适的动作。此外,合成策略可以独立于或依赖于一个或多个完全不同的策略,并且可按取决于上下文和/或政策的特定次序来执行。方法500然后在512处完成。
现在参考图6,示出了用于通过可扩展框架来合成对象的方法600。方法600在602处开始,并在604处接收多个合成策略。多个合成样式和要求可通过将实际合成工作委托给多个策略中的一个子集来实现。此外,每一策略可涉及一特定样式的合成,并且可以依赖于或不依赖于之前或之后运行的其它合成来完成其工作。在606处,执行应用程序,并且在608处,接收合成目标对象的命令。该命令例如可在执行应用程序时自动生成。此外,该命令可以是泛型(generic)的,这表现在当前不存在任何目标对象,而是合成策略在多个对象上运行(由此策略被泛型地执行,并且命令最初不涉及任何特定对象)。在610处,确定与应用程序相关联的上下文,其中该上下文包括该应用程序内或与该应用程序相关的实体以及应用程序配置。在612处,至少部分地基于上下文来执行多个合成策略中的至少两个,其中这些策略可并行或顺序地(以特定次序)执行。例如,取决于上下文,第一合成策略可要求第二合成策略在该第一策略之前。因此,第二合成策略应在第一合成策略之前实现。类似地,第一合成策略可要求第二合成策略并行执行。方法600然后在614处完成。
共同参考图7-13,描述了可通过策略来执行的各种任务。尽管被分开示出,但是本领域的技术人员可以理解,可提供涉及这些图中所描述的任何或所有方法的组合的多个策略。具体地,转向图7,示出了用于通过利用一个或多个策略来进行构造函数依赖性注入的方法700。方法700在702处开始,并在704处接收合成策略,其中策略旨在用于构造函数依赖性注入。在706处,分析与目标对象相关联的上下文。在方法700中,目标对象可以是期望创建的对象实例。在708处,根据所接收到的策略(或多个策略)来执行构造函数依赖性注入。如上所述,构造函数依赖性注入涉及在运行时发现类构造函数的要求、解析这些要求以确定应检索或创建的对象、然后当创建这些对象时将这些对象传递给目标对象的构造函数。面向对象的程序设计中的构造函数是用于创建对象的新实例的方法,并且可接收参数。策略可用使得可自动推理将什么传递给构造函数的方式来设计,其中推理可通过策略和政策来控制。方法700在710处完成。
现在参考图8,示出了用于通过利用策略来进行设置函数注入的方法800。方法800在802处开始,并且在804处接收合成策略,其中这一策略可用于设置函数注入。设置函数注入涉及在已创建对象上自动设置特性并调用方法。设置函数注入类似于构造函数依赖性注入,除了对于设置函数注入,所讨论的对象已经存在之外。然而,推断要设置哪些特性以及要调用哪些方法可通过推理来实现。如上所述,这一推理可基于对上下文中的对象类型、与对象相关联的元数据(例如,在XML配置文件中、在开发者提供的代码中…)的分析。在806处,分析与目标对象相关联的上下文。例如,对上下文的分析可提供用于上述推理的元数据。在808处,对目标对象执行设置函数注入。方法800然后在810处完成。
现在转向图9,示出了用于基于策略用于注册对象并将其储存在容器中的方法900。方法900在902处开始,并且在904处接收策略。策略可涉及注册目标对象,其中这一对象可以是新创建的和/或预先存在的(该对象是目标对象)。在906处,分析与这一对象相关联的上下文来获得与目标对象有关的元数据。该元数据然后可结合策略来使用。在908处,根据该策略来执行目标对象的注册和存储。将对象注册并存储到容器中涉及通知系统,对象应被记住以供将来使用。由此,当通过检查来解析对于对象的要求时,可对容器进行语法分析以确定预先存在的对象是否对特定需求合适,或者是否希望创建新对象。如上所述,策略可以与一个或多个推理相关联、可根据所分析的元数据来运行、和/或可根据特定命令来操作。例如,如果程序员显式地规定一对象应被注册和存储,则策略可相应地运行。方法900然后在910处完成。
现在参考图10,示出了用于基于所接收到的策略在容器内查找对象的方法1000。方法1000在1002处开始,并且在1004处接收涉及在容器内查找对象(例如,目标对象)的策略。在1006处,分析与目标对象相关联的上下文,并且在1008处根据该策略来执行从容器中的对象查找。从容器中检索对象涉及通过推理、元数据、显式命令或其组合来确定对象是否应从容器中检索,或者是否应创建新对象。方法1000在1010处完成。
转向图11,示出了用于在给定特定策略时执行类型映射的方法1100。方法1100在1102处开始,并且在1104处接收涉及类型映射的合成策略。类型映射涉及接口和具体的类,其中接口是关于一特定类的公有方法的定义。通过多态性,另一类只需知道所提供的对象符合接口即可。更详细而言,对象的类型可以是无关的,只要这一对象与特定方法相关联。此外,类型映射可以涉及将一请求的类型转换成更特定的具体类型。在1106处,相对于目标对象来分析上下文,并且在1108处,根据该策略执行类型映射。方法1100然后在1110处完成。
现在参考图12,示出了用于根据接收到的合成策略来执行属性反射的方法1200。方法1200在1202处开始,并且在1204处接收涉及属性反射的定制合成策略。属性反射允许通过在所构建的类上反射来发现和确认一个或多个策略。这可通过利用诸如.NET等支持属性的任何语言来允许。在1206处,分析与目标对象相关联的上下文。在该实例中,上下文可以是与目标对象相关联的特定类。在1208处,根据所接收的策略执行属性反射,并且方法1200然后在1210处完成。
现在转向图13,示出了用于返回代理对象的方法1300。代理对象可作为提供目标对象中声明的方法的不同实现的对象返回。代理在本领域中是公知的,但是在此之前进行代理不可通过利用策略来获得。方法1300在1302处开始,并且在1304处接收涉及提供对象的代理的合成策略。在1306处,分析与对象(目标对象)相关联的上下文,并且在1308处根据该策略来提供代理对象。方法1300然后在1310处结束。
为了提供用于本发明的各方面的附加上下文,图14和以下讨论旨在提供其中可实现本发明的各方面的合适的操作环境1410的简要概括描述。尽管本本发明是在诸如程序模块等可由一个或多个计算机或其它设备执行的计算机可执行指令的一般上下文中描述的,但是本领域的技术人员将认识到,本发明也可结合其它程序模块和/或作为硬件和软件的组合来实现。
然而,一般而言,程序模块包括执行特定的任务或实现特定的抽象数据类型的例程、程序、组件、数据结构等等。操作环境1410仅是合适的操作环境的一个示例,并不旨在对本发明的使用范围或功能提出任何局限。适用于本发明的其它公知的计算机系统、环境和/或配置包括但不限于,个人计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、可编程消费电子产品、网络PC、小型机、大型计算机、包括上述系统或设备的分布式计算环境等等。
参考图14,用于实现本发明的各方面的示例性环境1410包括计算机1412。计算机1412包括处理单元1414、系统存储器1416和系统总线1418。系统总线1418将包括但不限于系统存储器1416的系统组件耦合至处理单元1414。处理单元1414可以是各种可用处理器的任一种。双微处理器和其它多处理器体系结构也可用作处理单元1414。
系统总线1918可以是若干种总线结构类型的任一种,包括存储器总线或存储器控制器、外围总线或外部总线、和/或使用各类总线体系结构的局部总线,这些体系结构包括但不限于,8位总线、工业标准体系结构(ISA)、微通道体系结构(MCA)、扩展ISA(EISA)、智能驱动电子设备(IDE)、VESA局部总线、外围部件互连(PCI),通用串行总线(USB)、高级图形端口(AGP)、个人计算机存储卡国际协会总线(PCMCIA)以及小型计算机系统接口(SCSI)。系统存储器1416包括易失性存储器1420和非易失性存储器1422。基本输入/输出系统(BIOS)包括如在启动时帮助在计算机1412内的元件之间传输信息的基本例程,通常储存在非易失性存储器1422中。作为说明而非局限,非易失性存储器1422可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除ROM(EEPROM)或闪存。易失性存储器1420包括担当外部高速缓存的随机存取存储器(RAM)。作为说明而非局限,RAM以许多形式可用,如同步RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDR SDRAM)、增强型SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)和直接存储器总线(Rambus)RAM(DRRAM)。
计算机1412也包括可移动/不可移动、易失性/非易失性计算机存储介质。例如,图14示出了盘存储1424。盘存储1424包括但不限于,诸如磁盘驱动器、软盘驱动器、磁带驱动器、Jaz驱动器、Zip驱动器、LS-100驱动器、闪存卡或记忆棒等设备。另外,盘存储1424可单独包括存储介质或与其它存储介质组合,其它存储介质包括但不限于,诸如紧致盘ROM设备(CD-ROM)、CD可记录驱动器(CD-R驱动器)、CD可重写驱动器(CD-RW驱动器)或数字多功能盘ROM驱动器(DVD-ROM)等光盘驱动器。为便于盘存储设备1424连接到系统总线1418,通常使用可移动或不可移动接口,如接口1426。
可以理解,图14描述了担当用户和合适的操作环境1410中描述的计算机资源之间的中介的软件。这类软件包括操作系统1428。操作系统1428可储存在盘存储1424中,它用于控制并分配计算机系统1412的资源。系统应用程序1430利用操作系统1428通过储存在系统存储器1416或盘存储1424上的程序模块1432和程序数据1434对资源的管理。可以理解,本发明可用各种操作系统或操作系统的组合来实现。
用户通过输入设备1436向计算机1412输入命令或信息。输入设备1436包括但不限于,诸如鼠标、跟踪球、指示笔、触摸垫等定点设备、键盘、话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪、TV调谐卡、数码相机、数码摄像机、网络摄像头等等。这些和其它输入设备通过系统总线1418经由接口端口1438连接到处理单元1414。接口端口1438包括,例如,串行端口、并行端口、游戏端口和通用串行总线(USB)。输出设备1440使用与输入设备1436相同类型端口中的某一些。由此,例如,USB端口可用于向计算机1412提供输入,并从计算机1412输出信息到输出设备1440。提供了输出适配器1442以说明存在一些输出设备1440,如监视器、扬声器和打印机,以及需要特殊适配器的其它输出设备1440。输出适配器1442包括,作为说明而非局限,提供输出设备1440和系统总线1418之间的连接装置的显卡和声卡。应当注意,其它设备和/或设备的系统提供了输入和输出能力,如远程计算机1444。
计算机1412可以使用到一个或多个远程计算机,如远程计算机1444的逻辑连接在网络化环境中操作。远程计算机1444可以是个人计算机、服务器、路由器、网络PC、工作站、基于微处理器的电器、对等设备或其它常见的网络节点等等,并通常包括相对于计算机1412所描述的许多或所有元件。为简明起见,仅对远程计算机1444示出了存储器存储设备1446。远程计算机1444通过网络接口1448逻辑上连接至计算机1412,然后通过通信连接1450物理地连接。网络接口1448包含诸如局域网(LAN)和广域网(WAN)等通信网络。LAN技术包括光纤分布式数据接口(FDDI)、铜缆分布式数据接口(CDDI)、以太网/IEEE 802.3、令牌环/IEEE 802.5等等。WAN技术包括但不限于,点对点链路、诸如综合业务数字网(ISDN)及其变体等电路交换网络、分组交换网络以及数字用户线(DSL)。
通信连接1450指用于将网络接口1448连接到总线1418的硬件/软件。尽管为说明的清晰起见,示出通信连接1450在计算机1412内,然而它也可以对计算机1412是外部的。仅出于示例性的目的,连接到网络接口1448所必需的硬件/软件包括内部和外部技术,如包括常规电话级调制解调器、线缆调制解调器和DSL调制解调器的调制解调器、ISDN适配器和以太网卡。
图15示出了本发明可与其交互的示例计算环境1500的示意性框图。系统1500包括一个或多个客户机1510。客户机1510可以是硬件和/或软件(如,线程、进程、计算设备)。系统1500也包括一个或多个服务器1530。服务器1530也可以是硬件和/或软件(如,线程、进程、计算设备)。例如,服务器1530可容纳线程,以通过使用本发明执行变换。客户机1510和服务器1530之间的一个可能的通信可以是适用于在两个或多个计算机进程之间传输的数据分组的形式。系统1500包括可用于便于在客户机1510和服务器1530之间通信的通信框架1550。客户机1510操作上连接至可用于储存对客户机1510本地的信息的一个或多个客户机数据存储1560。类似地,服务器1530操作上连接至可用于储存对服务器1530本地的信息的一个或多个服务器数据存储1540。
上文所描述的包括本发明的示例。当然,不可能为了描述本发明而描述组件或方法的每一可想象的组合,但是本领域的普通技术人员可以认识到,本发明的许多另外的组合和置换是可能的。因此,本发明旨在包含落入所附权利要求书的精神和范围中的所有这样的更改、修改和变型。此外,就在说明书和权利要求书中使用术语“包括”而言,这类术语旨在以与术语“包含”用作权利要求书中的过渡词语所解释的类似的方式为包含性的。

Claims (20)

1.一种用于面向对象的程序设计的可扩展框架,包括以下计算机可执行组件:
接收涉及合成目标对象(106)的定制策略的接收组件(102);以及
至少部分地基于与所述目标对象(106)相关联的上下文自动实现所述定制策略以合成所述目标对象(106)的实现组件(104)。
2.如权利要求1所述的框架,其特征在于,所述策略是在运行时实现的。
3.如权利要求1所述的框架,其特征在于,还包括确定所述上下文的上下文组件,所述上下文包括与所述目标对象相关联的应用程序的上下文、与所述目标对象相关联的现有对象、以及现有对象之间的关系,其中所述上下文是与所述应用程序和所述目标对象相关的一组组件,并且所述现有对象中的至少一个是远程对象。
4.如权利要求1所述的框架,其特征在于,所述接收组件接收多个策略。
5.如权利要求4所述的框架,其特征在于,还包括帮助以由与所述目标对象相关联的声明性语句和上下文中的至少一个确定的次序来执行所述多个策略的排序组件。
6.如权利要求1所述的框架,其特征在于,所述实现组件至少部分地基于所述定制策略来创建新对象。
7.如权利要求1所述的框架,其特征在于,所述目标对象是要由所述实现组件来创建的对象。
8.如权利要求1所述的框架,其特征在于,所述目标对象是预先存在的对象。
9.如权利要求1所述的框架,其特征在于,还包括对所述策略强制实施永久政策和临时政策之一的政策组件。
10.如权利要求1所述的框架,其特征在于,所述框架被配置成采用推理来合成所述目标对象。
11.如权利要求10所述的框架,其特征在于,所述推理是至少部分地基于所分析的元数据和显式命令中的一个或多个来生成的。
12.如权利要求10所述的框架,其特征在于,还包括用于生成所述推理的外部配置文件。
13.一种用于合成对象的方法,包括以下计算机可执行动作:
接收多个合成策略;
接收合成目标对象的命令;
分析与所述目标对象相关联的上下文;以及
至少部分地基于所分析的上下文来执行所述多个合成策略中的至少一个。
14.如权利要求13所述的方法,其特征在于,还包括以并行的方式执行所述合成策略中的至少两个。
15.如权利要求13所述的方法,其特征在于,还包括以指定的次序顺序地执行所述合成策略中的至少两个。
16.如权利要求13所述的方法,其特征在于,还包括在执行所述至少一个策略时执行构造函数依赖性注入和设置函数注入中的一个或多个。
17.如权利要求13所述的方法,其特征在于,还包括在执行所述至少一个策略时执行在容器中注册所述目标对象和储存所述目标对象、以及从容器中检索所述目标对象中的一个或多个。
18.如权利要求13所述的方法,其特征在于,还包括执行以下的至少一个:在执行所述至少一个策略时执行关于所述目标对象的类型映射,以及在执行所述至少一个策略时向所述目标对象提供代理对象。
19.如权利要求13所述的方法,其特征在于,还包括在执行所述至少一个策略时执行属性反射。
20.一种在面向对象的编程环境中的可扩展框架,包括:
用于接收合成策略的计算机实现的装置(102);
用于分析与目标对象相关联的上下文的计算机实现的装置(206);以及
用于至少部分地基于所接收到的合成策略和所分析的上下文来合成所述目标对象的计算机实现的装置(104)。
CN2006800371838A 2005-10-06 2006-09-12 用于对象合成的可扩展机制 Expired - Fee Related CN101283345B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US72432405P 2005-10-06 2005-10-06
US60/724,324 2005-10-06
US11/321,209 US7779043B2 (en) 2005-10-06 2005-12-29 Extensible mechanism for object composition
US11/321,209 2005-12-29
PCT/US2006/035390 WO2007044170A1 (en) 2005-10-06 2006-09-12 Extensible mechanism for object composition

Publications (2)

Publication Number Publication Date
CN101283345A true CN101283345A (zh) 2008-10-08
CN101283345B CN101283345B (zh) 2011-03-09

Family

ID=37912042

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800371838A Expired - Fee Related CN101283345B (zh) 2005-10-06 2006-09-12 用于对象合成的可扩展机制

Country Status (8)

Country Link
US (1) US7779043B2 (zh)
EP (1) EP1934815A4 (zh)
JP (1) JP5189986B2 (zh)
KR (1) KR20080059561A (zh)
CN (1) CN101283345B (zh)
BR (1) BRPI0616943A2 (zh)
CA (1) CA2621810A1 (zh)
WO (1) WO2007044170A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104991452A (zh) * 2015-05-12 2015-10-21 广东瑞德智能科技股份有限公司 一种在面向对象编程中用于家电控制框架的设计方法
CN105808255A (zh) * 2016-03-07 2016-07-27 上海斐讯数据通信技术有限公司 一种基于编织的类图模型合成方法及系统

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8191052B2 (en) * 2006-12-01 2012-05-29 Murex S.A.S. Producer graph oriented programming and execution
US8745584B2 (en) * 2007-05-03 2014-06-03 International Business Machines Corporation Dependency injection by static code generation
US20100023798A1 (en) * 2008-07-25 2010-01-28 Microsoft Corporation Error recovery and diagnosis for pushdown automata
US20100287525A1 (en) * 2009-05-07 2010-11-11 Microsoft Corporation Extension through visual reflection
CN101923461A (zh) * 2009-06-12 2010-12-22 徐晓松 一种数据处理方法及其系统
US9116708B2 (en) * 2010-03-05 2015-08-25 Nec Corporation Program creation support apparatus, program, and information system
US8819026B2 (en) * 2010-08-27 2014-08-26 SCR Technologies, Inc. Sequential chain registry
US9799005B2 (en) * 2013-03-07 2017-10-24 Samsung Electronics Co., Ltd. Computing system with contextual interaction mechanism and method of operation thereof
US9696974B2 (en) 2013-03-13 2017-07-04 Microsoft Technology Licensing, Llc. Graph-based model for type systems
US9639335B2 (en) * 2013-03-13 2017-05-02 Microsoft Technology Licensing, Llc. Contextual typing
US9652207B2 (en) 2013-03-13 2017-05-16 Microsoft Technology Licensing, Llc. Static type checking across module universes
US9563412B2 (en) 2013-03-13 2017-02-07 Microsoft Technology Licensing, Llc. Statically extensible types
US10860186B2 (en) * 2014-09-26 2020-12-08 Oracle International Corporation User interface component wiring for a web portal
CN108279890B (zh) * 2017-01-06 2021-12-24 阿里巴巴集团控股有限公司 组件发布方法、组件构建方法及图形化机器学习算法平台

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5875333A (en) 1996-06-07 1999-02-23 Electronic Data Systems Corporation Automatically generating source code for relating a dialog interface with a business object in a computing application
US6104874A (en) * 1996-10-15 2000-08-15 International Business Machines Corporation Object oriented framework mechanism for order processing including pre-defined extensible classes for defining an order processing environment
US5937189A (en) * 1996-11-12 1999-08-10 International Business Machines Corporation Object oriented framework mechanism for determining configuration relations
US5890158A (en) 1997-03-31 1999-03-30 International Business Machines Corporation Method, apparatus, and program storage device for sharing objects with a network server and a database server using a common object model
US6763376B1 (en) * 1997-09-26 2004-07-13 Mci Communications Corporation Integrated customer interface system for communications network management
JPH11119987A (ja) * 1997-10-20 1999-04-30 Fujitsu Ltd 業務オブジェクトの自動生成装置及び方法並びに業務オブジェクト生成プログラムを記録したコンピュータ読み取り可能な記録媒体
US6574736B1 (en) 1998-11-30 2003-06-03 Microsoft Corporation Composable roles
US6366921B1 (en) * 1999-02-09 2002-04-02 International Business Machines Corporation System and method for data manipulation in a dynamic object-based format
US6199195B1 (en) * 1999-07-08 2001-03-06 Science Application International Corporation Automatically generated objects within extensible object frameworks and links to enterprise resources
US7152228B2 (en) * 1999-07-08 2006-12-19 Science Applications International Corporation Automatically generated objects within extensible object frameworks and links to enterprise resources
JP2001147812A (ja) * 1999-11-22 2001-05-29 Toshiba Corp クラス生成方法、オブジェクト生成方法、インタフェースオブジェクト生成方法及びオブジェクト実行システム
US7546226B1 (en) * 2003-03-12 2009-06-09 Microsoft Corporation Architecture for automating analytical view of business applications

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104991452A (zh) * 2015-05-12 2015-10-21 广东瑞德智能科技股份有限公司 一种在面向对象编程中用于家电控制框架的设计方法
CN105808255A (zh) * 2016-03-07 2016-07-27 上海斐讯数据通信技术有限公司 一种基于编织的类图模型合成方法及系统
CN105808255B (zh) * 2016-03-07 2019-06-25 上海斐讯数据通信技术有限公司 一种基于编织的类图模型合成方法及系统

Also Published As

Publication number Publication date
CN101283345B (zh) 2011-03-09
JP2009512014A (ja) 2009-03-19
KR20080059561A (ko) 2008-06-30
EP1934815A1 (en) 2008-06-25
EP1934815A4 (en) 2009-01-07
BRPI0616943A2 (pt) 2011-07-05
JP5189986B2 (ja) 2013-04-24
US7779043B2 (en) 2010-08-17
CA2621810A1 (en) 2007-04-19
WO2007044170A1 (en) 2007-04-19
US20070083551A1 (en) 2007-04-12

Similar Documents

Publication Publication Date Title
CN101283345B (zh) 用于对象合成的可扩展机制
Asikainen et al. Kumbang: A domain ontology for modelling variability in software product families
US7831453B2 (en) Modeling of business process data
Ameri et al. Digital manufacturing market: a semantic web-based framework for agile supply chain deployment
US20160171397A9 (en) Progressive Refinement Model for Business Processes
CN101894027A (zh) 代码生成模式
US7895070B2 (en) Providing multiple views of a business process definition to different users
Parra Towards dynamic software product lines: Unifying design and runtime adaptations
CN112099784A (zh) 一种模型创建方法与装置
Alshareef et al. Activity-based DEVS modeling
Costa et al. The application of UML and an open distributed process framework to information system design
Alshareef et al. Metamodeling activities for hierarchical component-based models
Gomaa A software modeling odyssey: Designing evolutionary architecture-centric real-time systems and product lines
Nadumane Models and verification for composition and reconfiguration of web of things applications
Spanoudakis et al. The agent systems methodology (aseme): A preliminary report
Nastov et al. Towards semantical DSMLs for complex or cyber-physical systems
Jouve et al. High-level programming support for robust pervasive computing applications
Hamid Modeling of secure and dependable applications based on a repository of patterns: the SEMCO approach
Brazier et al. Dynamics and control in component‐based agent models
Van Tendeloo A foundation for multi-paradigm modelling
Andrade et al. HPM-Frame: A Decision Framework for Executing Software on Heterogeneous Platforms
Gorodetsky et al. MASDK software tool and technology supported
González Huerta Integration of Quality Attributes in Software Product Line Development
Jin et al. Unifying domain ontology with agent-oriented modeling of services
Goyal et al. Functional Method Engineering

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150505

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150505

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

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

Granted publication date: 20110309

Termination date: 20190912

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