CA2637168C - Method and system for version independent software release management - Google Patents

Method and system for version independent software release management Download PDF

Info

Publication number
CA2637168C
CA2637168C CA2637168A CA2637168A CA2637168C CA 2637168 C CA2637168 C CA 2637168C CA 2637168 A CA2637168 A CA 2637168A CA 2637168 A CA2637168 A CA 2637168A CA 2637168 C CA2637168 C CA 2637168C
Authority
CA
Canada
Prior art keywords
version
software component
software
issued
indicator
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.)
Active
Application number
CA2637168A
Other languages
French (fr)
Other versions
CA2637168A1 (en
Inventor
Jeb Stuart Thorley
Justin Alexander Foster
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.)
Trend Micro Inc
Original Assignee
Trend Micro Inc
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 Trend Micro Inc filed Critical Trend Micro Inc
Publication of CA2637168A1 publication Critical patent/CA2637168A1/en
Application granted granted Critical
Publication of CA2637168C publication Critical patent/CA2637168C/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

Abstract

A method for assembling an update for a software release is described, including defining classes of software components, having a plurality of instances, each instance having a plurality of versions of the software components. A correspondence is established between a version of an instance of a first class and a second class for conditionally assigning indicators to the version of the instance of the first class based on indicators assigned to versions of the second class, and vice versa. Time stamps are assigned to each version of a software component of each instance of each class, and indicators identifying a release status of said each version are assigned to each version of a software component of each instance of each class. Rules are defined for processing the time stamps and the indicators. A single version of a software component of each instance of each class is selected based on processing of the time stamps and the indicators according to the rules. The update of the software release is assembled from selected versions of software components. A corresponding system is also provided.

Description

2537,168 TB-METHOD AND SYSTEM FOR VERSION INDEPENDENT SOFTWARE RELEASE
MANAGEMENT
FIELD OF THE INVENTION
The present invention relates to software release management, and in particular, to version independent component release management.
BACKGROUND OF THE INVENTION
Software release management is a new and rapidly growing area of software engineering.
As software systems, software development processes and resources become more distributed and specialized, they invariably become more complex. Additionally, software products may be run on various platforms, and they are typically involved in various cycles of software development, testing and release.
As a result, there are many software modules that are at various stages of the development and testing, which have to operate seamlessly together to ensure the value of a software product to a customer.
Therefore the need exists for the development of a flexible software release management, which would be simpler and more expedient than the existing solutions.
BRIEF DESCRIPTION OF THE DRAWINGS
The embodiments of the invention will now be described, by way of example, with reference to the accompanying drawings in which:
2,637,168 TB-Figure 1 illustrates a host intrusion prevention system (HIP), in which embodiments of the invention have been implemented;
Figure 2 illustrates classes of software components;
Figure 3 illustrates status and timestamps associated with software components;
Figure 4 illustrates a sample set of software components and their interrelationship;
Figure 5 shows a flow chart 300 illustrating a method for checking in a version of software component of any class and setting up its date time stamp;
Figure 6 shows a flowchart 400 illustrating a method for validating a checked-in version of a Filter software component;
Figure 7 shows a flowchart 500 illustrating a method for issuing a version of software component, comprising assigning an issued indicator and setting up an issue date;
Figure 8 shows a flowchart 600 illustrating a method for validating an issued version of Filter software component;
Figure 9 shows a flowchart 700 illustrating a method for un-issuing a version of software component, comprising assigning an un-issued indicator;
Figure 10 shows a flowchart 800 illustrating a method for un-issue validation for a version of port list software component;
Figure 11 shows a flowchart 900 illustrating a method for deleting a version of software component from the update of software release;

2,637,168 TB-Figure 12 shows a flow chart 1000 illustrating delete validation method for a version of a port list software component;
Figure 13 shows a flowchart 1100 illustrating an assembly of an update for software release according to the embodiment of the present invention;
Figure 14 shows the Release Management System 13 of Figure 1 in more detail; and Figure 15 shows the Software Release management Module of Figure 14 in more detail.
SUMMARY OF THE INVENTION
There is an object of the invention to provide a method and system for assembling an update for a software release, which would avoid or mitigate drawbacks of the prior art.
According to one aspect of the invention, there is provided a method of assembling an update for a software release, comprising:
employing at least one processor for:
(al) defining classes of software components, each class comprising a plurality of instances, each instance having a plurality of versions of the software components;
(a2) assigning, to each version of a software component of each instance of each class, one or more time stamps;
(a3) assigning, to each version of a software component of each instance of each class, one or more indicators identifying a release status of said each version;
(a4) defining rules for processing said time stamps and said indicators;
3 2,637,168 TB-(a5) selecting a single version of a software component of each instance of each class based on processing of said time stamps and said indicators according to one or more of the rules; and (a6) assembling selected versions of software components into the update of the software release;
further comprising establishing a correspondence between a version of an instance of a first class and a second class for conditionally assigning indicators to the version of the instance of the first class based on indicators assigned to versions of the second class, and vice versa.
In the method described above, the indicators comprise one or more of the following indicators:
a deleted indicator, identifying that a version to which the deleted indicator is assigned is no longer needed;
an issued indicator, identifying that a version to which the issued indicator is assigned is included in a current software release; or an un-issued indicator, identifying that a version to which the un-issued indicator is assigned either is a new version submitted to a repository of software components, or does not have the issued or deleted indicator.
In the method described above, the time stamps comprise a checked-in date, which is assigned provided the version becomes the latest version, and a checked-in retired date, which is assigned provided a new version is submitted to a repository of software components.
4 2,637,168 TB-In the method described above, the time stamps comprise an issued date, which is assigned provided the version is assigned the issued indicator, and an issued retired date, which is assigned provided the version is assigned the un-issued or deleted indicator.
In the method described above, the issued indicator is assigned to the version of the instance of the first class provided at least one version of an instance of the second class is assigned the issued indicator.
In the method described above, the deleted indicator is assigned to a version of an instance of the second class provided the version of the instance of the first class is assigned the issued indicator.
In the method described above, selecting a single version of step (a5) is performed for versions having an issued indicator.
The method further comprises replacing the un-issued indicator with the issued indicator for the selected versions.
In the method described above, selecting a single version of step (a5) is performed for versions having the most recent checked-in date time stamp and no checked-in retired date time stamp.
In the method described above, the classes defined comprise one or more of the following classes: (i) an Application Type class representing software applications to be protected; (ii) a Filter class representing software filters to provide
5 2,637,168 TB-protection against computer intrusion attacks; (iii) a Port List class representing computer ports.
According to another aspect of the invention, there is provided a system for assembling an update for a software release, comprising:
a processor;
a memory having computer readable instructions stored thereon, causing the processor to:' (al) define classes of software components, each class comprising a plurality of instances, each instance having a plurality of versions of the software components;
(a2) assign, to each version of a software component of each instance of each class, one or more time stamps;
(a3) assign, to each version of a software component of each instance of each class, one or more indicators identifying a release status of said each version;
(a4) define rules for processing said time stamps and said indicators;
(a5) select a single version of a software component of each instance of each class based on processing of said time stamps and said indicators according to one or more of the rules; and (a6) assemble selected versions of software components into the update of the software release;
wherein the computer readable instructions further cause the processor to establish a correspondence between a version of an instance of a first class and a second class for conditionally assigning indicators to the version of the instance of the first class based on indicators assigned to versions of the second class, and vice versa.
6 2,637,168 TB-In the system described above, the indicators comprise one or more of the following:
a deleted indicator, identifying that a version is no longer needed;
an issued indicator, identifying that a version is included in a current software release; or an un-issued indicator, identifying that a version is either a new version submitted to a repository of software components, or does not have the issued or deleted indicator.
In the system described above, the time stamps comprise a checked-in date, which is assigned provided the version becomes the latest version, and a checked-in retired date, which is assigned provided a new version is submitted to a repository of software components.
In the system described above, the time stamps comprise an issued date, which is assigned provided the version is assigned the issued indicator, and an issued retired date, which is is assigned provided the version is assigned the un-issued or deleted indicator.
In the system described above, the issued indicator is assigned to the version of the instance of the first class provided at least one version of an instance of the second class is assigned the issued indicator.
In the system described above, the deleted indicator is assigned to a version of an instance of the second class
7 2,637,168 provided the version of the instance of the first class is assigned the issued indicator.
In the system described above, the computer readable instructions further cause the processor to select a single version among versions having an issued indicator.
In the system described above, the computer readable instructions further cause the processor to select a single version among versions having the most recent checked-in date time stamp and no checked-in retired date time stamp.
According to yet another aspect of the invention, there is provided a system for assembling an update for a software release, comprising:
a processor and a memory having computer readable instructions stored thereon for execution by the processor, causing the processor to:
define classes of software components, each class comprising a plurality of instances, each instance having a unique identifier (UID), said each instance of said each class representing a software component, which has a plurality of versions;
for each version of the software component, assign one or more time stamps, and an indicator identifying a release status of the version of the software component;
introduce a flexible coupling between versions of the software components and instances of classes, including introducing a pointer between a version of the software . 30 component and a UID of an instance of a class associated with the version;
8 2,637,168 TB-select versions of software components from which pointers originate;
for each instance of the class, to which the pointer points at, select one version of the software component based on the assigned indicator, and assemble the selected versions of software components into the update of the software release.
In the system described above, the computer readable instructions further cause the processor to assign the indicator, comprising one or more of the following indicators:
a deleted indicator when a version of the software component is no longer needed;
an issued indicator when a version of the software component is included in a current software release; or an un-issued indicator when a new version of the software component has been submitted to a repository of software components, or when the version of the software component does not have the issued or deleted indicator.
In the system described above, the computer readable instructions further cause the processor to assign a checked-in date set and an issued date set to each version of the software components.
In the system described above, the computer readable instructions further cause the processor to assign the checked-in date set, including a checked-in date time stamp when the version of the software component has become the latest version of the software component, and a checked-in retired date time stamp when a new version of the software
9 2,637,168 TB-component is submitted to the repository of software components.
In the system described above, the computer readable instructions further cause the processor to assign the issued date set including an issued date time stamp when the version of the software component is assigned the issued indicator, and an issued retired date time stamp when the version of the software component is assigned the un-issued or deleted indicator.
In the system described above, the computer readable instructions further cause the processor to select versions of software components, which have the issued indicator to form an issued view of the software components.
In the system described above, the computer readable instructions further cause the processor to select versions of software components having the most recent checked-in date time stamps and no checked-in retired date time stamps to form a latest view of the software components.
In the system described above, the computer readable instructions further cause the processor to define one or more of the following classes: (i) an Application Type class representing software applications to be protected; (ii) a Filter class representing software filters to provide protection against computer intrusion attacks; (iii) a Port List class representing computer ports.
In the system described above, the computer readable 2537,168 TB-instructions further cause the processor to prevent, before the selected versions of software components are assembled into the update of the software release, the version of the software component, from which the pointer originates, to be set as the issued version of the software component unless at least one version of a software component in the instance of the class, to which the pointer points at, has the issued indicator.
In the system described above, the computer readable instructions further cause the processor to prevent, before the selected versions of software components are assembled into the update of the software release, the version of the software component, to which the pointer points, to have a deleted indicator applied as long as the version of the software component is pointed to by a pointer originating from a version of another software component, which has an issued indicator.
In the system described above, the computer readable instructions further cause the processor to prevent the version of the software component to have the un-issued indicator once the version of the software component is included in the update of the software release.
In the system described above, the computer readable instructions further cause the processor to provide a pointer between the version of the software component in the Filter class and the UID of the instance of the Application Type class.
In the system described above, the computer readable instructions further cause the processor to:

2,637,168 TB-determine whether the version of the software component does not have the deleted indicator;
if there is no a previous version of the software component, assign a checked-in date time stamp, indicating when the version of the software component has become the latest version of the software component, to the version of the software component;
if there is a previous version of the software component, set a checked-in retired date time stamp, indicating when a new version of the software component is submitted to the repository of software components, to the previous version of the software component;
otherwise, terminate execution of the computer readable instructions.
In the system described above, the computer readable instructions further cause the processor to:
check-in a version of a Filter software component from which the pointer originates, the Filter software component representing a software filter to provide protection against computer intrusion attacks, comprising:
ensuring that an Application Type software component, to which the pointer points at, exists;
the Application Type software component representing a software application to be protected; and provided there is a pointer to another Filter software component, ensuring that said another Filter software component exists.
In the system described above, the computer readable 2,637,168 TB-instructions further cause the processor to assign the issued indicator to the version of the software component, comprising:
if the version of the software component has the deleted indicator, assigning the un-issued indicator to the version of the software component;
if the version of the software component does not have the deleted indicator, determining that the version of the software component does not have any version with the issued indicator, followed by assigning the issued indicator to the version of the software component and setting an issued retired date time stamp, indicating when the version of the software component is assigned the un-issued indicator, to a previous version of the software component.
In the system described above, the computer readable instructions further cause the processor to:
assign the issued indicator to the version of the Filter software component from which the pointer originates, comprising:
ensuring that an Application Type software component, to which the pointer points at, exists and has an issued indicator, the Application Type software component representing a software application to be protected; and provided there is a pointer to another Filter software component, ensuring that said another Filter software component exists and has an issued indicator, the Filter software component representing a software filter to provide protection against computer intrusion attacks;
otherwise terminating the assigning of the issued indicator.

2,637,168 TB-In the system described above, the computer readable instructions further cause the processor to un-issue the version of the software component, comprising assigning the un-issued indicator, comprising:
determining whether the version of the software component was not previously included in the update of the software release and then deleted from the update;
if the version of the software component has the deleted indicator, assigning the un-issued indicator to the version of the software component;
if the version of the software component does not have the deleted indicator, assigning the issued indicator to the version of the software component, and assigning an issued retired date time stamp, indicating when the version of the software component is assigned the un-issued indicator, to the previous version of the software component;
otherwise, terminating the assigning the un-issued indicator.
In the system described above, the computer readable instructions further cause the processor to un-issue a version of a Port List software component specifying a computer port, including assigning the un-issued indicator, comprising:
searching for versions of Application Type software components in a latest view or an issued view, which point to the version of the Port List component, the issued view comprising versions of software components having the issued indicator, and the latest view comprising versions of software components having the most recent checked-in date time stamps when the versions of the software components have become the latest versions of the software components, and having no 2,637,168 TB-checked-in retired date time stamps when new versions of the software components are submitted to the repository of the software components;
the Application Type software component representing a software application to be protected; and terminating the un-issuing the version of the Port List software component if the Applicant Type software components, which point to the Port List software component, have issued indicators.
In the system described above, the computer readable instructions further cause the processor to assign the deleted indicator to the version of the software component, comprising:
provided the version of the software component has not been withdrawn from the repository of software components for further development:
if the version of the software component has the issued indicator, assigning the un-issued indicator and an issued retired date time stamp, indicating when the version of the software component is assigned the un-issued indicator, to the previous version of the software component;
if the version of the software component does not have the issued indicator, assigning the deleted indicator to the version of the software component and setting a checked-in retired date time stamp, indicating when a new version of the software component is submitted to the repository of software components, to the current date.
In the system described above, the computer readable instructions further cause the processor to perform the validation, comprising:

2,637,168 TB-assigning the deleted indicator to the version of a Port List software component of an instance of a Port List class, the Port List Class representing computer ports, comprising ensuring that no version of the Application Type software component in the latest view or an issued view points at the instance of the Port List class, the issued view comprising software components which have the issued indicator, and the Application Type software component representing a software application to be protected.
According to one more aspect of the invention, there is provided a method for assembling an update for a software release, comprising employing a processor for performing:
defining classes of software components, each class comprising a plurality of instances, each instance having a unique identifier (UID), said each instance of said each class representing a software component, which has a plurality of versions;
for each version of the software component, assigning one or more time stamps, and an indicator identifying a release status of the version of the software component;
introducing a flexible coupling between versions of the software components and instances of classes, including introducing a pointer between a version of the software component and a UID of an instance of a class associated with the version;
selecting versions of software components from which pointers originate;
for each instance of the class, to which the pointer points at, selecting one version of the software component based on the assigned indicator, and assembling the selected 2,637,168 TB-versions of software components into the update of the software release.
In the method described above, the step of assigning the indicator comprises assigning one or more of the following indicators:
a deleted indicator when a version of the software component is no longer needed;
an issued indicator when a version of the software component is included in a current software release; or an un-issued indicator when a new version of the software component has been submitted to a repository of software components, or when the version of the software component does not have the issued or deleted indicator.
In the method described above, the step assigning further comprises assigning a checked-in date set and an issued date set to each version of the software components.
In the method described above, the step of assigning the checked-in date set further comprises assigning the checked-in date set, including a checked-in date time stamp when the version of the software component has become the latest version of the software component, and a checked-in retired date time stamp when a new version of the software component is submitted to the repository of software components.
In the method described above, the step of assigning the issued date set comprises assigning the issued date set including an issued date time stamp when the version of the software component is assigned the issued indicator, and an issued 2537,168 TB-025-CA
retired date time stamp when the version of the software component is assigned the un-issued or deleted indicator.
In the method described above, the steps of selecting further comprise selecting versions of software components, which have the issued indicator to form an issued view of the software components.
In the method described above, the steps of selecting comprise selecting versions of software components having the most recent checked-in date time stamps and no checked-in retired date time stamps to form a latest view of the software components.
In the method described above, the step of defining comprises defining one or more of the following classes: (i) an Application Type class representing software applications to be protected; (ii) a Filter class representing software filters to provide protection against computer intrusion attacks; (iii) a Port List class representing computer ports.
The method further comprises preventing the version of the software component, from which the pointer originates, to be set as the issued version of the software component unless at least one version of a software component in the instance of the class, to which the pointer points at, has the issued indicator, the preventing being performed before the assembling.
The method further comprises preventing the version of the software component, to which the pointer points, to have a 2,637,168 TB-(deleted indicator applied as long as the version of the software component is pointed to by a pointer originating from a version of another software component, which has an issued indicator, the preventing being performed before the assembling.
The method further comprises preventing the version of the software component to have the un-issued indicator once the version of the software component is included in the update of the software release.
In the method described above, the introducing comprises providing a pointer between the version of the software component in the Filter class and the UID of the instance of the Application Type class.
In the method described above, the assigning further comprises:
provided the version of the software component has a valid name, determining whether the version of the software component does not have a deleted indicator;
performing validation for the version of the software component based on the class;
if there is no a previous version of the software component, assigning a checked-in date time stamp to the version of the software component; otherwise, if there is a previous version of the software component, setting a checked-in retired date time stamp to the previous version of the software component;
otherwise terminating the step of assigning the indicator.

2,637,168 TB-In the method described above, the performing validation comprises:
checking-in a version of a Filter software component from which the pointer originates, the Filter software component representing a software filter to provide protection against computer intrusion attacks, comprising:
ensuring that an Application Type software component, to which the pointer points at, exists, the Application Type software component representing a software application to be protected;
and provided there is a pointer to another Filter software component, ensuring that said another Filter software component exists.
In the method described above, the assigning comprises:
assigning the issued indicator to the version of the software component, comprising:
performing validation of the version of the software component based on the class;
if the version of the software component has a deleted indicator, assigning the un-issued indicator to the version of the software component;
if the version of the software component does not have the deleted indicator, determining that the version of the software component does not have any version with the issued indicator, followed by assigning the issued indicator to the version of the software component and setting an issued retired date time stamp, indicating when the version of the software component is assigned the un-issue indicator, to a previous version of the software 2,637,168 TB-component.
In the method described above, the performing validation comprises:
assigning the issued indicator to the version of the Filter software component from which the pointer originates, comprising:
ensuring that an Application Type software component, to which the pointer points at, exists and has an issued indicator, the Application Type software component representing a software application to be protected; and provided there is a pointer to another Filter software component, ensuring that said another Filter software component exists and has an issued indicator, the Filter software component representing a software filter to provide protection against computer intrusion attacks;
otherwise terminating the assigning the issued indicator.
In the method described above, the assigning comprises:
un-issuing the version of the software component, comprising assigning the un-issued indicator, comprising:
performing validation of the version of the software component based on the class;
determining whether the version of the software component was not previously included in the update of the software release and then deleted from the update;
if the version of the software component has the deleted indicator, assigning the un-issued indicator to the version of the software component;

2,637,168 TB-if the version of the software component does not have the deleted indicator, assigning the issued indicator to the version of the software component, and assigning an issued retired date time stamp, indicating when the version of the software component is assigned the un-issued indicator, to the previous version of the software component;
otherwise, terminating the un-issuing.
In the method described above, the un-issuing comprises:
un-issuing a version of a Port List software component specifying a computer port, including assigning the un-issued indicator, comprising:
searching for versions of Application Type components in a latest view or an issued view, which point to the version of the Port List component;
the Application Type component representing a software application to be protected, and the latest view comprising versions of software components having the most recent checked-in date time stamps when the versions of the software components have become the latest versions of the software components, and having no checked-in retired date time stamps when new versions of the software components are submitted to the repository of the software components; and terminating the un-issuing the version of the Port List component if the Applicant Type components, which point to the Port List component, have issued indicators.
In the method described above, the assigning comprises:
assigning the deleted indicator to the version of the software component, comprising:

2,637168 TB-performing validation of the version of the software component based on the class;
provided the version of the software component has not been withdrawn from the repository of software components for further development:
if the version of the software component has the issued indicator, assigning the un-issued indicator and an issued retired date time stamp, indicating when the version of the software component is assigned the un-issued indicator, to the previous version of the software component;
if the version of the software component does not have an issued indicator, assigning the deleted indicator to the version of the software component and setting its checked-in retired date time stamp to the current date.
In the method described above, the performing validation comprises:
assigning the deleted Indicator to the version of a Port List component of an instance of a Port List class, the Port List Class representing computer ports, comprising ensuring that no version of an Application Type component in the latest view or an issued view points at the instance of the Port List class, components, the issued view comprising software components which have the issued indicator, and the Application Type component representing a software application to be protected.
According to yet one more aspect of the invention, there is provided a system for assembling an update for software release, comprising:

2,637,168 TB-025-CA
a processor, and a memory having computer readable instructions stored thereon for execution by the processor, causing the processor to form:
a repository of classes of software components, each class comprising a plurality of instances, each instance having a unique identifier (UID), said each instance of said class representing a software component, which has plurality of versions;
a software release management module, comprising:
a rule repository, comprising rules for flexible coupling between versions of the software components and instances of classes, configured to provide a pointer between a version of the software component and a UID of an instance of a class associated with the version;
means for assigning, for each version of said each software component, one or more time stamps and indicators identifying release status of said each software component in accordance with the rules;
means for selecting versions of the software components from which the pointers originate; and for selecting, for each instance of the class, to which the pointer points at, one version of the software component based on the assigned indicators; and means for assembling the selected versions of the software components into the update of the software release.
In the system described above, the indicators comprise one or more of the following:
a deleted indicator when a version of the software component is no longer needed;

2,637,168 TB-an issued indicator when a version of the software component is included in a current software release; and an un-issued indicator when a new version of the software component has been submitted to the repository of the software components, or when the version of the software component does not have the issued or deleted indicator.
In the system described above, the means for assigning comprises means for assigning date sets, comprising a checked-in date set and an issued date set, to each version of the software components;
wherein the checked-in date set includes a checked-in date time stamp when the version of the software component has become the latest version of the software component, and a checked-in retired date time stamp when a new version of the software component is submitted to the repository of the software components; and wherein the issued date set includes an issued date time stamp when the version of the software component is assigned the issued indicator, and an issued retired sate time stamp when the version of the software component is assigned the un-issued or deleted indicator.
In the system described above, the means for selecting comprises means for generating views of versions of software components, including generating an issued view by selecting versions of software components, which have the issued indicator, and a latest view by selecting versions of software components, which have the most recent checked-in date time stamp, indicating when the version of the software component has become the latest version of the software component.

2,637,168 TB-In the system described above, the repository of classes comprises one or more of the following classes: (i) an Application Type class representing software applications to be protected; (ii) a Filter class representing software filters to provide protection against computer intrusion attacks; (iii) a Port List class representing computer ports.
A non-transitory computer readable storage medium, comprising computer readable instructions stored thereon, for execution by a processor, to perform the steps of the methods as described above, is also provided.
Thus, an improved method and system for assembling an update for software release have been provided.
DESCRIPTION OF THE DETAILED EMBODIMENTS OF THE INVENTION
An embodiment of the present invention will be described with regard to software release management for security software, in particular, for host intrusion prevention/detection software developed by the applicants.
With reference to Figure 1, a host intrusion prevention system (HIPS) 1 of the applicant, including a Release Management System 13 of the embodiments of the present invention, is illustrated.
The HIPS 1 comprises a server computer 11, including "Labs"
module 14 for storing intrusion prevention system (IPS) filters; and a Release Management System 13 for implementing the embodiments for the software release management of the 2,637,168 TB-present invention. Both Labs 14 and Release Management System 13 are stored in the memory of the server computer 11. IPS
filters are defined in the "Labs" 14 through Filter Writer modules FW 10a, 10b and 10c, which are optionally stored in the memory of the server computer 11, or in a memory of one or more other computers.
The HIPS 1 further comprises a "Deep Security Agent" (DSA) 19, which includes a software module stored in the memory of a client computer and executed on the client computer, which performs the HIPS on the client computer. By way of example, three DSAs 19a, 19b and 19c are shown in Figure 1.
The HIPS also comprises a "Deep Security Manager" (DSM) 16, which includes a software module including a server portion that is stored in the memory of a computer, and executed by the computer within the client's enterprise to communicate to the Labs 14 to receive updates, make queries to the DSAs 19a, 19b, 19c, and distribute security configuration to the DSAs 19a, 19b, 19c.
The server computer 11, including the Release Management System 13 communicates with the Deep Security Managers 16, 17, 18 through a Communication Network (CM) 15.
To proceed with the description of the methods for assembling an update for a software release of the embodiment of the invention, a classification of software components will be presented next along with time stamps and indicators identifying status of software components.

2,637,168 TB-According to the embodiment of the invention, software components are divided into classes, each class comprising one or more instances of the class, each instance of the class having a unique identifier (UID) and representing a software component, which may have an unlimited number of versions of the software component. Functionality of the software component can be modified in future versions of the software component.
With reference to Figure 2, diagram 200 illustrates three classes of software components, comprising: Application Type class (X) 30x representing a software component X, Filter class (F) 30f, representing a software component F, and Port List class (P) 30p representing a software component P.
Filter software components, or Filters, provide protection against network based attacks. They examine traffic to determine whether it contains malicious content, such as a known attack, or an amount of suspicious activity above an acceptable threshold, and take protective action. Each Filter should point to exactly one Application Type class, and may point to N other Filters via respective UIDs.
Application Type components represent a specific application, or class of software applications protected by IFS, for example an Internet Explorer (IE), or a Web Client. Application Types are used primarily to group Filters, but also may provide assistance in decoding the traffic generated by the application for further investigation by the Filters.
Each Application Type must point to 1 Port List and may point to N other Application Types.

2,637,168 TB-Port List software components specify a set of ports. They provide a means for Application Type software components to know what port(s) to listen to.
Each class of software components has rules defining how versions of software components and instances of each class interact with instances of other classes of software components, and in particular, defining rules for flexible coupling between versions of components and instances of classes. In Figure 2, rules for Application Type class (X) 30x, Filter class (F) 30f and Port List class (P) 30p have been designated by reference numerals 31x, 31f and 31p respectively.
Each instance of the class of software components has a unique identifier (UID). Corresponding UIDs for Application Type class (X) 30x, Filter class (F) 30f and Port List class (P) 30p have been designated by reference numerals 32x, 32f and 32p in Figure 2.
Each instance of a class, representing a software component, has a number of versions of the software component, for example, an instance 394x of the Application Type class (X) 30x has versions X1 (Version1) and X2 (Version2) of the software component X, designated by reference numerals 33x and 38x respectively. Similarly, an instance 394f of the Filter Class (F) 30f has versions Fl (Versionl) and F2 (Version2) of the software component F, which have been labeled as 33f and 38f respectively, and an instance 394p of the class Port List (P) 30p has versions P1 (Versionl), P2 (Version2), P3 (version4), P4 (Version4) and P5 (Version5) of the software component P, which have been labeled as 33p to 37p respectively. For 2,637,168 TB-simplicity, Figure 2 illustrates only one instance per each class of software components 30x, 30f and 30p. It is understood that each class of software components may have many instances as required.
All versions of a software component represented by a given instance of the class have the same UID, which is the UID of the instance of the class. For example, versionl X1 (33x) and Version2 X2 (38x) of the instance of the class 394x, representing the software component X, have the same UID 32x, versionl Fl (33f) and version2 F2 (38f) of the instance of the class 394f, representing the software component F, have the same DID 32f, and all versionsl P1 to version5 P5 (33p) through (37p) of the instance of the class 394p, representing the software component P. have the same DID 32p.
As mentioned above, each class 30x, 30f and 30p of software components has respective rules 31x, 31f and 31p, which it follows. One rule in this regard introduces a flexible coupling between versions of components and instances of classes by providing a pointer between a version of a component and a UID
of an instance of a class, for example, a pointer 3A1 between the version Fn (38f) of the software component F and the DID
32x of the instance of the Application Type class 30x, or a pointer 3A2 between the version X1(33x) of the software component X and the UID 32p of the instance of the Port List class 30p as shown in Figure 2. The flexible coupling is maintained by letting each version of the component store only the ID of an instance of a class to which it points, but not the version of the component that is requires. For example, versionl X1 (33x) of the component X of the instance of the class 394x may require that a component "P" of the instance of 2,637,168 TB-the class 394p is present, but is not concerned what version of the software component "P" it is, i.e. any one of version 1 P1 (33p) to version5 P5 (37p).
Another rule is concerned with the dependency between classes of software components. Although typically each class of software components depends only on one other class of software components, it is possible for a class to depend on multiple other classes, or even on other components of its own class. In the embodiment of the present invention, one or more versions Versionl Fl (33f) and Version 2 F2 (38f) of the Filter Class 30f may optionally point at another instance (not shown in Figure 2) of the Filter class 30f as required, however, they should always point at a required instance of the Application Type class (x) 30x, see, e.g., the pointer 3A1 in Figure 2.
Similarly, one or more versions of the software component X of the Application Type class 30x should point at an instance of the Port List class 30p as illustrated by the pointer 3A1 in Figure 2.
Each version of the software component has one or more time stamps associated therewith. By way of example, diagram 220 of Figure 3 illustrates four time stamps TS11 (34x), TS12 (35x), TS13 (36x), and TS14 (37x), associated with the version l X1 (33x) of the software component X. In the embodiment of the invention, the time sets are grouped into two date sets, namely a date set 39x, comprising time stamps 34x and 35x, and another date set 40x, comprising time stamps 36x and 37x.
The date set 39x assigned to the versionl X1 (33x) of the software component X and illustrated in Figure 3, is a 2537,168 TB-checked-in date set, including a checked-in date time stamp when the version of the component has become the latest version of the component, and a checked-in retired data time stamp when the next version of the software component is checked-in, i.e.
submitted to a repository of software components.
The another date set 40x assigned to the versionl X1 (33x) of the software component X and illustrated in Figure 3, is an issued date set, including an issued date time stamp when the version of the component is assigned the issued indicator, and an issued retired date time stamp when the version of software component is assigned the un-issued or deleted indicator.
Each version of the software component also has one or more indicators identifying status of the version of the software component. By way of example, an indicator STU (42x) has been shown for the versionl X1 of the software component X. In the embodiment of the invention, each version of the software component has a status indicator, or indicator, which is labeled as 41x in Figure 3.
The following indicators have been used in the embodiment of the invention:
(1) a deleted indicator when a version of software component is no longer needed;
(m) an issued indicator when a version of software component is included in a current software release; or (n) an un-issued indicator when a new version of the software component has been just checked-in, i.e. submitted to repository of software components, or when the version of 2,637,168 TB-software component does not have the issued or deleted indicator.
In order for a version of software component to be Included in the update of software release, it should have an issued indicator.
Later, the version of the component having an issued indicator can have, if needed, an un-issued indicator, and vice versa.
All versions of a software component have deleted indicators when the software component is no longer needed, or alternatively, only the latest version may have a deleted indicator. Only one version of a software component can have an issued or deleted indicator at a given time.
When we delete a version of software component, it means that any attempt to retrieve it by the UID will indicate that it is deleted. To accomplish this, we perform the following:
?0 0 Apply the deleted indicator to the latest version. Since only one version may have an issued/deleted indicator assigned, this means no version has an issued indicator assigned. Thus, the version of software component shows as deleted in the Issued view.
2) Set the checked-in retired date time stamp of the latest version of software component. Since the latest version of software component is defined as having the most recent checked-in date time, stamp with no check-in retired date time stamp, this will result in the version of software 2,637,168 TB-component showing as having a deleted indicator in the Latest view.
Diagram 300 of Figure 4 illustrates a sample set of software components and their relationships to be used in the assembly of an update for a software release. Three instances of the Filter Class 30f are shown, namely the instance of the class 394x including versionl Fl (33f) and version2 F2 (38f) of the software component F similar to that of Figure 2, an instance of the class 395f incluaing versionl Y1 (42) and version2 Y2 (43) of a software component Y, and an instance of the class 396f, including a versionl Z1 (44) of a software component Z.
One instance of the Application Type class 30x is shown similar to that of Figure 2, including five versions X1 to X5 (33x to 37x) of the software component X. Two instances of the Port List class 30p are shown, namely the instance of the class 394p including versionl P1 (33p) and version2 P2 (38p) of the software component P similar to that of Figure 2, and the instance of the class 395p, including versionl G1 (491), version2 G2 (492) and version4 G3 (493) of a software component G.
The version2 F2 (38f) of the instance 394f of the Filter class 30f has an issued indicator 45, and the version2 F2 (38f) points at the UID (not shown in Figure 4) of the instance 394x of the Application Type class 30x by pointer 5A1. The versionl Z1 (44) of the software component Z has a deleted indicator 48, and the versionl Z1 (44) which points at the UID (not shown in Figure 4) of the instance 394x of the Application Type class 30x by pointer 5B1. The version2 Y2 (43) of the software component Y does not have any indicator associated with it, or 2,637,168 TB-may have an un-issued indicator assigned to it. The version2 Y2 (43) points at the UTD (not shown in Figure 4) of the instance 394x of the Application Type class 30x by pointer 5C1. The pointer 5A1 requires that the version of the Application Type component, to which it points, to be issued, i.e. assigned an issued indicator. The pointer 501 requires that the version of the Application Type component, to which it points, to be included in the Latest View, since version2 Y2 (43) is the latest version of the Filter component. The pointer 5A1 also requires that the version of the Application Type component, to which it points, to be included in the Latest View, since version2 F2 (38f) of the Filter component is included in both in the Issued view and the Latest view. Since the pointer 5B1 is for the versionl Z1 (44) of a Filter that is deleted, it has no requirements of the Application Type.
A pointer 5D1 from the version5 X5 (37x) of the software component X to the instance 394p of the Port List class 30p requires that any version of the software component from the instance 394p of the Port List class 30p is present.
Similarly, version3 X3 (35x) of the software component X has an issued indicator 46, and the verion3 X3 (35x), which points at the UID (not shown in Figure 4) of the instance 395p of the Port List 30p class by pointer 5E1, requiring that any version of the software component from the instance 395p of the Port List class 30p is present. Because version3 X3 (3x) of the Application Type 394x is issued, it requires that some version of the Port List 395p to which it points be present in the Issued View.

2,637,168 TB-The result of publishing an update of the software release with the relationships detailed in Figure 4 will be the update (394f.2, 394x.3, 395p.3), i.e. containing version2 F2 (38f) of the software component F of the instance 394f of the Filter class 30f, version3 X3 (35x) of the software component X of the instance 394x of the Application Type class 30x, and version3 G3 (493) of the software component G of the instance 395p of the Port List class 30p, as well as an instruction to delete the versionl Zl (44) of the software component Z of the instance of the class 396f from the client installation. Please note that no versions of software components from the instance 395f of the Filter class 30f and instance 394p of the Port List class 30p will be included in the update of the software release, because they do not have issued indicators.
Some other rules for assembling the update of the software release include the following:
= Version5 X5 (37x) of the instance 394x of the Application Type class 30x cannot be assigned an issued indicator until there is a version of the instance 394p of the Port List class 30p, which has an issued indicator;
= Any version of the software component (491, 492 or 493) of the instance 395p of the Port List class 30p can not be assigned a deleted indicator as long as there is a pointer from the Version3 X3 (35x) of the instance 394x of the Application Type class 30x, or any other version 33x to 37x of the instance 39xp of the Application Type class 30x, to the instance 395p of the Port List class 30p;
= The version2 F2 (38f) of the software component F of the instance 394f of the Filter class 30x cannot be assigned an un-issued indicator, because this version of the software 2,637,168 TB-component has been included in the update for the software release. This is required to avoid a violation of a requirement of a single predicable state after applying the update of the software release. If a subsequent update for a software release with unpublished version of the software component 33f having un-issued indicator were allowed, clients that had applied a previous update with the software component 33f having the issued Indicator present would end in a different state than those that had not. However, if version2 F2 (38f) had never been included in an update for a software release, it can be assigned an un-issued indicator.
= Any versionl X1 (33x) to version5 (37x) of the instance 394x of the Application Type class 30x cannot be assigned a deleted indicator, because it has pointers 5A1 and 501 from instances 394f and 395f of the Filter class 30f pointing at the instance 394x of the Application Type class 30x.
The rules for software release management outlined above are designed to ensure that clients obtain a single, predictable set of versions of software components after applying a given update. This implies further restrictions to operations that may be performed on a version of a software component after the version has been included in the update for the software release. For example, after a version of a software component has been included in the update for the software release, it should always appear in future updates to the software release, either having an issued indicator or deleted indicator. Other rules will be described below with regard to Figures 5-13.

2,637,168 TB-Assembly of an Update for a Software Release In addition to indicators identifying the status of versions of software components, there have been introduced two conceptual "views" of the version of components, a "Latest view" and an "Issued view". The Latest view comprises versions of software components having checked-in indicator, which have the most recent checked-in date time stamps to form a latest view of software components. The Latest view is a view of software components seen by software developers. Referring back to Figure 4, one example of the Latest view of software components may comprise the following versions of software components:
(394f.2, 3951.2, 3961.1, 394x.5, 395p.3 and 394p.2), i.e. it may include version2 F2 (38f) of the instance 394f of the Filter class 30f, verion2 Y2 (43) of the instance 3951 of the Filter class 30f, versionl Z1 (44) of the instance 3961 of the Filter class 30f, version5 X5 (37x) of the instance 394x of the Application Type class 30x, version3 G3 (493) of the instance 395p of the Port List class 30p, and version2 P2 (38p) of the Instance 394p of the port List class 30p.
The Issued view comprises a set of versions of software components, having an issued indicator; this is the view of the software components seen by clients. Referring back to Figure 4, one example of the Issued view of software components will comprise the following versions of software components:
(394f.2, 394x.3 and 395p.3), i.e. version 2 F2 (38f) of the instance 3941 of the Filter class 30f, verion3 X3 (35x) of the instance 394x of the Application Type class 30x, and version3 G3 (493) of the instance 395p of the Port List class 30p.

2,637,166 = TB-025-CA
A version of a certain software component may have the latest checked-in date time stamp, and therefore will be included in the Latest view, but not yet included in an update for software release, because it has not been assigned an issued indicator.
For any given time, the assembly and release of an update for software is invoked from the Issued view of software components, while continued development of the Latest view of software components is unaffected by the update of software release.
In order to obtain the Latest View or the Issued View of software components, a date-based approach using time stamps mentioned with regard to Figure 3, has been used for managing versions of software components. Referring back to Figure 3, the checked-in date set 39x comprises two time stamps, a checked-in date time stamp 34x and a checked-in retired date time stamp 35x. The checked-in date time stamp 34x is the date when the versionl X1 (33x) of software component X has been submitted to the repository of software components, hence becoming eligible for including in the Latest view of software components. The checked-in retired date time stamp when a new version of the software component is submitted to repository of software components. When a new check-in occurs for the new version of software component, the version of software component currently having the checked-in date time stamp will be assigned a check-in retired date time stamp.
Using the latest checked-in date time stamps enables a developer to retrieve the Latest view of software components for a given time period. It also allows them to determine the current latest version of software component by looking for the 2,637,168 TB-version of software component with no checked-in retired date time stamp.
When a version of a software component is assigned a deleted indicator, it is assigned a checked-in retired date time stamp, so that the version of software component will not appear in any Latest view.
As mentioned with reference to Figure 3, the issued date set 40x comprises two time stamps, an issued date time stamp 36x and an issued retired date time stamp 37x. The issued date time stamp 36x is the date when a version of the software component is included in the update of software release. The retired date time stamp 37x is the date when the version of software component is assigned un-issued indicator, or when the version of software component is assigned a deleted indicator. The issued date time stamp 36x and the retired date time stamp 37x are used for managing the Issued view of software components, while the checked-in date time stamp 34x and checked-in retired date stamp 35x are used for managing the Latest view of software components. When a version of the software component is assigned an issued indicator, its issued date time stamp is set. When another version of the software component replaces the version of software component with the issued indicator, the issued retired date time stamp is set for the version of software component.
The rules for managing the issued date set are different from those for managing the checked-in date set, because the status of a given version of software component having an issued indicator may be changed multiple times. When such a change 2,637,168 TB-happens, a replacement does not have to be with a newer version. It is not uncommon for an update for software release, or a certain version of software component, to be rolled back to an earlier working update or version of software components respectively. In this case, the versions of software components in the rolled back update will be the ones having the issued indicator. Similarly, an issued version may be several versions higher than the previously issued version.
With reference to Figure 5, a method 350 for setting a checked-in date time stamp for a version of software component is described. The method 350 provides the framework used by all classes for checking in a version, and setting up its time stamp.
Classes of components extend this framework with validation specific to their class. At block 51, the method is initiated. At block 52, name of the version of software component is examined. If it is invalid (exit "No" from block 52) the check-in is rejected (block 50), otherwise the method proceeds to block 53. At block 53, the method checks whether the version of software component was previously assigned a deleted Indicator. If yes (exit "yes" from block 53), the check-in is rejected (block 50), otherwise the method proceeds to the next step to block 54. At block 54, the method checks that all dependencies are satisfied and have not been assigned a deleted indicator. Class specific validation is also performed to ensure the component meets the requirements to enter the repository. If the dependencies or validations are violated (exit "Fall" from block 54), the check-in fails (block 50), otherwise the method proceeds to the next step to block 55. At block 55, the existence of a previous version of software component is verified. If it does not exist (exit "No"

2,637,168 TB-from block 55), the method continues with setting the checked-in date time stamp, otherwise (exit "Yes" from block 55), the method continues with checking over the previous version of software component. At block 57, the method checks whether the current software developer has checked-out the previous version of software component, i.e. the previous version has been withdrawn from repository of software components for further development. If not (exit "No" from block 57), the check-in is rejected at block 50, otherwise the method continues with the next step (block 58). At block 58, check-in date time stamp is set for the version of software component, followed by termination of the method at block 59.
With reference to Figure 6, a diagram 400 illustrates a method for validating a checked-in version of Filter software component. At block 61, the method is initiated. At block 65, the method checks whether the version of Filter software component of a given instance of the Filter class 30f points at another instance of the Filter class 30f. If not (exit "No"
from block 65), the method proceeds to the next step to block 64, otherwise (exit "Yes" from block 65) the method proceeds to block 62. At block 62, the Latest view including Filter software components is searched through the DID, which have pointers to the instance of a Filter class 30f. At block 63, the method determines if the instance of the Filter class to which the pointers point at, is present. If not (exit "No" from block 63), the validation fails (block 60), otherwise (exit "Yes" from block 63), the method continues with block 64. At block 64, the Latest View of Application Type software components is searched by common component ID to determine a pointer between the version of the component in the Filter 2,637,168 TB-class and the UTD of the instance of the Application Type class. At block 66, the method checks whether the instance of the Application Type class, pointed at by the pointer, is present. If it is not (exit "No" from block 66), the validation fails (block 60); otherwise, the validation passes with block 67.
With reference to Figure 7, diagram 500 describes a method including rules, which are used for issuing a version of software component, including setting up an issue date and an issued indicator for a version of software component. At block 71, issue of a version of software component starts. At block 72, the method checks that all dependencies are satisfied and have not been assigned a deleted indicator. Class specific validation is also performed to ensure the component meets the requirements to be issued. If rules are violated (exit "Fail"
from block 72), the issue is rejected (block 70), otherwise (exit "Pass" from block 72), the method continues to the next step to block 74. Block 74 verifies if the version of software component under examination was previously assigned a deleted indicator. If it =was not (exit "No" from block 74), the method continues with block 76, otherwise (exit "Yes" from block 74), the method proceeds to block 73 where the deleted indicator is reset (un-deleted). At block 76, the method verifies whether any version of softwa:-e component under examination was previously assigned an issued indicator. If not (exit "no" from block 76), the method continues with block 77, otherwise (exit "Yes" from block 76), it continues with block 75. At block 75, the version of the previously existing software component having the issued indicator is assigned an un-issued indicator.
At block 77, the version of software component under 2,637,168 TB-examination is assigned an issued indicator, followed by termination of the method at block 78.
With reference to Figure 8, a diagram 600 illustrates a method for validating an about to be issued version of the Filter software component. The validation process differs per type of software component. If validation does not pass the component does not become the Issued version. At block 81, validation is initiated. At block 82, the method checks whether the version of Filter software component under examination points at another Instance of Filter class. If such a pointer does not exist (exit "No" from block 82), the method proceeds to block 85, otherwise (exit "Yes" from block 82), the method continues with block 83. At block 83, the existence of the pointed instance of the Filter class is searched for in the Issued view of software components through common UIDs. At block 64, the method checks whether the instance of the Filter class, which has been pointer at, is present in the Issued view. If not (exit "No" from block 84), the validation fails (block80);
otherwise (exit "Yes" from block 84), the method continues with block 85. At block 85, the method checks the Issued View of Application Type software components for the existence of required versions of Application Type software components, which have been pointed at by the component UID of the Filter under examination. At block 86, the method checks whether such required versions of the Application Type software components exists. If not (exit "No" from block 86), the validation method fails (block 80), otherwise (exit "Yes" from block 86), the validation method passes (block 87).

2,637,168 TB-With reference to Figure 9, a diagram 700 illustrates a method for assigning an un-issued Indicator to a version of software component. At block 91, the Un-Issue method is initiated. At block 92, the method checks rules for coupling between the version of software component under examination and instances of classes, including existing pointers for the Issued view of software components. If the rules are violated (exit "Fail"
from block 92), the Un-Issue is rejected (block 90); otherwise (exit "Pass" from block 92), the method continues to block 93.
At block 93, the method checks whether the version of software component was previously assigned an issued indicator in an update for a software release. If this is true (exit "Yes" from block 93), the un-issue is rejected (block 90), otherwise (exit "No" from block 93), the method continues to block 94. At block 94, the method checks whether the version of software component was previously marked as deleted in an update for a software release. If this is true (exit "Yes" from block 94), the Un-Issue is rejected (block 90), otherwise (exit "No" from block 94), the method continues to block 96, where the method checks whether the version of software component has a deleted indicator. If not (exit "No" from block 96), the method continues to block 98, otherwise (exit "Yes" from block 96), the method continues to block 95, where the deleted version of software component is un-deleted, and the method continues to block 98. At block 98, the method checks whether the version of software component under examination has an issued indicator.
If not (exit "No" from block 98), the method is terminated (block 99), otherwise (exit "Yes" from block 98), the method continues with block 97. At block 97, the version of software component under examination is assigned an un-issued indicator, followed by the termination of the method at block 99.

2,637,168 TB-With reference to Figure 10, a diagram 800 illustrates a method for un-issue validation for a version of Port List software component. At block 101, the Un-Issue validation method is initiated. At block 102, the method checks the Issued view of software components for instances of Application Type software components referencing the component UID under examination. At block 103, the method verifies if such versions of the Application Type software components were found. If yes (exit "Yes" from block 103), the Un-Issue validation fails (block 100), otherwise (exit "No" from block 103), the Un-Issue validation passes (block 104).
With reference to Figure 11, a diagram 900 shows a flowchart 900 illustrating a method for deleting a version of software component from the update of software release. At block 111, the method starts. At block 112, the method checks for instances of software components in the Latest view and the Issued view, which point at the component UID under examination. If rules are violated (exit "Fail" from block 111), the method is rejected (block 110), otherwise (exit "Pass" from block 111), the method continues to block 113. At block 113, the method determines if the version of software component has been checked-out, i.e. withdrawn from the repository of software components for further development. If yes (exit "Yes" from block 113), the delete Is rejected (block 110). If not (exit "No" from block 113), the method continues to block 115. At block 115, the method checks if the version of software component under examination is assigned an issued indicator. If yes (exit "Yes" from block 115), the method continues to block 114; otherwise (exit "No" from block 115), 2,637,168 TB-the method continues to block 116. At block 114, the previous version of software component having an issued indicator is assigned an un-issued indicator, and the version of software component under examination is assigned an issued indicator instead, after which the method proceeds to block 116. At block 116, the latest version of software component is assigned a deleted indicator, and its check-in retired date time stamp is set to the current date. At block 117, the method terminates.
With reference to Figure 12, a diagram 1000 illustrates a delete validation method for a version of Port List software component. At block 121, the method starts. At block 122, the method searches for instances of Application Type software components in the Issued view pointing at the component UID
under examination. At block 123, the method verifies is such versions of Application Type software components are found. If yes (exit "Yes" from block 123), delete validation fails (block 120); otherwise (exit "No" from block 123), the method continues to block 124. At block 124, the method searches for instances of Application Type software components in the Latest view pointing at the component UID under examination. At block 125, the method verifies if such versions of Application Type software components are found. If yes (exit "Yes" from block 125), delete validation fails (block120); otherwise (exit "No"
from block 125), the delete validation method passes (block 126).
With reference to Figure 13, a diagram 1100 illustrates an assembly of an update for software release according to the embodiment of the present invention. At block 130, the assembly of the update for software release is initiated. At block 131, 2,637,168 TB-versions of Filter software components having issued Indicators are added to the update. At block 132, versions of Application Type software components having issued Indicators are added to the update. At block 133, versions of Port List software components having issued indicators are added to the update. At block 134, common UIDs for all versions of software component having deleted indicators are added to the update, followed by compiling the update of software release and making it available to a client.
Figure 14 illustrates the Release Management System 13 of Figure 1 in more detail. The Release Management System 13 resides at the server computer 11, comprising a Central Processing Unit (CPU) and the memory, storing computer executable instructions, thus forming various modules of the Release Management System 13 as will be described in detail below. The computer readable instructions, when executed, perform the steps of the methods described above. The Release Management System 13 includes a Software Release Management Module 22, comprising software release management rules, along with a number of repositories of software components, for brevity to be referred to as components. Three types of repositories of software components are shown in Figure 14, namely Repository of Port List components 20, Repository of Application Type components 21, and Repository of Filter components 24. The Release Management System 13 further comprises a Software Release Update Module 22 for assembling the update of software release.
The Software Release Management Module 22 selects software components from the Repositories 20, 21, 24 of Port List, 2,637,168 TB-Application Type and Filter components, which are supplied to the Software Release Update Module 23 for publishing the update of software release in accordance to the methods of the embodiment of the invention described above.
Figure 15 shows the Software Release Management Module 22 of Figure 14 in more detail. It comprises Rules Repository 157, where versions of software components are checked for satisfying the rules as described above; means 158 for assigning time stamps and indicators to versions of software components, e.g., deleted, issued, and un-issued indicators, further comprising means 154 for assigning date sets, e.g., an issued date set and checked-in date set. Once the time stamps and indicators are assigned to versions of software components, their status in the update for software release is defined. The Software Release Management Module 22 further comprises means 152 for generating views of versions of software components, e.g., the Latest view and the Issued view; and means 156 for selecting versions of software components to be included in the update of software release.
It is understood that numerous modifications can be made to the methods and system described above. It is contemplated that various other classes of software components can be introduced, as required, apart from the Application Type, Port List and Filter classes described above. Various other designations of date sets, time stamps and indicators may be assigned to versions of software components to indicate their status in an update for software release. In the system for assembling an update for software release, the means for assigning date sets, and means for assigning indicators can be formed separate from the means for assigning time stamps as required. Repositories 2,637,168 TB-025-CA
20, 21 and 23 of versions of software components may be stored in one database on one computer, or alternatively on different computers communicating over a network. Alternatively, all repositories 20, 21 and 23 can be combined into one combined repository of versions of software components, which is in communication with the Software Release Management Module 22.
Similarly, the Software Release Update Module, where the assembly of the update for software release takes place, may be combined with the Software Release Management Module as needed.
A computer readable medium such as floppy, CD-ROM, DVD or memory is also provided comprising computer readable instructions stored thereon, when executed by a processor, to perform the steps of the methods described above.
Although the embodiment of the invention has been described in detail, it will be apparent to one skilled in the art that variations and modifications to the embodiment may be made within the scope of the following claims.

Claims (64)

WHAT IS CLAIMED IS:
1. A method of assembling an update for a software release, comprising:
employing at least one processor for:
(al) defining classes of software components, each class comprising a plurality of instances, each instance having a plurality of versions of the software components;
(a2) assigning, to each version of a software component of each instance of each class, one or more time stamps;
(a3) assigning, to each version of a software component of each instance of each class, one or more indicators identifying a release status of said each version;
(a4) defining rules for processing said time stamps and said indicators;
(a5) selecting a single version of a software component of each instance of each class based on processing of said time stamps and said indicators according to one or more of the rules; and (a6) assembling selected versions of software components into the update of the software release;
further comprising establishing a correspondence between a version of an instance of a first class and a second class for conditionally assigning indicators to the version of the instance of the first class based on indicators assigned to versions of the second class, and vice versa.
2. The method of claim 1, wherein the indicators comprise one or more of the following indicators:
a deleted indicator, identifying that a version to which the deleted indicator is assigned is no longer needed;

an issued indicator, identifying that a version to which the issued indicator is assigned is included in a current software release; or an un-issued indicator, identifying that a version to which the un-issued indicator is assigned either is a new version submitted to a repository of software components, or does not have the issued or deleted indicator.
3. The method of claim 2, wherein the time stamps comprise a checked-in date, which is assigned provided the version becomes the latest version, and a checked-in retired date, which is assigned provided a new version is submitted to a repository of software components.
4. The method of claim 2, wherein the time stamps comprise an issued date, which is assigned provided the version is assigned the issued indicator, and an issued retired date, which is assigned provided the version is assigned the un-issued or deleted indicator.
5. The method of claim 1, wherein the issued indicator is assigned to the version of the instance of the first class provided at least one version of an instance of the second class is assigned the issued indicator.
6. The method of claim 1, wherein the deleted indicator is assigned to a version of an instance of the second class provided the version of the instance of the first class is assigned the issued indicator.
7. The method of claim 2, wherein selecting a single version of step (a5) is performed for versions having an issued indicator.
8. The method of claim 2, further comprising replacing the un-issued indicator with the issued indicator for the selected versions.
9. The method of claim 3, wherein selecting a single version of step (a5) is performed for versions having the most recent checked-in date time stamp and no checked-in retired date time stamp.
10. The method of claim 1, wherein the classes defined comprise one or more of the following classes: (i) an Application Type class representing software applications to be protected; (ii) a Filter class representing software filters to provide protection against computer intrusion attacks; (iii) a Port List class representing computer ports.
11. A system for assembling an update for a software release, comprising:
a processor;
a memory having computer readable instructions stored thereon, causing the processor to:
(a1) define classes of software components, each class comprising a plurality of instances, each instance having a plurality of versions of the software components;
(a2) assign, to each version of a software component of each instance of each class, one or more time stamps;

(a3) assign, to each version of a software component of each instance of each class, one or more indicators identifying a release status of said each version;
(a4) define rules for processing said time stamps and said indicators;
(a5) select a single version of a software component of each instance of each class based on processing of said time stamps and said indicators according to one or more of the rules; and (a6) assemble selected versions of software components into the update of the software release;
wherein the computer readable instructions further cause the processor to establish a correspondence between a version of an instance of a first class and a second class for conditionally assigning indicators to the version of the instance of the first class based on indicators assigned to versions of the second class, and vice versa.
12. The system of claim 11, wherein the indicators comprise one or more of the following:
a deleted indicator, identifying that a version is no longer needed;
an issued indicator, identifying that a version is included in a current software release; or an un-issued indicator, identifying that a version is either a new version submitted to a repository of software components, or does not have the issued or deleted indicator.
13. The system of claim 12, wherein the time stamps comprise a checked-in date, which is assigned provided the version becomes the latest version, and a checked-in retired date, which is assigned provided a new version is submitted to a repository of software components.
14. The system of claim 12, wherein the time stamps comprise an issued date, which is assigned provided the version is assigned the issued indicator, and an issued retired date, which is is assigned provided the version is assigned the un-issued or deleted indicator.
15. The system of claim 11, wherein the issued indicator is assigned to the version of the instance of the first class provided at least one version of an instance of the second class is assigned the issued indicator.
16. The system of claim 11, wherein the deleted indicator is assigned to a version of an instance of the second class provided the version of the instance of the first class is assigned the issued indicator.
17. The system of claim 12, wherein the computer readable instructions further cause the processor to select a single version among versions having an issued indicator.
18. The system of claim 13, wherein the computer readable instructions further cause the processor to select a single version among versions having the most recent checked-in date time stamp and no checked-1n retired date time stamp.
19. A system for assembling an update for a software release, comprising:

a processor and a memory having computer readable instructions stored thereon for execution by the processor, causing the processor to:
define classes of software components, each class comprising a plurality of instances, each instance having a unique identifier (UID), said each instance of said each class representing a software component, which has a plurality of versions;
for each version of the software component, assign one or more time stamps, and an indicator identifying a release status of the version of the software component;
introduce a flexible coupling between versions of the software components and instances of classes, including introducing a pointer between a version of the software component and a UID of an instance of a class associated with the version;
select versions of software components from which pointers originate;
for each instance of the class, to which the pointer points at, select one version of the software component based on the assigned indicator, and assemble the selected versions of software components into the update of the software release.
20. The system as described in claim 19, wherein the computer readable instructions further cause the processor to assign the indicator, comprising one or more of the following indicators:
a deleted indicator when a version of the software component is no longer needed;
an issued indicator when a version of the software component is included in a current software release; or an un-issued indicator when a new version of the software component has been submitted to a repository of software components, or when the version of the software component does not have the issued or deleted indicator.
21. The system as described in claim 20, wherein the computer readable instructions further cause the processor to assign a checked-in date set and an issued date set to each version of the software components.
22. The system as described in claim 21, wherein the computer readable instructions further cause the processor to assign the checked-in date set, including a checked-in date time stamp when the version of the software component has become the latest version of the software component, and a checked-in retired date time stamp when a new version of the software component is submitted to the repository of software components.
23. The system as described in claim 21, wherein the computer readable instructions further cause the processor to assign the issued date set including an issued date time stamp when the version of the software component is assigned the issued indicator, and an issued retired date time stamp when the version of the software component is assigned the un-issued or deleted indicator.
24. The system as described in claim 20, wherein the computer readable instructions further cause the processor to select versions of software components, which have the issued indicator to form an issued view of the software components.
25. The system as described in claim 22, wherein the computer readable instructions further cause the processor to select versions of software components having the most recent checked-in date time stamps and no checked-in retired date time stamps to form a latest view of the software components.
26. The system as described in claim 20, wherein the computer readable instructions further cause the processor to define one or more of the following classes: (i) an Application Type class representing software applications to be protected; (ii) a Filter class representing software filters to provide protection against computer intrusion attacks; (Iii) a Port List class representing computer ports.
27. The system as described in claim 22, wherein the computer readable instructions further cause the processor to prevent, before the selected versions of software components are assembled into the update of the software release, the version of the software component, from which the pointer originates, to be set as the issued version of the software component unless at least one version of a software component in the instance of the class, to which the pointer points at, has the Issued indicator.
28. The system as described in claim 22, wherein the computer readable instructions further cause the processor to prevent, before the selected versions of software components are assembled into the update of the software release, the version of the software component, to which the pointer points, to have a deleted indicator applied as long as the version of the software component is pointed to by a pointer originating from a version of another software component, which has an issued indicator.
29. The system as described in claim 20, wherein the computer readable instructions further cause the processor to prevent the version of the software component to have the un-issued indicator once the version of the software component is included in the update of the software release.
30. The system as described in claim 26, wherein the computer readable instructions further cause the processor to provide a pointer between the version of the software component in the Filter class and the UID of the instance of the Application Type class.
31. The system as described in claim 20, wherein the computer readable instructions further cause the processor to:
determine whether the version of the software component does not have the deleted indicator;
if there is no a previous version of the software component, assign a checked-in date time stamp, indicating when the version of the software component has become the latest version of the software component, to the version of the software component;
if there is a previous version of the software component, set a checked-in retired date time stamp, indicating when a new version of the software component is submitted to the repository of software components, to the previous version of the software component;

otherwise, terminate execution of the computer readable instructions.
32. The system as described in claim 31, wherein the computer readable instructions further cause the processor to:
check-in a version of a Filter software component from which the pointer originates, the Filter software component representing a software filter to provide protection against computer intrusion attacks, comprising:
ensuring that an Application Type software component, to which the pointer points at, exists;
the Application Type software component representing a software application to be protected; and provided there is a pointer to another Filter software component, ensuring that said another Filter software component exists.
33. The system as described in claim 20, wherein the computer readable instructions further cause the processor to assign the issued indicator to the version of the software component, comprising:
if the version of the software component has the deleted indicator, assigning the un-issued indicator to the version of the software component;
if the version of the software component does not have the deleted indicator, determining that the version of the software component does not have any version with the issued indicator, followed by assigning the issued indicator to the version of the software component and setting an issued retired date time stamp, indicating when the version of the software component is assigned the un-issued indicator, to a previous version of the software component.
34. The system as described in claim 33, wherein the computer readable instructions further cause the processor to:
assign the issued indicator to the version of the Filter software component from which the pointer originates, comprising:
ensuring that an Application Type software component, to which the pointer points at, exists and has an issued indicator, the Application Type software component representing a software application to be protected; and provided there is a pointer to another Filter software component, ensuring that said another Filter software component exists and has an issued indicator, the Filter software component representing a software filter to provide protection against computer intrusion attacks;
otherwise terminating the assigning of the issued indicator.
35. The system as described in claim 20, wherein the computer readable instructions further cause the processor to un-issue the version of the software component, comprising assigning the un-issued indicator, comprising:
determining whether the version of the software component was not previously included in the update of the software release and then deleted from the update;
if the version of the software component has the deleted indicator, assigning the un-issued indicator to the version of the software component;
if the version of the software component does not have the deleted indicator, assigning the issued indicator to the version of the software component, and assigning an issued retired date time stamp, indicating when the version of the software component is assigned the un-issued indicator, to the previous version of the software component;
otherwise, terminating the assigning the un-issued indicator.
36. The system as described in claim 35, wherein the computer readable instructions further cause the processor to un-issue a version of a Port List software component specifying a computer port, including assigning the un-issued indicator, comprising:
searching for versions of Application Type software components in a latest view or an issued view, which point to the version of the Port List component, the issued view comprising versions of software components having the issued indicator, and the latest view comprising versions of software components having the most recent checked-in date time stamps when the versions of the software components have become the latest versions of the software components, and having no checked-in retired date time stamps when new versions of the software components are submitted to the repository of the software components;
the Application Type software component representing a software application to be protected; and terminating the un-issuing the version of the Port List software component if the Applicant Type software components, which point to the Port List software component, have issued indicators.
37. The system as described in claim 20, wherein the computer readable instructions further cause the processor to assign the deleted indicator to the version of the software component, comprising:
provided the version of the software component has not been withdrawn from the repository of software components for further development:
if the version of the software component has the issued indicator, assigning the un-issued indicator and an issued retired date time stamp, indicating when the version of the software component is assigned the un-issued indicator, to the previous version of the software component;
if the version of the software component does not have the issued indicator, assigning the deleted indicator to the version of the software component and setting a checked-in retired date time stamp, indicating when a new version of the software component is submitted to the repository of software components, to the current date.
38. The system as described in claim 37, wherein the computer readable instructions further cause the processor to perform the validation, comprising:
assigning the deleted indicator to the version of a Port List software component of an instance of a Port List class, the Port List Class representing computer ports, comprising ensuring that no version of the Application Type software component in the latest view or an issued view points at the instance of the Port List class, the issued view comprising software components which have the issued indicator, and the Application Type software component representing a software application to be protected.
39. A method for assembling an update for a software release, comprising employing a processor for performing:
defining classes of software components, each class comprising a plurality of instances, each instance having a unique identifier (UID), said each instance of said each class representing a software component, which has a plurality of versions;
for each version of the software component, assigning one or more time stamps, and an indicator identifying a release status of the version of the software component;
introducing a flexible coupling between versions of the software components and instances of classes, including introducing a pointer between a version of the software component and a UID of an instance of a class associated with the version;
selecting versions of software components from which pointers originate;
for each instance of the class, to which the pointer points at, selecting one version of the software component based on the assigned indicator, and assembling the selected versions of software components into the update of the software release.
40. The method as described in claim 39, wherein the step of assigning the indicator comprises assigning one or more of the following indicators:
a deleted indicator when a version of the software component is no longer needed;
an issued indicator when a version of the software component is included in a current software release; or an un-issued indicator when a new version of the software component has been submitted to a repository of software components, or when the version of the software component does not have the issued or deleted indicator.
41. The method as described in claim 40, wherein the step assigning further comprises assigning a checked-in date set and an issued date set to each version of the software components.
42. The method as described in claim 41, wherein the step of assigning the checked-in date set further comprises assigning the checked-in date set, including a checked-in date time stamp when the version of the software component has become the latest version of the software component, and a checked-in retired date time stamp when a new version of the software component is submitted to the repository of software components.
43. The method as described in claim 41, wherein the step of assigning the issued date set comprises assigning the issued date set including an issued date time stamp when the version of the software component is assigned the issued indicator, and an issued retired date time stamp when the version of the software component is assigned the un-issued or deleted indicator.
44. The method as described in claim 40, wherein the steps of selecting further comprise selecting versions of software components, which have the issued indicator to form an issued view of the software components.
45. The method as described in claim 42, wherein the steps of selecting comprise selecting versions of software components having the most recent checked-in date time stamps and no checked-in retired date time stamps to form a latest view of the software components.
46. The method as described in claim 40, wherein the step of defining comprises defining one or more of the following classes: (i) an Application Type class representing software applications to be protected; (ii) a Filter class representing software filters to provide protection against computer intrusion attacks; (iii) a Port List class representing computer ports.
47. The method as described in claim 42, further comprising preventing the version of the software component, from which the pointer originates, to be set as the issued version of the software component unless at least one version of a software component in the instance of the class, to which the pointer points at, has the issued indicator, the preventing being performed before the assembling.
48. The method as described in claim 42, further comprising preventing the version of the software component, to which the pointer points, to have a deleted indicator applied as long as the version of the software component is pointed to by a pointer originating from a version of another software component, which has an issued indicator, the preventing being performed before the assembling.
49. The method as described in claim 40, further comprising preventing the version of the software component to have the un-issued indicator once the version of the software component is included in the update of the software release.
50. The method as described in claim 46, wherein the introducing comprises providing a pointer between the version of the software component in the Filter class and the UTD of the instance of the Application Type class.
51. The method as described in claim 40, wherein the assigning further comprises:
provided the version of the software component has a valid name, determining whether the version of the software component does not have a deleted indicator;
performing validation for the version of the software component based on the class;
if there is no a previous version of the software component, assigning a checked-in date time stamp to the version of the software component; otherwise, if there is a previous version of the software component, setting a checked-in retired date time stamp to the previous version of the software component;
otherwise terminating the step of assigning the indicator.
52. The method as described in claim 51, wherein the performing validation comprises:
checking-in a version of a Filter software component from which the pointer originates, the Filter software component representing a software filter to provide protection against computer intrusion attacks, comprising:

ensuring that an Application Type software component, to which the pointer points at, exists, the Application Type software component representing a software application to be protected;
and provided there is a pointer to another Filter software component, ensuring that said another Filter software component exists.
53. The method as described in claim 40, wherein the assigning comprises:
assigning the issued indicator to the version of the software component, comprising:
performing validation of the version of the software component based on the class;
if the version of the software component has a deleted indicator, assigning the un-issued indicator to the version of the software component;
if the version of the software component does not have the deleted indicator, determining that the version of the software component does not have any version with the issued indicator, followed by assigning the issued indicator to the version of the software component and setting an issued retired date time stamp, indicating when the version of the software component is assigned the un-issue indicator, to a previous version of the software component.
54. The method as described in claim 53, wherein the performing validation comprises:

assigning the issued indicator to the version of the Filter software component from which the pointer originates, comprising:
ensuring that an Application Type software component, to which the pointer points at, exists and has an issued indicator, the Application Type software component representing a software application to be protected; and provided there is a pointer to another Filter software component, ensuring that said another Filter software component exists and has an issued indicator, the Filter software component representing a software filter to provide protection against computer intrusion attacks;
otherwise terminating the assigning the issued indicator.
55. The method as described in claim 44, wherein the assigning comprises:
un-Issuing the version of the software component, comprising assigning the un-issued indicator, comprising:
performing validation of the version of the software component based on the class;
determining whether the version of the software component was not previously Included in the update of the software release and then deleted from the update;
if the version of the software component has the deleted indicator, assigning the un-issued indicator to the version of the software component;
if the version of the software component does not have the deleted Indicator, assigning the issued indicator to the version of the software component, and assigning an issued retired date time stamp, indicating when the version of the software component is assigned the un-issued indicator, to the previous version of the software component;
otherwise, terminating the un-issuing.
56. The method as described in claim 55, wherein the un-issuing comprises:
un-issuing a version of a Port List software component specifying a computer port, including assigning the un-issued indicator, comprising:
searching for versions of Application Type components in a latest view or an issued view, which point to the version of the Port List component;
the Application Type component representing a software application to be protected, and the latest view comprising versions of software components having the most recent checked-in date time stamps when the versions of the software components have become the latest versions of the software components, and having no checked-in retired date time stamps when new versions of the software components are submitted to the repository of the software components; and terminating the un-issuing the version of the Port List component if the Applicant Type components, which point to the Port List component, have issued indicators.
57. The method as described in claim 45, wherein the assigning comprises:
assigning the deleted indicator to the version of the software component, comprising:
performing validation of the version of the software component based on the class;

provided the version of the software component has not been withdrawn from the repository of software components for further development:
If the version of the software component has the issued indicator, assigning the un-issued indicator and an issued retired date time stamp, indicating when the version of the software component is assigned the un-issued indicator, to the previous version of the software component;
if the version of the software component does not have an issued indicator, assigning the deleted indicator to the version of the software component and setting its checked-in retired date time stamp to the current date.
58. The method as described in claim 57, wherein the performing validation comprises:
assigning the deleted indicator to the version of a Port List component of an instance of a Port List class, the Port List Class representing computer ports, comprising ensuring that no version of an Application Type component in the latest view or an issued view points at the instance of the Port List class, components, the issued view comprising software components which have the issued indicator, and the Application Type component representing a software application to be protected.
59. A system for assembling an update for software release, comprising:
a processor, and a memory having computer readable instructions stored thereon for execution by the processor, causing the processor to form:

a repository of classes of software components, each class comprising a plurality of instances, each instance having a unique identifier (UID), said each instance of said class representing a software component, which has plurality of versions;
a software release management module, comprising:
a rule repository, comprising rules for flexible coupling between versions of the software components and instances of classes, configured to provide a pointer between a version of the software component and a UID of an instance of a class associated with the version;
means for assigning, for each version of said each software component, one or more time stamps and indicators Identifying release status of said each software component in accordance with the rules;
means for selecting versions of the software components from which the pointers originate; and for selecting, for each instance of the class, to which the pointer points at, one version of the software component based on the assigned indicators; and means for assembling the selected versions of the software components into the update of the software release.
60. The system as described in claim 59, wherein the indicators comprise one or more of the following:
a deleted indicator when a version of the software component is no longer needed;
an Issued indicator when a version of the software component is included in a current software release; and an un-issued indicator when a new version of the software component has been submitted to the repository of the software components, or when the version of the software component does not have the issued or deleted indicator.
61. The system as described in claim 60, wherein the means for assigning comprises means for assigning date sets, comprising a checked-in date set and an issued date set, to each version of the software components;
wherein the checked-in date set includes a checked-in date time stamp when the version of the software component has become the latest version of the software component, and a checked-in retired date time stamp when a new version of the software component is submitted to the repository of the software components; and wherein the issued date set includes an issued date time stamp when the version of the software component is assigned the issued indicator, and an issued retired sate time stamp when the version of the software component is assigned the un-issued or deleted indicator.
62. The system as described in claim 61, wherein the means for selecting comprises means for generating views of versions of software components, including generating an issued view by selecting versions of software components, which have the issued indicator, and a latest view by selecting versions of software components, which have the most recent checked-in date time stamp, indicating when the version of the software component has become the latest version of the software component.
63. The system as described in claim 59, wherein the repository of classes comprises one or more of the following classes: (i) an Application Type class representing software applications to be protected; (ii) a Filter class representing software filters to provide protection against computer intrusion attacks; (iii) a Port List class representing computer ports.
64. A non-transitory computer readable storage medium, comprising computer readable instructions stored thereon, for execution by a processor, to perform the steps of the method as described in claim 39.
CA2637168A 2007-07-11 2008-07-10 Method and system for version independent software release management Active CA2637168C (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US94918507P 2007-07-11 2007-07-11
US60/949,185 2007-07-11

Publications (2)

Publication Number Publication Date
CA2637168A1 CA2637168A1 (en) 2009-01-11
CA2637168C true CA2637168C (en) 2015-12-01

Family

ID=40255135

Family Applications (1)

Application Number Title Priority Date Filing Date
CA2637168A Active CA2637168C (en) 2007-07-11 2008-07-10 Method and system for version independent software release management

Country Status (2)

Country Link
US (3) US8117596B2 (en)
CA (1) CA2637168C (en)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8117596B2 (en) * 2007-07-11 2012-02-14 Trend Micro Incorporated Method and system for version independent software release management
WO2010010597A1 (en) * 2008-07-23 2010-01-28 富士通株式会社 Object linkage device for linking objects in statically linked executable format program file, method for linking objects, and program thereof
US9280572B2 (en) * 2009-01-12 2016-03-08 Oracle International Corporation Managing product information versions
US8412797B2 (en) * 2009-08-27 2013-04-02 Vmware, Inc. Platform for development and deployment of system administration solutions
US9104813B2 (en) 2012-12-15 2015-08-11 International Business Machines Corporation Software installation method, apparatus and program product
CN104834537B (en) * 2014-12-30 2018-04-27 沈阳东软医疗系统有限公司 Data processing method, server and client
US10339034B2 (en) * 2017-06-16 2019-07-02 Google Llc Dynamically generated device test pool for staged rollouts of software applications
US11093241B2 (en) * 2018-10-05 2021-08-17 Red Hat, Inc. Outlier software component remediation
WO2020139073A1 (en) * 2018-12-26 2020-07-02 Mimos Berhad System and method to generate hash values for project artifact and software package
US11086619B2 (en) * 2019-01-04 2021-08-10 Morgan Stanley Services Group Inc. Code analytics and publication platform
JP7438924B2 (en) * 2020-12-15 2024-02-27 株式会社東芝 Information processing device, method and program
US11599355B2 (en) * 2021-06-21 2023-03-07 Microsoft Technology Licensing, Llc Application module version management
US11922160B2 (en) * 2022-01-28 2024-03-05 Dell Products L.P. Validated state control in edge computing

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4558413A (en) * 1983-11-21 1985-12-10 Xerox Corporation Software version management system
US5155847A (en) * 1988-08-03 1992-10-13 Minicom Data Corporation Method and apparatus for updating software at remote locations
US5278979A (en) * 1990-12-20 1994-01-11 International Business Machines Corp. Version management system using pointers shared by a plurality of versions for indicating active lines of a version
US5291598A (en) * 1992-04-07 1994-03-01 Gregory Grundy Method and system for decentralized manufacture of copy-controlled software
US5649200A (en) * 1993-01-08 1997-07-15 Atria Software, Inc. Dynamic rule-based version control system
US5950209A (en) * 1996-10-02 1999-09-07 Alcatel Usa Sourcing, L.P. Software release control system and method
US6112024A (en) * 1996-10-02 2000-08-29 Sybase, Inc. Development system providing methods for managing different versions of objects with a meta model
US5903897A (en) * 1996-12-18 1999-05-11 Alcatel Usa Sourcing, L.P. Software documentation release control system
US6289358B1 (en) * 1998-04-15 2001-09-11 Inktomi Corporation Delivering alternate versions of objects from an object cache
US6209128B1 (en) * 1998-06-05 2001-03-27 International Business Machines Corporation Apparatus and method for providing access to multiple object versions
US6199203B1 (en) * 1998-07-21 2001-03-06 Hewlett-Packard Company Memory management techniques for on-line replaceable software
US6532588B1 (en) * 1998-10-21 2003-03-11 Xoucin, Inc. User centric program product distribution
US6868425B1 (en) * 1999-03-05 2005-03-15 Microsoft Corporation Versions and workspaces in an object repository
US7272815B1 (en) * 1999-05-17 2007-09-18 Invensys Systems, Inc. Methods and apparatus for control configuration with versioning, security, composite blocks, edit selection, object swapping, formulaic values and other aspects
WO2000070531A2 (en) * 1999-05-17 2000-11-23 The Foxboro Company Methods and apparatus for control configuration
US7089530B1 (en) * 1999-05-17 2006-08-08 Invensys Systems, Inc. Process control configuration system with connection validation and configuration
EP1077407A1 (en) * 1999-07-29 2001-02-21 International Business Machines Corporation Method of upgrading a program using associated configuration data
JP2002278754A (en) * 2001-03-15 2002-09-27 Toshiba Corp Management system of software component library, its method and management program of software component library
US6981250B1 (en) * 2001-07-05 2005-12-27 Microsoft Corporation System and methods for providing versioning of software components in a computer programming language
CA2421825C (en) * 2002-09-20 2012-07-10 Mks Inc. Version control system for software development
US7213040B1 (en) * 2002-10-29 2007-05-01 Novell, Inc. Apparatus for policy based storage of file data and meta-data changes over time
US8108429B2 (en) * 2004-05-07 2012-01-31 Quest Software, Inc. System for moving real-time data events across a plurality of devices in a network for simultaneous data protection, replication, and access services
US7490073B1 (en) * 2004-12-21 2009-02-10 Zenprise, Inc. Systems and methods for encoding knowledge for automated management of software application deployments
US8181020B2 (en) * 2005-02-02 2012-05-15 Insyde Software Corp. System and method for securely storing firmware
US7546582B2 (en) * 2005-03-30 2009-06-09 International Business Machines Corporation Managing dynamic configuration data for producer components in a computer infrastructure
US7779383B2 (en) * 2005-12-01 2010-08-17 Sap Ag Composition model and composition validation algorithm for ubiquitous computing applications
US8225311B1 (en) * 2006-03-30 2012-07-17 Emc Corporation Deploying and distributing content management code
US7805420B2 (en) * 2006-11-20 2010-09-28 Microsoft Corporation Versioning and concurrency control for multiple client access of data
US7913227B2 (en) * 2007-02-28 2011-03-22 International Business Machines Corporation Methods and apparatus for management of configuration item lifecycle state transitions
US20080295090A1 (en) * 2007-05-24 2008-11-27 Lockheed Martin Corporation Software configuration manager
US8117596B2 (en) * 2007-07-11 2012-02-14 Trend Micro Incorporated Method and system for version independent software release management
US8407688B2 (en) * 2007-11-27 2013-03-26 Managelq, Inc. Methods and apparatus for storing and transmitting historical configuration data associated with information technology assets

Also Published As

Publication number Publication date
US20120084764A1 (en) 2012-04-05
US20120266154A1 (en) 2012-10-18
US8739152B2 (en) 2014-05-27
US8219985B2 (en) 2012-07-10
CA2637168A1 (en) 2009-01-11
US20110099543A1 (en) 2011-04-28
US8117596B2 (en) 2012-02-14

Similar Documents

Publication Publication Date Title
CA2637168C (en) Method and system for version independent software release management
US6745382B1 (en) CORBA wrappers for rules automation technology
US7523128B1 (en) Method and system for discovering relationships
US8315174B2 (en) Systems and methods for generating a push-up alert of fault conditions in the distribution of data in a hierarchical database
CN111736964B (en) Transaction processing method and device, computer equipment and storage medium
JP2004272908A (en) Method for integrating phase of design, development and management of system
US20110161931A1 (en) Automated stream-based change flows within a software configuration management system
JP2009515264A (en) Method and system for control of documents and source code
EP3166031B1 (en) Bi-directional synchronization of data between a product lifecycle management (plm) system and a source code management (scm) system
CN111708615B (en) Transaction processing method and device, computer equipment and storage medium
US20200327116A1 (en) Systems and methods for document automation
EP3671437A1 (en) Data pipeline branching
EP3166029B1 (en) Exporting hierarchical data from a source code management (scm) system to a product lifecycle management (plm) system
US20060031827A1 (en) System, apparatus and method of assisting with software product update installations
GB2513528A (en) Method and system for backup management of software environments in a distributed network environment
US8463792B2 (en) Identifying software
US20070180059A1 (en) Light weight software and hardware inventory
WO2009050167A1 (en) A method, apparatus and computer program for migrating records in a database from a source database schema to a target database schema
CN111639309A (en) Data processing method and device, node equipment and storage medium
Hoover et al. Efficient incremental evaluation of aggregate values in attribute grammars
CN114218256B (en) Access statement processing method, device, equipment and storage medium
US7283994B2 (en) Merging of products into a database
EP3166030B1 (en) Exporting hierarchical data from a product lifecycle management (plm) system to a source code management (scm) system
US20170212753A1 (en) Managing change sets
JP2009175854A (en) Program, method and computer system for securing data consistency

Legal Events

Date Code Title Description
EEER Examination request

Effective date: 20130114