CN102855131A - 用于软件配置管理的装置和方法 - Google Patents

用于软件配置管理的装置和方法 Download PDF

Info

Publication number
CN102855131A
CN102855131A CN2011101807137A CN201110180713A CN102855131A CN 102855131 A CN102855131 A CN 102855131A CN 2011101807137 A CN2011101807137 A CN 2011101807137A CN 201110180713 A CN201110180713 A CN 201110180713A CN 102855131 A CN102855131 A CN 102855131A
Authority
CN
China
Prior art keywords
goods
correlation information
information
version
correlation
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
CN2011101807137A
Other languages
English (en)
Other versions
CN102855131B (zh
Inventor
凡思彬
邵锦帆
韩红亮
张连平
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to CN201110180713.7A priority Critical patent/CN102855131B/zh
Priority to US13/468,128 priority patent/US20130007709A1/en
Publication of CN102855131A publication Critical patent/CN102855131A/zh
Application granted granted Critical
Publication of CN102855131B publication Critical patent/CN102855131B/zh
Active 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/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Abstract

提供了一种用于软件配置管理的装置和方法,所述装置包括:信息生成单元,配置为生成与制品对应的相关性信息;版本生成单元,配置为,响应于所述相关性信息的生成,为该相关性信息生成与制品对应的版本信息;信息更新单元,配置为,响应于所述制品的更新,更新与该制品对应的相关性信息;以及版本更新单元,配置为,响应于所述相关性信息的更新,为更新的相关性信息赋予新的版本信息,使该新的版本信息对应于已更新的制品的版本信息。所述方法对应于上述装置。利用本发明的装置和方法,可以将制品的相关性信息以版本的形式存储和管理,提高软件开发过程中的管理效率。

Description

用于软件配置管理的装置和方法
技术领域
本发明涉及软件工程领域,更具体而言,涉及用于进行软件配置管理的装置和方法。
背景技术
在软件工程领域中,为了完成一个软件项目的开发,开发人员往往要对程序代码进行多次修改和变更才能确定软件的最终版本。此外,对于较大的软件项目来说,通常会将软件项目中相对独立的功能特性分配到项目团队中的多个成员进行并行开发,也就是每个开发人员针对自己负责的功能特性进行开发和修改,然后项目管理者对各个开发人员开发的功能特性进行合并,由此协作完成一个软件项目。在这样的软件开发过程中,由于多个开发人员对软件不同功能特性进行多次变更,这样的变更很容易造成项目中软件开发人员之间的混乱,因此需要专业的工具来进行软件开发的管理。
软件配置管理(Software Configuration Management,SCM)是在软件开发过程中对软件变更进行标识、组织和控制的技术。具体地,SCM的主要功能包括版本控制、变更控制、状态报告等。
版本控制是SCM的核心功能。在该功能下,所有置于配置库中的元素都会被自动赋以版本的标识,并保证版本命名的唯一性。版本在生成过程中,依照设定的使用模型自动分支、演进。也就是说,一旦检入到配置库中,软件开发过程中产生的任何制品(artifact)(包含计算机程序源文件、程序的描述文档和其他数据)都会自动获得唯一的版本标识。对制品进行的任何变更会按照演进的版本标识进行索引和管理。
在对各个制品做出了识别,并对其进行了版本管理之后,如何保证它们在开发过程中处于受控的状态,并在任何情况下都能迅速恢复到任一历史状态成为SCM的另一重要任务。这就要进行变更控制。变更控制的核心可以理解为基线的建立和不断推进的过程。根据IEEE的定义,“基线”是指一个已经被正式评审和批准的规格或产品,它因此作为进一步开发的基础,并且必须通过正式的变更流程来变更。因此,对于配置库中的各个基线控制项,应该根据其基线的位置和状态来设置相应的访问权限。一般来说,基线版本之前的各个版本都会处于被锁定的状态。如需要对它们进行变更,则通过审核访问权限、测试新基线、审核制品变化等流程来对这样的变更进行控制。
此外,SCM还包括状态报告的功能,也就是,根据制品操作数据库中的记录来报告软件开发活动的进展情况。尤其是在发生变更的情况下,SCM需要将所发生的变更报告给有关人员。
通过SCM的上述功能,以版本的形式对软件开发过程进行追踪和管理,由此减少错误,提高效率。常用的SCM工具包括ClearCase,CVS,Endevor,RTCz等。
另一方面,在软件开发过程中,开发人员生成的软件制品之间通常存在紧密关联,例如调用和被调用关系。当开发人员修改一段源代码,使得一个制品发生变更时,与此制品相关联的其他制品也必须进行相应的修改以使得软件保持一致性。为此,就要进行软件制品的影响分析(ImpactAnalysis,IA)来获得制品之间的相关性(dependency)信息,识别出代码改变的潜在后果。进行上述影响分析的工具称为IA工具。一般地,在软件开发过程中,开发人员需要在制品发生改变之前首先进行影响分析。
如上所述,SCM工具用于管理软件的改变,而IA工具用于管理改变的后果,这两种工具具有紧密的关联。许多SCM产品也提供了IA功能。总体来说,IA功能主要通过以下两者途径来提供:中央IA库和专有IA库。
图1A示出现有技术中中央IA库的架构。对于中央IA库来说,IA相关性数据基于特定分支的基线而建立,并周期性地进行更新。所有开发人员和其他用户,例如图1中的用户1到用户n,都使用中央IA库来查询相关性信息。然而,该方案的不足在于,由于开发人员可以在其自己的分支中对产品进行修改,而这样的修改却不能即时反映在中央IA库中,因此IA数据并不是对于所有用户都是最新的和准确的。此外,由于中央IA库基于特定基线而建立,如果用户工作于其他基线,IA数据不再准确。
图1B示出现有技术中专有IA库的架构。如图所示,在专有IA库的方案中,所有用户构建自己的IA库,用于存储相关性数据。该方案的不足在于,首先,IA数据的构建比较缓慢,特别是在源文件较多的情况下;此外,所有用户都需要构建自己的IA相关性数据,这意味着大量的重复劳动和资源浪费。
此外,现有IA工具还存在不能复原IA数据的问题。例如,当软件产品从版本1更新到版本2时,随着基线的推进,IA工具也对IA数据进行更新,以提供当前版本2下各个制品之间的相关性信息。如果此时管理人员发现版本2存在一定问题,想要恢复到版本1,由于SCM工具将各个软件制品按照版本进行管理,因此,软件产品可以很容易地恢复到期望的版本。然而,IA工具在对数据进行更新之后无法保存之前的数据,也就无法恢复到之前版本下的相关性信息,只能重新对版本1的制品进行分析来再次获得IA数据。
因此,如上所述,现有IA工具存在诸多不足,有待进行改进。
发明内容
鉴于以上提出的问题,提出本发明,旨在提供用于软件配置管理的装置和方法,用以解决至少一个现有技术中存在的问题。
根据本发明一个方面,提供一种用于软件配置管理的装置,包括:信息生成单元,配置为生成与制品对应的相关性信息;版本生成单元,配置为,响应于所述相关性信息的生成,为该相关性信息生成与制品对应的版本信息;信息更新单元,配置为,响应于所述制品的更新,更新与该制品对应的相关性信息;以及版本更新单元,配置为,响应于所述相关性信息的更新,为更新的相关性信息赋予新的版本信息,使该新的版本信息对应于已更新的制品的版本信息。
根据本发明另一方面,提供一种用于软件配置管理的方法,包括:生成与制品对应的相关性信息;响应于所述相关性信息的生成,为该相关性信息生成与制品对应的版本信息;响应于所述制品的更新,更新与该制品对应的相关性信息;以及响应于所述相关性信息的更新,为更新的相关性信息赋予新的版本信息,使该新的版本信息对应于已更新的制品的版本信息。
通过本发明实施例的装置和方法,可以将用于进行IA分析的相关性信息以版本的形式进行存储和管理,从而提高软件开发过程的管理效率。
附图说明
图1A示出现有技术中中央IA库的架构;
图1B示出现有技术中专有IA库的架构;
图2示出根据本发明一个实施例的用于软件配置管理的装置的框图;
图3示出根据本发明一个实施例的生成相关性信息的例子;
图4示出根据本发明一个实施例的信息更新单元的子结构;
图5示出根据本发明一个实施例的嵌套查询的示意图;
图6示出根据本发明一个实施例的用于软件配置管理的方法的流程图;以及
图7示出了适于用来实现本发明实施方式的示例性计算系统100的框图。
具体实施方式
下面结合具体例子描述本发明的实施方式。应该理解,出于说明目的而描述的例子不应作为对本发明实质范围的限制。
下面对本发明的具体实施方式进行详细描述。所属技术领域的技术人员知道,本发明的多个方面可以体现为系统、方法或计算机程序产品。因此,本发明的多个方面可以具体实现为以下形式,即,可以是完全的硬件、完全的软件(包括固件、驻留软件、微代码等)、或者本文一般称为“电路”、“模块”或“系统”的软件部分与硬件部分的组合。此外,本发明的多个方面还可以采取体现在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可用的程序码。
可以使用一个或多个计算机可读的介质的任何组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电的、磁的、光的、电磁的、红外线的、或半导体的系统、装置、器件或任何以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括以下:有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任何合适的组合。在本文件的语境中,计算机可读存储介质可以是任何包含或存储程序的有形的介质,该程序被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可包括在基带中或者作为载波一部分传播的、其中体现计算机可读的程序码的传播的数据信号。这种传播的信号可以采用多种形式,包括——但不限于——电磁信号、光信号或任何以上合适的组合。计算机可读的信号介质可以是并非为计算机可读存储介质、但是能发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序的任何计算机可读介质。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者任何合适的上述组合。
用于执行本发明的操作的计算机程序码,可以以一种或多种程序设计语言的任何组合来编写,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++之类,还包括常规的过程式程序设计语言-诸如“C”程序设计语言或类似的程序设计语言。程序码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为一个独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通过因特网)连接到外部计算机。
以下参照按照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的多个方面。要明白的是,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得通过计算机或其它可编程数据处理装置执行的这些指令,产生实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能指令计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令产生一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品。
也可以把计算机程序指令加载到计算机或其它可编程数据处理装置上,使得在计算机或其它可编程数据处理装置上执行一系列操作步骤,以产生计算机实现的过程,从而在计算机或其它可编程装置上执行的指令就提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
下面参照附图,结合具体实施例对本发明进行描述。这样的描述仅仅出于说明目的,而不意图对本发明的范围进行限制。
在本发明的多个实施例中,将IA功能引入并集成到软件配置管理SCM工具中,使得IA数据如同软件开发过程中的制品一样,也被版本化地存储和管理。上述制品包含软件开发过程中产生的各种产物,例如程序源文件、模型、描述文件等。只要一个制品与其他制品之间存在关联,该制品的改变有可能引起其他制品的改变,就可以对这样的制品实施本发明实施例的方案。
图2示出根据本发明一个实施例的用于软件配置管理的装置的框图。如图所示,SCM装置20包括信息生成单元22,配置为生成与制品对应的相关性信息;版本生成单元24,配置为,响应于所述相关性信息的生成,为该相关性信息生成与制品对应的版本信息;信息更新单元26,配置为,响应于所述制品的更新,更新与该制品对应的相关性信息;以及版本更新单元28,配置为,响应于所述相关性信息的更新,为更新的相关性信息赋予新的版本信息,使该新的版本信息对应于已更新的制品的版本信息。
具体地,信息生成单元22用于生成与初始制品对应的初始相关性信息。在利用SCM工具进行软件开发的典型过程中,开发人员会将初始制品提交给管理人员,由管理人员审核之后存储到SCM装置的特定存储库中,也就是在存储库中创建初始制品。在一个实施例中,响应于上述初始制品的创建,信息生成单元22自动分析所创建的制品,从而生成对应的相关性信息。或者,在另一个实施例中,信息生成单元22在管理人员或用户的触发下,开始分析特定制品,从而生成对应的相关性信息。
信息生成单元22可以以多种方式生成相关性信息。在一个实施例中,信息生成单元22调用现有IA工具中的IA数据生成引擎,由此生成相关性信息。在另一个实施例中,信息生成单元22包含专有的生成模块,由该模块生成与特定制品对应的相关性信息。相关性信息可以包含多方面的内容,包括但不限于以下中的一项或多项:该制品引用了哪些文件;制品引用了哪些变量;制品调用了哪些函数;哪些制品引用了该制品;哪些制品引用了该制品中的变量,等等。
以下结合源文件的例子描述生成相关性信息的具体方式。具体地,在一个例子中,信息生成单元22通过静态扫描生成相关性信息。在静态扫描方式中,信息生成单元22扫描静态源文件中的源代码,通过对源代码进行分析来获取该源文件与其他制品的相关性信息。图3示出根据本发明一个实施例的生成相关性信息的例子。如图3所示,源文件在300部分将该文件命名为file1,在310部分引用了两个文件header1和header2,在320部分定义了函数func1。针对这样的源文件,信息生成单元22可以扫描各个部分的源代码,通过对标识性代码的识别和分析,可以获得文件之间的相关性数据。例如,通过对310部分的识别和分析,可以获得340部分所示的相关性信息,其中包含了源文件引用的文件数目(count=“2”),所引用的文件的路径(file=”/include/header1”/,file=”/include/header2”/)等;通过对320部分的识别和分析,可以获得所定义的函数func1与其他文件的相关性信息,例如,如360部分所示,func1调用函数的数目为1(count=”1”),所调用的函数名称为func2,所调用的函数的来源为file2,以及,如370部分所示,func1被调用的次数为0(count=“0”)。
在另一个例子中,信息生成单元22通过程序编译来生成相关性信息。本领域技术人员可以理解,在程序编译过程中,编译器会对程序代码进行扫描、分析、编译和转化。通过在程序编译时添加特定指令,可以使得编译器提取出与文件和函数的引用、调用相关的数据。信息生成单元22可以捕获编译器产生的上述数据,并将其存储作为相关性信息。
在另一个例子中,信息生成单元22通过动态扫描来生成相关性信息。具体地,信息生成单元22可以在程序运行期间,从运行时环境中动态捕获该程序对其他文件的引用,由此生成相关性信息。
以上示例了在具体例子中信息生成单元22生成相关性信息的方式,然而,可以理解,这样的示例并不是限制性的。本领域技术人员在实际实践中可以根据制品的类型和分析需要采用适当方式来生成相关性信息。
对于生成的相关性信息,信息生成单元22可以将其存储为多种形式。在图3所示的例子中,信息生成单元22获得XML格式的相关性信息。在另一个具体例子中,信息生成单元22可以将相关性数据以数据库表格的形式存储,例如,用表格的每一行存储一条引用/被引用或调用/被调用关系。在其他例子中,信息生成单元22可以将相关性数据存储为其他格式,例如文本格式等。在一个实施例中,信息生成单元22将相关性信息存储为一个单独文件,例如上述的XML文件、数据库表格文件、文本文件等。在另一个实施例中,信息生成单元22所生成的相关性信息并不作为一个单独文件进行存储,而是作为辅助信息或描述信息附加到初始制品文件。由此,用户可以通过查看制品文件的属性等方式查阅到该相关性信息。
如上所述,信息生成单元22基于对初始制品文件的分析生成初始相关性信息。在此基础上,版本生成单元24为如此生成的初始相关性信息添加版本信息。
如背景技术部分所述,SCM装置对于存入其中的制品进行版本化管理。为此,SCM装置20如常规SCM工具一样,会包含一个版本管理模块,该模块利用特定算法为各个制品生成版本信息。由此,当在SCM装置20的存储库中创建初始制品文件时,上述版本管理模块为初始创建的制品文件建立初始版本信息,例如版本号v0。一旦信息生成单元22生成与该v0版本的制品文件对应的相关性信息,本发明实施例的版本生成单元24就为该相关性信息也创建版本信息,并使得该版本信息与制品文件的版本号v0相对应。
在一个实施例中,版本生成单元24通过复用上述版本管理模块来形成。也就是说,可以基于现有的版本管理模块进行一定修改,使得版本管理模块将信息生成单元24生成的初始相关性信息也视为一个新创建的制品,由此类似地按照该模块已有的算法,也就是按照普通制品的版本信息的创建方式,为该初始相关性信息建立版本信息。在这种情况下,上述修改的版本管理模块就可以作用为版本生成单元24。
在另一个实施例中,版本生成单元24独立于上述版本管理模块实现版本信息的生成。具体地,版本生成单元24可以采用与版本管理模块不同的方式,来为初始相关性信息生成初始版本信息。在一个具体例子中,版本生成单元24直接参照相关性信息所基于的制品文件的版本号v0,将同样的版本号赋以对应的相关性信息。在另一个例子中,版本生成单元24在制品文件版本号v0的基础上添加特定后缀,例如v0-0,由此为相关性信息生成与制品文件对应的版本信息。或者,在一个例子中,版本生成单元24采用与制品文件不同的算法为相关性信息生成版本信息。此外,本领域技术人员在阅读本说明书后还可以想到其他的版本信息生成方式。
无论是复用已有的模块还是作为新的单元,无论采用何种方式和算法,所生成的版本信息应至少满足以下条件:首先,每项相关性信息应具有其独有的版本信息,并且,相关性信息的版本信息和对应的制品文件的版本信息之间存在关联和对应,关联和对应的规则可以预先规定。也就是说,如果相关性信息的版本信息与制品文件的版本信息相同(例如,由于复用已有的模块),那么它们之间的对应关系很容易确定;如果上述两个版本信息并不相同,那么就要求,根据预先规定的对应规则,能够从制品文件的版本信息确定出对应的相关性信息的版本信息。
因此,通过以上描述的信息生成单元22和版本生成单元24,可以在SCM装置20中为初始制品文件创建初始的相关性信息,并为该初始相关性信息赋以初始版本信息。不过,软件制品并不会一直停留在初始版本不变,而是会经由开发人员和管理人员不断地修改和更新,这也正是SCM管理的重要任务所在。那么,在引入了相关性信息的情况下,当软件制品发生变化和更新时,SCM装置20还应对相关性信息及其变更也进行类似的管理。
为此,SCM装置20包括信息更新单元26,配置为响应于上述制品的更新,更新与该制品对应的相关性信息。在一个实施例中,SCM装置20为用户提供一个交互接口,例如一个选项,当用户完成一个软件制品的更新时,可以通过点击该选项来确认或保存该更新。通过检测对该交互接口的操作,信息更新单元26可以获知制品的更新,从而更新对应的相关性信息。在另一个实施例中,信息更新单元26一旦检测到制品的版本信息的改变,就更新与该制品对应的相关性信息。可以理解,信息更新单元26也可以通过其他方式检测或者获知制品的更新,例如定期扫描制品、接收变更报告等。一旦SCM装置20中存储的制品进行了更新,信息更新单元26就被触发来更新相应的相关性信息。
信息更新单元26可以采用多种方式来更新相关性信息。在一个实施例中,信息更新单元26重新分析已更新的制品文件,再次生成相关性信息,将其作为更新的相关性信息。对已更新的制品文件的分析可采用如前所述的任意方式,例如静态扫描、程序编译等,该方式可以与前述的信息生成单元22采用的方式相同或不同。在另一种实施例中,信息更新单元26获得更新前后的制品文件的差异部分,基于该差异部分对原有的相关性信息进行修改,由此得到更新的相关性信息。对于更新的相关性信息,信息更新单元26可以将其全部内容存储为一个独立文件,也可以仅存储其与原始相关性信息相比的差异部分。
一旦信息更新单元26产生了更新的相关性信息,版本更新单元28就更新该相关性信息的版本信息,使得更新的版本信息对应于已更新的制品的版本信息。具体地,版本更新单元28可以采用与版本生成单元24类似的方式,为更新的相关性信息生成新的版本信息。如前所述,在更新之前,相关性信息的版本信息和对应的制品文件的版本信息之间按照一定规则存在关联和对应;只要版本更新单元28对版本信息的更新仍然遵从上述规则,就可以使得更新后的版本信息对应于已更新的制品文件的版本信息,也就是保持两个版本信息的对应关系。
在一个实施例中,信息更新单元26和版本更新单元28通过复用现有SCM装置中已有的检出(checkout)和检入(checkin)机制来实现相关性信息及其版本信息的更新。具体地,如本领域技术人员所知,SCM装置20中的软件制品通常通过检出和检入过程来完成更新。当用户想要修改一个软件制品时,他首先通过SCM装置20对其权限的核查,而将该制品从存储库中检出。一旦检出,SCM装置20会修改该制品的状态标记,例如将其标记为更新中。在检出之后,用户可以对上述制品进行修改。在完成修改之后,用户需要通过检入的步骤来将更新的制品提交到SCM装置20的存储库中。一旦将更新的制品检入到存储库,SCM装置20会将该制品的状态标记进行修改,例如将其标记为只读。并且,响应于该检入动作,SCM装置20中的版本管理模块就会认定制品进行了更新,因此会对该制品的版本信息进行更新,例如从初始的版本号v0升级为v1。
与此对应地,在一个实施例中,信息更新单元26包括与上述检出检入相关的子模块。图4示出根据本发明一个实施例的信息更新单元的子结构。如图所示,信息更新单元26进一步包括检出模块261,更新模块263和检入模块265。检出模块261配置为,响应于制品的检出,将该制品对应的相关性信息检出;更新模块263配置为,基于更新的制品,对相关性信息进行更新;检入模块265配置为,响应于更新的制品的检入,将更新的相关性信息检入。具体地,检出模块261使得相关性信息与对应的制品一起被检出,从而使得相关性信息的状态也被SCM装置20识别为更新中。接着,响应于制品的更新(例如通过接收用户对特定交互接口的操作),更新模块263对相关性信息进行更新,更新方式如前所述。然后,一旦用户将更新的制品检入到SCM装置20,检入模块265就将与该更新的制品对应的更新的相关性信息同步检入到装置20中。或者,在另一个实施例中,更新模块263和检入模块265可以组合一个更新检入模块,从而将已更新制品的检入同时作为对相关性信息进行更新的触发条件。也就是说,利用该更新检入模块,一旦检测到已更新制品的检入,就基于该已更新制品来更新对应的相关性信息,并将更新的相关性信息检入到SCM装置20。
在信息更新单元26引入相关性信息的检出和检入功能的基础上,版本更新单元28就可以完全复用SCM装置20中已有的版本管理模块。随着相关性信息的检入,版本管理模块如对待其他软件制品一样,响应于该检入动作而更新检入文件的版本信息。也就是说,版本管理模块按照一般制品的版本信息更新方式相应地更新相关性信息的版本信息。由此,已有的版本管理模块作用为版本更新单元28,自动地为更新的相关性信息赋予了新的版本信息。
通过以上各个实施例描述的SCM装置20,用于进行IA分析的相关性信息也以版本的形式进行存储和管理。并且,每当SCM存储库中的制品发生了改变,其对应的相关性信息也会得到更新,并且相关性信息的版本也随之变化,以与制品的版本信息保持对应。这使得开发人员和管理人员能够获得任一版本的相关性信息。此外,在并行协作开发环境下,上述装置20很好地实现了相关性信息的复用。具体地,在上述开发环境下,每个开发人员基于项目的主干创建自己的专有分支。在创建了分支之后,该分支下的制品和相应的相关性信息都可以从主干继承获得。由此,主干的相关性信息可以在各个开发人员之间共享和复用。并且,在开发人员更新各个软件制品时,对应的相关性信息也得到更新。当开发人员将修改的制品从其专有分支提交到主干时,相关性信息也被合并并存储到对应的库中,使得在不改变已有的并行开发体系架构的情况下,在SCM装置中维持更新而准确的相关性信息。
为了使得SCM装置20更好地与用户交互,在一个实施例中,SCM装置20还包括查询单元,用于根据用户请求,对制品的相关性信息进行查询。具体地,查询单元可以提供一个接口,用于接收用户的查询请求,并将查询结果通过该接口返回给用户。
在一个实施例中,用户的请求可以是直接查询请求,例如请求查阅特定版本的制品所对应的相关性信息,或者直接请求查阅特定版本的相关性信息。这时,查询单元基于制品名称和/或版本信息在存储库中进行检索,从而获得所请求的相关性信息,并将其通过接口呈现给用户。
在一个实施例中,用户的请求可以是嵌套查询请求,例如请求查询受特定制品影响的所有其他制品,包括直接影响和间接影响。此时,查询单元首先检索并分析所请求的特定制品的相关性信息,从中可以获知该制品以及其中的变量和函数被哪些制品所引用或调用。对于每个被确定为引用或调用上述特定制品的其他制品,查询单元进而对该制品的相关性信息进行检索和分析,继续获得受该制品直接影响的制品,直到所查阅的制品没有被其他任何制品引用。图5示出根据本发明一个实施例的嵌套查询的示意图。如图5所示,文件1中定义了函数func1,func1调用了文件2中的函数func2;通过分析文件2可以看到,文件2中的函数func2又调用了文件3中的函数func3。图5中的实线箭头400,410示出了以上的调用关系。这样的调用关系分别记录在文件1-3各自的相关性信息中。如果用户想要知道文件3的变更会影响哪些文件,那么就需要沿着与上述实线所示方向相反的虚线箭头方向进行回溯,从而确定受到文件3影响的其他文件。具体地,查询单元通过检索并分析文件3的相关性信息可以获知,文件3中的func3被文件2所调用,于是查询单元进而检索并分析文件2的相关性信息。当查询过程进行到文件1时,由于发现文件1没有被其他文件引用,查询单元就可以停止查询和检索,并将以上分析得到的结果返回给用户。尽管在以上例子中,直到追溯到“根”制品,也就是没有被任何其他制品引用的制品,查询过程才停止,但是在一个实施例中,查询单元还可以接受用户对嵌套查询的查询步数的设定,从而使得查询过程终止于特定引用层级处。
通过以上描述的SCM装置20,相关性信息被版本化地存储和管理,并可以方便地进行检索和查询。由此,开发人员和管理人员可以方便地获得更新、准确、可恢复的相关性信息。
基于同一发明构思,本发明还提供了进行软件配置管理的方法。图6示出根据本发明一个实施例的用于软件配置管理的方法的流程图。如图所示,用于SCM的方法包括步骤62,用于生成与制品对应的相关性信息;步骤64,在该步骤中,响应于所述相关性信息的生成,为该相关性信息生成与制品对应的版本信息;步骤66,在该步骤中,响应于所述制品的更新,更新与该制品对应的相关性信息;以及步骤68,在该步骤中,响应于所述相关性信息的更新,为更新的相关性信息赋予新的版本信息,使该新的版本信息对应于已更新的制品的版本信息。
在一个实施例中,步骤66进一步包括检出步骤,更新步骤和检入步骤。在检出步骤中,响应于制品的检出,将该制品对应的相关性信息检出;在更新步骤中,基于更新的制品,对相关性信息进行更新;在检入步骤中,响应于更新的制品的检入,将更新的相关性信息检入。或者,在另一个实施例中,更新步骤和检入模块可以组合一个更新检入步骤,在该步骤中,一旦检测到已更新制品的检入,就基于该已更新制品来更新对应的相关性信息,并将更新的相关性信息检入。
在一个实施例中,用于SCM的方法还包括查询步骤,用于根据用户请求,对制品的相关性信息进行查询。用户的请求可以是直接查询请求,也可以是嵌套查询请求。在嵌套查询的情况下,查询步骤包括,检索并分析所请求的特定制品的相关性信息,从中获得引用或调用该特定制品的其他制品;对于所述其他制品的每一个,检索并分析其相关性信息,直到所获得的制品没有被其他任何制品引用。
用于SCM的方法的具体实现方式可以参照上述对SCM装置20的描述,在此不再赘述。通过以上方法,可以将软件开发过程中与制品相关联的相关性信息进行版本化存储和管理,便于开发人员和管理人员的获取和分析。
以上所述的SCM装置20和用于SCM的方法可以利用计算系统来实现。图7示出了适于用来实现本发明实施方式的示例性计算系统100的框图。如所示,计算机系统100可以包括:CPU(中央处理单元)101、RAM(随机存取存储器)102、ROM(只读存储器)103、系统总线104、硬盘控制器105、键盘控制器106、串行接口控制器107、并行接口控制器108、显示控制器109、硬盘110、键盘111、串行外部设备112、并行外部设备113和显示器114。在这些设备中,与系统总线104耦合的有CPU 101、RAM 102、ROM 103、硬盘控制器105、键盘控制器106、串行控制器107、并行控制器108和显示控制器109。硬盘110与硬盘控制器105耦合,键盘111与键盘控制器106耦合,串行外部设备112与串行接口控制器107耦合,并行外部设备113与并行接口控制器108耦合,以及显示器114与显示控制器109耦合。应当理解,图10所述的结构框图仅仅为了示例的目的而示出的,而不是对本发明范围的限制。在某些情况下,可以根据具体情况而增加或者减少某些设备。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,所述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
虽然以上结合具体实施例,对本发明的各个装置和方法进行了详细描述,但本发明并不限于此。本领域普通技术人员能够在说明书教导之下对本发明进行多种变换、替换和修改而不偏离本发明的精神和范围。应该理解,所有这样的变化、替换、修改仍然落入本发明的保护范围之内。本发明的保护范围由所附权利要求来限定。

Claims (20)

1.一种用于软件配置管理的装置,包括:
信息生成单元,配置为生成与制品对应的相关性信息;
版本生成单元,配置为,响应于所述相关性信息的生成,为该相关性信息生成与制品对应的版本信息;
信息更新单元,配置为,响应于所述制品的更新,更新与该制品对应的相关性信息;以及
版本更新单元,配置为,响应于所述相关性信息的更新,为更新的相关性信息赋予新的版本信息,使该新的版本信息对应于已更新的制品的版本信息。
2.根据权利要求1所述的装置,其中所述信息生成单元配置为,通过以下方式中的一项或多项来生成相关性信息:
静态扫描;
程序编译;以及
动态扫描。
3.根据权利要求1或2所述的装置,其中所述版本生成单元配置为,将生成的相关性信息视为一种制品,按照制品的版本信息的创建方式为相关性信息生成版本信息。
4.根据权利要求1或2所述的装置,其中所述版本生成单元配置为,采用与制品的版本信息的创建方式不同的方式为所述相关性信息生成版本信息。
5.根据权利要求1或2所述的装置,其中所述信息更新单元配置为,通过以下方式中的一项或多项检测所述制品的更新:
检测对交互接口的操作;
检测所述制品的版本信息的改变;
定期扫描制品;
接收变更报告。
6.根据权利要求1或2所述的装置,其中所述信息更新单元配置为,重新分析已更新的制品,再次生成相关性信息作为更新的相关性信息。
7.根据权利要求1或2所述的装置,其中所述信息更新单元配置为,获得更新前后的制品的差异部分,基于该差异部分对相关性信息进行修改,由此得到更新的相关性信息。
8.根据权利要求1所述的装置,其中所述信息更新单元包括:
检出模块,配置为,响应于制品的检出,将该制品对应的相关性信息检出;
更新模块,配置为,基于更新的制品,对相关性信息进行更新;以及
检入模块,配置为,响应于更新的制品的检入,将更新的相关性信息检入。
9.根据权利要求1所述的装置,其中所述信息更新单元包括:
检出模块,配置为,响应于制品的检出,将该制品对应的相关性信息检出;以及
更新检入模块,配置为,响应于更新的制品的检入,基于该更新的制品来更新对应的相关性信息,并将更新的相关性信息检入。
10.根据权利要求8或9所述的装置,其中所述版本更新单元配置为,响应于相关性信息的检入,按照制品的版本信息更新方式相应地更新所述相关性信息的版本信息。
11.根据权利要求1或2所述的装置,还包括查询单元,配置为根据用户请求,对制品的相关性信息进行查询,所述用户请求包括直接查询请求和/或嵌套查询请求。
12.一种用于软件配置管理的方法,包括:
生成与制品对应的相关性信息;
响应于所述相关性信息的生成,为该相关性信息生成与制品对应的版本信息;
响应于所述制品的更新,更新与该制品对应的相关性信息;以及
响应于所述相关性信息的更新,为更新的相关性信息赋予新的版本信息,使该新的版本信息对应于已更新的制品的版本信息。
13.根据权利要求12所述的方法,其中所述生成与制品对应的相关性信息包括,通过以下方式中的一项或多项来生成相关性信息:
静态扫描;
程序编译;以及
动态扫描。
14.根据权利要求12或13所述的方法,其中响应于所述制品的更新,更新与该制品对应的相关性信息包括,通过以下方式中的一项或多项检测所述制品的更新:
检测对交互接口的操作;
检测所述制品的版本信息的改变;
定期扫描制品;
接收变更报告。
15.根据权利要求12或13所述的方法,其中所述更新与制品对应的相关性信息包括,重新分析已更新的制品,再次生成相关性信息作为更新的相关性信息。
16.根据权利要求12或13所述的方法,其中所述更新与制品对应的相关性信息包括,获得更新前后的制品的差异部分,基于该差异部分对相关性信息进行修改,由此得到更新的相关性信息。
17.根据权利要求12所述的方法,其中响应于所述制品的更新,更新与该制品对应的相关性信息包括:
响应于制品的检出,将该制品对应的相关性信息检出;
基于更新的制品,对相关性信息进行更新;以及
响应于更新的制品的检入,将更新的相关性信息检入。
18.根据权利要求12所述的方法,其中响应于所述制品的更新,更新与该制品对应的相关性信息包括:
响应于制品的检出,将该制品对应的相关性信息检出;以及
响应于更新的制品的检入,基于该更新的制品来更新对应的相关性信息,并将更新的相关性信息检入。
19.根据权利要求17或18所述的方法,其中为更新的相关性信息赋予新的版本信息包括,响应于相关性信息的检入,按照制品的版本信息更新方式相应地更新所述相关性信息的版本信息。
20.根据权利要求12或13所述的方法,还包括查询步骤,其中根据用户请求,对制品的相关性信息进行查询,所述用户请求包括直接查询请求和/或嵌套查询请求。
CN201110180713.7A 2011-06-30 2011-06-30 用于软件配置管理的装置和方法 Active CN102855131B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201110180713.7A CN102855131B (zh) 2011-06-30 2011-06-30 用于软件配置管理的装置和方法
US13/468,128 US20130007709A1 (en) 2011-06-30 2012-05-10 Software configuration management

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110180713.7A CN102855131B (zh) 2011-06-30 2011-06-30 用于软件配置管理的装置和方法

Publications (2)

Publication Number Publication Date
CN102855131A true CN102855131A (zh) 2013-01-02
CN102855131B CN102855131B (zh) 2016-01-13

Family

ID=47392056

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110180713.7A Active CN102855131B (zh) 2011-06-30 2011-06-30 用于软件配置管理的装置和方法

Country Status (2)

Country Link
US (1) US20130007709A1 (zh)
CN (1) CN102855131B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106990978A (zh) * 2015-11-09 2017-07-28 达索系统美国公司 从产品生命周期管理(plm)系统向源代码管理(scm)系统导出分层数据
CN107678802A (zh) * 2017-10-10 2018-02-09 中国航发控制系统研究所 工具集成自动化的实现和部署方法
CN109298831A (zh) * 2017-07-24 2019-02-01 北京京东尚科信息技术有限公司 信息存储方法和装置
CN110866492A (zh) * 2019-11-13 2020-03-06 广州品唯软件有限公司 一种基线分支的识别方法、装置及计算机系统
US11003439B2 (en) 2018-03-15 2021-05-11 Red Hat Israel, Ltd. Incorporating version control into packaging
CN113467820A (zh) * 2020-03-30 2021-10-01 北京沃东天骏信息技术有限公司 生成配置文件的方法和装置

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014019093A1 (en) * 2012-08-01 2014-02-06 Sherpa Technologies Inc. System and method for managing versions of program assets
US9268560B2 (en) * 2012-08-31 2016-02-23 Google Technology Holdings LLC Displaying dependent files for computer code in a tabbed-application user interface
US10042742B2 (en) * 2013-11-21 2018-08-07 International Business Machines Corporation Selective object testing in a client-server environment
US9569183B2 (en) * 2015-02-25 2017-02-14 Red Hat, Inc. Contract based builder
US9798539B2 (en) * 2015-07-31 2017-10-24 International Business Machines Corporation Comment linkage and display across the review cycle of an artifact
US9772842B2 (en) 2016-01-25 2017-09-26 International Business Machines Corporation Managing change sets
DE102016107797A1 (de) * 2016-04-27 2017-11-02 Dspace Digital Signal Processing And Control Engineering Gmbh Verfahren zur Konfiguration eines zum Testen eines elektronischen Steuergeräts eingerichteten Testgeräts
CN106899750A (zh) * 2016-08-03 2017-06-27 阿里巴巴集团控股有限公司 基于卡片的信息展示方法、信息展示业务的处理方法及装置
CN110888649B (zh) * 2018-09-10 2023-07-04 阿里巴巴集团控股有限公司 应用部署方法、应用基线的创建方法和装置
CN109491701A (zh) * 2018-11-01 2019-03-19 郑州云海信息技术有限公司 一种配置信息恢复方法、系统、设备及计算机存储介质
CN110162322A (zh) * 2019-05-27 2019-08-23 网宿科技股份有限公司 一种升级方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5535393A (en) * 1991-09-20 1996-07-09 Reeve; Christopher L. System for parallel processing that compiles a filed sequence of instructions within an iteration space
US20070143744A1 (en) * 2005-12-20 2007-06-21 International Business Machines Corporation Computer method and apparatus for providing version-aware impact analysis
US7461374B1 (en) * 2003-12-01 2008-12-02 Cisco Technology, Inc. Dynamic installation and activation of software packages in a distributed networking device
US20090007088A1 (en) * 2007-06-27 2009-01-01 International Business Machines Corporation System for the discovery and provisioning of artifacts and composites
WO2009089294A2 (en) * 2008-01-08 2009-07-16 Teamstudio, Inc. Methods and systems for generating software quality index

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6931630B1 (en) * 2000-09-27 2005-08-16 International Business Machines Corporation Method of, system for, and computer program product for providing automatic identification of a computer program code candidate for web deployment or a stored procedure
US8473893B2 (en) * 2008-09-30 2013-06-25 Accurev, Inc. Integration of external software analysis processes with software configuration management applications
US20070203912A1 (en) * 2006-02-28 2007-08-30 Thuve Matthew L Engineering manufacturing analysis system
US8037453B1 (en) * 2006-09-13 2011-10-11 Urbancode, Inc. System and method for continuous software configuration, test and build management
US20100050156A1 (en) * 2008-08-20 2010-02-25 International Business Machines Corporation Using build history information to optimize a software build process
US20110225133A1 (en) * 2010-03-09 2011-09-15 Microsoft Corporation Metadata-aware search engine
US8862563B2 (en) * 2010-05-12 2014-10-14 Microsoft Corporation Getting dependency metadata using statement execution plans
WO2012002968A1 (en) * 2010-07-01 2012-01-05 Hewlett-Packard Development Company, L.P. Migrating artifacts between service-oriented architecture repositories
US8863114B2 (en) * 2010-12-06 2014-10-14 Red Hat, Inc. Managing software packages using a version control system
US8683430B2 (en) * 2011-01-07 2014-03-25 International Business Machines Corporation Synchronizing development code and deployed executable versioning within distributed systems

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5535393A (en) * 1991-09-20 1996-07-09 Reeve; Christopher L. System for parallel processing that compiles a filed sequence of instructions within an iteration space
US7461374B1 (en) * 2003-12-01 2008-12-02 Cisco Technology, Inc. Dynamic installation and activation of software packages in a distributed networking device
US20070143744A1 (en) * 2005-12-20 2007-06-21 International Business Machines Corporation Computer method and apparatus for providing version-aware impact analysis
US20090007088A1 (en) * 2007-06-27 2009-01-01 International Business Machines Corporation System for the discovery and provisioning of artifacts and composites
WO2009089294A2 (en) * 2008-01-08 2009-07-16 Teamstudio, Inc. Methods and systems for generating software quality index

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106990978A (zh) * 2015-11-09 2017-07-28 达索系统美国公司 从产品生命周期管理(plm)系统向源代码管理(scm)系统导出分层数据
CN109298831A (zh) * 2017-07-24 2019-02-01 北京京东尚科信息技术有限公司 信息存储方法和装置
CN109298831B (zh) * 2017-07-24 2021-05-25 北京京东尚科信息技术有限公司 信息存储方法和装置
CN107678802A (zh) * 2017-10-10 2018-02-09 中国航发控制系统研究所 工具集成自动化的实现和部署方法
US11003439B2 (en) 2018-03-15 2021-05-11 Red Hat Israel, Ltd. Incorporating version control into packaging
CN110866492A (zh) * 2019-11-13 2020-03-06 广州品唯软件有限公司 一种基线分支的识别方法、装置及计算机系统
CN110866492B (zh) * 2019-11-13 2022-12-13 广州品唯软件有限公司 一种基线分支的识别方法、装置及计算机系统
CN113467820A (zh) * 2020-03-30 2021-10-01 北京沃东天骏信息技术有限公司 生成配置文件的方法和装置

Also Published As

Publication number Publication date
CN102855131B (zh) 2016-01-13
US20130007709A1 (en) 2013-01-03

Similar Documents

Publication Publication Date Title
CN102855131B (zh) 用于软件配置管理的装置和方法
Szárnyas et al. The Train Benchmark: cross-technology performance evaluation of continuous model queries
Bernstein et al. Model management 2.0: manipulating richer mappings
US9043753B2 (en) System and method for recommending software artifacts
US8874621B1 (en) Dynamic content systems and methods
CN105229601A (zh) 软件构建优化
US10083016B1 (en) Procedurally specifying calculated database fields, and populating them
Kessentini et al. Automated metamodel/model co-evolution: A search-based approach
CN102902529A (zh) 变换的上下文知晓数据源管理
US11611627B2 (en) Action flow fragment management
CN103164334A (zh) 检测web应用自动测试用例中的断裂点的系统和方法
Idowu et al. Asset management in machine learning: State-of-research and state-of-practice
CA2799001A1 (en) Database version management system
US20230086854A1 (en) Dynamically controlling case model structure using case fragments
US10289620B1 (en) Reporting and data governance management
US20160085544A1 (en) Data management system
US20200097260A1 (en) Software application developer tools platform
US8825561B2 (en) Method and system of determining a prioritized list of users related to a given goal
Wu Finding achievable features and constraint conflicts for inconsistent metamodels
Sakizloglou et al. A scalable querying scheme for memory-efficient runtime models with history
US20190147082A1 (en) Reporting and data governance management
Jovanovic et al. Babbleflow: a translator for analytic data flow programs
JP2016133946A (ja) ソースコードレビュー方法及びそのシステム
Regnell et al. A scala embedded DSL for combinatorial optimization in software requirements engineering
Jurčo Data Lineage Analysis Service for Embedded Code

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