CN100426223C - 从多个文件中构建软件产品的方法 - Google Patents

从多个文件中构建软件产品的方法 Download PDF

Info

Publication number
CN100426223C
CN100426223C CNB2004100851518A CN200410085151A CN100426223C CN 100426223 C CN100426223 C CN 100426223C CN B2004100851518 A CNB2004100851518 A CN B2004100851518A CN 200410085151 A CN200410085151 A CN 200410085151A CN 100426223 C CN100426223 C CN 100426223C
Authority
CN
China
Prior art keywords
assembly
feature
file
inventory
software product
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.)
Expired - Fee Related
Application number
CNB2004100851518A
Other languages
English (en)
Other versions
CN1617097A (zh
Inventor
R·贾汉瓦
V·贾亚西兰
M·J·格里尔
M·J·戴
B·麦克内尔
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 CN1617097A publication Critical patent/CN1617097A/zh
Application granted granted Critical
Publication of CN100426223C publication Critical patent/CN100426223C/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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/54Link editing before load time

Landscapes

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

Abstract

从一种组合化模式表示的文件中构建一个操作系统或其它软件产品。依据该模式,一个组件对象表示一个或多个文件。该组件对象具有一个清单,其识别该组件并确定在组件和其它对象之间的任意从属性。依据在清单中确定的从属性归类的对象允许构建软件产品。通过至少一个组件对象定义的特征对象表示软件产品的一个特征以及通过至少一个特征对象定义的一个产品对象表示软件产品。

Description

从多个文件中构建软件产品的方法
技术领域
本发明的实施例涉及软件体系机构的领域,具体地说,本发明的实施例涉及包括一个操作系统的软件产品的组合体系机构。
背景技术
虽然软件产品变得越来越多并且更加复杂,但是在基于现有软件产品的基础上创造出新的产品以及使这些产品满足市场和竞争需要所要求的服务日益困难。操作系统(OS)是一个相对大而复杂的软件产品的例子。
操作系统管理和调度其驻留的计算机或设备中的资源,并提供应用程序可以使用的多种功能模块和接口从而完成多种任务。常规计算机通常执行其操作系统以管理当它运行时计算机的多个方面。例如,操作系统通常负责管理访问存储设备和输入和/或输出设备,控制一个或多个附加应用程序的执行。安装通常发生在计算机执行操作系统之前(举例来说,将来自于像CDROM这样的分布介质的多个文件复制到计算机的一个硬盘上)。
一个常规操作系统具有很多用于指令和/或数据的文件(举例来说,成百上千个)。当这些指令被计算机执行时,提供操作系统的功能。除了大量的文件,操作系统通常在这些文件间具有大量的从属性。例如,许多文件可以要求安装一个或多个其它文件用于执行它们想要的功能性。尽管操作系统的制造商可以在安装的时候得知这样的从属性。但是对于用户,管理员,或其它软件研发者而言,要获知这些从属性是很困难的,这被证明是很麻烦的,如软件研发商无法得知在其它文件中何种数据或指令会影响他们所关心的特定文件。同样地,无法得知该从属性,检修故障计算机的管理员或用户就无法知道哪个文件适用于解决该问题。
此外,一个典型的操作系统实际上通常是巨大的。在本领域技术人员所熟知的通用操作系统中,服务器和客户器OS产品都是由来自一个包含所有二进制文件的巨大的中心文件制造出的。在这个例子中,一个可执行的安装程序必须指定包含在不同产品中的文件。因而,每一个产品中各个部分之间的关系是很难理解的。信息的缺乏妨碍了在它的生命周期期间服务于操作系统的能力。换句话说,当操作系统变得越来越大越来越复杂时,对于研发者和其它人来说,要了解操作系统所有不同的模块和文件以保证它们整体以及分离地工作的更好是很困难的。
举个例子,特定的OS产品可以作为“家用”版本出售而具有附加特征的优质产品可以作为“专业”版本出售。在这种情况下,家用和专业的产品通常包括商标信息和其它散布在所有的组成各个产品的多个二进制文件中的参考信息。遗憾的是,由于二进制文件和这些存在的商标参考之间的关系(对于新产品每一个都必须被改变),产品的创造和服务是非常艰巨的并且需要被大范围地测试。
可以以任何多种方式修改(例如,更新或服务)操作系统,例如通过多种人(例如,除了操作系统的研发者外的用户,管理员,软件研发者等等。)添加或取代一个或多个指定的二进制文件。当出现这样的修改时,增加了识别在计算机上现有的文件之间的从属性的困难。例如,改变单个文件时必须改变其它相关的文件。此外,由于用户或管理员不能轻易地正确得知该功能性是什么样的或在计算机上要安装什么,因此检测一台故障计算机或更新操作系统变得更加复杂。
因此,希望软件组合能够解决一个或多个这些和其它的缺点并且允许在其这情况中创建改进的操作系统。
发明内容
通过将软件产品,诸如操作系统表示为组件的集合,,本发明的实施例克服了现有技术中一个或多个缺陷。本发明的一个方面包括引入若干个以组合的方式构造软件产品的抽象概念。在这种方式中,本发明的实施例有助于在组合产品的基础上创造出新产品并服务于该产品。组件的定义通常可以用于描述应用程序组件,即使用这种组件定义可以描述任何应用程序。换句话说,组件定义可以用于更加详细地描述操作系统组件。此外,在此描述的本发明的特征比当前通用的技术更省事更易于实现,而且在经济上和商业上也是可行的。
简要地讲,使用本发明的各个方面从多个文件构建一个软件产品。该方法包括将文件组织成为对象。在这个例子中,大量对象代表组件并且每一个组件都包括至少一个文件。该方法也包括使用清单识别每一个组件,组件以及使用清单指定组件其它的对象之间的一个或多个从属性。依据清单中指定的从属性的对象分组允许构造软件产品。
本发明的另一个实施例涉及一个或多个计算机可读媒介。存储在媒介中的对象包括大量的组件对象,该对象被用于从大量文件中构造软件产品。每一个组件对象包括一个或多个文件和清单,该清单包括识别组件对象并指定组件对象和一个或多个其它对象之间的从属性的元数据。该媒介也包括至少一个相应于软件产品特征的特征对象。该特征对象包括一个或多个选定的依据清单指定的从属性分组的对象。
在另外的实施例中,一个组合模式表示与组合对象一起构造软件产品的一个或多个文件。与组件对象关联的清单识别组件对象并指定组件对象和至少一个其它对象之间的一个或多个从属性。该模式也包括一个特征对象和一个产品对象。该特征对象是通过至少一个组件对象定义的,表示软产品的一个特征。该产品对象是通过至少一个特征对象定义的,表示该软件产品。
本发明进一步具体化的方面是用于执行组合方法的具有计算机可执行指令的计算机可读媒体。
换句话说,本发明可以包括各种各样其它的方法和装置。
其它特征将在下文部分中指出并说明。
附图说明
图1说明了依据本发明实施例的具有代表性的计算机方框图。
图2是说明图1的组件和相应清单的具有代表性的方框图。
图3至图8说明了依据本发明实施例的具有代表性的组件定义模式。
图9至图12进一步说明了图3-8的组件定义模式的对象。
图13说明了依据本发明实施例的用于选择包含在软件产品中的组件的一个具有代表性的设计程序。
图14说明了依据本发明实施例的具有代表性的编程对象模型。
图15是一个说明了和图3-8的组件定义模式一起使用的一个具有代表性的组合体系机构的方框图。
图16是说明用于图1使用的计算机的代表性的组件的方框图。
相应的参考特征标识所有附图中相应的部件。
具体实施方式
现在参考附图,图1说明了依据本发明某一实施例的具有代表性的计算设备150。计算设备150具有像操作系统152和一个或多个应用程序154这样的软件产品。
操作系统152是用于计算设备150的基础软件控制程序,执行各种功能,包括提供用户接口,管理一个或多个应用程序154的执行,以及控制各种各样输入/输出(I/O)设备的数据输入和数据输出。应用程序154是一个或多个可以在计算设备150上执行的普遍的多样的软件应用程序。这样的应用程序154的例子包括教育程序,参考程序,生产程序(例如,字处理,电子制表软件,数据库),娱乐程序,实用性程序(例如,通信程序)等等。应用程序154可以由用户安装在计算设备150上,或可选择地由计算机设备150的制造商和/或发行人预先安装。
图1的操作系统152将其功能分成像所说明实施例中的部分#1至部分#N这样的若干组件156。每一个组件156各自都具有一个相应的清单158,例如清单#1至清单#N。组件156包括一个或多个文件(或文件标识符)的集合。该文件可以包括像一个可执行文件,一个动态链接库(DLL),或一个组件对象模块(COM)这样的软件指令。该文件也可以包括一个或多个组件156使用的数据。在执行中,对应于操作系统152的特定功能的文件(例如数据和/或指令)被一起分组到相同的组件156中。例如,可以有一个游戏组件,一个通信组件,以及一个文件系统组件。导致组合的文件的分组可以是静态的,或者换句话说是可以随时变化的。在一个例子中,更新操作系统152可以导致选定的文件从某一组件156中删除并添加到其它的组件156中。
请进一步参考图1,每一个清单158包括描述相应部分156的信息。任何一个关于相应的部分156的多种元数据可以被包括在每一个清单158中。在执行中,清单158识别相应的组件156和其它组件156的版本,如有的话任何相应的组件156可以被依赖。举个例子,为了使在组件156中的一个或多个文件更好地执行,来自其它组件的一个或多个其它文件(例如,一个DLL文件)可以被安装在计算机设备150上。在这个例子中,清单158表示组件156依赖于其它的组件。
由于现有操作系统的复杂性和规模,创建满足市场或竞争需要的新产品变得越来越困难。当今的操作系统本质上更加整体化,因而,很难理解各种各样的组件之间的关系。在产品的寿命周期期间,信息的缺乏使得操作系统的维修变得很困难。为了克服这些以及其它问题,本发明的实施例将操作系统组合化。换句话说,本发明允许将一个软件产品表示为一种组件的集合。本发明一个方面涉及用于以组合的方式构造一个操作系统的几个抽象概念以便有助于新产品的创建和对现有产品的维修。这些抽象概念可以被应用于包括应用程序在内的任何软件产品和任何操作系统。
一个组件定义模式说明了本发明引入的若干抽象概念,即,组件(也称作集合),类,特征,插件,产品,和SKUs(库存单位)。在这个例子中,组件156表示分配,维修,和/或绑定的一个可再利用的,可共享的,自我描述的微型单元。它是描述自身组件以及以声明的方式用于安装,维修,和/或绑定到必要资源的所有相关的信息(例如,元数据)的最基本的抽象概念。
下面将详细描述本发明一个具体实施例,一个类对象162(见图4)表示将一系列通用的组件156分类的机制;一个特征对象164(见图5)表示组件156和/或特征164的一个合成物并且被当作创建一个产品对象166(见图7)的构件块使用;以及一个插件对象168(见图6)表示组件156,特征164,类162,和/或其它插件168的合成物。例如,插件对象168用于分类组件156以实现管理的目的。进一步,在本实施例中的产品对象166表示特征164和/或组件156的高级合成物以及一个SKU对象170(见图8)表示产品166的购买机制(例如,一个SKU170可以包含若干产品166)。
这里描述的组件定义可以用于描述通用应用程序而不是专用的操作系统组件。换句话说,任何应用程序可以用组件定义来描述。
依据本发明实施例的组合体系机构定义了在设计期间和运行期间用于管理组件的概念,组件储存库,以及编程模式。组合化的战略好处包括灵敏度,速度,支持能力,以及增大的收入机会。即使是横越用户和服务器线,创建一个用产品或SKU对象表示的新的软件产品变得很容易。选择正确的组件并提供某些附加的配置从而创建一个新产品是一个相对简单的任务。在相对短的时间内创建新产品的灵敏度提供了有效地竞争的能力并避免了失去市场的机遇。例如,提供附加的组件随后加入到一个当前产品是可能的,其允许一个用于升级一个额外产品,其增加许可的综合数量,等等。所有这些附加的能动性会导致产品的附加收入。
组合化也有助于减少产品图象的数量而初始设备制造商(OEM)或公司必须保留,其会节省大量成本。依据至少一个本发明的实施例,多数组件信息是说明性的从而使组件可以以下线方式被安装。这减少了在目标设备上安装整个产品所花费的时间并且为OEM,公司,终端用户等等减少了大量成本也增加了客户的满意度。
本领域的技术人员了解维护作为产品周期一部分的重要性。由于评估基于每一个组件提供的说明性信息上的变化的影响是很容易的,因此维护本发明实施例的一个组合化产品是相对的简单。在一个更加孤立的环境中测试组件以提高测试效率也是很容易的。转而,减少了在软件产品中的所有的弱点。
在这里描述的组件定义图解涉及了组件156为了安装,升级服务,和绑定适当的资源所描述的信息。在这个关系中,图2说明了依据本发明某一具体实施例具有示范性的组件156和相应的清单158。依据本发明的具体实施例,每一个组件156用一个相应的清单158来表示。组件156包括至少一个文件174并且可以任意选择地包括不只一个(n)文件。虽然和在图2中说明的文件一样,组合文件156可以任意选择地包括一个或多个文件174的指示符或其它标识符而不是实际的文件。
组合部分156对应于清单158。在说明的例子中,清单158包括识别组件156的一个组件标识符(例如,通过名称或某些其它唯一的标识符)。这种对应可以任意选择不同的方式被保留,例如包含在组件156中清单158的一个标识符(未示出),以保留在组件156和清单158之间的一个固有对应性中的一个数据结构来存储组件156和清单158(或其标识符),等等。清单158可以是一个可扩展标识语言(XML)文件。
如图2的具有示范性的列表所示,清单158也包括一个识别零或多个组件156所依赖的组件的相关的组件列表。所识别的相关的组件是那些使组件156正常运行所必须的作为操作系统图像的一部分被安装的组件。在这个说明性例子中,标识符识别组件156正常运行所必须的组件,但是可以任意选择应该包括在内的组件(例如,除了那些无需的,由组件156优选的作为操作系统一部分的组件)。除了等同性和从属性,在这个例子中的清单156中也具体描述了组件156的其它细节,即,通用信息(包括所有者,测试者,研发者,描述,等等。),资源(包括文件,注册信息,等等。),设置(配置),成员,和其它信息。
在可选择的实施例中的清单158也可以包括有助于安装和/或升级的一个优先次序和一个版本指示器。
换句话说,保留在清单158中的某些或全部信息可以被保留在不同的位置。举个例子,某些或全部信息可以被合并到图1的组件156中。
APPENDIXA的例子进一步说明了本发明关于清单158的方面。
下面进一步具体说明了关于用于本发明举例说明的组合化机制结构的主要提取部分。
如上所述,涉及作为组件156(或集合)的对象表示分配,服务,和绑定的一个可再利用或可共享的自我描述的基本单元。在图3的实施例中,组件156可以依赖其它的组件156和/或特征164来运行,例如,它们展示了相对于这些其它对象的从属性。组件156也可以是不同开放组的成员,即,类162。在这个例子中,可延伸到一个友好的研发者,涉及作为“自身”的多部分性能“包”识别每一个组件156。组件自身具有下述属性,例如:名字,版本,处理器机制结构,语言(例如,“us-eng”或“jpn”),构造类型(例如,自由或调试),以及发明者的识别。名字属性以地点独立的字符串的形式来描述在一个实施例中的特定组件156。一个四个部分的版本号,例如,其通常允许一个“主要的.次要的.构造.修订”格式,其是由自身的版本属性提供的。密码安全信息允许在自身的发明者的ID属性中出现的组件自身是安全的。
如上所设置的那样,每一个组件156是由一个或多个文件和一个相关的清单158组成的。如图3所示,清单158描述了组件156的详细情况。在图3的具体实施例中,涉及作为组件或集合的对象可以具有和其它的组件156,一个类162,和/或一个特征164有关的从属性。
图4所示的类对象162定义了在用类的成员表示的成员信息中的一个开放组,而不是在一个类清单中表示的成员信息。例如,可以建立一个类162用来将和文本编辑例如Notepad和Wordpad相关的一个或多个组件156归类。类162也使用一个类似于组件156的等同性机制来识别。在一个实施例中,类162具有像等同性,通用信息,以及其它信息这样的具体细节。
现在参考图5,特征对象164表示组件156的构成和/或其它的特征164。特征164被当作软件产品构件块来使用,可以从安装中添加或删除。特征164包含和组件156,其它的特征164,以及类162相关的关系,而不是依赖于其它对象。换句话说,依据本发明实施例特征164不具有从属性。举个例子,表示一个合并的网页浏览器的一个特征对象164和表示一个媒体播放应用程序的其它特征对象164都是以一个操作系统来安装的。特征164由等同性,通用信息(例如所有者,测试者,研发者,描述,等等),成员,成份,和其它信息组成。在本发明的一个实施例中,特征等同性在结构上类似于组件等同性并常用于识别每一个特征164。特征164可以是若干不同的类162(见图4)的成员。
图6图解地说明了插件对象168。如所示,插件168是组件156,特征164,类162,以及其它插件168的组组件。和类162相比,插件168更接近组。插件168主要用于管理目的。例如,一个OS的家用版本可以使用由“cab1”,“cab2”,“cab3”和“cab4”表示的四个不同的插件168来安装。在这个例子中的插件对象168是以组的形式来实现安装目的的。在图6的实施例中插件168只在其它的插件168上确定从属性。在这里依据组合化定义描述的每一个插件168是由像等同性,通用信息,成员,成份,从属性,以及其它信息这样的具体内容组成的。
图7的对象166表示特征164和/或组合部分156的一个高层次的合成。它也具有用于构造组合特征164和组件156的性能。依据本发明的一个实施例,产品设计者选择产品166(见图13)的特征164。产品对象166具体的包括等同性,通用信息,成份,和其它信息。
现在参考图8,SKU对象170表示产品166的安装媒体(例如,包括在磁盘上用于安装的产品)。合适的安装媒体包括软磁盘或压缩磁盘以及网页下载小型文件。SKU170也可以由一个以上的产品164组成(见图13)。本发明至少一个实施例使用SKU设计者工具来创造一个SKU清单。类似于上述的其它提取部分,SKU170包含等同性,通用信息,产品,和其它信息。
图9至图12进一步说明了组件156和其它对象之间具有示范性的关系。特别是,图9所示的组件156可以依赖于出现在一个或多个类162,一个或多个特征164,和/或一个或多个组件156中的一个或多个二进制文件。另外,组件156可以说明在类162中的成员。在图10的示范性关系图表中,类162可以用于将一个或多个特征164,一个或多个组件156,和/或一个或多个插件168分类。如上所述,类对象162将一个开放组表示成其它对象说明的成员。图11说明了特征164包括一个或多个特征164和/或一个或多个组件156并且特征164可以说明在一个或多个类162中的成员。现在参考图12,插件168表示一个或多个插件168,类162,特征164,和/或组件156的分组。在这个例子中,插件168可以属于一个像类162这样的开放组或依赖于像其它插件168这样的关闭组。
图13提供给定义特征164一个将OS二进制文件的各种各样的组件156分类的例子。然后该特征164被分类到定义的产品166,依次被包括用于安装SKU170。不同的计算机可以具有基于同一操作系统上的不同的操作系统图像。例如,不同的OEM可以以不同的方式定义相同的操作系统(例如,由于可以使用不同的预置设置,因此带有初始屏幕的操作系统的开机程序可以识别该OEM)。也可以包括不同的功能(例如,屏幕存储器,背景或题目,像通信程序这样的软件应用程序,游戏,等等)。这些附加的功能可以通过OEM,或可选择的其它制造商或分销商来提供。因而,许多不同的组件可以是实际上安装在一台特定的计算机上作为一个操作系统图像的子设备的操作系统的一部分。另一方面,特定的OEM组件和清单设备包括可以通过OEM作为操作系统图像一部分被安装的附加的组件。
操作系统可以由任何广泛多样的理由被升级。举个例子,错误的安装某一组组件的某一文件可能是有效的,在一个组合部分中的新的功能可以是有效的(例如,更新或添加文件),新的组件可以是有效的,等等。
另外,一个新的组件可以作为操作系统的一部分按照在先的组组件被安装而不是代替在先的组件。这允许不同的应用程序使用它们优选的任何组件的版本(或是编程使用)。
举个例子,一个OEM可以按照家用,商用,服务用,等等提供多样的基本的计算机配置。在这个例子中,除了包括不同的功能外,每一个配置都是基于相同的操作系统。附加的网络和通讯功能可以被包括在服务配置中,但不包括在任何家用或商用配置中,以及附加的游戏或音频播放功能可以包括在家用配置中,但不包括在商用或服务配置中。图13示出了包括基本的家用产品的具有示范性的额外产品。
在一个实施例中,构造软件产品是从产品对象中提及的组件的储存库处创建一个运行时间图像的行为。构造通常是以下线的方式产生,例如计算机X的运行时间图像是在计算机Y上创建出的。从属性完全是从高层次产品中分解出的。一旦从属性被分解,在从属树中的每一个节点被安装到对象。对象表示安装已经以一种下线的方式被创建。每一个组件的安装涉及安装每一种资源(例如,注册码和文件),其是组件的一部分,并且将一条入口放置在安装组件的储存库处以跟踪该安装的组件。
图14依据本发明的实施例示出了编程模式的第一层提取部分。尤其是,例如,该示范性图表说明了使用统一模式语言(UML)的不同的第一层对象(或分类)。在这个例子中,对象涉及使用UML的程序员。每一个接口直接映射到组合化的第一层概念。
操作系统的安装程序通过操作系统的组合化被大大简化了。特定的OEM功能通过包括合适的组件和相应的清单可以被很容易地添加。此外,通过简单地代替相应的组件用于改善性能,错误安装,以及诸如此类的操作系统的更新可以被容易地合并到安装程序中。换句话说,一个附加的更新部分和清单设备对于包括这样更新的操作系统安装配置是有效的。
图15说明了本发明使用的具有示范性的组合化机制结构。图15所示的可扩展机制结构允许构造一个OS安装,包括安装和卸装组件,并启动产品/SKU灵敏度。而且,该体制机构提供用于服务于一个运行的OS和一个OS图像的子结构。该组合化机制结构为组件的创建和管理提供一个通用的结构。它也允许以一种类的方式从配置中构造一个运行时间的图像。一种组件管理接口(CMI)是可以被不同用户使用的用以访问由组合化机制结构陈列的功能。该工具通常可以被划分为下述几类:设计-时间工具;运行-时间工具;以及构造-时间工具。设计-时间工具是用于设计时间的工具(例如,一个组合部分设计者设计或创建组件以及对象设计者设计或创建一个配置)。运行-时间工具是用于在一个运行-时间图象(安装)上管理现有的组件。这可以包括像可选择的组件管理器(OCM)这样的功能,其管理安装在系统上的组件。运行-时间工具的另一个例子可以是一个服务用户,其与一个远程服务器交流从而使组件更新并且更新安装在一个装置上的组件。构造-时间工具是使用在构造实验室中。它们主要用于从一个配置中创建运行-时间图象。
如图15所示,CMI具有一个核心层和一个实用程序性层。CMI核心层由不同的功能部件组成,其通常是作为已知的接口被外露,消耗。该层是由一个核心CMI对象模块,一个储存器和文件存储器,以及串行器/非串行器组成。核心CMI对象模块陈列了易于编程的作为CMI用户接口的多个不同的第一类抽象。它们通常以相对容易地使用格式反映组合化提取部。例如,IAssembly提取“组件”概念。在这个实施例的抽象不具有任何与其相关的功能性。它们是通过在抽象陈列的方法可以被恢复并设定的属性的集合。下述列表包括通过核心CMI对象模块中的一个接口陈列出的一些提取部:IAssembly;IFeature;ICategory;IPackage;IProduct;ISku;IConfiguration;IRepository。
在图15的例子中一个组件储存库用于管理存在一个存储库处的组件。如上所述,每个组件都具有元数据(例如,和数据相关的信息)和实际数据(例如,组件的文件)。元数据通过一个元数据储存库接口(IRepository)是可存储的然而数据通过一个文件储存库接口(IFileRepository)是可存储的。在一个实施例中,元数据储存库接口是使用一个关系数据库来执行存储和索引组件的元数据。文件储存库接口允许用户以一种组合的方式到达组组件数据(文件)。
组件元数据和数据接口在图15中的组件储存库接口下被分离以允许不同的可插元数据储存库基于不同的情况上执行。例如,在一个设计计算机上能够使用SQL元数据的存储库由于有效的存储和存储器不可以被强迫使用除非在一个运行-时间系统的元数据储存库才能通过一个小型的覆盖区数据库(例如,注册)的支持从而处理紧密的存储器请求。
一个串行器和非串行器接口允许在CMI的第一类对象被串行化以及来自文本文件的被非串行化。例如,一个XML串行器和非串行器读写XML文件。串行器和非串行器通常读写如下所述的载体和配置。
以串行化格式传送任何第一类提取部的文件被称作载体或清单。载体提供一种填充组件储存库数据的方式,例如,在一个载体文件中工具创建或编辑一个组件的串行化的例子并且该组件储存库接口允许将载体输入到组件储存库。
使用载体来交换信息的主要优点在于其允许工具从组件储存库分离。另一个优点是当输入载体信息时,数据以一个更加相容的(或完整的)格式被输入到组件储存库。分离的串行器和非串行器接口也允许执行各种各样的载体(例如,INF)。
配置是CMI’s IConfiguration对象的串行化表示,其表示用于构造一个运行一时间影像的组件和设置的集合。配置是在一个单独的文件中而不是在一个载体文件中串行化的原因是配置不能被输入到数据库。
CMI应用程序层由经常变化的功能部件组成。在图15的实施例中功能部件作为已知的接口被外露,消耗。应用程序层包括用于安装装置,升级装置,从属性裁决器,CMI对象模块,和用户的部件。安装装置部件具有用于安装(或构造)和卸装由核心层陈列的一个特定的组合化提取部的逻辑电路。例如,IAssembly以在线或下线的方式从OS装置安装和卸装。安装和卸装组合部件的逻辑电路是出现在部件中。所有的核心提取部使用“IInstallable”接口被安装和卸装。这些方式的执行改变了每个核心提取部。例如,存在一个称作“IAssemblyInstaller”的安装装置提取部用于组合。IAssemblyInstaller集合“IAssembly”接口并执行“IInstallable”用以安装和卸装一个组合部件例子。
和核心提取部绑定的特定功能性类型允许集合部件安装逻辑电路的执行按照所需要的那样改变而不影响核心IAssembly接口。相同的安装对于其它核心提取部也是成立的。
升级器部件具有在一个视窗装置上用于将特定的核心提取部升级和降级的逻辑电路。例如,IAssembly是以一种在线或下线的方式从OS装置中升级或降级的。升级或降级组合的逻辑电路出现在该部件中。所有的核心提取部通过使用“IUpgradable”接口被升级和降级的。
每一个核心提取部单独的执行这些方法。由于在升级过程中需要安装和卸装功能性,因此,“IUpgradable”从“IInstallable”继承以再次使用现有的安装或卸载的功能。例如,该组合具有一个称作“IAssemblyUpgrader”的升级器提取部。IassemblyUpgrader聚集“IAssembly”,“IAssemblyInstaller”并执行“IUpgradable”将在一个视窗装置上的组合例子升级和降级。又,这种绑定允许集合部件升级电路的执行按照所需要的那样改变而不影响核心IAssembly接口和安装或卸装逻辑电路。相同的安装对于其它核心提取部的升级功能性也是成立的。
从属性裁决器部件对一个指定的核心提取部执行从属性裁决逻辑电路。在这个例子中,对于每一个核心提取部该部件都具有依据从属性裁决而不是依据自动或手动的方式的逻辑电路。从属性裁决器对于用户程序而言是可扩展的从而将预置的从属性裁决功能性按照在一个指定的用户环境中所需要的那样扩展。部件的功能性是通过“IDependencyResolver”接口表示出来的。裁决从属性的方法返回一个CMI对象树形或基于使用其的情况下的例子对象。从属性裁决通常和至少一个本发明实施例的一个配置或一个储存库相关。该储存库可以是可安装的或已安装的储存库。
通常,在运行-时间系统上,从属性裁决发生在一个已安装的储存库和现有配置中,然而在一个设计-时间情况下,从属性裁决发生在一个可安装的储存库和一个当前正在编辑的配置中。
CMI对象模式是形成于CMI核心对象模式和在实用程序层陈列的不同的功能性部分的集合。CMI核心对象模式也可被陈列出用于程序设计工具从而直接操作提取部当载体(或清单)串行化和非串行化时。
一个重要的问题是要注意在上述机制结构中,相同的编程模式对于设计-时间,运行-时间和构造-时间情况是有利的。这有助于保持对象模式和相关的不同要求一致并有助于程序设计师的生产率。这也有助于重新使用一个单一执行的CMI,将其用于像设计和运行-时间这样的不同情况并且因此与设计和运行-时间情况不同的执行相比较是更加可维护的。
图16示出了以计算机70的形式的通用目的计算机设备的例子。在本发明的一个实施例中,像计算机70这样的计算机适合作为计算机150来使用。
在举例说明的实施例中,计算机70具有一个或多个处理器或处理单元72和一个系统存储器74。在举例说明的实施例中,一个系统总线76连接包括系统存储器74的各种各样的系统组件到处理器72。总线76表示一种或多种任何型号的总线结构,包括一个存储器总线或存储器控制器,一个外围设备总线,一个加速的图表端口,和一个处理器或使用任何一种总线体系结构的局域总线。举个例子,但不局限于此,这样的体系结构包括工业标准体系结构(ISA)总线,微通道体系结构(MCA)总线,加强型ISA(EISA)总线,视频电子标准协会(VESA)局域总线,和外围设备组合部件相互连接(PCI)总线也称作Mezzanine总线。
有代表性的计算机70至少具有计算机可读媒介的某些类型。计算机可读媒介包括易失性和非易失性媒介,可拆卸和不可拆卸媒介,其可以是被计算机70访问的任何类型的可用的媒介。举个例子,但不局限于此,计算机可读媒介包括计算机存储媒介和通讯媒介。计算机存储媒介包括以任何方法或技术执行的用于存储像计算机可读指令,数据结构,程序模块或其它数据这样的易失性和非易失性,可拆卸和不可拆卸媒介。例如,计算机存储媒介包括RAM,ROM,EEPROM,闪存或其它存储技术,CD-ROM,数字通用磁盘(DVD)或其它磁存储设备,或其它可用于存储期望信息并可以被计算机70访问的媒介。具有代表性的通讯媒介包含计算机可读指令,数据指令,程序模块,或其它在调节数据信号像载波或其它传送机制中的数据,并且包括任何信息传送媒介。本领域技术人员对调节信号是很熟悉的,其具有一种或多种以和信号中编码信息相关的方式设置或改变的自身特性。通讯媒介的例子可以是像有线网络或直接有线连接这样的有线媒介,和像声学,RF,红外线这样的无线媒介,以及其它无线媒介。上述任何结合也包括在计算机可读媒介的范围内。
系统存储器74包括可拆卸和/或不可拆卸,易失性和/或非易失性存储器形式的计算机存储媒介。在说明性的实施例中,系统存储器74包括只读存储器(ROM)78和随机存储器(RAM)80。一个基本的输入/输出系统82(BIOS)包括有助于在计算机70内的元件之间传送信息的基本例行程序,例如在启动期间,其被有代表性地存储在ROM78中。具有代表性的RAM80包括被处理单元72立即访问的和/或立刻运行的数据和/或程序模块。举个例子,但不局限于此,图16图解说明了操作系统84,应用程序86,其它程序模块88,以及程序数据90。
计算机70也可以包括其它可拆卸/不可拆卸媒介,易失性/非易失性计算机存储媒介。例如,图16图解说明了硬盘驱动94对不可拆卸,非易失性磁盘进行读写。图16也示出了磁盘驱动96对可拆卸,非易失性磁盘98进行读写,以及一个光盘驱动100对可拆卸,非易失性光盘102例如CD-ROM或其它光学媒介进行读写。可以被用于示范性操作环境的其它可拆卸/不可拆卸,易失性/非易失性计算机存储媒介包括磁带盒,闪存卡,数字通用磁盘,数字视频磁带,固体状态RAM,固体状态ROM,等等。硬盘驱动84,和磁盘驱动96以及光盘驱动100通常通过一个非易失性存储接口例如接口106连接到系统总线76。
上述并在图16中图解说明的驱动或其它大量的存储设备以及它们相关的计算机存储媒介为计算机70提供了计算机可读指令,数据结构,程序模块和其它数据。在图16中,例如,硬盘驱动94图解的说明了用于存储操作系统110,应用程序112,其它程序模块114,以及程序数据116。要注意的是这些组合部件可以和操作系统84,应用程序86,其它程序模块88,以及程序数据90相同或不同。这里按照说明的那样指定操作系统110,应用程序112,其它程序模块114,以及程序数据116不同的数量,至少,它们是不同的副本。
一个用户可以通过像键盘120和指示设备122(例如,鼠标,跟踪球,笔,或接触垫)这样的输入设备或用户接口选择设备将命令和信息输入到计算机70。其它的输入设备(未示出)可以包括一个麦克风,游戏杠杆,游戏垫,卫星盘,扫描器,等等。这些和其它输入设备通过和系统总线76连接的用户输入接口124连接到处理单元72,也可以通过其它接口和总线结构来连接,例如并行端口,游戏端口,或通用串行总线(USB)。监视器128或其它类型的显示设备也经过像视频接口130这样的接口连接到系统总线76。除了监视器128以外,计算机常常包括像打印机和扬声器这样的其它外围输出设备(未示出),其可以通过一个输出外围接口(未示出)来连接。
计算机70可以在网络环境中运行,使用本地连接到像远程计算机134这样的一个或多个远程计算机。该远程计算机134可以是一台个人计算机,一台服务器,一台路由器,一台网络PC,一台对接设备或其它共同的网络节点,其通常包括上述与计算机70相关的多个或全部元件。在图16中描述的逻辑连接包括一个局域网络(LAN)136和一个广域网络(WAN)138,也可以包括其它网络。LAN136和/或WAN138可以是一个有线网络,一个无线网络,及其组合,等等。这样的网络环境常见于办公室,企业范围的计算机网络,内部网,以及全球计算机网络(例如,因特网)。
当用于局域网络环境时候,计算机70通过网络接口或适配器140连接到LAN136。当用于广域网络环境时,计算机70通常包括一个调制解调器142或其它在WAN138上建立通讯的方式,例如因特网。调制解调器142可以是内部的或外部的,经过用户输入接口134连接到系统总线76或其它合适的机械装置。在一个网络环境中,所描述的与计算机70相关的程序模块,或其部分,可以被存储在远程存储器存储设备中(未示出)。举个例子,但不局限于此,图16图解的说明了驻留在存储器设备中的应用程序144。将明白示出的网络连接是示范性的并且在计算机之间建立通信链接的其它方式可以被使用。
一般地,计算机70的数据处理器通过在计算机的各种各样计算机可读存储媒介中在不同时间存储指令的方式被编程。例如,在软磁盘或CD-ROMs上的程序和操作系统通常是分布式的。从这里它们被安装或载入到计算机的第二存储器。在执行中,它们至少部分地载入到计算机地主电子存储器中。当包含指令或程序这样的媒介用以执行这里描述的连接微处理器或其它数据处理器步骤时,这里描述的发明包括这些和其它各种各样类型的计算机可读存储媒介。当依据这里描述的方法和技术编程时本发明也包括计算机自身。
为了实现图解说明的目的,在这里通过离散部件对像操作系统这样的程序和其它可执行的程序组合部件进行图解说明。然而,应认识到在不同时间驻留在计算机的不同存储部件中这样的程序和组合部件通过计算机的数据处理器被执行。
虽然对包括计算机70的示例性计算系统环境相联系地进行了描述,但是本发明是和大量的其它通用或专用的计算机系统环境或配置一起操作的。计算机系统环境并不易于支持本发明的用途或功能性范围的任何限制。而且,计算机系统环境不可以被解释为具有和在具有代表性的操作环境中图解说明的任何一种或组合部件组合有关的任何从属性或要求。已知的计算机系统,环境,和/或配置的例子可以适合和本发明包括的个人计算机,服务器计算机,便携式或膝上型设备,多处理器系统,基于微处理的系统,机顶盒,包括移动电话的可编程消费者电子设备,网络PC,小型机,大型机,包括任何一个上述系统或设备的分布式计算机环境,等等一起使用,但不限于此。
本发明的实施例可以通过计算机的可执行指令的通用格式来描述,例如通过一个或多个计算机或其它设备执行的程序模块。通常,程序模块包括例行程序,程序,对象,组合部件,和完成指定任务或执行提取数据类型的数据结构,但不限于此。本发明也可以在分布式计算机环境中执行,其中的任务由通过一个通信网络链接的远程处理设备来执行。在分布式计算机环境中,程序模块可以定位在包括存储器存储设备的本地和远程计算机存储媒介。
在操作中,计算机70执行像在下文所描述的那些计算机可执行指令将文件组织成为对象。在这个例子中,至少某些对象是组合部件的描述并且每一个组成对象至少包括一个文件。依据计算机可执行指令,清单识别每一个组合部件并且确定组合部件和其它对象之间的任何从属性。依据清单中确定的从属性归类的对象允许构造软件产品。
本领域技术人员将注意到这里图解说明并描述的方法的执行或运行的顺序不是十分重要的,除非以其它方式确定。也就是说,发明者确定方法的要素可以以任何顺序被执行,除非以其它方式确定,该方法包括的要素可以多于或少于这里公开的那些方法的要素。
在这个文件中的信息易于改变而无须通告,包括统一资源指标器和其它因特网设置索引。除非以其它方式通告,这里例子中描述的公司,机构,产品,域名,电子邮件地址,标识语,人,位置和事件是虚构的,和真实的公司,机构,产品,域名,电子邮件地址,标识语,人,位置和事件无关,是无法从其推知出来的。
当介绍本发明的要素或其实施例时,冠词“a”,“an”,“the”,和“said”意味着存在一个或多个要素。术语“comprising”,“including”,和“having”是指被包含在内的并意味着可以是附加的要素而不是被列举的要素。
从上述来看,可以看到本发明的若干对象被获得并且获得其它有利的结果。
例如,本发明的实施例是可延伸和可扩展的。组合部件存储处能够跟踪在一个运行-时间系统上的相对少的组合部件(例如,成百)到在一个设计-时间系统上相对多的组合部件(例如,成百成千)。本发明包括的范例也是充分的扩展从而附加的元数据和新的组合部件可以由不同的产品部分和三分之一部分被添加。可编程模式是充分的扩展从而人们可以以一种相容的方式扩展它,将功能性添加到核心元件机构中。
未脱离本发明范围的情况下,可以对上述构造和方法中作出的各种各样的变化,所以意指在上述由于描述包括的以及在相应附图中所示的所有的内容将解释为说明性的,所以不是限制性的。
数据存储和格式:程序设计工具创建组合部件,特征,类,插件,产品和SKU。在这个例子中,它们在一个XML文件(被称作一个载体或清单)中被表示。每一个载体包括至少一个实例的特征或类或插件或产品或SKU。一个记录的清单的例子如下:
<?xml version=”1.0 encoding=”UTF-16?>
<!--edited with XML SPY v5 U(http://www.xmlspy.com)by vijayj(ms)-->
<!--edited with XML Spy v4.4 U(http://www.xmlspy.com)by Vijayj Jayaseelan(ms)-->
<assembly manifestVersion=”1.0 authors=”vijayj”company=”Microsoft”
copyright=”Microsoft”                           displayName=”Notepad”lastUpdateTimeStamp=”2002-07-
31T09:23:00 owners=”none”released=”false”testers=’none
supportInformation=”http://www.microsoft.com”description=”Unicode andnon-
unicode text file editor.”Xmlns=”urn:schemas-microsoft.com:asm.v2>
<assemblyIdentity name=”notepad”version=”1.0.0.0
processorArchitecture=”x86 language=”neutral”buildType=”release”/>
<dependency>
<dependentCategory name=”Notepad Language Category”
version=“1.0.0.0    processorArchitecture=”x86          language=”*”buildType=”release”
selection=”one”/>
</dependency>
<dependency>
<dependentAssembly>
<assemblyIdentity name=”Windows Shell”version=”1.0.0.0
processorArchitecture=”x86  language=”*”buildType=”release”/>
</dependentAssembly>
</dependency>
<file name=”notepad.exe”sourcePath=”%_NTTREE%\”/>
<memberships>
<categoryMembership name=”Text Editors”version=”1.0.0.0
processorArchitecture=”x86 language=”*”buildType=”release”/>
</memberships>
<registryKeys>
<registryKey keyName=”HKCU\Notepad\Settings\”/>
<registryKey keyName=”HKCU\Notepad\Settings\Font\”>
<registryValue name=”Name”value Type=”REG_SZ”
value=”Arial”/>
<registryValue name=”Size”valueType=”REG_DWORD”
value=”10/>
</registryKey>
</registryKeys>
<propertyTypes>
<propertyType name=”DefaultFont”valueType=”string”
access=”public”   readOnly=”false”     value=”Arial”regularExpression=”(Arial)|(Lucida
Console)|(Courier)”>
<registryLocation keyName=”HKCU\Notepad\Settings\Font\”>
<registryValue name=”Name”valueType=”REG_SZ”
value=”Arial”/>
</registryLocation>
</propertyType>
</propertyType>
</assembly>

Claims (7)

1.一种从多个文件中构建软件产品的方法,所述软件产品包括一个或多个特征,所述方法包括:
将文件组织成对象,所述对象包括组件对象,所述组件对象表示组件,每一个组件对象包括至少一个文件;
定义要被构建的软件产品的特征,所述对象还包括特征对象,所述特征由特征对象表示并包括至少一个组件,其中:
所定义的特征的所述至少一个组件被包括在所述要被构建的软件产品的另一特征中,
所定义的特征不从属于其它特征,
所述其它特征不从属于所定义的特征;
通过与每一个组件相关的清单来识别每一个组件;
通过清单指定在组件对象和其它对象之间的一个或多个从属性;以及
依据在清单中指定的从属性将文件归类从而构建软件产品。
2.权利要求1的方法,其中所述与组件相关的清单包含表示组件对象并指定组件对象和其它对象之间的所述一个或多个从属性的元数据,从而按照组件的不同的集合的功能来描述不同的软件产品。
3.权利要求1的方法,其中所述对象的至少一个表示在软件产品中文件的类,所述方法进一步包括由一个或多个其它对象声明在所述类中的成员资格。
4.权利要求3的方法,其中声明在所述类中的成员资格的所述一个或多个其它对象中的每一个对象表示下述的至少一个:一个组件,一个特征,以及一个插件。
5.权利要求1的方法,其中所述其它对象表示下述一个或多个:
另一组件;一个类;以及一个特征。
6.权利要求1的方法,其中每一个对象表示下述的至少一个:一个组件,一个类,一个特征,一个产品,一个库存单位,以及一个插件。
7.权利要求1的方法,其中一个或多个计算机可读媒介具有用于执行权利要求1的方法的计算机可读指令。
CNB2004100851518A 2003-09-02 2004-08-13 从多个文件中构建软件产品的方法 Expired - Fee Related CN100426223C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/653,701 2003-09-02
US10/653,701 US7562346B2 (en) 2003-09-02 2003-09-02 Software componentization for building a software product

Publications (2)

Publication Number Publication Date
CN1617097A CN1617097A (zh) 2005-05-18
CN100426223C true CN100426223C (zh) 2008-10-15

Family

ID=34312628

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100851518A Expired - Fee Related CN100426223C (zh) 2003-09-02 2004-08-13 从多个文件中构建软件产品的方法

Country Status (5)

Country Link
US (1) US7562346B2 (zh)
EP (1) EP1521172A3 (zh)
JP (1) JP2005078650A (zh)
KR (1) KR101087439B1 (zh)
CN (1) CN100426223C (zh)

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6324685B1 (en) 1998-03-18 2001-11-27 Becomm Corporation Applet server that provides applets in various forms
US7840933B2 (en) * 2003-08-06 2010-11-23 International Business Machines Corporation Software application management for distributing resources and resource modeling
US20050102666A1 (en) * 2003-11-10 2005-05-12 International Business Machines (Ibm) Corporation Pre-deployment component hosting environment analyzer
US9489687B2 (en) * 2003-12-04 2016-11-08 Black Duck Software, Inc. Methods and systems for managing software development
US8700533B2 (en) * 2003-12-04 2014-04-15 Black Duck Software, Inc. Authenticating licenses for legally-protectable content based on license profiles and content identifiers
US7526734B2 (en) * 2004-04-30 2009-04-28 Sap Ag User interfaces for developing enterprise applications
US9038082B2 (en) * 2004-05-28 2015-05-19 Oracle International Corporation Resource abstraction via enabler and metadata
US8966498B2 (en) * 2008-01-24 2015-02-24 Oracle International Corporation Integrating operational and business support systems with a service delivery platform
US9245236B2 (en) * 2006-02-16 2016-01-26 Oracle International Corporation Factorization of concerns to build a SDP (service delivery platform)
US20050289539A1 (en) * 2004-06-29 2005-12-29 Sudhir Krishna S Central installation, deployment, and configuration of remote systems
US8010576B2 (en) * 2004-08-19 2011-08-30 Oracle International Corporation Inventory and configuration management
US7562347B2 (en) * 2004-11-04 2009-07-14 Sap Ag Reusable software components
US7797698B2 (en) * 2004-11-17 2010-09-14 International Business Machines Corporation Method and apparatus for dynamic middleware assembly
US20060225066A1 (en) * 2005-04-04 2006-10-05 Sharp Laboratories Of America, Inc. Systems and methods for extending an application on a mobile information device with additional functionality
US20060230382A1 (en) * 2005-04-12 2006-10-12 Moulckers Ingrid M System and method for managing a reusable set of business solution components
US8549049B2 (en) * 2005-04-13 2013-10-01 Sharp Laboratories Of America, Inc. Systems and methods for updating an application on a mobile information device
US8892694B2 (en) * 2005-10-24 2014-11-18 Microsoft Corporation Declarative system configurations
US7721259B2 (en) * 2005-11-15 2010-05-18 Oracle International Corporation Configurable and customizable software application system and metadata
US8060865B2 (en) * 2006-01-12 2011-11-15 Microsoft Corporation Build-time enforcement of architectural partitioning in computer application
US8505006B1 (en) * 2006-02-10 2013-08-06 Ringcube Technologies, Inc. Resource management in virtual machines using dynamic table for performing resource queries
US8082538B2 (en) * 2006-05-15 2011-12-20 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Systems, methods and apparatus for developing and maintaining evolving systems with software product lines
US8914493B2 (en) * 2008-03-10 2014-12-16 Oracle International Corporation Presence-based event driven architecture
KR20070119356A (ko) * 2006-06-15 2007-12-20 삼성전자주식회사 소프트웨어의 컴포넌트화 방법, 링크 방법 및 업데이트방법과, 소프트웨어를 기록한 정보저장매체
US20070297590A1 (en) * 2006-06-27 2007-12-27 Microsoft Corporation Managing activity-centric environments via profiles
US20070299631A1 (en) * 2006-06-27 2007-12-27 Microsoft Corporation Logging user actions within activity context
US7970637B2 (en) * 2006-06-27 2011-06-28 Microsoft Corporation Activity-centric granular application functionality
US20070300225A1 (en) * 2006-06-27 2007-12-27 Microsoft Coporation Providing user information to introspection
US20070300185A1 (en) * 2006-06-27 2007-12-27 Microsoft Corporation Activity-centric adaptive user interface
US8364514B2 (en) * 2006-06-27 2013-01-29 Microsoft Corporation Monitoring group activities
US20070299713A1 (en) * 2006-06-27 2007-12-27 Microsoft Corporation Capture of process knowledge for user activities
US7836002B2 (en) * 2006-06-27 2010-11-16 Microsoft Corporation Activity-centric domain scoping
KR100791303B1 (ko) * 2006-08-22 2008-01-04 삼성전자주식회사 빌드 단위의 컴포넌트 생성 장치 및 방법
DE102006041578A1 (de) * 2006-09-05 2008-03-13 Fujitsu Siemens Computers Gmbh Verfahren und System zum automatischen Zusammenstellen eines Betriebssystems und Verfahren zum Erzeugen eines Moduls
US8099710B2 (en) 2006-12-14 2012-01-17 Microsoft Corporation UI behaviors
US8239274B2 (en) * 2007-01-11 2012-08-07 Microsoft Corporation Purchasing of individual features of a software product
KR101371619B1 (ko) * 2007-02-14 2014-03-06 삼성전자주식회사 레거시 시스템을 컴포넌트화하는 장치 및 방법
US8214503B2 (en) 2007-03-23 2012-07-03 Oracle International Corporation Factoring out dialog control and call control
KR20100002259A (ko) * 2007-04-03 2010-01-06 인터내셔널 비지네스 머신즈 코포레이션 관련된 제품 정보를 갖는 소프트웨어 카탈로그를 파퓰레이트하기 위한 방법 및 시스템
US8001519B2 (en) * 2007-06-27 2011-08-16 International Business Machines Corporation Model driven development including aspect integration tool
US9454384B2 (en) * 2007-07-05 2016-09-27 Microsoft Technology Licensing, Llc Custom operating system via a web-service
US20090037466A1 (en) * 2007-07-31 2009-02-05 Cross Micah M Method and system for resolving feature dependencies of an integrated development environment with extensible plug-in features
US8490078B2 (en) * 2007-09-25 2013-07-16 Barclays Capital, Inc. System and method for application management
KR101484680B1 (ko) * 2007-10-04 2015-01-21 삼성전자 주식회사 컴포넌트 기반 소프트웨어 제품 관리 시스템 및 방법
US20090119300A1 (en) * 2007-11-01 2009-05-07 Sun Microsystems, Inc. Technique for editing centralized digitally encoded information
US8539097B2 (en) * 2007-11-14 2013-09-17 Oracle International Corporation Intelligent message processing
US9477462B2 (en) * 2008-01-16 2016-10-25 Oracle International Corporation System and method for software product versioning packaging, distribution, and patching
US9654515B2 (en) * 2008-01-23 2017-05-16 Oracle International Corporation Service oriented architecture-based SCIM platform
US8589338B2 (en) * 2008-01-24 2013-11-19 Oracle International Corporation Service-oriented architecture (SOA) management of data repository
US7860900B2 (en) * 2008-02-25 2010-12-28 Microsoft Corporation Consistently signaling state changes
US8762977B2 (en) * 2008-04-10 2014-06-24 Telefonaktiebolaget L M Ericsson (Publ) Mobile device software management method and apparatus
US8538889B2 (en) * 2008-06-25 2013-09-17 Microsoft Corporation Application hierarchy and state manipulation
US8505067B2 (en) * 2008-08-21 2013-08-06 Oracle International Corporation Service level network quality of service policy enforcement
US8640096B2 (en) 2008-08-22 2014-01-28 International Business Machines Corporation Configuration of componentized software applications
US8788497B2 (en) * 2008-09-15 2014-07-22 Microsoft Corporation Automated criterion-based grouping and presenting
US8239856B2 (en) * 2008-10-27 2012-08-07 International Business Machines Corporation Sharing unresolved information between software components
US8458690B2 (en) * 2009-04-29 2013-06-04 Microsoft Corporation Automated software deployment triggered by state differences in distributed systems
US8879547B2 (en) * 2009-06-02 2014-11-04 Oracle International Corporation Telephony application services
US8495621B2 (en) * 2009-06-15 2013-07-23 Microsoft Corporation Catalog-based software component management
US8972974B2 (en) * 2009-11-09 2015-03-03 Bank Of America Corporation Multiple invocation points in software build task sequence
US9122558B2 (en) 2009-11-09 2015-09-01 Bank Of America Corporation Software updates using delta patching
US9176898B2 (en) 2009-11-09 2015-11-03 Bank Of America Corporation Software stack building using logically protected region of computer-readable medium
US9128799B2 (en) 2009-11-09 2015-09-08 Bank Of America Corporation Programmatic creation of task sequences from manifests
US8533773B2 (en) * 2009-11-20 2013-09-10 Oracle International Corporation Methods and systems for implementing service level consolidated user information management
US9269060B2 (en) * 2009-11-20 2016-02-23 Oracle International Corporation Methods and systems for generating metadata describing dependencies for composable elements
US20110125909A1 (en) * 2009-11-20 2011-05-26 Oracle International Corporation In-Session Continuation of a Streaming Media Session
US9503407B2 (en) * 2009-12-16 2016-11-22 Oracle International Corporation Message forwarding
US8549467B2 (en) * 2009-12-16 2013-10-01 International Business Machines Corporation Integrating software components in a software system using configurable glue component models
US9509790B2 (en) 2009-12-16 2016-11-29 Oracle International Corporation Global presence
KR20110080448A (ko) * 2010-01-06 2011-07-13 삼성전자주식회사 애플리케이션 구축 시스템 및 그 방법
US8375352B2 (en) * 2010-02-26 2013-02-12 GM Global Technology Operations LLC Terms management system (TMS)
FR2964224A1 (fr) * 2010-08-24 2012-03-02 Thales Sa Procede et dispositif de deploiement et d'aide au deploiement de composants formant un systeme temps reel embarque
US8719784B2 (en) * 2010-09-06 2014-05-06 International Business Machines Corporation Assigning runtime artifacts to software components
US8615737B2 (en) * 2010-12-23 2013-12-24 Red Hat, Inc. Systems and methods for building software packages in secure development environments
US20130007726A1 (en) 2011-06-30 2013-01-03 Indrajit Poddar Virtual machine disk image installation
US8782630B2 (en) * 2011-06-30 2014-07-15 International Business Machines Corporation Smart rebinding for live product install
US8930899B2 (en) 2012-08-18 2015-01-06 International Business Machines Corporation Artifact divider for large scale application builds
US10037197B2 (en) * 2013-03-15 2018-07-31 Oracle International Corporation Flexible microinstruction system for constructing microprograms which execute tasks, gateways, and events of BPMN models
JP6192570B2 (ja) * 2014-02-27 2017-09-06 京セラドキュメントソリューションズ株式会社 アプリケーション開発支援プログラム及びアプリケーション開発支援システム
US9348565B2 (en) 2014-03-12 2016-05-24 International Business Machines Corporation Compact data marshaller generation
US10044795B2 (en) 2014-07-11 2018-08-07 Vmware Inc. Methods and apparatus for rack deployments for virtual computing environments
US9329858B2 (en) * 2014-09-30 2016-05-03 Linkedin Corporation Managing access to resource versions in shared computing environments
CN107810475B (zh) * 2015-06-30 2021-09-10 威睿公司 用于虚拟计算环境的软件生命周期管理的方法和装置
US10740081B2 (en) 2015-06-30 2020-08-11 Vmware, Inc. Methods and apparatus for software lifecycle management of a virtual computing environment
US10901721B2 (en) 2018-09-20 2021-01-26 Vmware, Inc. Methods and apparatus for version aliasing mechanisms and cumulative upgrades for software lifecycle management
US10996944B2 (en) * 2019-05-06 2021-05-04 Red Hat, Inc. Automated software selection using matrix factorization
US11985457B2 (en) * 2019-08-02 2024-05-14 Nippon Telegraph And Telephone Corporation Communication apparatus and communication method
US11100009B2 (en) 2020-01-03 2021-08-24 Bank Of America Corporation Intelligent detection and ejection of unused application components
CN111596977B (zh) * 2020-05-21 2023-09-12 北京艾克斯特科技有限公司 一种plm系统业务对象执行系统及执行方法
US20240143485A1 (en) * 2022-10-26 2024-05-02 Google Llc Presubmit Test Run Minimization Analysis Using Runtime Isolation Guarantees

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6038399A (en) * 1997-07-22 2000-03-14 Compaq Computer Corporation Computer manufacturing architecture with two data-loading processes
CN1357822A (zh) * 2000-10-27 2002-07-10 株式会社东芝 应用软件开发系统及其方法、应用软件开发程序、以及应用软件生成方法
US6487713B1 (en) * 1999-09-24 2002-11-26 Phoenix Technologies Ltd. Software development system that presents a logical view of project components, facilitates their selection, and signals missing links prior to compilation
CN1410881A (zh) * 2001-09-28 2003-04-16 株式会社东芝 通用的软件开发支持系统

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH076026A (ja) * 1993-05-28 1995-01-10 Xerox Corp 構成管理及び構成要素の互換性保証方法、ならびに常駐ソフトウェアと移行ソフトウェアの非互換性の排除方法
JPH09204301A (ja) * 1996-01-29 1997-08-05 Hitachi Ltd プログラム生成システム
FR2745649B1 (fr) * 1996-03-01 1998-04-30 Bull Sa Systeme de configuration de logiciels preconfigures sur des systemes ouverts en reseau dans un environnement distribue et procede mis en oeuvre par un tel systeme
US6292941B1 (en) * 1996-04-30 2001-09-18 Sun Microsystems, Inc. Operating system installation
JPH103382A (ja) 1996-06-18 1998-01-06 Matsushita Electric Ind Co Ltd オペレーティングシステム生成装置および生成方法
JPH1021084A (ja) 1996-07-04 1998-01-23 P I Ii:Kk ソフトウェア流通媒体およびソフトウェア流通媒体の作成方法
US5974572A (en) * 1996-10-15 1999-10-26 Mercury Interactive Corporation Software system and methods for generating a load test using a server access log
GB9623298D0 (en) * 1996-11-08 1997-01-08 Int Computers Ltd Updating mechanism for software
US5963743A (en) * 1997-08-29 1999-10-05 Dell Usa, L.P. Database for facilitating software installation and testing for a build-to-order computer system
JPH11143694A (ja) * 1997-11-13 1999-05-28 Ricoh Co Ltd ソフトウエアのバージョンアップ方法
GB2333864B (en) * 1998-01-28 2003-05-07 Ibm Distribution of software updates via a computer network
US6367072B1 (en) * 1998-03-12 2002-04-02 Applica Systems, Inc. Apparatus and method for identifying and modifying computer operating system components
US6161051A (en) * 1998-05-08 2000-12-12 Rockwell Technologies, Llc System, method and article of manufacture for utilizing external models for enterprise wide control
US6381742B2 (en) * 1998-06-19 2002-04-30 Microsoft Corporation Software package management
US7073172B2 (en) * 1998-09-21 2006-07-04 Microsoft Corporation On demand patching of applications via software implementation installer mechanism
JP2000112721A (ja) * 1998-09-30 2000-04-21 Pfu Ltd 機能モジュール特定装置および記録媒体
US6029174A (en) * 1998-10-31 2000-02-22 M/A/R/C Inc. Apparatus and system for an adaptive data management architecture
US6236909B1 (en) * 1998-12-28 2001-05-22 International Business Machines Corporation Method for representing automotive device functionality and software services to applications using JavaBeans
US6427236B1 (en) * 1999-03-03 2002-07-30 Microsoft Corporation Method for installing a patch based on patch criticality and software execution format
US6434744B1 (en) * 1999-03-03 2002-08-13 Microsoft Corporation System and method for patching an installed application program
US6493871B1 (en) * 1999-09-16 2002-12-10 Microsoft Corporation Method and system for downloading updates for software installation
CN1957328A (zh) 2000-03-20 2007-05-02 凤凰技术有限公司 展示方案组件的逻辑视图、便于其选择以及在编译之前的信号遗漏链接的软件开发系统
US7000230B1 (en) 2000-06-21 2006-02-14 Microsoft Corporation Network-based software extensions
US7735080B2 (en) * 2001-08-30 2010-06-08 International Business Machines Corporation Integrated system and method for the management of a complete end-to-end software delivery process
US7093132B2 (en) * 2001-09-20 2006-08-15 International Business Machines Corporation Method and apparatus for protecting ongoing system integrity of a software product using digital signatures
US7133874B2 (en) * 2001-12-13 2006-11-07 Microsoft Corporation Prototyping model for components of a software program
US7428559B2 (en) * 2001-12-13 2008-09-23 Microsoft Corporation Versioning model for software program development
US20030121024A1 (en) * 2001-12-13 2003-06-26 Microsoft Corporation System and method for building a runtime image from components of a software program
US7228541B2 (en) * 2003-01-17 2007-06-05 National Instruments Corporation Creation of application system installer

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6038399A (en) * 1997-07-22 2000-03-14 Compaq Computer Corporation Computer manufacturing architecture with two data-loading processes
US6487713B1 (en) * 1999-09-24 2002-11-26 Phoenix Technologies Ltd. Software development system that presents a logical view of project components, facilitates their selection, and signals missing links prior to compilation
CN1357822A (zh) * 2000-10-27 2002-07-10 株式会社东芝 应用软件开发系统及其方法、应用软件开发程序、以及应用软件生成方法
CN1410881A (zh) * 2001-09-28 2003-04-16 株式会社东芝 通用的软件开发支持系统

Also Published As

Publication number Publication date
US20040093593A1 (en) 2004-05-13
US7562346B2 (en) 2009-07-14
JP2005078650A (ja) 2005-03-24
KR101087439B1 (ko) 2011-11-25
KR20050024227A (ko) 2005-03-10
EP1521172A3 (en) 2007-07-04
CN1617097A (zh) 2005-05-18
EP1521172A2 (en) 2005-04-06

Similar Documents

Publication Publication Date Title
CN100426223C (zh) 从多个文件中构建软件产品的方法
CN100580667C (zh) 利用表单类型生成表单的方法和装置
Deitel Java how to program
US7433887B2 (en) Method and apparatus for metadata driven business logic processing
US10198425B2 (en) Methods and apparatus for reusing report design components and templates
US8661406B2 (en) Method and system for software delivery
CN102754072B (zh) 规定用户界面元素
US7398524B2 (en) Apparatus and method for subtractive installation
CN1704900B (zh) 基于具有完全灵活性的自动化生成用户界面的方法和装置
CN100429619C (zh) 用于给软件产品打上标记的方法和系统
US7505991B2 (en) Semantic model development and deployment
US20070240154A1 (en) System and method for software integration and factory deployment
US20110289407A1 (en) Font recommendation engine
US20050177828A1 (en) Restore media build automation
JP2023182817A (ja) ウェブサイト構築システム用の構成可能なアプリケーションの作成および処理のためのシステムおよび方法
Mainkar Expert Android Programming: Master skills to build enterprise grade Android applications
Lott Advanced actionscript 3 with design patterns
Vohra Pro MongoDB Development
US11941386B2 (en) Flexible provision of multi-application content
Paz Pro Telerik ASP. NET and Silverlight Controls: Master Telerik Controls for Advanced ASP. NET and Silverlight Projects
Patel Sitecore Cookbook for Developers
Lewis The Borrowing Update System: current status, future plans andtechnical elements
Japikse et al. Building Web Applications with .NET Core 2.1 and JavaScript
Wright et al. Enhancing Apps with SharePoint Services
Bakir et al. The Internet of Things with Swi for iOS

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: 20081015

Termination date: 20200813

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