IP Library Granted Patent US 7,934,221
Granted Patent B2
US 7,934,221 · App. 11/713,955 · Granted Apr 26, 2011

Approach for proactive notification of contract changes in a software service

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,934,221
App. No.
11/713,955
Granted
Apr 26, 2011
Kind
B2
Abstract

An approach is provided for proactive notification of contract changes in a software service. According to the approach, when the executable code of a composite application operable to access the service is generated, an initial copy of a contract that describes the service is retrieved. A baseline representation of the contract is generated based on the initial copy of the contract. When the composite application is being executed, a determination is made based on the baseline representation whether the contract has experienced any changes. In response to determining that the contract has experienced a change, a notification is sent indicating that the contract has experienced the change.

Claims (159)

1. A computer-implemented method comprising:

generating executable code of a composite application that is operable to access a service that is external to the composite application, wherein generating the executable code of the composite application comprises retrieving an initial copy of a contract that describes the service;

based on the initial copy of the contract, generating a baseline representation of the contract;

wherein the baseline representation of the contract includes a first token that is generated based on the initial copy of the contract, wherein the initial copy of the contract specifies an input interface and an output interface of the service at the time the composite application is generated;

storing the baseline representation of the contract;

executing the composite application;

during execution of the composite application, determining, based on the baseline representation of the contract, whether the contract has experienced any changes, wherein determining whether the contract has experienced any changes comprises:

retrieving a current copy of the contract;

generating a current representation of the contract based on the current copy of the contract;

wherein the current representation of the contract includes a second token that is generated based on the current copy of the contract, wherein the current copy of the contract specifies the input interface and the output interface of the service at the time the composite application is being executed; and

comparing the current representation of the contract to the baseline representation of the contract to determine whether the contract has experienced any changes;

wherein comparing the current representation to the baseline representation comprises comparing the second token to the first token; and

in response to determining that the contract has experienced a change, sending a notification which indicates that the contract has experienced the change;

wherein the method is performed by one or more computer systems.

2. The computer-implemented method as recited in claim 1 , wherein the contract includes a Web Services Description Language (WSDL) definition that describes the service.

3. The computer-implemented method as recited in claim 1 , wherein the service and the composite application conform to a Service-Oriented Architecture (SOA) standard.

4. The computer-implemented method as recited in claim 1 , wherein retrieving the initial copy of the contract comprises a build process making a call to the service, wherein the build process generates the executable code of the composite application.

5. The computer-implemented method as recited in claim 1 , wherein determining whether the contract has experienced any changes is performed by a process that is separate from the composite application.

6. The computer-implemented method as recited in claim 1 , further comprising:

periodically performing the steps of determining whether the contract has experienced any changes and sending the notification.

7. The computer-implemented method as recited in claim 1 , wherein sending the notification comprises at least one of:

sending an e-mail to a user, wherein the e-mail indicates that the contract has experienced the change;

sending a message to a particular service port, wherein the message indicates that the contract has experienced the change;

storing a record in a log, wherein the record indicates that the contract has experienced the change; and

automatically opening a ticket in a defect tracking system, wherein the ticket indicates that the contract has experienced the change.

8. The computer-implemented method as recited in claim 1 , further comprising:

in response to determining that the contract has experienced the change, analyzing the change to determine whether the change affects the composite application;

wherein, when analyzing the change determines that the change affects the composite application, sending the notification further comprises including first data in the notification, wherein the first data indicates how the change affects the composite application.

9. The computer-implemented method as recited in claim 8 , wherein:

analyzing the change comprises analyzing the differences between the current copy of the contract and the initial copy of the contract, wherein analyzing the differences includes determining whether a current set of elements included in the current copy is the same as an initial set of elements included in the initial copy.

10. The computer-implemented method as recited in claim 1 , wherein:

the composite application is operable to access a plurality of services that are external to the composite application, wherein a plurality of contracts describe the plurality of services; and

the method is performed for each service of the plurality of services.

11. A computer-implemented method comprising:

generating executable code of a composite application that is operable to access a service that is external to the composite application, wherein generating the executable code of the composite application comprises retrieving an initial copy of a contract that describes the service;

based on the initial copy of the contract, generating a baseline representation of the contract;

wherein the baseline representation of the contract includes the initial copy of the contract, wherein the initial copy of the contract specifies an input interface and an output interface of the service at the time the composite application is generated;

storing the baseline representation of the contract;

executing the composite application;

during execution of the composite application, determining, based on the baseline representation of the contract, whether the contract has experienced any changes, wherein determining whether the contract has experienced any changes comprises:

retrieving a current copy of the contract;

generating a current representation of the contract based on the current copy of the contract;

wherein the current representation of the contract includes the current copy of the contract, wherein the current copy of the contract specifies the input interface and the output interface of the service at the time the composite application is being executed; and

comparing the current representation of the contract to the baseline representation of the contract to determine whether the contract has experienced any changes;

wherein comparing the current representation to the baseline representation comprises comparing the current copy of the contract to the initial copy of the contract;

in response to determining that the contract has experienced a change, sending a notification which indicates that the contract has experienced the change;

wherein the method is performed by one or more computer systems.

12. A computer-implemented method comprising:

generating executable code of a composite application that is operable to access a service that is external to the composite application, wherein generating the executable code of the composite application comprises retrieving an initial copy of a contract that describes the service;

based on the initial copy of the contract, generating a baseline representation of the contract;

wherein the baseline representation of the contract includes first version information that is stored in the initial copy of the contract, wherein the first version information specifies a first executable version of the service at the time the composite application is generated;

storing the baseline representation of the contract;

executing the composite application;

during execution of the composite application, determining based on the baseline representation of the contract, whether the contract has experienced any changes, wherein determining whether the contract has experienced any changes comprises:

retrieving a current copy of the contract;

generating a current representation of the contract based on the current copy of the contract;

wherein the current representation of the contract includes second version information that is stored in the current copy of the contract, wherein the second version information specifies a second executable version of the service at the time the composite application is being executed; and

comparing the current representation of the contract to the baseline representation of the contract to determine whether the contract has experienced any changes;

wherein comparing the current representation to the baseline representation comprises comparing the second version information to the first version information;

in response to determining that the contract has experienced a change, sending a notification which indicates that the contract has experienced the change;

wherein the method is performed by one or more computer systems.

13. A computer-implemented method comprising:

generating executable code of a composite application that is operable to access a service that is external to the composite application, wherein generating the executable code of the composite application comprises retrieving an initial copy of a contract that describes the service;

based on the initial copy of the contract, generating a baseline representation of the contract;

wherein the baseline representation of the contract includes:

the initial copy of the contract, wherein the initial copy of the contract specifies an input interface and an output interface of the service at the time the composite application is generated; and

first version information that specifies a first executable version of the service at the time the composite application is generated;

storing the baseline representation of the contract;

executing the composite application;

during execution of the composite application, determining, based on the baseline representation of the contract, whether the contract has experienced any changes, wherein determining whether the contract has experienced any changes comprises:

retrieving a current copy of the contract;

generating a current representation of the contract based on the current copy of the contract;

wherein the current representation of the contract includes:

the current copy of the contract, wherein the current copy of the contract specifies the input interface and the output interface of the service at the time the composite application is being executed; and

second version information that specifies a second executable version of the service at the time the composite application is being executed; and

comparing the current representation of the contract to the baseline representation of the contract to determine whether the contract has experienced any changes;

wherein comparing the current representation to the baseline representation comprises:

comparing the second version information to the first version information; and

when the second version information is the same as the first version information, comparing the current copy of the contract to the initial copy of the contract to determine whether the contract has experienced any changes;

in response to determining that the contract has experienced a change, sending a notification which indicates that the contract has experienced the change;

wherein the method is performed by one or more computer systems.

14. A computer-implemented method comprising:

generating executable code of a composite application that is operable to access a service that is external to the composite application, wherein generating the executable code of the composite application comprises retrieving an initial copy of a contract that describes the service;

based on the initial copy of the contract, generating a baseline representation of the contract;

storing the baseline representation of the contract;

executing the composite application;

during execution of the composite application, determining, based on the baseline representation of the contract, whether the contract has experienced any changes, wherein determining whether the contract has experienced any changes comprises:

retrieving a current copy of the contract;

determining whether the baseline representation of the contract stores first version information, wherein the first version information specifies a first executable version of the service at the time the composite application is generated;

determining whether the current copy of the contract stores second version information, wherein the second version information specifies a second executable version of the service at the time the composite application is being executed;

when the baseline representation of the contract stores the first version information and the current copy of the contract stores the second version information, comparing the second version information to the first version information to determine whether the contract has experienced any changes; and

when the baseline representation of the contract does not store the first version information or when the current copy of the contract does not store the second version information, performing the steps of:

generating a current representation of the contract based on the current copy of the contract; and

comparing the current representation of the contract to the baseline representation of the contract to determine whether the contract has experienced any changes;

in response to determining that the contract has experienced a change, sending a notification which indicates that the contract has experienced the change;

wherein the method is performed by one or more computer systems.

15. A non-transitory machine-readable volatile or non-volatile medium storing a composite application, wherein the composite application when executed is operable to access a service that is external to the composite application and to access a baseline representation of a contract that describes the service, wherein the baseline representation is generated from an initial copy of the contract that is retrieved at the time the executable code of the composite application is generated, wherein the baseline representation of the contract includes a first token that is generated based on the initial copy of the contract, wherein the initial copy of the contract specifies an input interface and an output interface of the service at the time the composite application is generated, the machine-readable medium storing instructions which, when performed by one or more processors, cause performance of steps comprising:

during execution of the composite application, determining, based on the baseline representation of the contract, whether the contract has experienced any changes, wherein determining whether the contract has experienced any changes comprises:

retrieving a current copy of the contract;

generating a current representation of the contract based on the current copy of the contract;

wherein the current representation of the contract includes a second token that is generated based on the current copy of the contract, wherein the current copy of the contract specifies the input interface and the output interface of the service at the time the composite application is being executed; and

comparing the current representation of the contract to the baseline representation of the contract to determine whether the contract has experienced any changes;

wherein comparing the current representation to the baseline representation further comprises comparing the second token to the first token; and

in response to determining that the contract has experienced a change, sending a notification which indicates that the contract has experienced the change.

16. The non-transitory machine-readable volatile or non-volatile medium as recited in claim 15 , wherein the contract includes a Web Services Description Language (WSDL) definition that that describes the service.

17. The non-transitory machine-readable volatile or non-volatile medium as recited in claim 15 , wherein the service and the composite application conform to a Service-Oriented Architecture (SOA) standard.

18. The non-transitory machine-readable volatile or non-volatile medium as recited in claim 15 , wherein a build process has retrieved the initial copy of the contract by making a call to the service, wherein the build process has generated the executable code of the composite application.

19. The non-transitory machine-readable volatile or non-volatile medium as recited in claim 15 , wherein the instructions that cause determining whether the contract has experienced any changes are included in a software component that is separate from the composite application.

20. The non-transitory machine-readable volatile or non-volatile medium as recited in claim 15 , further comprising instructions which, when performed by the one or more processors, cause:

periodically determining whether the contract has experienced any changes and sending the notification.

21. The non-transitory machine-readable volatile or non-volatile medium as recited in claim 15 , wherein the instructions that cause sending the notification further comprise instructions which, when performed by the one or more processors, cause at least one of:

sending an e-mail to a user, wherein the e-mail indicates that the contract has experienced the change;

sending a message to a particular service port, wherein the message indicates that the contract has experienced the change;

storing a record in a log, wherein the record indicates that the contract has experienced the change; and

automatically opening a ticket in a defect tracking system, wherein the ticket indicates that the contract has experienced the change.

22. The non-transitory machine-readable volatile or non-volatile medium as recited in claim 15 , further comprising instructions which, when performed by the one or more processors, cause:

in response to determining that the contract has experienced the change, analyzing the change to determine whether the change affects the composite application;

wherein the instructions that cause sending the notification further comprise instructions which, when performed by the one or more processors, cause including first data in the notification when analyzing the change determines that the change affects the composite application, wherein the first data indicates how the change affects the composite application.

23. The non-transitory machine-readable volatile or non-volatile medium as recited in claim 22 , wherein:

the instructions that cause analyzing the change further comprise instructions which, when performed by the one or more processors, cause analyzing the differences between the current copy of the contract and the initial copy of the contract, wherein analyzing the differences includes determining whether a current set of elements included in the current copy is the same as an initial set of elements included in the initial copy.

24. The non-transitory machine-readable volatile or non-volatile medium as recited in claim 15 , wherein the composite application is operable to access a plurality of services that are external to the composite application, wherein a plurality of contracts describe the plurality of services, and wherein the plurality of services includes the service and the plurality of contracts includes the contract.

25. A non-transitory machine-readable volatile or non-volatile medium storing a composite application, wherein the composite application when executed is operable to access a service that is external to the composite application and to access a baseline representation of a contract that describes the service, wherein the baseline representation is generated from an initial copy of the contract that is retrieved at the time the executable code of the composite application is generated, wherein the baseline representation of the contract includes the initial copy of the contract, wherein the initial copy of the contract specifies an input interface and an output interface of the service at the time the composite application is generated, the machine-readable medium storing instructions which, when performed by one or more processors, cause performance of steps comprising:

during execution of the composite application, determining, based on the baseline representation of the contract, whether the contract has experienced any changes, wherein determining whether the contract has experienced any changes comprises:

retrieving a current copy of the contract;

generating a current representation of the contract based on the current copy of the contract;

wherein the current representation of the contract includes the current copy of the contract, wherein the current copy of the contract specifies the input interface and the output interface of the service at the time the composite application is being executed; and

comparing the current representation of the contract to the baseline representation of the contract to determine whether the contract has experienced any changes;

wherein comparing the current representation to the baseline representation further comprises comparing the current copy of the contract to the initial copy of the contract;

in response to determining that the contract has experienced a change, sending a notification which indicates that the contract has experienced the change.

26. A non-transitory machine-readable volatile or non-volatile medium storing a composite application, wherein the composite application when executed is operable to access a service that is external to the composite application and to access a baseline representation of a contract that describes the service, wherein the baseline representation is generated from an initial copy of the contract that is retrieved at the time the executable code of the composite application is generated, wherein the baseline representation of the contract includes first version information that is stored in the initial copy of the contract, wherein the first version information specifies a first executable version of the service at the time the composite application is generated, the machine-readable medium storing instructions which, when performed by one or more processors, cause performance of steps comprising:

during execution of the composite application, determining, based on the baseline representation of the contract, whether the contract has experienced any changes, wherein determining whether the contract has experienced any changes comprises:

retrieving a current copy of the contract;

generating a current representation of the contract based on the current copy of the contract;

wherein the current representation of the contract includes second version information that is stored in the current copy of the contract, wherein the second version information specifies a second executable version of the service at the time the composite application is being executed; and

comparing the current representation of the contract to the baseline representation of the contract to determine whether the contract has experienced any changes;

wherein comparing the current representation to the baseline representation further comprises comparing the second version information to the first version information;

in response to determining that the contract has experienced a change, sending a notification which indicates that the contract has experienced the change.

27. A non-transitory machine-readable volatile or non-volatile medium storing a composite application, wherein the composite application when executed is operable to access a service that is external to the composite application and to access a baseline representation of a contract that describes the service, wherein the baseline representation is generated from an initial copy of the contract that is retrieved at the time the executable code of the composite application is generated, wherein the baseline representation of the contract includes the initial copy of the contract, wherein the initial copy of the contract specifies an input interface and an output interface of the service at the time the composite application is generated, and first version information that specifies a first executable version of the service at the time the composite application is generated, the machine-readable medium storing instructions which, when performed by one or more processors, cause performance of steps comprising:

during execution of the composite application, determining, based on the baseline representation of the contract, whether the contract has experienced any changes, wherein determining whether the contract has experienced any changes comprises:

retrieving a current copy of the contract;

generating a current representation of the contract based on the current copy of the contract;

wherein the current representation of the contract includes:

the current copy of the contract, wherein the current copy of the contract specifies the input interface and the output interface of the service at the time the composite application is being executed; and

second version information that specifies a second executable version of the service at the time the composite application is being executed; and

comparing the current representation of the contract to the baseline representation of the contract to determine whether the contract has experienced any changes;

wherein comparing the current representation to the baseline representation further comprises:

comparing the second version information to the first version information; and

when the second version information is the same as the first version information, comparing the current copy of the contract to the initial copy of the contract to determine whether the contract has experienced any changes;

in response to determining that the contract has experienced a change, sending a notification which indicates that the contract has experienced the change.

28. A non-transitory machine-readable volatile or non-volatile medium storing a composite application, wherein the composite application when executed is operable to access a service that is external to the composite application and to access a baseline representation of a contract that describes the service, wherein the baseline representation is generated from an initial copy of the contract that is retrieved at the time the executable code of the composite application is generated, the machine-readable medium storing instructions which, when performed by one or more processors, cause performance of steps comprising:

during execution of the composite application, determining, based on the baseline representation of the contract, whether the contract has experienced any changes, wherein determining whether the contract has experienced any changes comprises:

retrieving a current copy of the contract;

determining whether the baseline representation of the contract stores first version information, wherein the first version information specifies a first executable version of the service at the time the composite application is generated;

determining whether the current copy of the contract stores second version information, wherein the second version information specifies a second executable version of the service at the time the composite application is being executed;

when the baseline representation of the contract stores the first version information and the current copy of the contract stores the second version information, comparing the second version information to the first version information to determine whether the contract has experienced any changes; and

when the baseline representation of the contract does not store the first version information or when the current copy of the contract does not store the second version information, performing the steps of:

generating a current representation of the contract based on the current copy of the contract; and

comparing the current representation of the contract to the baseline representation of the contract to determine whether the contract has experienced any changes;

in response to determining that the contract has experienced a change, sending a notification which indicates that the contract has experienced the change.

Assignments (10)
RELEASE OF SECURITY INTEREST REEL/FRAME 039136/0241 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: SERENA SOFTWARE, INC
Reel/Frame 062623/0123 →
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC); BORLAND SOFTWARE CORPORATION; MICRO FOCUS (US), INC.; SERENA SOFTWARE, INC; ATTACHMATE CORPORATION; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.); NETIQ CORPORATION
Reel/Frame 062746/0399 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ATTACHMATE CORPORATION; BORLAND SOFTWARE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE, INC.; ENTIT SOFTWARE LLC; ARCSIGHT, LLC; SERENA SOFTWARE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0718 →
NOTICE OF SUCCESSION OF AGENCY Recorded May 2, 2017
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 042383/0830 →
SECURITY INTEREST Recorded Jul 12, 2016
From: SERENA SOFTWARE, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 039136/0241 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 032679/0596 Recorded May 2, 2016
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: SERENA SOFTWARE, INC.
Reel/Frame 038589/0480 →
RELEASE OF SECURITY AGREEMENT Recorded Apr 17, 2014
From: BARCLAYS BANK PLC, AS COLLATERAL AGENT
To: SERENA SOFTWARE, INC.
Reel/Frame 032712/0493 →
SECURITY INTEREST Recorded Apr 15, 2014
From: SERENA SOFTWARE, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 032679/0596 →
SECURITY AGREEMENT Recorded Apr 11, 2013
From: SERENA SOFTWARE, INC.
To: BARCLAYS BANK PLC
Reel/Frame 030203/0246 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 27, 2007
From: PARKER, KEVIN CHRISTOPHER; SHAW, KELLY ANN
To: SERENA SOFTWARE, INC.
Reel/Frame 019072/0556 →