Movatterモバイル変換


[0]ホーム

URL:


US7533026B2 - Facilitating management of service elements usable in providing information technology service offerings - Google Patents

Facilitating management of service elements usable in providing information technology service offerings
Download PDF

Info

Publication number
US7533026B2
US7533026B2US10/121,307US12130702AUS7533026B2US 7533026 B2US7533026 B2US 7533026B2US 12130702 AUS12130702 AUS 12130702AUS 7533026 B2US7533026 B2US 7533026B2
Authority
US
United States
Prior art keywords
service element
service
integration
design
composition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related, expires
Application number
US10/121,307
Other versions
US20030195756A1 (en
Inventor
Paul G. Greenstein
Galina Grunin
Luu Q. NGUYEN
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines CorpfiledCriticalInternational Business Machines Corp
Priority to US10/121,307priorityCriticalpatent/US7533026B2/en
Assigned to INTERNATIONAL BUSINESS MACHINES CORPORATIONreassignmentINTERNATIONAL BUSINESS MACHINES CORPORATIONASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS).Assignors: GRUNIN, GALINA, NGUYEN, LUU Q., GREENSTEIN, PAUL G.
Priority to US10/262,984prioritypatent/US7739122B2/en
Publication of US20030195756A1publicationCriticalpatent/US20030195756A1/en
Priority to US11/841,153prioritypatent/US7941321B2/en
Application grantedgrantedCritical
Publication of US7533026B2publicationCriticalpatent/US7533026B2/en
Adjusted expirationlegal-statusCritical
Expired - Fee Relatedlegal-statusCriticalCurrent

Links

Images

Classifications

Definitions

Landscapes

Abstract

A service element is defined and represented by a data structure. It includes one or more components and/or one or more other service elements. A service element providing a complete function is a service offering. Management of service elements and/or service offerings is facilitated by a Service Development Tool. In different aspects, the management includes various tasks associated with creating, modifying and deleting service elements, establishing relationships, error checking and optimization. In a further aspect, service elements are packaged and distributed to enable customers to deliver the service elements. Additionally, the hosting of software packages is facilitated.

Description

CROSS-REFERENCE TO RELATED APPLICATIONS
This application contains subject matter which is related to the subject matter of the following applications, each of which is assigned to the same assignee as this application and filed on the same day as this application. Each of the below listed applications is hereby incorporated herein by reference in its entirety:
“A SERVICE DEVELOPMENT TOOL AND CAPABILITIES FOR FACILITATING MANAGEMENT OF SERVICE ELEMENTS”, Greenstein et al., Ser. No. 10/121,290 , filed herewith;
“PACKAGING AND DISTRIBUTING SERVICE ELEMENTS”, Paul G. Greenstein, Ser. No. 10/121,914 , filed herewith;
“FACILITATING ERROR CHECKING OF SERVICE ELEMENTS”, Greenstein et al., Ser. No. 10/121,285 , filed herewith;
“FACILITATING HOSTING OF APPLICATIONS”, Paul G. Greenstein, Ser. No.10/121,075 , filed herewith; and
“OPTIMIZING MANAGEMENT OF SERVICE ELEMENTS”, Paul G. Greenstein, Ser. No. 10/121,311 , filed herewith.
TECHNICAL FIELD
This invention relates, in general, to the ability to provide services, and in particular, to facilitating the management of service elements usable in providing information technology (IT) service offerings, which represent the services to be provided.
BACKGROUND OF THE INVENTION
Services are provided in various ways. For example, services are provided in-house by a service provider or by a company itself, or are outsourced to a requesting customer. With the latter, a customer, such as a company, requests that a particular service be provided to the company. For instance, the company may request consulting services. With such a request, the company specifies the number of desired hours of labor and/or other requirements.
In order to purchase the number of hours of labor and/or other requirements, one or more service elements representing the requirements are created by the service provider and purchased by the company. This defines for the company what is being provided and at what cost.
Although service elements are used today in the providing of services, there still exists a need for a capability to enhance the definition of service elements. Further, there exists a need for a capability that enables service elements to be represented in a manner that facilitates management of the service elements. A further need exists for a capability that facilitates management of service elements.
SUMMARY OF THE INVENTION
The shortcomings of the prior art are overcome and additional advantages are provided through the provision of a method of facilitating management of service elements. The method includes, for instance, selecting a service element to be defined, the service element usable in providing services to at least one of an in-house customer and an outsourcing customer; and defining the service element using a data structure, the data structure including a relational structured set of information associated with the service element.
In a further aspect of the present invention, a method of facilitating management of service elements is provided. The method includes, for instance, obtaining a service element; and establishing at least one relationship between the service element at least one other service element.
In yet a further aspect of the present invention, a method of facilitating management of service elements is provided. The method includes, for instance, obtaining a service element; and including within the service element one or more other service elements.
In yet a further aspect of the present invention, a method of facilitating construction of service elements is provided. The method includes, for instance, selecting one or more templates to be used in constructing a service element; and using the one or more templates in constructing the service element.
In still a further aspect of the present invention, a method of defining service elements is provided. The method includes, for instance, identifying a service element to be defined; and defining the service element as a discrete package of at least one of one or more units of time and one or more materials usable in the field of information technology, the information technology including providing in-house services.
In another aspect of the present invention, a memory for storing data to be accessed by a service development tool is provided. The memory includes a data structure stored therein, and the data structure includes, for instance, a composition section comprising a content of the service element; a cost case section comprising a cost case of the service element; a dependency section comprising one or more dependencies of the service element; an integration property section comprising one or more integration properties of the service element; a customization section comprising one or more customization specifications of the service element; a design section comprising one or more design characteristics of the service element; a development plan section comprising a development plan of the service element; and a deployment plan section comprising a deployment plan of the service element.
System and computer program products corresponding to the above-summarized methods are also described herein.
Advantageously, a capability is provided for enhancing the definition of a service element, and for providing a data structure that includes a comprehensive set of information usable in managing service elements. Further, in accordance with an aspect of the present invention, one or more capabilities are provided for facilitating the managing of service elements. In one embodiment, various aspects of managing the service elements are facilitated, and in some aspects, automatically provided by a tool.
Additional features and advantages are realized through the techniques of the present invention. Other embodiments and aspects of the invention are described in detail herein and are considered a part of the claimed invention.
BRIEF DESCRIPTION OF THE DRAWINGS
The subject matter which is regarded as the invention is particularly pointed out and distinctly claimed in the claims at the conclusion of the specification. The foregoing and other objects, features, and advantages of the invention are apparent from the following detailed description taken in conjunction with the accompanying drawings in which:
FIG. 1 depicts one example of an overview of a Service Development Tool used in accordance with an aspect of the present invention;
FIGS. 2a-2gdepict one example of a data structure used to represent a service element, in accordance with an aspect of the present invention;
FIGS. 3a-3cdepict one embodiment of the logic associated with creating a service element, in accordance with an aspect of the present invention;
FIGS. 4a-4bdepict one embodiment of the logic associated with completing development of a created service element, in accordance with an aspect of the present invention;
FIGS. 5a-5bdepict one embodiment of the logic associated with an overview of verifying dependencies of a service element, in accordance with an aspect of the present invention;
FIGS. 6a-6cdepict one embodiment of the logic associated with verifying the dependencies of an entry of a service element, in accordance with an aspect of the present invention;
FIGS. 7a-7bdepict one embodiment of the logic associated with determining integration between multiple service elements, in accordance with an aspect of the present invention;
FIGS. 8a-8cdepict one embodiment of the logic associated with deleting a service element, in accordance with an aspect of the present invention;
FIG. 9 depicts one embodiment of the logic associated with creating a new version of a service element, in accordance with an aspect of the present invention;
FIG. 10 depicts one example of a cross-reference between multiple service elements, in accordance with an aspect of the present invention;
FIG. 11 depicts one embodiment of the logic associated with creating a cross-reference, in accordance with an aspect of the present invention;
FIG. 12 depicts one embodiment of the logic associated with modifying a service element by adding a composition item to the service element, in accordance with an aspect of the present invention;
FIG. 13 depicts one embodiment of the logic associated with modifying a service element by deleting a composition item of the service element, in accordance with an aspect of the present invention;
FIG. 14 depicts one embodiment of the logic associated with modifying a service element by updating a quantity of a composition item of the service element, in accordance with an aspect of the present invention;
FIG. 15 depicts one embodiment of the logic associated with establishing an integration relationship between multiple service elements, in accordance with an aspect of the present invention;
FIG. 16 depicts one embodiment of the logic associated with dissolving integration between multiple service elements, in accordance with an aspect of the present invention;
FIG. 17 depicts one embodiment of the logic associated with updating a design of a service element as a result of adding a composition item to the service element, in accordance with an aspect of the present invention;
FIG. 18 depicts one embodiment of the logic associated with modifying a design of a service element due to deleting a composition item from the service element, in accordance with an aspect of the present invention;
FIGS. 19a-19cdepict one embodiment of the logic associated with modifying a design of a service element due to updating a quantity of a composition item of the service element, in accordance with an aspect of the present invention;
FIG. 20 depicts one embodiment of the logic associated with deleting tasks of a development plan, in accordance with an aspect of the present invention;
FIG. 21 depicts one embodiment of the logic associated with adding to a deployment plan for a service element, in accordance with an aspect of the present invention;
FIG. 22 depicts one embodiment of the logic associated with deleting a deployment plan task due to deleting a service element item, in accordance with an aspect of the present invention;
FIG. 23 depicts one embodiment of the logic associated with deleting deployment plan tasks due to dissolution of an integration relationship, in accordance with an aspect of the present invention;
FIG. 24 depicts one example of an overview of a design builder of the Service Development Tool ofFIG. 1, in accordance with an aspect of the present invention;
FIGS. 25a-25cdepict one embodiment of the logic associated with adding to a stencil used in managing a service element, in accordance with an aspect of the present invention;
FIG. 26 depicts one embodiment of the logic associated with establishing an integration relationship, in accordance with an aspect of the present invention;
FIG. 27 depicts one embodiment of the logic associated with building a visual design item, in accordance with an aspect of the present invention;
FIG. 28 depicts one embodiment of the logic associated with determining a visual representation, in accordance with an aspect of the present invention;
FIG. 29 depicts one embodiment of the logic associated with editing a visual design of a service element, in accordance with an aspect of the present invention;
FIG. 30 depicts one example of an overview of a cost case builder of the Service Development Tool ofFIG. 1, in accordance with an aspect of the present invention;
FIG. 31 depicts one embodiment of the logic associated with building a cost case, in accordance with an aspect of the present invention.
FIGS. 32a-32bdepict one embodiment of the logic associated with building a cost case item of a cost case, in accordance with an aspect of the present invention;
FIG. 33 depicts one embodiment of the logic associated with adding cost case items to a cost case, in accordance with an aspect of the present invention;
FIG. 34 depicts one embodiment of the logic associated with editing a cost case, in accordance with an aspect of the present invention;
FIG. 35 depicts one embodiment of the logic associated with editing a cost case item, in accordance with an aspect of the present invention;
FIGS. 36a-36bdepict one embodiment of the logic associated with building a development plan, in accordance with an aspect of the present invention;
FIG. 37 depicts one embodiment of the logic associated with determining whether design tasks of instantiating placeholders are to be built, in accordance with an aspect of the present invention;
FIG. 38 depicts one embodiment of the logic associated with building placeholder instantiation design tasks, in accordance with an aspect of the present invention;
FIGS. 39a-39bdepict one embodiment of the logic associated with determining when to build development tasks, in accordance with an aspect of the present invention;
FIGS. 40a-40ddepict one embodiment of the logic associated with an overview of building development tasks for an item, in accordance with an aspect of the present invention;
FIGS. 41a-41bdepict one embodiment of the logic associated with building a development task, in accordance with an aspect of the present invention;
FIGS. 42a-42bdepict one embodiment of the logic associated with building integration and customization test tasks, in accordance with an aspect of the present invention;
FIG. 43 depicts one embodiment of the logic associated with setting plan task status, in accordance with an aspect of the present invention;
FIG. 44 depicts one embodiment of the logic associated with an overview of consolidating multiple plans, in accordance with an aspect of the present invention;
FIGS. 45a-45cdepict one embodiment of the logic associated with consolidating two service element plans, in accordance with an aspect of the present invention;
FIGS. 46a-46cdepict one embodiment of the logic associated with deleting plan tasks, in accordance with an aspect of the present invention;
FIGS. 47a-47cdepict one embodiment of the logic associated with building a deployment plan, in accordance with an aspect of the present invention;
FIG. 48 depicts one embodiment of the logic associated with an overview of building provisioning and installation tasks, in accordance with an aspect of the present invention;
FIG. 49 depicts one embodiment of the logic associated with building a provisioning task, in accordance with an aspect of the present invention;
FIGS. 50a-50bdepict one embodiment of the logic associated with building a component installation task, in accordance with an aspect of the present invention;
FIG. 51 depicts one embodiment of the logic associated with an overview of building customization or integration tasks, in accordance with an aspect of the present invention;
FIG. 52 depicts one embodiment of the logic associated with building a customization task, in accordance with an aspect of the present invention;
FIG. 53 depicts one embodiment of the logic associated with building an integration task, in accordance with an aspect of the present invention;
FIG. 54 depicts one embodiment of the logic associated with building a checkout task, in accordance with an aspect of the present invention;
FIG. 55 depicts one example of an overview of lifecycle support, in accordance with an aspect of the present invention;
FIG. 56 depicts one embodiment of the logic associated with a lifecycle component change, in accordance with an aspect of the present invention;
FIGS. 57a-57bdepict one embodiment of the logic associated with updating a service element for a component change, in accordance with an aspect of the present invention;
FIG. 58 depicts one embodiment of the logic associated with the lifecycle service element change, in accordance with an aspect of the present invention;
FIG. 59 depicts one embodiment of the logic associated with updating a service element for a service element change, in accordance with an aspect of the present invention;
FIG. 60 depicts one embodiment of an overview of error checking, in accordance with an aspect of the present invention;
FIGS. 61a-61bdepict one embodiment of the logic associated with performing standardization verification, in accordance with an aspect of the present invention;
FIG. 62 depicts one embodiment of the logic associated with performing business rules verification, in accordance with an aspect of the present invention;
FIG. 63 depicts one embodiment of the logic associated with packaging and distributing service elements, in accordance with an aspect of the present invention;
FIG. 64 depicts one embodiment of an overview of a development process, in accordance with an aspect of the present invention; and
FIGS. 65a-65bdepict one embodiment of the flow associated with a development process, in accordance with an aspect of the present invention.
BEST MODE FOR CARRYING OUT THE INVENTION
In accordance with one or more aspects of the present invention, one or more capabilities are provided for facilitating the management of service elements. In one embodiment, aspects of the management are facilitated by a tool, referred to herein as a Service Development Tool (SDT). The Service Development Tool enables certain management aspects to be automated.
Prior to describing various aspects of the present invention, a number of terms are described, including, for instance, the following:
Direct business function: A function performed by software in direct support of a business process—e.g., procurement, billing, group communications, broadcasting of business information to users, etc.
Indirect business function: A function performed in support of direct business function(s)—e.g., network protection (firewall), backup/restore, disaster recovery, dump, networking, operating system, software messaging, etc.
Application: A software package running on top of hardware, operating system, network, and middleware, embodying or providing one or more direct business function(s).
Infrastructure: A collection of indirect business functions supporting direct business functions.
Asset: A software and/or service package intended for direct or indirect use by customers.
Custom asset: An asset usable by a single customer or a small group of customers.
Generic asset: An asset usable by all or a large number of customers (often with customization applied for each customer or a group of customers).
Development: A process of creating an asset.
Customization: A process of adjusting a generic asset for needs of a particular customer or a small group of customers.
Component: A service (time, e.g., labor) or material (e.g., hardware, software, connectivity, etc.) that could be used to construct other entities, but for which a customer is typically not billed separately.
Service element (SE): A discrete entity for which a customer may be billed and/or which represents an in-house or outsourced service. A service element includes one or more components and/or one or more other service elements. A service element may be an intermediate building block to a service offering or may be the service offering, itself.
A service element is classified based on a number of parameters. One example of various parameters used for classification are included in the following table:
ParameterClassificationDescription
ReusabilityStandardUsable for multiple customers without
modification (save customization)
CustomSpecific to a single customer
ComplexityPrimitiveBuilt from components; does not
contain other SEs
CompositeIncludes other SEs; may directly
include components
BundleIncludes other SEs; does not directly
include components
SharingDedicatedDesigned to be used by a single
customer in a single instance
ShareableDesigned to be used by one or more
customers in a single instance
FunctionalityFacility
Network
Server
Storage &
backup
Security
Monitoring
Performance
Support
Professional
Application
GeographyGlobalDesigned for use in multiple
geographies
RegionalDesigned for use in a single
geography or region
FunctionalOfferingComplete function, not requiring
completenessadditional SEs to operate; associated
with a business model
CapabilityPartial function; usually a building
block for offerings or custom
implementations
FeatureAdditional optional functionality to
enhance an offering or a capability
CustomizationStandardNo customization permitted
ParametricLimited degree of customization is
permitted, based on a finite
combination of parameters associated
with SE; no programmable
customization is permitted
ProgrammableSubsumes parametric; programmable
customization is permitted
A service element has one or more properties. Various properties of a service element include, for instance:
PropertyDescription
NameSE name (unique across SEs)
DescriptionDescription of the SE function
VersionSE version identifier
Creation dateDate of creation of the first version of
the SE
Modification dateDate of last modification of the SE
Withdrawal dateDate of SE deletion (if deleted)
Change historyA list of versions and specification of
changes made to a SE
SE under development flagIndicates whether SE is under development
Technical ownerName and contact information for the
technical person (development) responsible
for the SE lifecycle
Business ownerName and contact information for the
manager responsible for the SE
Functional prerequisitesList of other SEs required for this SE to
function
CompositionList of service elements and/or components
included in this SE, including quantity
specification for each
FeaturesList of feature SEs that can be optionally
added to this SE
UpgradeList of SEs that may provide similar
function in the case of withdrawal of this
SE
IntegrationList of SEs that are designed to and may be
optionally integrated with this SE
PricingPricing &rules (e.g., volume discounts,
units and prices for shared elements, etc.)
Cost matrixCombined cost of SE time and materials
DevelopmentFunctional specification, design, test
documentationplan, and any other pertinent technical
documents
Legal documentationContracts, license agreements, and any
other pertinent legal documents
Deployment planSpecification of SE deployment
Delivery documentationSpecification of delivery procedures
associated with this SE
Augmentation permittedIndicates whether augmentation of a design
flagtemplate is permitted
Integration Properties
CompatibleList of SEs this SE is compatible with
StandardList of SEs this SE integrates with by
parametric integration
Manual (default)List of SEs this SE integrates with by
programmable integration
ProhibitedList of SEs with which the SE is mutually
exclusive
A service element may be bundled with one or more other service elements. In one example, SE bundling may be accomplished in any of the following ways (including their combinations):
1. New SE includes other SEs;
2. New SE pre- or co-reqs other SEs and requires no special integration with them (i.e., they are designed to work together); and
3. New SE pre- or co-reqs other SEs and integration is required to make them work together.
Service offering (or offering): A service element providing a complete function. In one example, the service offering is associated with a business model and the billing, bill presentment, and collection mechanisms, supporting the associated business model. A service element that is a service offering may include other service elements, but does not require other service elements that are not included in the service element.
Hosted service offering: A service offering based on a company's, such as International Business Machines Corporation, or a customer's infrastructure, operated under the company's control.
Application hosted service offering: A hosted offering including at least one application. In one embodiment, application hosted service offerings are classified based on the following parameters: type of client; horizontal topology—position of boundaries between the company infrastructure and customer infrastructure; vertical topology—one to one or one to many relative to the number of application instances versus customers, or discrete versus shared; and business model.
Hosted service offerings and application hosted service offerings are described in more detail further below.
In accordance with an aspect of the present invention, the management of service elements, as well as the management of service offerings, are facilitated by a tool, referred to as a Service Development Tool (SDT). Aspects of this tool are described below.
Service Development Tool Overview
The Service Development Tool minimizes the efforts required to design, implement, and document solutions. While it is ultimately targeted to the production of a final solution or product, it further provides an offering team with staged solutions and documentation. This allows the team to view incremental stages of a project and to take action with respect to such stages, such as procuring incremental funding or make changes, as desired.
One embodiment of a functional overview of a Service Development Tool is depicted inFIG. 1. Input to aService Development Tool100 are, for instance, logical collections of data, such as:
    • A Service Element (SE)database102, including one or more packaged service elements and/or one or more templates; and
    • A component data feed104, providing component information from one or more disparate component information sources106.
Moreover, the Service Development Tool is administered by anadministration subsystem108, which includes, for instance, auser administration unit110 and adatabase administration unit112. The administration functions include, for example, user administration and access control functionality, allowing the administrator to assign access roles to system users. The roles include, for example: developer, reviewer, offering manager, project manager, tester, and delivery personnel. Depending on the role, different functions can be performed by a user.
The SDT includes a variety of functional units, such as, for instance:
    • Service element manager114, providing the ability to manage (e.g., construct—create and develop, delete, upgrade, track dependencies, provide reports, such as cross-references, provide search functions, release to production, etc.) service elements;
    • Design builder116, providing the ability to produce graphical configuration diagrams;
    • Verification/error checking functionality118, providing the ability to verify SE consistency/completeness, dependencies or relationships and business case;
    • Cost case builder120, providing the ability to generate service element cost cases;
    • Plan builder122, providing the ability to generate project plans, and to define development budgets; and
    • Lifecycle support124, providing the ability to track changes to dependencies, and, if appropriate, propagate changes through chains of dependencies among disparate SEs. Also, it informs about a deletion of an SE/component and may recommend creating a new SE or finding a replacement component, if one of the containing SE/components becomes unavailable.
The above functions can be used piecemeal or jointly, permitting creation of parts (e.g., service elements, offering templates) or whole service offerings. A set ofinitial business assumptions126 is entered, including, for instance, customer profiles, customer volume projections, desired offering model(s), target geographies, etc. (As used herein, a customer includes an in-house customer and/or an outsourced customer.) Subsequent activities performed by a user include entering/selecting information, while interacting with the appropriate aspects of the tool. For example:
    • Selection of the appropriate template(s);
    • Creation of the technical design diagram(s), enumerating and identifying hardware elements and assumptions about them;
    • Selection of standard SEs required to package the offering;
    • Creation of new SEs; and
    • Identification of required standard documents to be produced; etc.
The above set of activities are performed to construct (e.g., create and develop) one ormore service elements128. As one example, the activities are performed as an iterative process, until a complete offering with satisfactory operational and cost characteristics over time is defined, including, for instance:
    • Technical design;
    • Cost case(s);
    • Development plan; and
    • Delivery documentation.
Further details regarding the structure and management of service elements, as well as the management of service offerings, are described below.
In one aspect of the present invention, a service element is represented by a data structure, such as the data structure depicted inFIGS. 2a-2g. The data structure includes, for instance, a comprehensive set of information to manage (e.g., construct, delete and/or deploy) a service element.
As one example, adata structure200 includes, for instance:
A. A service element header202 (FIG. 2a) used to identify and store various information relating to the service element. For example,service element header202 includes one or more tables that identify characteristics of the service element (e.g., properties);
B. A reference to zero ormore design templates204 usable in designing the service element;
C.Service element composition208, which includes the composition of the service element. In one example, the composition includes one ormore service elements210 and/or one ormore components212. As shown, each service element or component includes a name, a version, and at least one quantity;
D. Acost case214, which includes cost data218 and anidentifier216 associated with the cost data. The cost case is coupled to the composition;
E. Zero ormore dependencies220, which identify relationships of the service element. A dependency may be indicated, for instance, as aprerequisite222 or a co-requisite224, and each requisite is identified by a name and a version;
F. Integration properties226 (FIG. 2b), which identifyvarious integration properties228 of a service element, including, for instance, compatible, standard, manual and prohibited. Each property is identified by a name and a version;
G. Customization specification229, which includes one or more customization specifications of the service element;
H. Design230 (FIG. 2c), which identifiesvarious design items232 of the service element, including, for instance, customization items, integration items, placeholders, and visual design elements. In one example, each customization item is identified by an id and has a SE reference and a specification. Each integration item is identified by an id and has two SE references and a specification. An integration item (as well as a customization item) may refer to a placeholder. Each placeholder is identified by an id and has a description. The visual design elements (seeFIG. 2d) are represented as collection of a set of icons and a set of connectors. Icons are represented as a collection of data structures, including an id, reference to the stencil element corresponding to this icon, modifiers (e.g., color change, etc.), and an icon representation (size, location, etc.). Connectors are represented as a collection of data structures, including an id, references to the first and the second icons a connector connects, and a representation (e.g., line color).
The design also has additional design documentation (FIG. 2e).
I. Development plan240 (FIG. 2e) is a plan associated with the service element. It includes a number ofphases242, including, for instance, the design of the service element, development, integration test and system test. The SE design phase of the development plan is coupled to the additional design documentation of the design. Further, it is identified by an id and includes one or more placeholder references, an identified owner, a projected time and start date and status. Development includes (FIG. 2f) various sub-phases including, for instance, a unit design, implementation and test for both customization and integration. Each sub-phase is represented as a collection oftasks244, and each task is identified by an id, and includes a work item reference, an owner, one or more dependencies, a projected time and start date, skills and resources, and status. Similarly, the integration test phase includes various sub-phases including, for instance, design, implementation and test for both customization and integration. Each sub-phase is also represented as a collection of tasks246, and each task is identified by an id, and includes a work item reference, an owner, one or more dependencies, a projected time and start date, skills and resources, and status. The system test phase (FIG. 2c) further includes a system test plan and documentation.
J. Deployment plan250 (FIG. 2g) includesvarious phases252, including, for instance, provisioning, installation, customization, integration and checkout, and each phase includes one or more tasks, each having an id, work item reference, dependencies and projected time.
Various sections of the data structure may also include other information.
The above-described data structure is used to hold information regarding a service element, and the information within the data structure is used to further manage the service element, as described herein. In one embodiment, the logic associated with managing a service element is facilitated by using the Service Development Tool. Various management aspects are described below.
One such management aspect is creating the service element, and one embodiment of the logic associated with creating a service element is described with reference toFIGS. 3a-3c. As one example, the logic ofFIGS. 3a-3cis implemented within the SE manager of the SDT.
Referring toFIG. 3a, a user initiates SE creation by employing, for instance, a SE creation user interface (UI) function to specify a SE name, STEP300 (FIG. 3a). The new SE name is read,STEP302, and the SE database is searched for a SE with the specified name,STEP304. If a SE with the specified name is found,INQUIRY306, the entered name is not unique, and thus, an error is indicated and processing terminates,STEP308. Otherwise, the specified new SE name is unique, and thus, a new SE is created (e.g., allocated in memory),STEP310. Thereafter, the specified name is assigned to the new SE, the creation date is filled in, the last modification date, which is set equal to the creation date, is filled in, the withdrawal date and change history are set to null, the SE status is indicated as “under development”, and a SE version is indicated as “initial”,STEP312.
Subsequently, an initial entry menu for this SE is built and presented to the user, who can now enter various information, such as technical owner, business owner, and SE description,STEP314. This information is then recorded in the newly created SE, STEP316 (FIG. 3b).
Thereafter, a classification menu is built and presented to the user, such that the user can enter the SE classification information,STEP318. The classification information is read and recorded in the newly created SE,STEP320.
Next, a list of available design templates is retrieved from the template table of the SE database,STEP322, and formatted as a selection menu with an option of selecting “none”,STEP324. The user is presented with the template selection menu and can select a template or specify “none” (no template is desired). The process then receives the user template specification or “none”, STEP326 (FIG. 3c). If the user has selected a template,INQUIRY328, the specified template is retrieved from the template table of the SE database,STEP330, and template design information is copied from the template into the newly created SE,STEP332. Otherwise, an empty SE design is created,STEP334. That is, memory is allocated for the design section of the SE data structure, and it is initialized to null.
Next, creation of SE cost case, development plan, and deployment plan sections of the data structure are initiated, STEPS336-340. (Creation of these sections is described further below.) The newly created SE is then stored in the SE database,STEP342.
Once a service element is created, it can be developed. Service element development is performed using a variety of tools, based on the nature of development activities—e.g., SE header is edited using a structured editor, which, depending on the field, permits free-form text entry or provides a selection of permitted values to choose from; SE design is modified using the SE design tool described below, etc. Whenever an actual modification of a SE under development is in progress, the user performing the modification gains sole access to the target SE, and all other users are prevented from making any changes until the modification session completes (by either discarding the changes or by storing a changed SE in the SE database). When the desired modifications to a service element are completed, the SE may be released to production. One embodiment of the logic associated with SE development and the process of releasing a SE to production is described with reference toFIGS. 4a-4b. In one example, the logic ofFIGS. 4a-4bis implemented within the SE manager.
Referring toFIG. 4a, initially, the user invokes a SE development completion panel to request development completion for the specified SE,STEP400. The process obtains the specified SE name,STEP402, and attempts to retrieve the specified SE from the SE database,STEP404. If the specified SE is not found in the SE database,INQUIRY406, processing terminates with an error,STEP408. However, should the specified SE be found in the database, but does not have a “development in progress” indicator set,INQUIRY410, processing terminates with an error indicating the SE is not in development,STEP412. Otherwise, an error check, including dependency verification, is performed to ensure the specified SE is ready to be released to production, as described below,STEP414. Further details regarding dependency verification are described below.
If, during the error check, errors are found,INQUIRY416, processing terminates with an error,STEP418. Otherwise, a determination is made as to whether warning messages were issued by the error check process, INQUIRY420 (FIG. 4b). If warning messages were generated, a warning message review panel is presented to the user, and the user is given an option to terminate the process or override warning messages,STEP422.
The user makes the decision and enters it into the process. The process obtains the user decision,STEP424. If the user's decision is to terminate, then the process complies by terminating,STEP428. However, if processing is to continue or if warning messages were not generated, then the SE “development in progress” indicator is turned off,STEP430, and the updated SE is stored in the SE database,STEP432. Additionally, a lifecycle SE change process is executed to ensure that any changes in this SE are appropriately reflected in any SEs that depend on this SE, as described below,STEP434.
As described above, it is desirous to perform dependency verification during SE development, especially since different developers are likely to be responsible for different SEs. Further, during other processing, dependency verification may also be performed. Thus, further details associated with dependency verification are described herein.
For certain fields, it is desirous to verify cross-SE dependencies, either uni-directional or bi-directional. A case of one SE including another SE in its composition is an example of a unidirectional dependency. A case of two SEs co-requiring one another (i.e., the first SE depends on the second, while the second SE depends on the first) is an example of a bi-directional dependency. The following are example dependencies:
1. SE A includes SE B as a part of its composition—this is a unidirectional dependency;
      • a. SE A includes component B as a part of its composition—this is a unidirectional dependency on a component;
2. SE A and SE B are mutually dependent (i.e., are to be present together at deployment)—this is a bi-directional dependency.
Although SEs may have dependencies on components, in one embodiment, components may not have dependencies, and thus, dependencies on components are unidirectional.
In addition to uni-directional or bi-directional, dependencies may be classified as actual (i.e., dependency on an already existing SE) or pending (i.e., dependency on a SE not yet created). Unresolved pending dependencies would not, in this embodiment, prevent the SE from completing development (in anticipation of future creation of additional SEs this one is dependent on). However, even though a SE may be fully developed, its deployment (described below) would not proceed until the dependencies are resolved. Thus, SE dependencies are also verified as a part of the deployment process initiation for each SE.
Dependencies are a special case of relationships. In one embodiment, no additional classification of relationships is provided; instead, all relationships are dependencies. Thus, as used herein, the terms “dependency” and “relationship” are interchangeable. However, one skilled in the art will appreciate that more detailed specifications of SE relationships may be possible, and that additional types of relationships besides dependencies may exist. For example, other classifications could include inclusion, integration, coexistence, or mutual exclusion.
One embodiment of the logic associated with SE dependency verification is described with reference toFIGS. 5a-5b. As one example, this logic is implemented within verification/error checking118 of the SDT.
Referring toFIG. 5a, initially, a SE, for which dependency verification is to be performed, is input to the process, and extracted therefrom is its composition, STEP500. Next, an entry of the SE composition is selected, and dependencies for that entry are verified, as described with reference toFIGS. 6a-6c,STEP502. Then, a determination is made as to whether there are more entries in the composition to be processed,INQUIRY504. If more entries are present, then the next entry is processed,STEP502. Otherwise, after the composition entries are processed, relationships are extracted from the input SE,STEP506.
An entry of the relationships is selected, and dependencies of that entry are verified, as described below with reference toFIGS. 6a-6c,STEP508. Thereafter, a determination is made as to whether there are more entries in the relationships to be processed,INQUIRY510. If more entries are present, then the next entry is processed,STEP508. Otherwise, processing of the relationships is complete.
Subsequently, dependency reports are generated,STEP512. These reports include, for instance:
    • Valid dependencies on components;
    • Valid dependencies on SEs;
    • Invalid dependencies on components;
    • Invalid unidirectional dependencies on SEs; and
    • Invalid bidirectional dependencies on SEs.
Next, a check of invalid dependencies is made. If no invalid dependencies are present,INQUIRY514, processing completes,STEP516. Otherwise, the generated error report(s) are displayed on the error report display, STEP518 (FIG. 5b).
Thereafter, a determination is made as to whether this is a part of deployment processing,INQUIRY520. If this is a part of deployment dependency verification, then processing terminates with an error indicating unresolved dependencies during deployment,STEP522. Otherwise, if this is not a part of deployment dependency verification, then a further determination is made as to whether this is invoked as a part of a SE development processing,INQUIRY524. If not, processing terminates with returning a list of valid dependencies,STEP526. In particular, if dependency verification is not invoked as a part of deployment or development, then it is invoked for SE deletion. Thus, relevant information is included in the list of valid dependencies.
Returning toINQUIRY524, if this is a part of development dependency verification, then the developer is given an option to override unresolved dependencies, and optionally to indicate whether notification(s) to the owner(s) of SE(s) with unresolved dependencies is to be issued. The developer's decisions are obtained,STEP528, and if the developer has requested any notifications to be issued,INQUIRY530, then notifications are issued,STEP532. Thereafter, or if notifications are not desired, then a determination is made as to whether errors are to be overridden,INQUIRY534. If the developer has chosen to override the errors, processing completes,STEP535. Otherwise, processing completes with an error indicating unresolved dependencies during development,STEP536.
Further details regarding dependency verification are described with reference toFIGS. 6a-6c. In particular, one embodiment of the logic associated with determining the dependency of a single relationship entry of a SE is described with reference toFIGS. 6a-6c. In one example, this logic is implemented within verification/error checking118.
Referring toFIG. 6a, initially, a relationship entry is obtained from the dependency section of the service element,STEP600. Then, a determination is made as to whether the obtained entry is a composition entry,INQUIRY602. If this is not a composition entry (i.e., an explicit relationship), then <direction> string is set to “bi-directional” for later use,STEP604. However, if this is a composition entry, then the dependency target is extracted from the composition entry,STEP606.
Next, a determination is made as to whether the extracted target is a component,INQUIRY608. If the dependency target is a component, then an attempt is made to retrieve the target component from the component data feed,STEP610. If the component is found in the component data feed,INQUIRY612, processing terminates and returns “valid dependency on component”,STEP614. Otherwise, processing terminates, and returns “invalid dependency on component”,STEP616.
Returning toINQUIRY608, if the relationship target is not a component (i.e., it is a SE), <direction> string is set to “unidirectional”,STEP618. After setting the direction to uni-directional,STEP618, or bi-directional,STEP604, the relationship target is now understood to be a SE, and an attempt is made to retrieve the target SE from the SE database, STEP620 (FIG. 6b). If the attempt to retrieve the target SE is unsuccessful, INQUIRY622, processing terminates and returns “invalid <direction> dependency on SE”,STEP624. Otherwise, target SE relationships are verified (i.e., retrieved),STEP626. This is a recursive process, which invokes the logic ofFIGS. 5a-5bandFIGS. 6a-6c. That logic produces a list of relationships, and processing continues with extracting relevant entries of target SE relationships from the list of target SE relationships,STEP628. Relevancy is determined by detecting references to “this SE” (i.e., the SE for which dependency verification is now being performed). Then, an attempt is performed to find the reverse of the input relationship entry in the list of relevant relationships of the target SE,STEP630. The determination of “the reverse” of the input relationship is dependent on specific semantic context of the relationship definitions, as is known in the art. For example, if SE A includes SE B, the reverse relationship would be for SE B to indicate usage by SE A; similarly, if SE A integrates with SE B, the reverse would be for SE B to integrate with SE A.
If the attempt to find the reverse of the input relationship entry in the list of relevant relationships of the target SE is successful, INQUIRY632 (FIG. 6c), a determination is made as to whether the target SE status is “under development”,INQUIRY634. If the target SE is under development (i.e., its content may change unpredictably), processing terminates and returns “valid pending <direction> dependency on SE”,STEP636. Otherwise, processing terminates and returns “valid <direction> dependency on SE”, STEP638.
Returning toINQUIRY632, if the attempt to find the reverse of the input relationship entry in the list of relevant relationships of the target SE is unsuccessful, then a determination is still made as to whether the target SE is under development,INQUIRY640. If the target SE is under development, processing terminates and returns “invalid pending <direction> dependency on SE”,STEP642. Otherwise, processing terminates and returns “invalid <direction> dependency on SE”,STEP644.
Verification of Ability of SE to Integrate
Another relationship between SEs is the ability of SEs to integrate. There are various types of integrations, as depicted in the table below:
TypeDescription
CompatibleCapable of integration without any special efforts
StandardCapable of integration by parametrizing
ManualCapable of integration by programming or adding
additional integration components
ProhibitedIncapable of integration

Further, it will be understood by one skilled in the art that the variety of different gradations of ability to integrate may be different or broader in some implementations.
One embodiment of the logic associated with determining whether two SEs integrate and returning the type of integration relationship between these SEs is described with reference toFIGS. 7a-7b. In one example, the logic ofFIGS. 7a-7bis implemented within SE manager.
Referring toFIG. 7a, initially, the process considers SE1 and determines whether SE1 integrates with SE2 (assigned to variable A),STEP700. If SE1 does not explicitly mention SE2 in its lists of SEs it integrates with,INQUIRY702, A is assigned the default value of “manual”,STEP704. Thereafter, or if SE1 does explicitly mention SE2, the process considers SE2. For example, a determination is made as to whether SE2 integrates with SE1 (assigned to variable B),STEP706. If SE2 does not explicitly mention SE1 in its lists of SEs it integrates with,INQUIRY708, then B is assigned the default value of “manual”,STEP710.
Thereafter, or if SE2 does explicitly mention SE1, a check is made of A and B,INQUIRY712. If A and B are identical (i.e., information contained in SE1 and SE2 is consistent), then the process completes, returning the value of A,STEP714. However, if A and B are different, an inconsistency between their values may be indicative of an error or incomplete development. Thus, a determination is made as to whether this is a part of deployment,INQUIRY716. If this processing is performed as a part of deployment activities, then the inconsistency is assumed to be a development defect and process terminates with an error,STEP718. Otherwise, this is part of development processing, and a warning message is issued, STEP720 (FIG. 7b).
Subsequently, a determination is made of the value to be returned. For instance, if either A or B is “prohibited”,INQUIRY722, processing completes and returns a value of “prohibited”,STEP724. Otherwise, if either A or B is “manual”,INQUIRY726, processing completes and returns a value of “manual”,STEP728. If neither A or B is prohibited nor manual, the process returns a value of “standard”,STEP730.
Deleting a SE
In addition to creating and developing a service element, including verifying its dependencies and integration, a service element may be deleted. One embodiment of the logic associated with deleting a service element, in accordance with an aspect of the present invention, is described with reference toFIGS. 8a-8c. In one example, the logic ofFIGS. 8a-8cis implemented within SE manager.
Referring toFIG. 8a, initially, a request for deletion of a SE is provided by employing, for instance, a user interface of the SE system,STEP800. When the SE name for deletion is received, an attempt is made to retrieve the specified SE from the SE database,STEP802. If the SE was not retrieved successfully,INQUIRY804, processing terminates with an error,STEP806. Otherwise, a check is performed to determine if the target SE has ever completed development (i.e., this is not the first version and “under development” indicator is not set),INQUIRY808. If development for this SE was never completed (i.e., no other SE may have an actual dependency on the target SE), the SE is marked “deleted”,STEP810, stored in the SE database,STEP812, and processing completes (SE has been deleted),STEP814.
However, returning toINQUIRY808, if target SE development was completed at least once, the target SE is marked “pending deletion”,STEP816, and the SE is stored in the SE database,STEP818. This prevents any new relationships to this SE, including dependencies on it, from being created.
Thereafter, a list of one or more relationships of the SE is determined, as described above with reference toFIGS. 6a-6c,STEP820. Then, a target relationship is selected from the list of relationships, STEP822 (FIG. 8b). If the target is a SE (rather than a component),INQUIRY824, then the related SE is retrieved from the SE database,STEP826. Additionally, its technical owner is determined,STEP828, and a notification is sent to the technical owner to eliminate the relationship with the target SE,STEP830. Subsequently, or if the target is not related to a SE, a determination is made as to whether there are more relationships to be processed,INQUIRY832. If there are more relationships in the list, the next one is processed.
After processing the relationships, a determination is made as to whether any notifications were sent,INQUIRY834. If any notifications were sent as a result of the above processing, processing terminates indicating that notifications are pending,STEP836. Processing then is to be restarted at some later time to verify that the notified SE technical owner(s) have made the appropriate changes and eliminated relationships of their SE(s) to the target SE pending deletion.
However, if no notifications were sent as a result of the above processing, the next verification of deletion safety for the target SE is performed. For example, a list of the SEs in the SE database, not pending deletion, is built, STEP838 (FIG. 8c). Then, a SE name is retrieved from the built list,STEP840, and the named SE is retrieved from the SE database,STEP842. Relationships of this SE are then determined,STEP844, and each relationship target for this SE is examined. If any of the targets is equal to the target SE pending deletion,INQUIRY846, then the current SE technical owner is determined,STEP848, and notified to eliminate any relationships with the target SE pending deletion,STEP850.
Thereafter, or if the target is not related to a SE, a determination is made as to whether there are more SEs to be processed,INQUIRY852. If there are more SEs, the next SE in the list is processed,STEP840, until the list of SEs is exhausted.
Subsequently, a determination is made as to whether any notifications were sent,INQUIRY854. If any notifications were sent as a result of the above processing, processing terminates indicating that notifications are pending,STEP856. Processing then is to be restarted at some later time to verify that the notified SE technical owner(s) have made the appropriate changes and eliminated relationships of their SE(s) to the target SE pending deletion.
However, if no notifications were sent as a result of the above processing,INQUIRY854, there are no SEs related to the target SE, and processing continues at STEP810 (FIG. 8a), where the target SE is actually deleted.
In the embodiment for detecting a SE described herein, an open-ended workflow is provided. That is, there is enforcement of change of the SE(s) dependent on the SE pending deletion, and no notification is issued to the developer performing the deletion to indicate that all dependencies on the SE being deleted have been eliminated. However, in other embodiments, other types of workflow may be used, without departing from the spirit of the present invention.
One example in which the deletion processing is employed is as follows:
Developer A wants to deleteSE 1.SE 1 is to be phased out in favor of SE 1a or SE 1b. Developer B is responsible for maintenance ofSE 2, dependent onSE 1.
Developer A attempts to deleteSE 1. This results in determination of dependency ofSE 2 onSE 1, and a notification to Developer B, indicating thatSE 1 deletion is pending (replacement being SE 1a or SE 1b). Developer B can determine which of the replacement SEs (1a or 1b) better suits the needs ofSE 2 and alterSE 2 accordingly. WhenSE 2 alterations are completed, Developer A, upon performing another attempt to deleteSE 1, will no longer be deterred by the dependency ofSE 1 onSE 2.
Creating New SE Versions
One embodiment of the logic associated with creating a new version of a previously developed SE is described with reference toFIG. 9. In one example, this logic is implemented within SE manager.
Referring toFIG. 9, initially, a developer indicates creation of a new SE version by selecting “create new version” on a user interface of the SE system, and specifying a SE name,STEP900. An attempt is made to retrieve the specified SE from the SE database into a working version of the SE, STEP902. If the SE is not retrieved successfully,INQUIRY904, processing terminates indicating an error,STEP906. However, if the SE is successfully retrieved, then the SE version number is incremented,STEP908, and a change activity panel is displayed,STEP910. The developer specifies a change activity description, which is read in,STEP912, and appended to a SE change activity history stored in, for instance, the service element,STEP914. The modified SE is marked “under development”,STEP916, and the new version of the SE is stored in the SE database,STEP918.
After creating the new version, the developer may use SE editing functions to perform desired modifications of the new version of the SE.
Further, it is expected that as a part of the SE lifecycle processing, the user will indicate a migration path from the previous version of the SE to the new one.
SE Cross-Reference
As described herein, there may be various relationships among the SEs, including the different versions of SEs. Further, an environment may include different offerings. In order to observe the relationships among SEs and how they relate to different offerings, a SE cross-reference report function is employed. One example of a sample cross-reference includes (seeFIG. 10):
    • Two offerings, Offering A and Offering B;
    • Two application services SEs,SE 1version 1,SE 1version 2, andSE 2;
    • Two network services SEs,SE 3 andSE 4;
    • One storage and backup services SE,SE 5;
    • Two security services SEs,SE 6 andSE 7;
    • One facility services SE,SE 8.
The cross-reference illustrates two types of relationships between SEs: single-headed arrows represent unidirectional relationships; and double-headed arrows represent bi-directional relationships. So, Offering A includesSE 1version 1 andSE 3;SE 3 in turn includesSE 4 andSE 5;SE 4 in turn includesSE 7;SE 7 includesSE 6 andSE 8. Similarly, bothversions 1 and 2 ofSE 1 are mutually dependent withSE 2.
Similarly, Offering B includesSE1 version 2 and SE2; and SE2 has a bi-directional relationship with bothSE1 Version 1 andSE1 Version 2.
One embodiment of the logic associated with generating a cross-reference is described with reference toFIG. 11. In one example, the logic ofFIG. 11 is implemented within the SE manager.
Referring toFIG. 11, initially, a user requests generation of a SE cross-reference using a user interface of the SE system,STEP1100. A list of SEs is then obtained from the SE database,STEP1102, and a SE in the list is selected. The SE relationships for the selected SE are determined, as described above, and appended to a SE relationships collector (e.g., a list in memory),STEP1104.
Thereafter, a determination is made as to whether there are more SEs to be processed,INQUIRY1106. If there are more SEs to be processed, the next SE is processed,STEP1104. When all the SEs are processed, a cross-reference report is generated,STEP1108, and processing is complete,STEP1110.
Although generation of a full cross-reference is shown (i.e., the information included is based on all available SEs), one skilled in the art will appreciate that diverse partial cross-references (based on one or more possible sets of criteria) may be generated.
Another type of cross-reference that may be of interest is a SE component usage report showing which SE uses which component(s). The principle of generating this report is no different from what is described, with the exception that the component data feed is the source of information about components. In addition, depending on the report usage, it may be advantageous to show two different views: SE use of components and component use by SE.
SE Reports
A variety of reports may be generated from information stored in the SE and offering databases. Reports can be produced based on SE categories, SE status, SE change history, or any other fields within the SE.
Finding a SE
A SE search function is normally a simple database search by SE name. If multiple versions of a SE exist, and if version has not been specified as the search argument, the search returns all versions. The search may also be performed for SEs under development (or, on the contrary, they may be deliberately excluded by the search arguments). With the exception of an explicit override of search arguments, the search does not return deleted SEs. In other embodiments, the default search may return only the latest production (not “under development”) version.
Modifying SE Content
Described above are processes for creating, developing, deleting and creating new versions of service elements. In a further aspect of the present invention, the content of a service element may be modified. In one embodiment, the modification logic can be implemented in one or more units of the SDT, including the SE manager, design builder, and/or cost case builder.
In the following sections relating to modifying the SE content, (e.g., modifying SE composition, establishing or dissolving relationships, updating SE design and SE cost case, and updating SE development and deployment plans), the word “delete” when applied to an item in a SE does not cause a destruction of the item until all references to it are eliminated (similar to Java language references). “Delete” in this context refers to removal of an item from the corresponding data structure. Thus, the issue of a dangling reference (or pointer) is avoided.
Modifying SE Composition
In one aspect of the present invention, the composition of a SE can be modified in various ways. One embodiment of the logic associated with modifying the composition of a SE by adding an item to the SE composition is described with reference toFIG. 12. Initially, a SE composition item is created (e.g., allocated) from a composition item input (i.e., a specification of what is to be added), and assigned a default quantity of 1,STEP1200. Then, the SE composition is obtained from the SE,STEP1202, and an attempt is made to find the newly created composition item in the SE composition,STEP1204. If the composition item is found in the SE composition,INQUIRY1206, then this is not an addition of a new SE composition item, but an increase in quantity of a previously created SE composition item. Thus, the quantity of the located SE composition item is incremented by a predefined amount, such as 1,STEP1208, and the newly built SE composition item is discarded, STEP1210. The process then updates the SE cost case,STEP1212, the SE design,STEP1214, the SE development plan,STEP1216, and the SE deployment plan of the SE,STEP1218, to account for the addition to the SE composition.
Returning toINQUIRY1206, if the composition item is not found in the SE composition, the newly built SE composition item is added to the SE composition,STEP1222. Then, a determination is made as to whether the new composition item represents a SE,INQUIRY1224. If the new composition item represents a SE, then this SE is added to the list of SE dependencies (prerequisite),STEP1226. Thereafter, or if the new SE composition item is not a SE, processing continues withSTEP1212.
Another modification to the SE composition includes deleting a composition item. One embodiment of the logic associated with deleting a SE composition item is described with reference toFIG. 13. Initially, the SE composition is obtained from the selected SE,STEP1300. Then, the target SE composition item is attempted to be located in the SE composition,STEP1302. If the target SE composition item is not found in the SE composition,INQUIRY1304, processing terminates with an error,STEP1306. Otherwise, the process attempts to update the SE design (e.g., invokes the design-add item process described herein),STEP1308. The process of updating the SE design will terminate with an error if the target SE composition item represents a SE involved in a relationship with another SE as a part of the SE design. Therefore, if the SE design update process completes successfully, it is safe to proceed with the rest of the updates. Thus, processing continues with the other updates, including updating the SE cost case,STEP1314, the SE development plan,STEP1316, and the SE deployment plan,STEP1318.
Subsequently, a determination is made as to whether the specified SE composition item is a component,INQUIRY1320. If the target SE composition item does not represent a component, but represents a SE, then this SE is removed from the SE dependencies list (prerequisite),STEP1322. Thereafter, or if the SE composition item is a component, then the process completes by removing the target SE composition item from the SE composition,STEP1324.
Another modification to the SE composition includes changing a quantity of the composition. One embodiment of the logic associated with changing a quantity of a SE composition item is described with reference toFIG. 14. Initially, a SE composition is obtained from the SE, STEP1400, and the target SE composition item is attempted to be located in the SE composition, STEP1402. If the target SE composition item is not found in the SE composition, INQUIRY1404, processing terminates with an error, STEP1406. Otherwise, the new quantity is examined.
If the new quantity is no different from the current quantity, INQUIRY1408, processing completes, STEP1410. However, if the new quantity is unequal to the current quantity, then a further determination is made as to whether the new quantity is equal to zero, INQUIRY1412.
If the new quantity is zero, processing invokes a SE composition item deletion process (described above with reference toFIG. 13), STEP1414. Otherwise, the process attempts to update the SE design, STEP1416. The process of updating the SE design will terminate with an error, if the target SE composition item represents a SE involved in a relationship with another SE as a part of the SE design and the new quantity is lower than the current quantity. Therefore, if the SE design update process completes successfully, it is safe to proceed with the remaining updates, including updating the SE development plan, STEP1420, and the SE deployment plan, STEP1422.
Establishing or Dissolving Integration Relationship between Two Service Elements
The verification of integration relationships is described above as an aspect of successfully developing a service element. However, further details on establishing and dissolving an integration relationship are described below.
One embodiment of the logic associated with establishing an integration relationship between two service elements (SE1 and SE2, included in the composition of SE) is described with reference toFIG. 15. Initially, a SE composition is obtained,STEP1500, and an attempt to locate SE1 and SE2 items in the SE composition is performed,STEP1502. If either or both of the specified items are not found in the SE composition,INQUIRY1504, processing terminates with an error, STEP1506. Otherwise, integration properties of SE1 and SE2 are verified, as described above with reference toFIGS. 7a-7b,STEP1508.
Subsequently, a determination is made as to whether the integration type is prohibited,INQUIRY1510. If SE1 and SE2 integration is prohibited, then processing terminates with an error,STEP1512. Otherwise, the SE design is updated,STEP1514, followed by updates of the SE development plan, STEP1516, and the SE deployment plan,STEP1518.
One embodiment of the logic associated with dissolving an integration relationship between two SEs (SE1 and SE2, included in the composition of SE) is described with reference toFIG. 16. Initially, a SE composition is obtained,STEP1600, and an attempt to locate SE1 and SE2 items in the SE composition is performed,STEP1602. If either or both of the specified items are not found in the SE composition,INQUIRY1604, processing terminates with an error,STEP1606. Otherwise, the SE design is updated,STEP1608, followed by updates of the SE development plan,STEP1610, and the SE deployment plan,STEP1612.
Updating SE Design
In accordance with one or more aspects of the present invention, the design of a service element can also be modified in various ways. One embodiment of the logic associated with updating a SE design, as a result of adding a SE composition item, is described with reference toFIG. 17. In one example, this logic is implemented in design builder.
Initially, a determination is made as to whether the composition item is a SE,INQUIRY1700. If the composition item does not represent a SE (i.e., it represents a component), the visual design is updated, as described below,STEP1702. Otherwise, an attempt is made to retrieve the SE represented by the composition item (SEc) from the SE database,STEP1704. If the SEc is not found in the SE database,INQUIRY1706, then processing terminates with an error,STEP1708. However, if the SEc is found, then the SEc is examined to determine whether it requires customization,INQUIRY1710.
If the SEc requires customization, as classified, then the customization design item is created and linked to the SE composition item referencing the SEc,STEP1712. The newly created customization design item is then added to the SE design,STEP1714. The visual design is also updated before processing completes,STEP1702.
The SE design can also be modified due to deletion of a SE composition item. One embodiment of the logic associated with updating the design by deleting a SE composition item is described with reference toFIG. 18. Initially, a determination is made as to whether the composition item is a SE,INQUIRY1800. If the composition item does not represent a SE (i.e., it represents a component), the visual design is updated,STEP1802.
Otherwise, the SE design is retrieved,STEP1804, and a search is performed in the SE design for any integration SE design items that refer to this composition item (i.e., ascertain whether the SE represented by the target SE composition item is involved in an integration relationship with another SE as a part of the design), STEP1806. If an integration SE design item is found referring to this composition item,INQUIRY1808, processing terminates with an error,STEP1810. Otherwise, a search is performed for any customization SE design items that refer to this composition item,STEP1812. If any customization SE design items are found to reference the target composition item,INQUIRY1814, the design items are deleted from the SE design,STEP1816. Thereafter, or if no customization SE design items are found, processing continues with updating the visual design,STEP1802.
In a further embodiment, a SE design is modified due to a change of a SE composition quantity. One embodiment of the logic associated with updating the SE design by changing a SE composition item quantity is described with reference toFIGS. 19a-19c. Initially, a determination is made as to whether the composition item is a SE, INQUIRY1900 (FIG. 19a). If the composition item does not represent a SE (i.e., it represents a component), then the visual design is updated,STEP1902.
Otherwise, if the new quantity is greater than the current quantity,INQUIRY1904, the design-add item logic is invoked (seeFIG. 17),STEP1906. Thereafter, a check is made as to whether the add process is to be repeated,INQUIRY1908. For instance, the process repeats the “design—add item” process a number of times equal to the difference between the new and the current quantity. Thus, if the process has not been repeated the appropriate number of times, processing continues withSTEP1908. Otherwise, the visual design is updated, prior to completion,STEP1902.
Returning toINQUIRY1904, if the new quantity is less than the current quantity (should they be equal, this process is not invoked, as no design change is perceived to be necessary), the SE design is retrieved,STEP1910. A search is performed through the integration SE design items to find those integration items that reference this composition item,STEP1912. Each found integration SE design item is stored in a list of integration SE design items referencing this composition item.
If any integration SE design items have been found,INQUIRY1914, and if the number of integration SE design items in the list exceeds the new quantity,INQUIRY1916, processing is terminated with an error,STEP1918. Otherwise, the list of integration SE design items referencing this composition item is presented to the user with a question of whether any of the presented SE design items are impacted by the quantity change, STEP1920 (FIG. 19b). The user responds YES or NO and the process obtains the user response,STEP1922. If the user response is YES,INQUIRY1924, processing is terminated with an error,STEP1918.
Otherwise, or if design items for references to this composition item were not found, a search is performed for customization SE design items that reference this composition item, and a list of such customization SE design items is built,STEP1926. If any customization SE design items are found,INQUIRY1928, the built list of customization SE design items referencing this composition item is presented to the user with a request to specify the items to delete as a result of quantity reduction,STEP1930. The user selects (the number of selected customization SE design items is the difference between the current and the new quantity) the design items to delete, and the process obtains the user selection, STEP1932 (FIG. 19c). If the user selected a number of customization SE design items different from the one required,INQUIRY1934, the user is re-prompted and processing continues withSTEP1930. Otherwise, the specified customization SE design items are deleted from the SE design,STEP1936. In one example, the deletion is performed in a loop that repeats the number of times equal to the difference between the current and the new quantity,INQUIRY1938. Processing then continues with updating the visual design,STEP1902.
The SE design may also be updated as a result of establishing an integration relationship between two SEs (SE1 and SE2) represented in the SE composition. For example, the process ascertains the type of integration supported by SE1 and SE2 (“prohibited” is at this point precluded, since the invoking process has already performed this check), and creates an integration SE design item referencing the composition items for SE1 and SE2. The process then adds the newly created integration SE design item to the SE design. Subsequently, the visual design is updated.
Further, the SE design can be updated as a result of dissolving an integration relationship between two SEs (SE1 and SE2) represented in the SE composition. For example, the process finds the appropriate integration SE design item in the SE design and deletes this design item from the SE design.
Updating SE Cost Case
The SE cost case is modifiable in one or more ways and for various reasons. For example, when an item is deleted from the SE composition, a SE cost case item is also deleted. For example, the process finds the SE cost case item corresponding to the SE composition item being deleted and deletes that SE cost case item from the SE cost case.
In one embodiment, the process of deleting a SE cost case item is invoked for embodiments that cache SE cost case items in the SE data structure. Embodiments that generate cost data dynamically on demand do not need to implement this process.
In a further example, a SE cost case item is created, as a result of adding an item to the SE composition. Creating a SE cost case item is described further below.
Updating SE Development Plan
The SE development plan is also modifiable in one or more ways and for various reasons. For example, the process of deleting SE development plan tasks is invoked as a result of deletion of an item from the SE composition or as a result of a decrease of an item quantity in the SE composition (assuming this item represents a SE; or as a result of dissolution of an integration relationship between two SEs included in the SE composition, this integration relationship represented by an integration SE design item (also being deleted).
One embodiment of the logic associated with deleting SE development plan tasks is described with reference toFIG. 20. Initially, the SE development plan is retrieved from the SE,STEP2000. Then, a search is performed through the SE development plan tasks to find all triplets (unit design, unit implementation, test) of tasks associated with the design item being deleted, and a list of such task triplets is produced, STEP2002. A triplet in the list is then selected, and the test task is deleted,STEP2004. Additionally, the implementation task and unit design task are deleted, STEPS2006,2008. Thereafter, a determination is made as to whether there are more triplets on the list to be processed,INQUIRY2010. If so, processing continues withSTEP2004. Otherwise, processing is complete,STEP2012.
In a further embodiment, SE development plan tasks are added as a result of adding an item (including increase in its quantity) to the SE composition (assuming this item represents a SE); or as a result of establishment of an integration relationship between two SEs included in SE composition, this integration relationship represented by an integration SE design item. Adding SE development plan tasks is described further below.
Updating SE Deployment Plan
In one embodiment, in response to adding an item to a SE composition, a SE deployment plan is built. One embodiment of the building of SE deployment plan tasks as a result of adding an item to the SE composition is described with reference toFIG. 21. Initially, one or more provisioning and installation SE deployment plan tasks are built for the added SE composition item,STEP2100. Thereafter, a determination is made as to whether a customization SE design item was created as a result of adding the SE composition item,INQUIRY2102. If the customization SE design item was created as a result of adding the SE composition item, then customization SE deployment plan tasks are built,STEP2104. Otherwise, processing is complete,STEP2106.
In a further embodiment, one or more deployment plan tasks are deleted, in response to deleting an item from the SE composition. One embodiment of the logic associated with deleting one or more SE deployment plan tasks as a result of deleting an item from the SE composition is described with reference toFIG. 22. Initially, a SE deployment plan is retrieved from the SE,STEP2200. Thereafter, a determination is made as to whether the composition item represents a component,INQUIRY2202. If the composition item represents a component, then an attempt is made to find an installation task associated with this composition item in the SE deployment plan,STEP2204. If the installation task is found,INQUIRY2206, then the associated checkout SE deployment plan task is located,STEP2208. The checkout task and the installation task associated with this composition item are deleted,STEP2210.
Thereafter, or if an installation task was not found, an attempt is made to find a provisioning task associated with this composition item in the SE deployment plan,STEP2212. If the provisioning task is not found,INQUIRY2214, then processing is complete. However, if the provisioning task is found, then the associated checkout task is located in the SE deployment plan,STEP2216, and the checkout task and the provisioning task associated with this composition item are deleted,STEP2218.
Returning toINQUIRY2202, if the composition item represents a SE, then an attempt is made to find a customization task associated with this composition item in the SE deployment plan,STEP2220. If the customization task is found,INQUIRY2222, then the associated checkout SE deployment plan task is located,STEP2224. Thereafter, the checkout task and the customization task associated with this composition item are deleted,STEP2226.
Subsequently, or if a customization task was not found, the process attempts to find a SE reference placeholder task (described herein) associated with provisioning of this composition item,STEP2228. If the placeholder was found,INQUIRY2230, it is deleted from the SE deployment plan,STEP2232. Otherwise, processing is complete, STEP2234.
In this embodiment, SE placeholders, although present as visual elements in a visual design representation, have no effect on the rest of the SE data structure (i.e., they are seen on the screen, but have no corresponding composition, design (customization or integration), cost case, or development or deployment plan items). One skilled in the art will appreciate that other treatment of SE placeholders are possible—e.g., defining a generic placeholder SE (that integrates with anything in a “manual” fashion and requires customization) and adding it to the SE database would result in a placeholder SE being treated just like a real SE, with all the associated data structures built as a result of the placeholder SE involvement.
In addition to the above, deployment plan changes are performed, as a result of a composition item quantity update. For example, the process finds the appropriate tasks and updates imbedded quantities for provisioning, customization, SE placeholder, and the checkout SE deployment plan tasks.
Further, SE deployment plan tasks are built, as a result of establishment of an integration relationship between two SEs represented by composition items in the SE composition. This is described further below.
SE deployment plan tasks are deleted, as a result of dissolution of an integration relationship (represented by a design item). One embodiment of the logic associated with deleting one or more SE deployment plan tasks is described with reference toFIG. 23.
Initially, a SE deployment plan is retrieved from the SE,STEP2300. Then, an attempt is made to find an integration task associated with the design item in the SE deployment plan,STEP2302. If the integration task is found,INQUIRY2304, then the associated checkout SE deployment plan task is located,INQUIRY2306. Thereafter, the checkout task and the integration task associated with this composition item are deleted,STEP2308. If the integration task is not found, processing completes, STEP2310.
Design Builder
Design builder is a graphical tool in the framework of the Service Development Tool. Design builder helps a developer produce a graphical view of the configuration and associated textual descriptions out of available SEs. Design builder is invoked, for instance, by a user wishing to change a created service element. The builder includes, for instance, a set of stencils (or palettes), dynamically configurable (i.e., pulling data from the SE databases), based on available SEs; and a drawing screen.
A user performs a design by dragging SEs from the stencils (e.g., of the SE database), and providing associated textual description/comments, and interconnecting the SE representations via network links. The work results, including elements, links, description, as well as a diagram, are stored in the technical design database.
In addition to the standard SE labels, selected SEs are assigned additional characteristics, e.g., shared (one per N customers) versus dedicated (one per customer), that are reflected in the resulting configuration and the subsequent generated cost case.
One embodiment of an overview of a design builder is described with reference toFIG. 24. A design builder2400 (e.g., a program) has access toSE database2402, where it stores and retrieves design information. A user (e.g., a designer) interfaces withdesign builder2400 via a designbuilder user interface2404.
In one example, designbuilder user interface2404 includes, a tophorizontal command bar2406; one or more stencils2408 (usually representative of the SE nomenclature) stored in a stencil table2410 ofSE database2402; and awork area2412, surrounded by horizontal and vertical rulers,2414,2416, horizontal andvertical scroll bars2418,2420, and one ormore sheet tabs2422.
Adding an Item to a Stencil
Design builder permits the addition of items to stencils. The addition of items to stencils can be performed for existing items (i.e., SEs or components) or as placeholders (i.e., an item does not yet exist, but is needed to complete the design).
One embodiment of the logic associated with adding an item to a stencil is described with reference toFIGS. 25a-25c. Initially, the designer invokes a stencil item addition panel of the design builder user interface, and indicates the desire to add an item to a specified stencil. An attempt is then made to retrieve the stencil from the stencil table of the SE database,STEP2500. If the stencil is not found,INQUIRY2502, processing terminates with an error,STEP2504. If the stencil is found, the designer is presented with a choice of “placeholder, component, or SE” displayed on an item specification panel,STEP2506. The designer specifies the choice, which is received by the program,STEP2508.
If the item is a placeholder (i.e., it does not relate to an existing component or SE, but rather is intended to depict something to be created later),INQUIRY2510, a placeholder item is created,STEP2512. The designer is presented with a placeholder name specification request on a name entry panel,STEP2514, and the designer enters the placeholder name, which is obtained by the program,STEP2516, and assigned to the placeholder item,STEP2518. The placeholder item is then added to the stencil being modified,STEP2520, and the modified stencil is stored in the stencil table of the SE database,STEP2522.
Returning toINQUIRY2510, if the item is not for a placeholder, then a determination is made as to whether the item is for a component, INQUIRY2524 (FIG. 25b). If the item is for a component, a component item is created,STEP2526. Then, the list of available components is retrieved from the component data feed,STEP2528.
Thereafter, a component selection panel is built from the list of available components and presented to the designer,STEP2530. The designer selects a desired component from the presented list, and the selected component name is passed to the program,STEP2532. The selected component name is then assigned to the component item,STEP2534, and the component item is added to the stencil being modified,STEP2536. The modified stencil is stored in the stencil table of the SE database,STEP2538.
Returning toINQUIRY2524, if the item is not for a component, the item is for a SE. Thus, a SE item is created, STEP2540 (FIG. 25c). The list of available SEs is retrieved from the SE database,STEP2542, and a SE selection panel is built from the list of available SEs and presented to the designer,STEP2544. The designer selects the desired SE from the presented list, and the SE name is passed to the program,STEP2546. The selected SE name is assigned to the SE item,STEP2548, and the SE item is added to the stencil being modified,STEP2530. The modified stencil is then stored in the stencil table of the SE database,STEP2552.
In addition to adding items to stencils, design builder allows items to be deleted. The removal of an item includes removing the item, and storing the updated stencil in the stencil table of the SE database.
Customization Level Representation
A permitted level of customization is included in a SE visual representation. SEs that support no customization (standard) are not marked; SEs that support parametric customization are so marked (e.g., by using a distinct color, texture, etc. for their stencil icons, or by imbedding the letter “p” in a corner of their stencil icons); SEs that support programmable customization are also marked accordingly (e.g., by using a distinct color, texture, etc., or by imbedding the letter “P” in their icon).
SE Integration
Connecting two SEs on the screen with a line is equivalent to establishing an integration relationship between the SEs. As described above, there can be various levels of integration between any two SEs. Whenever an integration relationship is established between two SEs in a design, the level of integration associated with the relationship is noted and represented on the integration line (e.g., by using a distinct line color or style, or by labeling the line—e.g., no label for “compatible”, “S” for “standard”, “M” for “manual”).
Prior to establishing an integration relationship, the verification of SE integration properties is performed, and integration is designed, only if permitted by the SE integration properties and at the level defined by those properties. In one example, if one of the two SEs is a placeholder, or if no integration characteristics are specified for the two SEs, the default assumption of “manual” is made.
One embodiment of the logic associated with establishing an integration relationship is described with reference toFIG. 26. Initially, a designer connects two objects, SE1 and SE2, on the visual design builder workspace, and the process obtains SE1 and SE2,STEP2600. If SE1 or SE2 is a placeholder,INQUIRY2602, then the integration line the designer has drawn is added to the visual design builder work area,STEP2604, and the visual design builder work area is redisplayed with a refreshed view now containing the integration line,STEP2606.
However, if neither SE1 nor SE2 are placeholders,INQUIRY2602, the process establishes an integration relationship between SE1 and SE2, as described above with reference toFIGS. 7a-7b,STEP2608. If the integration relationship between SE1 and SE2 is not established successfully,INQUIRY2610, the process redisplays the visual design builder work area with a refreshed view not containing the integration line,STEP2606. Otherwise, the integration line the designer has drawn is added to the visual design builder work area,STEP2604, and the visual design builder work area is redisplayed with a refreshed view now containing the integration line,STEP2606.
Instantiating a Placeholder
Replacing a placeholder with a SE is equivalent to adding the SE to the design, and then, if successful, following up by recreating any integration relationships in which the placeholder being replaced by this SE was involved.
If any of these steps fail (i.e., the SE cannot be added to the design or an integration relationship cannot be established), the designer is presented with the appropriate error message(s) and the replacement of the placeholder with the SE does not complete.
Generating Graphical Design from SE
SE development may start from some other aspects of development than from the visual design graphical builder (e.g., cost case edit). In such a case, it may be advantageous to automatically generate an initial visual representation of a SE as a starting point for visual design work. In other cases, a visual design may already be present, and may need to be refreshed, if changes to the SE took place.
FIG. 27 depicts one embodiment of the process of building a visual design item of a visual design. Initially, the visual design is obtained from the SE,STEP2700, and an attempt is made to retrieve the visual design item for the specified SE composition item,STEP2702. If the corresponding visual design item is found,INQUIRY2704, the process completes by returning the visual design item,STEP2706. Otherwise, a visual design item is created,STEP2708, its representation is determined, as described below,STEP2710, and the representation is stored in the visual design item,STEP2712. The process completes by returning the generated visual design item,STEP2706.
One embodiment of the logic associated with determining a visual representation for a visual design item is described with reference toFIG. 28. A visual representation is defined by, for instance, stencil shape, its size, and/or location on the design screen. The process attempts to obtain the visual representation of the visual design item from the SE,STEP2800. If the representation is obtained,INQUIRY2802, processing completes by returning the visual representation,STEP2804. Otherwise, the visual representation for this visual design item is to be created.
If the visual design item is a placeholder,INQUIRY2806, the default stencil element is assigned to the visual design item,STEP2808. Otherwise, an attempt to find a stencil element for the entity represented by this visual design item is performed in the stencil table of the SE database,STEP2810. If a stencil element is not found,INQUIRY2812, a stencil add process is initiated,STEP2814. Then, the found or newly created stencil element is assigned to the visual design item (thus, determining its shape),STEP2816.
Next, the shape, size and location are determined by a fitting process, which fits the shape in the available space, not occupied by other shapes, and adjusts the shape's size as appropriate to make it possible. The resulting size and location are stored in the representation,STEP2818. The representation is then stored in the visual design item,STEP2820, and returned as the process terminates,STEP2804.
In one example, a design is rendered by placing the visual design items, except for those marked “hidden”, according to their size visual representations (stencil item shape, location, and size) on the image of the visual design graphical builder work area.
Editing Graphical SE Design
One embodiment of the logic associated with editing a SE visual design is described with reference toFIG. 29. Initially, the current visual design is rendered onto the work area,STEP2900. Then, a developer can perform one of the following operations on the graphical design:
    • Drag an item from a stencil onto the design screen;
    • Select an item on the design screen and delete it;
    • Select an item on the design screen and update its quantity;
    • Establish a relationship between two items on the design screen (subject to the described rules);
    • Delete a relationship between two items on the design screen;
    • Select an item on the design screen and drag it to a different position on the design screen;
    • Select an item on the design screen and resize it; and
    • Terminate edit.
The process senses the action the developer has performed,STEP2902, and processing continues therefrom.
If the action is a terminate editing session action,INQUIRY2904, then the updated SE is stored in the SE database,STEP2906, prior to process completion,STEP2908. However, if the action is not terminate, then a determination is made as to whether the action is a drag action, INQUIRY2910. If the developer drags an item from a stencil onto the work area, then the action is a drag action. Thus, the process of adding an item to SE composition is performed, as described with reference toFIG. 12,STEP2912. The screen position of the item drop location is stored and remembered for future use. One exception to this is a placeholder stencil item, for which the screen position and size are remembered (i.e., a design item is created), but no corresponding SE composition entry is created. When the action specified by the developer is performed, the process repeats until the developer requests termination,STEP2900.
If the action is not a drag action, then a further determination is made as to whether it is a quantity update action,INQUIRY2914. Should the developer select an item in the work area and update its quantity, the action is a quantity update action. Thus, a check is made as to the value of the new quantity,INQUIRY2916. If the new quantity is not 0, the SE composition item quantity update process is performed, as described with reference toFIG. 14,STEP2918. This results in an update of the corresponding SE composition item's quantity in the SE. However, if the quantity is updated to 0, then this is equivalent to deleting the selected item from the screen and the SE composition. Thus, if the developer specified the quantity of 0 or the developer deleted the selected item using an explicit deletion operation (e.g., the DELETE keyboard key),INQUIRY2920, the process of deletion of a SE composition item is performed, as described with reference toFIG. 13, STEP2922. Note that deleting an item involved in a relationship with another item is not permitted. An item may be deleted, in one example, only after the relationships it is involved in are dissolved.
If the developer wants to establish a relationship between two items on the design screen (by connecting them with a line),INQUIRY2924, the process of establishing an integration relationship between two items is performed, as described with reference toFIG. 26,STEP2926. If successful, the integration relationship is established between the two items.
Similarly, if the developer wants to delete a previously established relationship between two items,INQUIRY2928, the relationship dissolution process is invoked,STEP2930.
If the developer selects an item on the screen and resizes it,INQUIRY2932, the process of resizing an item is invoked, which amounts to the new item size being stored in the item's visual design representation,STEP2934.
Otherwise, the remaining action the developer can perform is to change a position of an item in the work area. Thus, the process of changing position is invoked, which results in the stored location of the visual item representation being updated,STEP2936.
Abstracting Graphical SE Design
A graphical design representation exists for convenience of the SE developers and users. Because it is likely that a sufficiently complex SE (e.g., an offering) will include a large number of entries in its composition (and each entry may in turn be a SE, generating a chain of dependencies), graphical design visual builder includes mechanisms for design abstraction, intended for simplification of the visual representation. Three mechanisms are provided, in one embodiment:
    • The ability to hide specified design elements;
    • The ability to exclude design elements based on criteria; and
    • The ability to restrict representation levels.
In the first case (hiding specified design elements), the developer simply selects the specified design elements on the screen and assigns them the “hidden” attribute, which causes these elements to become invisible (i.e., not shown on the visual design display).
In the second case (excluding design elements based on criteria), the developer is presented with a menu, allowing the developer to specify types of design elements to assign the “hidden” attribute. The criteria are related to the types of SEs or components comprising a SE. For example, a developer may hide all components. Similarly, a developer may hide all SEs in the network services category.
In the third case, representation levels to be shown may be specified, based on a SE inclusion chain. For example,SE 1 includesSE 2 andSE 3;SE 2 includes SE 2A and SE 2B; andSE 3 includes SE 3A and SE 3B. Thus,representation level 0 causesSE 1 to be displayed;representation level 1 causesSE 1 to be shown as a composition ofSE 2 andSE 3, but not the further decomposition ofSE 2 andSE 3; andrepresentation level 3 shows SE1, SE2, SE3, SE2a, SE2b, SE3a, SE3b.
Working in Conjunction with Cost Case Builder
In one embodiment, a common use of the visual builder is in conjunction (concurrently) with the cost case builder for the same SE. Changes to the cost case are reflected in the visual design and changes to the visual design are reflected in the cost case by virtue of the fact that any functions that modify SE content ensure that both the design and the cost case (as well as development and deployment plans) are modified, e.g., simultaneously.
Cost Case Builder
A cost case is an enumeration of SE composition items, along with their quantities, and associated one-time charge costs (OTC) and recurring costs (RC). A cost case is represented visually, in one example, as a spreadsheet. One example of an overview of a cost case builder is described with reference toFIG. 30. Acost case builder3000 is a tool, with a spreadsheet-like user interface (UI)3002, used for creation of service elements or offering cost cases.Cost case builder3000 takes input from aSE database3004, as well as manual user input of timeline and volume projections. Data extracted from the SE database and manual input are translated into a cost case spreadsheet3006, which is presented to the user through the UI.
Various differences exist between the cost case builder and a spreadsheet, such as, for instance:
1. Linkage to databases containing the information (in other words, the visible spreadsheet interface is constructed of data brought in from a variety of sources, while cost information in the SE database originates from one or more cost data feeds for components); and
2. Its bi-directional nature. Changes introduced into the spreadsheet presentation result in the adjustment of quantities of the corresponding elements within the solution configuration database.
Consider an example. A developer designs an offering configuration with two dedicated firewalls per customer and a load balancing function. When a cost case is produced, a developer may consider replacing the two dedicated firewalls by a single dedicated firewall per customer. The developer adjusts the quantity of the firewall configuration element directly in the presented cost case spreadsheet by replacing “2” with “1” in the right cell; and the cost case builder reflects the change by updating the corresponding quantity in the associated configuration database. If the developer saves the status of the solution at this point, and then, restarts work from the design builder, the configuration reflects a single firewall per customer.
Building a Cost Case from a Design
One embodiment of the logic associated with building a SE cost case from a SE design is described with reference toFIG. 31. Initially, the developer produces a SE design, STEP3100. For example, the developer uses the cost case build panel to initiate generation of the cost case. The process receives a request to generate the SE cost case,STEP3102, and an attempt is made to retrieve the specified SE from the SE database,STEP3104. If the specified SE is not found,INQUIRY3106, processing terminates with an error,STEP3108. Otherwise, the SE composition is retrieved,STEP3110.
If no composition is present within the SE,INQUIRY3112, processing terminates with an error,STEP3114. However, if the composition is not empty, a composition item is selected. For the selected item in the SE composition, a corresponding cost case item is built, as described below, and stored in the list of cost case items,STEP3116. Thereafter, a determination is made as to whether there are more items to be processed,INQUIRY3118. If so, processing continues withSTEP3116. However, when the composition items are processed, the cost case is stored in the SE,STEP3120, and the SE is updated in the SE database,STEP3122.
Although the above process shows manual initiation of generation of a SE cost case from a SE design, in another embodiment, automatic real-time generation of a cost case from a design being built is employed. In such an embodiment, the same logic is used, except for the absence of manual initiation.
One embodiment of the logic associated with building a cost case item is described with reference toFIGS. 32a-32b. Initially, a determination is made as to whether the composition from which the cost case item is to be built is a component,INQUIRY3200. If the composition item is a component, then component information is retrieved from the component data feed,STEP3202. Additionally, component cost data is retrieved from the component, STEP3204, and returned as the resulting cost item,STEP3206.
Returning toINQUIRY3200, if the composition item from which the cost case item is to be built is a SE, then an attempt is made to retrieve the SE from the SE database,STEP3208. If the specified SE is not found in the SE database,INQUIRY3210, processing terminates with an error,STEP3212. Otherwise, the SE composition is retrieved from the SE,STEP3214.
Thereafter, a determination is made as to whether the SE composition is empty,INQUIRY3216. If no composition is present, processing terminates with an error,STEP3218. Otherwise, a cost case item to be built is initialized to 0's,STEP3220. For instance, its one time charge (OTC) and recurring cost (RC) values are both set to 0.
Thereafter, a cost case item for the SE composition item is built (this is a recursive invocation of the process being described), STEP3222 (FIG. 32b). Further, the resulting cost case item is multiplied by the corresponding SE composition item quantity,STEP3224, and the built cost case item, corresponding to the current SE composition entry, is added to the cost case item this process is building,STEP3226. When all the SE composition items are processed, the built cost case item is returned,STEP3230.
In addition to creating a cost case, cost case items can be added. One embodiment of the logic associated with adding a delta cost case item (e.g., additions, changes) to a target cost case item is described with reference toFIG. 33. Initially, the delta cost case item OTC is added to the target cost case item OTC,STEP3300. Moreover, the delta cost case item RC units are normalized to the units of the target cost case item RC,STEP3302, and the delta cost case item RC is added to the target cost case item RC,STEP3304. This concludes processing.
In one embodiment, a target cost case item is to be multiplied by a multiplier. Thus, the target cost case item OTC is multiplied by a multiplier, and then the target cost case item RC is multiplied by the multiplier.
Editing a Cost Case
A cost case is represented visually in a spreadsheet format, and subsequent manual adjustments by the developer are permitted. However, in one embodiment, only addition and deletion of cost case items, or update of their quantities are permitted. A developer is not permitted to manually adjust a cost value for any particular item (these values are computed).
One embodiment of the logic associated with editing a cost case is described with reference toFIG. 34. The developer initiates the cost case edit process from a menu, and specifies the name of the SE for which the cost case edit is being performed. The process obtains the SE name,STEP3400, and generates a cost case for the specified SE, as described with reference toFIG. 31,STEP3402. The produced cost case is then presented on the cost case edit screen, where the developer can perform permitted operations on cost case entries,STEP3404. If the developer indicates completion,INQUIRY3406, the updated SE is replaced in the SE database,STEP3408, and processing completes,STEP3410. Otherwise, the specified change is performed on the selected cost case item,STEP3412, and the process repeats from rebuilding the cost case and permitting the developer to perform the next operation,STEP3402.
One embodiment of the logic associated with editing a cost case item is described with reference toFIG. 35. As input, the process receives the specification of the cost case item being edited, and if this is an update to an existing item, the desired new quantity (0 indicates a request for deletion). An attempt is made to find the specified item in the cost case,STEP3500. If the specified item is not found,INQUIRY3502, this is a new SE composition item to add, so the process of adding a SE composition item is performed, as described with reference toFIG. 12,STEP3504. If, however, the specified item is found, then this is a SE composition item quantity update (seeFIG. 14). Thus, a determination is made as to whether the new quantity is equal to zero,INQUIRY3506. Should the quantity be non-zero, then the SE composition item quantity is changed,STEP3510. However, if the new quantity value is zero, then this is a deletion of a SE composition item (FIG. 13), and the corresponding process is performed,STEP3508.
Export from Cost Case
The cost case builder permits export from a cost case into a set of specified file formats. The export amounts to representing the items of data, presented on the screen (both simple and computed by the cost case builder), as text fields in the comma-separated text file, with optional subsequent translation into a particular spreadsheet format, e.g., Microsoft Excel or Lotus 1-2-3.
Import into Cost Case
The cost case builder also permits import from a comma-separated text file into a cost case. Two options are available for import, as examples:
A. Complete to cost case—All fields of a cost case are present in the import file; only cost case item names and their quantities are imported—the rest of the information (OTC and RC values) are ignored and recalculated; and
B. Partial to cost case—Only fields permitted for user modification are present in the import file; these fields (names and quantities of cost case items) are imported—and the rest of the information (OTC and RC values) are calculated.
Plan Builder
In one embodiment, two plans are associated with each SE—an overall project plan (including a development plan) and a deployment plan.
The overall project plan includes the full scope of activities, starting from the project inception and ending with SE availability for deployment. It includes the development plan as one of its steps. A plan builder (e.g., development plan builder) assists with the development and offering management in creating and managing development project(s).
Development Plan
A development plan is represented as a series of process phases (e.g., SE design, development, integration test, system test) (seeFIG. 2e). One of the phases, the development phase is broken down into sub-phases, such as, for instance, unit design (where unit is customization, integration, or instantiation of a placeholder into a real entity), implementation, and test. Each phase is represented as a collection of tasks, and each task includes, for instance, its identifier, task owner, reference to a work item (integration, customization, instantiation of a placeholder), dependencies (on other tasks within this project plan or on completion of a project plan for another SE, included or co-requisite with this SE), projected time to complete the task, projected task execution start date, required skills and resources, and task execution status (not started, in progress, completed).
Building a SE Development Plan
One embodiment of the logic associated with building a SE development plan is described with reference toFIGS. 36a-36b. Initially, the user specifies the SE for which the development plan is to be built on the development plan panel, and the process receives the SE specification,STEP3600. An attempt is made to retrieve the specified SE from the SE database, STEP3602. If the specified SE is not found in the SE database,INQUIRY3604, processing terminates with an error,STEP3606. Otherwise, the SE design section of the SE development plan is created (seeFIG. 2e), STEP3608 (FIG. 36a). If additional design documentation (i.e., any documents in addition to the SE design contained in the SE) is present,INQUIRY3610, a reference to that documentation is added to the SE design section of the development plan,STEP3612.
Thereafter, or if additional design documentation is not present, then the process of creating placeholder instantiation design tasks is performed, as described below,STEP3614. Additionally, the development section of the SE development plan is created,STEP3616, followed by creation of a development task table (unit design, implement, test versus customization, integration (seeFIG. 2f)), STEP3618 (FIG. 36b), and the building of the development tasks,STEP3620. The integration test section of the SE development plan is then created,STEP3622, followed by creation of integration test tasks,STEP3624. Then, the system test section of the SE development plan is created,STEP3626, and the SE is updated in theSE database3628.
One embodiment of the logic associated with an overview of building design tasks of instantiating placeholders is described with reference toFIG. 37. Initially, a determination is made as to whether any placeholders are present in the SE design,INQUIRY3700. If one or more placeholders are present in the SE design, then a placeholder is selected, and a placeholder instantiation design task is built for the placeholder, as described below,STEP3702. Thereafter, a determination is made as to whether there are more placeholders,INQUIRY3704. If so, processing continues withSTEP3702. Otherwise, when all placeholders are processed, processing completes.
One embodiment of the logic associated with building a placeholder instantiation design task is described with reference toFIG. 38. Initially, a design task of an instantiating placeholder is created (seeFIG. 2e),STEP3800. Then, an identifier is assigned to the design task,STEP3802, and a reference to the placeholder is stored in the design task,STEP3804.
Thereafter, the user is prompted for the owner of the design task,STEP3806, and the user responds to the design task owner prompt by entering the owner responsible for completion of the design task. The process obtains the entered owner, STEP3808, and stores the value in the design task,STEP3810.
The user is then prompted for the projected time and start date for this task,STEP3812. The user responds to the projected time and start date prompt by entering the requested information, which the process obtains,STEP3814, and stores in the design task,STEP3816. Based on the value of the start date, the projected elapsed time, and the current date, the process determines the status of the design task and assigns the determined status to the design task,STEP3818. The built design task of an instantiating placeholder is then added to the list of design tasks for this SE development plan,STEP3820.
One embodiment of the logic associated with determining when to build development tasks is described with reference toFIGS. 39a-39b. Initially, a determination is made as to whether any customization items are present in the SE design,INQUIRY3900. If any customization items are present, then a customization item is selected, and a further determination is made as to whether the selected customization item is a duplicate,INQUIRY3902. This uniqueness check is made, since a design may include multiple identical items for customization or integration, but during development, all of the identical items would translate into a single series of development activities. If the selected item is not a duplicate, then a development task is built for the selected customization item,STEP3904. Subsequently, or if the item is a duplicate, a determination is made as to whether there are more customization items to be processed,INQUIRY3906. If so, processing continues withSTEP3902. Otherwise, processing continues, as described herein.
When all the customization items in the SE design are processed, a determination is made as to whether there are integration items present in the SE design, INQUIRY3908 (FIG. 39b). If any integration items are present, an integration item is selected, and a further determination is made as to whether the selected item is a duplicate,INQUIRY3910. If the selected item is not a duplicate, then a development task is built for the selected integration item,STEP3912. Next, or if the item is a duplicate, a check is made to see if there are more items to be processed,INQUIRY3914. If so, processing continues withINQUIRY3910. Otherwise, processing is complete,STEP3916.
One embodiment of the logic associated with an overview of building development tasks for a design item (customization or integration) is described with reference toFIGS. 40a-40d. In one embodiment, three development plan tasks are built for each design item: a unit design task,STEP4000; a unit implementation task,STEP4002; and a test task,STEP4004. This is described in further detail below.
Subsequent to building the tasks, a dependency on the unit design task is added to the unit implementation task,STEP4006, and a dependency on the unit implementation task is added to the test task,STEP4008.
Thereafter, a check is made of the design item,INQUIRY4010. If the design item is a customization item, then an attempt is made to retrieve the item from the SE database,STEP4012. If the SE to customize is not found in the SE database,INQUIRY4014, processing terminates with an error,STEP4016. Otherwise, if the SE to customize has a “development in progress” indicator set,INQUIRY4018, a check is performed for the presence of a development plan in the SE to customize, INQUIRY4020 (FIG. 40b).
Should the development plan not be present in the SE to customize, processing completes with a warning message,STEP4022. Otherwise, a dependency on completion of design of the SE to customize is added to the unit design task,STEP4024, and a dependency on completion of development and test of the SE to customize is added to the unit implementation task,STEP4026. Thereafter, or if the “development in progress” indicator is not set,INQUIRY4018, processing completes,STEP4028.
Returning toINQUIRY4010, if the design item is not a customization item, then it is an integration item. Thus, a check is made to ascertain whether both entities to integrate are SEs (assume one SE is SE1 and the other is SE2),INQUIRY4030. If either of the entities is not a SE, but instead a placeholder, processing completes and the plan is updated when the placeholders are instantiated,STEP4028. Otherwise, the entities are both SEs (SE1 and SE2), and an attempt is made to retrieve SE1 and SE2 from the SE database,STEP4032.
If either SE1 or SE2 is not found in the SE database, INQUIRY4034 (FIG. 40c), processing terminates with an error,STEP4036. Otherwise, if SE1 has a “development in progress” indicator set,INQUIRY4038, a check is performed for the presence of a development plan in the SE1,INQUIRY4040. If the development plan is not present in SE1, processing completes with a warning message,STEP4042. Otherwise, a dependency on completion of design of SE1 is added to the unit design task,STEP4044, and a dependency on completion of development and test of SE1 is added to the unit implementation task,STEP4046.
Thereafter, or if the “development in progress indicator” is not set,INQUIRY4038, a determination is made as to whether SE2 has a “development in progress” indicator set,INQUIRY4048. If not, processing is complete,STEP4028.
However, if the indicator is set for SE2, a check is performed for the presence of a development plan in SE2, INQUIRY4050 (FIG. 40d). If the development plan is not present in SE2, processing completes with a warning message,STEP4052. Otherwise, a dependency on completion of design of SE2 is added to the unit design task,STEP4054, and a dependency on completion of development and test of SE2 is added to the unit implementation task,STEP4056. This concludes processing,STEP4028.
One embodiment of the logic associated with building one of the development plan tasks ofFIGS. 40a-40dis described with reference toFIGS. 41a-41b. Initially, a development plan task is created,STEP4100. Then, an identifier is assigned to the plan task,STEP4102, and a reference to the design item is stored in the development plan task,STEP4104.
Subsequently, the user is prompted for the owner of this development plan task (with an indication of whether the owner is sought for unit design, unit implementation, or test),STEP4106. The user responds to the development plan task owner specification prompt by entering the owner responsible for completion of this particular task, and the process obtains the entered owner,STEP4108, and stores the value in the development plan task,STEP4110.
The user is then prompted for any known dependencies for this development plan task,STEP4112. The user responds to the known dependencies prompt by entering any known dependencies for this task, which the process obtains,STEP4114, and stores in the development plan task,STEP4116.
The user is then prompted for the projected time and start date for this development plan task,STEP4118. The user responds to the projected time and start date prompt by entering the requested information, which the process obtains,STEP4120, and stores in the design task, STEP4122 (FIG. 41b).
Finally, the user is prompted for skills and resources required to perform this development plan task,STEP4124. The user responds to the required skills and resources prompt by entering the requested information, which the process obtains,STEP4126, and stores in the development plan task,STEP4128. Based on the value of the start date, the projected elapsed time, and the current date, the process determines the status of this development plan task, and assigns the determined status to the development plan task,STEP4130. The built development plan task is then added to the development plan for this SE,STEP4132.
In addition to the above, integration and customization test plan tasks are built. In one embodiment, in order to test customization or integration, the customization or integration activity to test is to be actually performed. Therefore, the customization and integration test plan includes testing tasks, as well as unit design and implementation tasks.
One embodiment of the logic associated with building integration and customization test plan tasks is described with reference toFIGS. 42a-42b. Initially, a determination is made as to whether a customization specification is present in the SE,INQUIRY4200. If the SE includes a customization specification, a customization test task for this SE is created, STEP4202 (i.e., build development tasks for item with SE to customize). Thereafter, or if the customization specification is not present in the SE, a further determination is made as to whether the SE includes integration properties,INQUIRY4204.
If the SE includes integration properties, then a further determination is made as to whether the integration properties include any “compatible” entries,INQUIRY4206. Should the integration properties include one or more compatible entries, a compatible entry is selected, and a determination is made as to whether the integration property of the selected entry corresponds to an integration item in the SE design,INQUIRY4208. If not (i.e., the integration test tasks would not be a duplicate of a set of development tasks already built for an integration design item), then the process builds integration test tasks for the entry, STEP4210 (i.e., build development tasks for item with SE1=SE, and SE2=integration property reference).
Next, or if the integration property corresponds to an integration design item, a check is made as to whether more entries exist,INQUIRY4212. If so, processing continues withINQUIRY4208. Otherwise, or if there are no compatible integration properties present in the SE, a determination is made as to whether there are any standard integration properties present in the SE, INQUIRY4214 (FIG. 42b). If the SE integration properties include one or more “standard” entries, and if the integration property does not correspond to an integration item in the SE design,INQUIRY4216, the process builds integration test tasks for each entry in the “standard” list of integration properties,STEP4218, (i.e., build development tasks for item with SE1=SE2, and SE2=integration property reference), until the list of “standard” entries is exhausted,INQUIRY4220. Upon completion of creation of integration and customization plan tasks, the built collection of plan tasks is added to the integration and customization section of the SE test plan,STEP4222.
Returning toINQUIRIES4204 and4214, if there are no integration properties present in the SE or no standard integration properties present, processing continues withSTEP4222.
The status of a plan task can be determined using a number of parameters. One embodiment of the logic associated with determining the status of a plan task based on the projected start date for the task, the projected task duration, and the current date is described with reference toFIG. 43. Initially, a determination is made as to whether the start date is greater than the current date,INQUIRY4300. If the start date is later than the current date, the plan task status is “pending”,STEP4302. However, if the start date is less than or equal to the current date, then a further check is made as to whether the date obtained by applying the projected task duration is greater than the current date,INQUIRY4304. If so, the plan task status is “in progress”,STEP4306. Otherwise, the plan task status is “completed”,STEP4308.
Building Consolidated Development Plan for Multiple SEs
In the cases when multiple SEs are being developed contemporaneously, it is possible that multiple dependent or independent development efforts would include identical customization or integration activities (intersects). Should an intersect be detected, a decision is made as to which one of the two or more development efforts progressing contemporaneously should retain the task, and which should exclude the task. This decision is based, for instance, on the projected completion date for the task. For example, the development effort with the earliest completion date retains the task with a reference to other development efforts dependent on this task's completion. Further, other development efforts include a dependency on completion of the task by the development effort retaining the task.
One embodiment of the logic associated with consolidating multiple SE development plans is described with reference toFIG. 44. Initially, the user enters a request to consolidate SE development plans from a SE development plan panel, and the process obtains the request for plan consolidation,STEP4400. Then, the process retrieves the SEs that have a “development in progress” indicator set from the SE database,STEP4402. If the number of SEs retrieved is 0 or 1,INQUIRY4404, then there is nothing to consolidate and processing completes,STEP4406. Otherwise, a nested loop is performed, with SE[i] being taken sequentially from the list of all retrieved SEs (1 . . . N), STEPS4408,4416, and SE[j] being taken sequentially from the same list, but subset (i+1, N), STEPS4410,4414. That is, the iteration for j's repeats for each next i (i.e., all possible SE pairs are processed). Each pair of SEs (SE[i] and SE[j]) undergo the process of SE development plan consolidation,STEP4412.
One embodiment of the logic associated with consolidating development plans for two SEs (SE1 and SE2) is described with reference toFIGS. 45a-45c. Initially, the process obtains the list of development plan tasks for customization, and if available, the customization tasks from the SE1 integration and customization test plan,STEP4500. If customization tasks for the SE1 development plan are present (i.e., the list contains one or more tasks),INQUIRY4502, the process obtains the list of development plan tasks for customization, and if available, the customization tasks from the SE2 integration and customization test plan,STEP4504.
If customization tasks for the SE2 development plan are present,INQUIRY4506, a nested loop is performed, with ct1[i] being taken sequentially from the list of retrieved SE1 plan customization tasks (1 . . . N),STEP4508, and ct2[j] being taken sequentially from the list of retrieved SE2 customization tasks (1 . . . N),STEP4510. The iteration for the j's repeats for each next i (i.e., all SE1 customization plan tasks are matched against all SE2 customization plan tasks)—and for each pair of ct1[i] and ct2[j], if these customization tasks are duplicate, consolidation of the pair of these customization tasks is performed.
For example, a customization task ct1[i] is obtained from the list of SE1 customization tasks,STEP4508. Additionally, a customization task ct2[j] is obtained from the list of SE2 customization tasks,STEP4510. Thereafter, a determination is made as to whether ct1[i] and ct2[j] are duplicates,INQUIRY4512. If they are duplicates, then ct1[i] and ct2[j] are consolidated (e.g., discard one and place all linkages to it in the one that remains),STEP4514. Thereafter, or if they are not duplicates, a determination is made as to whether there are more SE2 customization tasks,INQUIRY4516. If so, then processing continues withSTEP4510. Otherwise, a determination is made as to whether there are more SE1 customization tasks, INQUIRY4518 (FIG. 45b). If so, processing continues withSTEP4508. Otherwise, or if there are no SE1 customization tasks or SE2 customization tasks, processing continues with the integration tasks of the SE1 and SE2 plans.
As one example, a similar process is performed for the integration tasks of SE1 and SE2 plans. The process obtains the list of development plan tasks for integration, and if available, the integration tasks from the SE1 integration and customization test plan,STEP4520. If integration tasks for the SE1 development plan are present (i.e., the list contains one or more tasks),INQUIRY4522, then the process obtains the list of development plan tasks for integration, and if available, the integration tasks from the SE2 integration and customization test plan,STEP4524.
If integration tasks for the SE2 development plan are present,INQUIRY4526, a nested loop is performed, with it1[i] being taken sequentially from the list of all retrieved SE1 plan integration tasks (1 . . . N), STEP4528 (FIG. 45c), and it2[j] being taken sequentially from the list of all retrieved SE2 customization tasks (1 . . . N). The iteration for the j's,STEP4536, repeating for each next i,STEP4538, (i.e., all SE1 integration plan tasks are matched against all SE2 integration plan tasks)—and for each pair of it1[i] and it2[j], if these integration tasks are duplicate,STEP4532, consolidation of the pair of these integration tasks is performed,STEP4534.
Thereafter, or if there are no SE1 integration or SE2 integration tasks present, the process completes by updating SE1 and SE2 in the SE database,STEP4540.
Handling a Deletion
If a plan task is to be deleted, e.g., as a result of a design change in a SE, dependencies on this task are eliminated first. One embodiment of the logic associated with detecting and eliminating these dependencies is described with reference toFIGS. 46a-46c.
In this example, assume plan task (d) is to be deleted from the development plan of SE. The process starts by retrieving the list of SE plan tasks,STEP4600, and then excluding from the list plan task d that is to be deleted,STEP4602. Then, a plan task is selected from the list of plan tasks of SE except for d,STEP4604.
If the current plan task has a dependency on d,INQUIRY4606, processing terminates with an error,STEP4608, as prior to deleting plan task d, any dependencies on it should have been eliminated (i.e., the user has not altered SE design appropriately to make deletion of plan task d possible). Otherwise, a determination is made as to whether there are more plan tasks in the list,INQUIRY4610. If so, the next plan task from the list of plan tasks of SE except for d is considered,STEP4604. This continues until the plan tasks are processed.
Thereafter, plan task d is deleted from the SE development plan,STEP4612, and the SE is updated in the SE database,STEP4614.
At this point, any internal (relative to SE) dependencies on plan task d have been eliminated and plan task d has been removed from the SE development plan. However, it is possible that other SEs under development still retain dependencies on plan task d, either direct or as a result of SE development plan consolidation. Thus, the remainder of the process handles any remaining external dependencies.
Initially, the process creates a list of the SEs with a “development in progress” indicator set, by retrieving these SEs from the SE database,STEP4616. The process then excludes from the built list of SEs the SE from which the plan task d was deleted,STEP4618.
Thereafter, the process iterates through the SEs in the list. The process obtains SE[i] from the list of SEs under development, STEP4620 (FIG. 46b), and retrieves the list of SE[i] development plan tasks,STEP4622. The process then iterates (nested within iteration through SEs under development) through SE development plan tasks for SE[i].
For example, development plan task t[k] is retrieved from the list of development plan tasks for SE[i],STEP4624. If SE development plan task t[k] is dependent on the previously deleted SE development plan task d,INQUIRY4626, a message is sent to the SE[i] owner and the SE[i] task t[k] owner that a change has been performed to the SE that previously contained development plan task d,STEP4628. (It is expected, in one embodiment, that upon receipt of this message, the SE[i] owner and the SE[i] development plan task t[k] owner will collaborate in changing the design of SE[i] appropriately.) Further, the dependency on development plan task d is removed from development plan task t[k],STEP4630.
Returning toINQUIRY4626, if SE[i] development plan task t[k] is not dependent on deleted SE development plan task d, a check is performed to determine if SE[i] development plan task t[k] is a consolidation of deleted SE development plan task d,INQUIRY4632. If not, processing continues withINQUIRY4644, described below. However, if it is a consolidation of deleted task d, then the process rebuilds the SE[i] development plan task t[k] to be a full non-consolidated (i.e., separated) task with the functional content of the deleted SE development plan task d,STEP4634. The process then sends a message to the SE[i] and development plan task t[k] owners informing them about the SE[i] development plan task t[k] deconsolidation from SE development plan task d,STEP4636. SE[i] development plan task t[k] is then replaced in the SE[i] development plan with the newly built development task, which is functionally equivalent to the deleted SE development plan task d, STEP4638 (FIG. 46c), and SE[i] is updated in the SE database,STEP4640.
In one embodiment, the replacement of t[k] should not necessarily remain a full-fledged development plan task, and another task may be used to consolidate it. The process therefore rebuilds the SE[i] development plan,STEP4642, which action, if SE[i] development plan task t[k] was not the last consolidation of the previously deleted SE development plan task d, would be a NOOP, but if it were, would result in selection of the right primary development task for consolidation from among the set of SE development plan tasks identical to the previously deleted SE development plan task d. Therefore, subsequent to this step, processing breaks out of the nested SE and development plan task processing loops and starts the external dependency remediation process fromSTEP4620.
Otherwise, processing continues in the nested loops until the development plan tasks,STEP4644, for all SEs under development are processed,STEP4646.
Import and Export of SE Development Plan Data
The SE development plan builder permits import and export of SE development plan data from and to the format compatible with the industry standard project planning tools, e.g., Microsoft Project.
Building Development Budget
Given a development labor cost table and the component data feed, a development budget can be built by consolidating labor and resources costs. In one embodiment, an assumption is made that the design labor costs are the same, while development labor costs are diverse, being based on specified skills.
The process of determining a development budget is known in the art and implemented in software products, e.g., Microsoft Project.
Deployment Plan
A SE deployment plan is a series of tasks involving provisioning, installation, if appropriate, customization, integration, and subsequent checkout of successful deployment for each step (seeFIG. 2g). Depending on the nature of a SE for which deployment is being planned, these steps may have a different nature—e.g., provisioning may include ordering and receiving a machine or part, subscribing to an on-line service, allocating space in a data center, staffing and/or training the appropriate skills, etc. Similarly, checkout, in this context, may include ensuring that the received machine or part is indeed what was requested, on-line service subscription is in place and functioning, allocated data center space is indeed available, required personnel is on-board and possess the required skills, etc. Installation may include actual physical installation of software and/or hardware, or activation ofparticular level 1 help desk scripts. Customization and integration tasks are usually pertinent to hardware- and/or software-specific SEs or components.
Building a SE Deployment Plan
One embodiment of the logic associated with building a SE deployment plan is described with reference toFIGS. 47a-47c. A user initiates the process of building the plan by entering the specification of the SE for which a deployment plan is to be built on a SE deployment plan panel. The process obtains the SE specification from the user,STEP4700, and attempts to retrieve the specified SE from the SE database,STEP4702. If the specified SE is not found in the SE database,INQUIRY4704, processing terminates with an error,STEP4706. Otherwise, a determination is made as to whether the SE has a deployment plan present,INQUIRY4708. If there is no deployment plan present, then the process creates the SE deployment plan data structure (seeFIG. 2g), STEP4710 (FIG. 47a), and updates the SE in the SE database,STEP4712.
Thereafter, or if there was a deployment plan present,INQUIRY4708, the process attempts to retrieve the SE composition,STEP4714. If a SE composition is not present,INQUIRY4716, processing terminates with an error,STEP4718. Otherwise, the process obtains a SE composition item, STEP4720 (FIG. 47b), and builds provisioning and installation SE deployment plan tasks for this SE composition item, as described below,STEP4722. Next, a determination is made as to whether there are more SE composition items,INQUIRY4724. If more SE composition items are present in the SE composition, processing repeats,STEP4720. Otherwise, the process has built the provisioning and installation tasks for the SE deployment plan, and the SE is updated in the SE database,STEP4726.
The process then attempts to retrieve the SE design,STEP4728. If the SE design is not present,INQUIRY4730, processing terminates with an error,STEP4732. Otherwise, a determination is made as to whether customization design items are present in the SE design,INQUIRY4734. If so, the process obtains a SE design customization item, STEP4736 (FIG. 47c), and builds customization SE deployment plan tasks for this SE design customization item,STEP4738. If more customization items are present in SE design,INQUIRY4740, processing repeats,STEP4736.
When all customization design items are processed, or if no customization items are present in the SE design, a check is made as to whether integration design items are present in the SE design,STEP4742. If so, the process obtains a SE design integration item,STEP4744, and builds integration SE deployment plan tasks for this SE design integration item,STEP4746. If more integration items are present in the SE design,INQUIRY4748, processing repeats,STEP4744. Otherwise, or if no integration items are present, the process completes by updating the SE in the SE database,STEP4750.
One embodiment of the logic associated with an overview of building provisioning and installation deployment tasks for a SE composition item is described with reference toFIG. 48. Initially, a determination is made as to whether the SE composition item is a SE,INQUIRY4800. If the SE composition item is a SE, a single reference deployment task is created indicating that deployment of the SE referenced by the composition item is to be performed,STEP4802.
Otherwise, the SE composition item is a component, and thus, the process builds a component provisioning SE deployment plan task, as described below,STEP4804. Thereafter, a checkout task for the provisioning task is built, which includes a checkout task dependency on the completion of the previously built component provisioning task,STEP4806. The process then builds a component installation task, as described below,STEP4808, followed by a checkout task for the component installation task, which includes a checkout task dependency on the completion of the previously built component installation task,STEP4810. A dependency on completion of the checkout for component provisioning task is then added to the component installation task,STEP4812.
Subsequent to performingSTEP4812, orSTEP4802, if the SE composition item is a SE, any SE deployment plan tasks built by the process are added to the SE,STEP4814.
One embodiment of the logic associated with building a component provisioning SE deployment plan task is described with reference toFIG. 49. Initially, the process creates a SE deployment plan task for component provisioning, and enters the specified component and component quantity obtained from the SE composition,STEP4900. Thereafter, the specified component is retrieved from the component data feed,STEP4902. Additionally, the component provisioning lead-time (time from component order to order fulfillment and delivery of the component) is obtained from component data,STEP4904, and entered into the built SE deployment plan task,STEP4906.
Since components may be provisioned from multiple suppliers using different order processes, a reference to the component provisioning process (supplier identification and method of provisioning) is stored in the built SE deployment plan task,STEP4908. The user is then prompted for a provisioning labor estimate (e.g., labor required to perform the activities for the specified component provisioning process),STEP4910. When presented with the provisioning labor estimate prompt, the user responds by entering the estimated amount of labor required to provision the component, and the process obtains the entered information,STEP4912. The process then stores the estimate in the built SE deployment plan task,STEP4914. One skilled in the art will recognize that the user prompt used in this embodiment may be replaced by a table lookup of standard labor estimates associated with multiple standard provisioning processes.
One embodiment of the logic associated with building a component installation SE deployment plan task is described with reference toFIGS. 50a-50b. The process starts by creating a SE deployment plan task for component installation and entering the specified component and component quantity obtained from the SE composition,STEP5000. Thereafter, the specified component information is retrieved from the component data feed,STEP5002. If installation instructions are available in the retrieved component information,INQUIRY5004, then a reference to component installation instructions is stored in the component installation SE deployment plan task, STEP5006.
Further, a determination is made as to whether the installation labor projection was previously retrieved from the component data feed,INQUIRY5008. If not, the user is prompted for the installation labor projection, STEP5010 (FIG. 50b). The user responds to the installation labor estimate prompt by entering an estimate for component installation labor, which the process obtains,STEP5012. The component installation labor estimate entered by the user or available from the component data feed is then stored in the component installation SE deployment plan task,STEP5014.
Subsequently, a determination is made as to the availability of the elapsed time estimates,INQUIRY5016. If a component installation elapsed time projection is not available from the component data feed, then the user is prompted for the component installation elapsed time projection,STEP5018. The user responds to the component installation elapsed time projection prompt by entering an estimated elapsed time for component installation, which the process obtains,STEP5020. The component installation elapsed time projection entered by the user or available from the component data feed is then stored in the component installation SE deployment plan task,STEP5022.
Returning toINQUIRY5004, if installation instructions are unavailable, then the user is prompted for a component installation instructions reference,STEP5024. The user responds to this prompt by entering a reference to component installation instructions; or by entering “unavailable” indicating that instructions have not yet been produced and will become available later; or by entering “trivial” indicating that the instructions will not be produced since the installation process is trivial—e.g., connect power cable to the single available power connection on a device. The process receives the component installation instructions response,STEP5026, and stores this information in the component installation SE deployment plan task,STEP5028.
If installation instructions are specified as “trivial”,INQUIRY5030, the process stores a standard “trivial” labor amount in the installation labor estimate of the component installation SE deployment plan task,STEP5032. Processing then continues withINQUIRY5016. Otherwise, processing continues withSTEP5010.
One embodiment of the logic associated with creating integration or customization SE deployment plan tasks is described with reference toFIG. 51. Initially, a check is made of the design item,INQUIRY5100. If the SE design item for which the tasks are to be built is a customization design item, a customization SE deployment plan task is built, as described below,STEP5102. Otherwise, an integration SE deployment plan task is built, as described below,STEP5104. The corresponding checkout SE deployment plan task is then built for the previously built customization or integration SE deployment plan task, as described below,STEP5106, and the previously built deployment plan tasks are added to the SE deployment plan,STEP5108.
One embodiment of the logic associated with creating a customization SE deployment plan task is described with reference toFIG. 52. Initially, the process creates the customization SE deployment plan task,STEP5200. The process then obtains a reference to the SE design customization item specification section,STEP5202, and stores it in the created SE deployment plan task,STEP5204.
Next, the process obtains estimated labor to perform customization of the target SE (SE[c]) from the SE design customization item,STEP5206, and stores the obtained value in the customization SE deployment plan task,STEP5208. Similarly, the process obtains estimated elapsed time for SE[c] customization from the SE design customization item, STEP5210, and stores the obtained value in the customization SE deployment plan task,STEP5212.
The process then obtains a reference to SE[c] from the SE design customization item,STEP5214, and searches the SE deployment plan for the corresponding SE[c] deployment placeholder SE deployment plan task,STEP5216, in order to add a dependency on the completion of the SE[c] deployment SE deployment plan task to this SE deployment plan task,STEP5218.
One embodiment of the logic associated with creating an integration SE deployment plan task is described with reference toFIG. 53. Initially, the process creates the integration SE deployment plan task,STEP5300. Then, the process obtains a reference to the SE design integration item specification section,STEP5302, and stores it in the created SE deployment plan task,STEP5304.
Additionally, the process obtains estimated labor to perform integration of the target SEs (SE[i,1] and SE[i,2]) from the SE design integration item,STEP5306, and stores the obtained value in the integration SE deployment plan task,STEP5308. Similarly, the process obtains estimated elapsed time for SE[i,1] and SE[i,2] integration from the SE design integration item,STEP5310, and stores the obtained value in the integration SE deployment plan task,STEP5312.
The process then obtains a reference to SE[i,1] from the SE design integration item,STEP5314, and searches the SE deployment plan for the corresponding SE[i,1] deployment placeholder SE deployment plan task,STEP5316, in order to add a dependency on the SE[i,1] deployment SE deployment plan task to this SE deployment plan task,STEP5318. Similarly, the process then obtains a reference to SE[i,2] from the SE design integration item,STEP5320, and searches the SE deployment plan for the corresponding SE[i,2] deployment placeholder SE deployment plan task,STEP5322, in order to add a dependency on the SE[i,2] deployment SE deployment plan task to this SE deployment plan task,STEP5324.
One embodiment of the logic associated with creating a checkout SE development plan task is described with reference toFIG. 54. A checkout SE deployment plan task is created, STEP5400, and a dependency on the SE deployment task t for which the checkout task is being built is added to the checkout plan task,STEP5402.
Thereafter, a check is made of t, INQUIRY5406. If t is a SE deployment plan task for component provisioning, the checkout amounts to verification of the received component type and quantity against the original specification,STEP5408. Otherwise, if t is a SE deployment plan task for component installation,INQUIRY5410, then if the component installation instruction is available in t (by definition, it would include a checkout procedure for the installation),INQUIRY5412, a reference is stored in the checkout task to the checkout procedure associated with the component installation instruction,STEP5414. Otherwise, “checkout instruction unavailable” (it will be created later by development) is stored in the SE deployment checkout task,STEP5416.
Returning toINQUIRY5410, if t is not an installation, then if t is a SE deployment plan task for customization,INQUIRY5418, the SE development plan is searched for the associated customization development task to refer to its deliverable(s), which include a customization checkout procedure,STEP5420. The resulting checkout procedure reference is stored in the checkout task. Otherwise, if t is a SE deployment plan task for integration,INQUIRY5422, then the SE development plan is searched for the associated integration development task to refer to its deliverable(s), of which include an integration checkout procedure,STEP5424. The resulting checkout procedure reference is stored in the checkout task.
If t is none of the above, it is a placeholder created as a reference to imbed deployment of another SE into this plan, and it requires no checkout procedure (the other SE's deployment plan would include that). Therefore, the previously created checkout SE development plan is destroyed prior to completing the process,STEP5426.
Editing a SE Deployment Plan
In one embodiment, a SE deployment plan may be edited. For example, manual editing may be used in order to refine/complete the SE deployment plan. The manual edit function is a structured edit tool, which permits adjustments to the selected values of SE deployment plan entries.
Building a Consolidated SE Deployment Plan
Economies may be gained by consolidating identical (or nearly identical) deployment tasks for multiple SEs into a single optimized series of deployment activities. The process starts at the top SE and brings in the series of deployment tasks from any SEs included in the top SE into the SE deployment plan. This activity is performed recursively on all the SEs included in the top SE, prior to actually consolidating the top SE deployment plan. Once all the tasks for all SEs are put in a single list of deployment tasks, duplicate tasks are found and combined together, making sure dependencies on consolidated tasks are preserved. For example, if there is a series of deployment tasks for provisioning and installation of N components C in the top SE and a similar series of deployment tasks for provisioning and installation of M components C in an included SE, the series is combined, resulting in a single consolidated series of provisioning and installation of N+M components C, with any other tasks having a dependency on either original series changed to have a dependency on the new series.
In one embodiment, this consolidation is not performed. Although economies may be gained, consolidation of SE deployment plans may be disadvantageous, since deployment personnel is likely to become oblivious to the SE structure of a collection of SEs as a result of this, potentially resulting in loss of quality.
Deconsolidating SE Deployment Plans
A previously built consolidated SE deployment plan may be refreshed to reflect a change, which causes deconsolidation of the appropriate items.
Producing a Deployment Document
A deployment plan document may be generated on request from a user in a printable format.
Determining Projected Elapsed Time for SE Deployment
Projected elapsed time for SE deployment may be determined by following the chain of dependencies for a collection of SEs, starting from the top SE, and adding elapsed time of deployment tasks. Since multiple chains are possible, each chain is followed, and the maximum time is selected as the resulting projected elapsed time value for SE deployment.
Building a SE Deployment Budget
In one embodiment, a SE deployment budget is built. In building the budget, certain assumptions are made. For instance, an assumption is made that all deployment labor costs are the same. The process of determining a deployment budget is known in the art, and implemented in various software products, such as, for example, Microsoft Project, Microsoft Excel, or Lotus 1-2-3.
Templates
Templates are standard “skeletons” of service offerings or SEs of particular types. A template is similar to a SE in its structure, except for being only partially completed and devoid of quantities of included content. For example, a template could include “level 1 support”, but not make a projection of “14 hrs/week oflevel 1 support”.
A template can be used as a starting point and as a set of guidelines for designing a particular type of SE or offering. Templates make it possible to create enforceable design standards. In one example, there are two uses of templates:
    • A. Reference use—The template is used as a starting/reference point for a design. Deviations, additions, or deletions of components and relationships in the SE being designed are permitted; and
    • B. Standardization use—The template is used as a standard for a particular type of SE or service offering. A designer may add additional composition items (components or SEs) as a part of the design activity, but is not permitted to remove any items present in the template.
The Service Development Tool system administrator establishes the use of templates (reference or standardization).
Templates are created and developed using the mechanisms for creating and developing SEs, described above. Templates are stored in the SE database (e.g., in a separate table intended for templates). Further, templates may be manipulated (e.g., modified, deleted, etc.) using the techniques described above. A template data structure is that of a SE, with the “template” indicator set. A developer develops an offering or SE by filling in the appropriate quantities into a copy of a template, which becomes the SE, and in some cases, adding additional composition not included in the standard template (assuming augmentation is permitted).
Development Optimization
The Service Development Tool of the present invention includes search functions that permit a user developing a SE to search for similar design items. If a user, in the course of SE design, discovers that SE1 is included in the SE composition and desires certain customization, the user can perform a search through the other SEs (either in production or in development status) to see if any other SE (e.g., SEn) already includes identical or similar customization. If identical customization is found, a natural action would be to package SE1 with the specified customization into a new SE (SE1a) which requires no customization and include SE1a in both SE and SEn as a ready component. Similarly, if SE includes integration of SE1 and SE2, a search can be performed for identical or similar integration, and possibly, a new SE, including a particular type of integration of SE1 and SE2 may be packaged and reused.
Lifecycle Support
Lifecycle changes to a SE may be developer-initiated (based on external factors) or SDT-initiated, based on the updates of the components or SEs. It is the expectation that the components and/or SEs of an SE are going to change. For example, certain components are going to become unavailable and will be replaced by other components with similar characteristics; new components will become available; component costs will change due to changes in technology and/or labor rates; suppliers will change due to contract expirations, new terms and conditions are negotiated, etc. A change in a single component causes changes in the SEs that include that component in their composition, which in turn, causes changes in SEs that include the changed SEs in their composition, etc.
Creation of a new version of a SE does not necessarily cause immediate changes in SEs dependent on the one being changed. This is because the new version does not necessarily eliminate the previous version(s). However, in one example, the number of concurrently existing versions of a single SE is restricted, e.g., by establishing a phase-out date for versions other than the last N, and forcing any SEs dependent on the old versions of a SE to migrate to the newer or newest SE version.
Given two types of effects a lifecycle change may have on SEs maintained, the SDT provides two lifecycle functions, as examples:
    • A. Lifecycle Update—Update of impacted SEs as a result of SE or component change; and
    • B. Notification of a Potential Lifecycle Update—Notification to SE owners about new versions of SEs to which they may elect to migrate owned SEs at their convenience (and before the specified phase-out dates).
The following triggers of a lifecycle change are considered:
    • 1. SE change:
      • a. Lifecycle (non-functional maintenance) change in a SE;
      • b. SE version phase-out; and
      • c. Functional change in a SE.
    • 2. Component change:
      • a. Component cost change;
      • b. Component source or provisioning process change; and
      • c. Component replacement.
In one embodiment, a restriction is imposed on altered components and SEs of not introducing incompatibilities. That is, in one example, it is safe to assume that the new version of a SE or a replaced component satisfies existing technical dependencies.
One embodiment of a high-level process of initiating lifecycle change processing is described with reference toFIG. 55. When a lifecycle change is triggered (e.g., manually or by the tool itself (e.g., lifecycle support unit), as a result of detecting a change, a change request is considered,INQUIRY5500. If the change request is a component change, then lifecycle component change processing is performed, as described below, as described below,STEP5502. Otherwise, lifecycle SE change processing is performed, as described below,STEP5504. As one example, the processing is performed by the lifecycle support unit of the Service Development Tool.
One embodiment of the logic associated with a lifecycle component change is described with reference toFIG. 56. Initially, a list of the production SEs is retrieved from the SE database,STEP5600, and a SE is selected from the list,STEP5602. The SE composition is retrieved from the SE,STEP5604, and an attempt is made to find an impacted component in the SE composition,STEP5606. If an impacted component is represented in the SE composition,INQUIRY5608, then the process of SE update for component change is initiated for each impacted component and the component change request is propagated to that process, STEP5610 (seeFIG. 57). Thereafter, or if an impacted component is not found, a determination is made as to whether there are more SEs,INQUIRY5612. If so, processing continues withSTEP5602. Upon completion of traversal of the SE list, a summary report is generated,STEP5614.
One embodiment of the logic associated with a SE update for component change is described with reference toFIGS. 57a-57b. Initially, a new SE version is created,STEP5700, and then the impacted SE composition item is refreshed from the component data feed, STEP5702. Thereafter, a determination is made as to whether this is a component change request for component replacement, INQUIRY5704. If this is a component change request for component replacement by virtue of refreshing the SE composition item, SE design, or cost case, or revising the development and deployment plans, development and test for this change are to be performed. Thus, the SE business and development owners are notified with the notification that indicates that the SE is now in development due to component replacement,STEP5706. Additionally, the SE is updated in the SE database (the new version of SE now has the “development in progress” indicator set until the appropriate development and test activities complete),STEP5708.
Returning to INQUIRY5704, if the component itself has not changed (i.e., no direct technical impact to SE design is expected), a determination is made as to whether the change is initiated as a result of a component source or component provisioning process change,INQUIRY5710. If so, the SE deployment plan is revised to account for the changes,STEP5712. Thereafter, or if it is not a change resulting from a component source or provisioning process change, but a component cost change, the SE cost case is revised,STEP5714.
Should the cost case revision result in a SE cost increase,INQUIRY5716, then SE error checking is performed (which indicates an error, if the SE business case is no longer valid), as described below,STEP5718. If an error is detected,INQUIRY5720, the SE business owner is notified with a notification indicating that the SE update due to component cost increase results in an invalid business case,STEP5722, and the SE is updated in SE database,STEP5708. (Additionally, similar logic applies if component procurement time is changed.)
Returning toINQUIRY5716, if the SE cost case revision does not result in a SE cost increase, an informational notification is issued to the SE business owner, indicating that a benign lifecycle change took place (at which point the SE business owner may determine whether the SE cost has decreased as a result of this lifecycle change, and whether this cost decrease should be accompanied by a SE price decrease), STEP5724 (FIG. 57b). The SE “development in progress” indicator is turned off,STEP5726, the SE is updated in SE database,STEP5728, and a lifecycle SE change process is initiated to make sure that the change in this SE is reflected in any SEs that depend on this SE,STEP5730.
One embodiment of the logic associated with a lifecycle SE change is described with reference toFIG. 58. Initially, a list of production SEs is obtained from the SE database,STEP5800, and a SE is selected from the list,STEP5802. Thereafter, one or more SE dependencies (prerequisites) is obtained from the SE,STEP5804. Then, an attempt is made to find one or more impacted SEs in the list of SE prerequisites,STEP5806. If an impacted SE is found,INQUIRY5808, the process of SE update for SE change is initiated for each impacted SE and the SE change request is propagated to that process, STEP5810 (seeFIG. 59). Thereafter, or if an impacted SE is not found, a determination is made as to whether there are more SEs,INQUIRY5812. If so, processing continues withSTEP5802. Upon completion of traversal of the SE list, a summary report is generated,STEP5814.
One embodiment of the logic associated with the SE update for SE change is described with reference toFIG. 59. Initially, the process creates a new version of the SE,STEP5900. Then, a determination is made as to the type of change,INQUIRY5902. If the SE change request represents a functional change, then notification is sent to the SE development owner indicating a functional change in a prerequisite SE,STEP5904. Despite the fact that compatibility is maintained, additional functions may be introduced as a result of the functional change in the prerequisite SE of which the target SE might be able to take advantage. The technical owner of the SE is expected to review the change in the prerequisite SE and ascertain whether any changes to the target SE are required. The new version of the target SE is stored in the SE database,STEP5906.
Returning toINQUIRY5902, if the SE change request represents a non-functional change (i.e., lifecycle revision or a phase-out of the old version of the prerequisite SE), the process retrieves the SE composition,STEP5908, finds the SE composition item representing the changing SE,STEP5910, and performs a revision of the target SE composition item (which results in updates to SE design, cost case, development and deployment plans),STEP5912.
Further, the process performs a SE error check to ensure that the modified SE is still in a sound state,STEP5914. If an error is detected by the SE error check, INQUIRY5916, then the SE business owner is notified of an error in the lifecycle update due to a non-functional prerequisite SE change,STEP5918, and the updated SE is stored in the SE database,STEP5906. However, if no errors are detected by the SE error check, then the SE business and development owners are notified that the SE lifecycle update was successfully performed,STEP5920, the target SE “development in progress” indicator is turned off,STEP5922, the target SE is updated in the SE database,STEP5924, and the process of lifecycle SE change is invoked recursively to ensure that all chains of prerequisites are completely exhausted,STEP5926.
Error Checking
As described herein, error checking is performed during different phases of SE management. In accordance with an aspect of the present invention, both technical and business aspects of a service element are verified. Further details regarding error checking are described with reference toFIGS. 60-62.
Referring toFIG. 60, an overview of error checking is described. Initially, SE completeness is verified (e.g., verification of referential integrity is performed),STEP6000. Thereafter, verification of SE relationships is performed, as described above,STEP6002. Next, a determination is made as to whether the SE design is based on a design template,INQUIRY6004. If the SE was designed using a design template, then SE standardization verification is performed, as described below,STEP6006. Thereafter, or if a design template was not used, then SE business rules verification is performed, as described below,STEP6008.
One embodiment of the logic associated with performing SE standardization verification is described with reference toFIGS. 61a-61b. Initially, the SE design template used to design this SE is retrieved from the SE database,STEP6100. Then, the SE design template composition is extracted from the SE design template,STEP6102. Further, the SE composition is extracted from the SE,STEP6104.
Thereafter, an empty list of missing components is created,STEP6106. Further, a SE design template composition entry is selected from the SE design template composition,STEP6108, and an attempt is made to find this SE design template composition entry in the SE composition,STEP6110. If the SE design template composition entry is not found in the SE composition,INQUIRY6112, then it is added to the list of missing components,STEP6114. Thereafter, or if it is found, a determination is made as to whether there are more entries in the SE design template composition,INQUIRY6116. If there are more entries, then processing continues withSTEP6108. Otherwise, processing continues with a determination of whether the SE design template permits augmentation, INQUIRY6118 (FIG. 61b).
If the SE design template does not permit augmentation, then any SE composition entries that remain that were not found as a result of previous searches (i.e., they do not correspond to any SE design template composition entries) are copied to a list of illegal additions,STEP6120. Thereafter, or if the SE design template does permit augmentation, then a further determination is made as to whether the list of missing components is empty,INQUIRY6122. If the previously built list of missing components is not empty, an error message is displayed to indicate missing components discovered by the standardization verification,STEP6124.
Subsequently, or if the list of missing components is empty, then a further determination is made as to whether the list of illegal additions exists,INQUIRY6126. If the list of illegal additions does exist, then an error message is displayed to indicate illegal additions of components to an SE design based on a SE design template that does not permit augmentation,STEP6128. Thereafter, or if the list does not exist, then processing is complete.
One embodiment of the logic associated with the business rules verification is described with reference toFIG. 62. The business rules check is a process of applying a set of constraints on cost, profitability, timing, etc. pertinent to the business case of a service element. Input to the business rules is performed at initiation of SE development activities and includes, for instance: projected sales volumes, sales time period, required minimum profit margin, target maximum price, and/or target relative availability date.
Initially, the process determines the SE projected availability date from the SE development plan (e.g., the last development plan task completion date),STEP6200. If the determined SE projected availability date is after the specified target relative availability date,INQUIRY6202, an error is noted indicating that the target availability date is not attainable,STEP6204. Thereafter, or if the availability date precedes the specified target relative availability date, then the SE cost is obtained from the SE cost case,STEP6206.
If the determined SE cost does not permit the specified profit margin given the specified target maximum price,INQUIRY6208, an error is noted indicating that the specified target price is not attainable given the specified target margin,STEP6210.
Thereafter, or if the cost does permit the specified margin given the target maximum price point, the process continues with verification of the gross profit margin (GPM) attainment,STEP6212. In one example, the process of verification of the GPM is as follows:
  • GPM is calculated as: GPM=(TR−TC)/TR
  • While:
    TC=DEV+(x*(MAINT+DPLMT))
    DEV=AHS+DEVPLN
    MAINT=(DEV*0.2)/12
  • where:
    • x: projected contract or customer retention period (months);
    • GPM: Gross Profit Margin;
    • TR: Total Revenue over x months;
    • TC: Total Cost over x months;
    • DEV: Development cost—one time cost;
    • MAINT: Monthly maintenance cost; assumed to equal 20% of development cost per year;
    • DEVPLN: Development investment (derived from SE development plan);
    • DPLMT: Monthly deployment cost (derived from SE deployment plan);
    • AHS: Application hosting feasibility study (if applicable).
If the GPM is not attainable,INQUIRY6214, an error is noted indicating that the target GPM is not attainable,STEP6216. Thereafter, or if the GPM is attainable, the process is complete.
Errors can be remedied by either changing the SE design or development plan to optimize the content, or by changing the specification of business rules, as examples.
SE Localization
Some SEs may be designed as local to a particular geography, while others may be designed for multiple geographies. Certain components used in the creation of SEs and deemed optimal in the geography where the SE was originally developed may not be available in other geographies. Certain components may be available in all geographies, but vary in costs, availability, and provisioning mechanisms between geographies. Adaptation of a SE designed for one geography to another geography is called localization.
Two methods of SE localization are described below, and both are based on the notion of finding the most appropriate match for each of the components included in a SE composition that is locally available.
SE Localization Using Translation
The technique of SE localization using translation assumes that for each component used in composing a SE in one geography, at the time of component use (or at the time of making that component available for use in this geography), its equivalents in all other geographies are known. A component translation table can therefore be built, such that the process of SE localization would amount to a sequential pass through the SE composition and a replacement of one set of components by another using the built translation table.
SE Localization by Finding Closest Component Matches
The technique of SE localization by finding closest component matches assumes that no preliminary determination of component replacement took place. A user creates a geography-specific version of a SE and attempts to complete its development, at which time a SE error check is performed. The error check consults the local component data feed and identifies any components not locally available. The user then performs a sequence of SE edit activities and replaces each unavailable component by the closest match available from the local component data feed.
Simultaneous Use of Both Methods
In one embodiment, both techniques can be used simultaneously, as some components may naturally lend themselves to one or another approach. For example, devices (e.g., computer processor models) naturally lend themselves to the translation technique, since at the time of computer processor model availability, it is known whether this model is globally available or what are the equivalent models available in each geography. On the other hand, parallel printer cables are readily available from multiple suppliers in any geography, and therefore, it may be simpler to find the closest match for the parallel printer cable component at the time a SE including a printer cable is being localized.
The decision to apply one or the other technique may also be based on the expected frequency of the need to localize a particular component. For example, an offering includes one or the other processor model, but very few include printers (which are usually more conveniently located on customer premises).
Functional Best Fit and Financial Adjustment
Because component costs may be different in different geographies, there is no guarantee that the localization, once performed, would result in an offering with a valid business case for the target geography. Should it be detected that the localized SE failed the SE error check due to a business case problem, the localization process is performed in two passes, as one example:
Pass 1—Functional Best Fit: In this phase, the choice of a component replacement is based on the closest relevant functional characteristic(s)—e.g., a 900 MHz CPU available in the source geography could be replaced with a 950 MHz CPU available in the target geography, rather than a 750 MHz CPU whose cost in the target geography may be similar to the cost of 900 MHz CPU in the source geography.
Pass 2 (performed repeatedly until SE error check is successfully passed)—Financial Adjustment: This phase replaces more expensive components chosen as a result of functional best fit component replacement selection by components whose functional characteristics may be slightly off, but whose cost is closer to the one of the original source geography component—e.g., the previously chosen 950 MHz CPU may now be replaced first with a 850 MHz CPU, and then, if this is insufficient, with a 750 MHz CPU.
Abstract SEs
In certain cases, it may be worthwhile to introduce the notion of abstract SEs. Abstract SEs are those that are not necessarily built of real components available in any geographies, but rather of generic entities, functionally equivalent to a component, but not necessarily provided by any source (called abstract components). For example, the notion of an hour of labor may apply to all geographies, but the actual costs and methods of provisioning may differ between different countries. Similarly, floor space, bandwidth, DASD space, processor power, processor memory, etc. may be represented abstractly and abstract SEs embodying these notions may be built.
Abstract SEs, while not ideally suited for any geography, could be instantiated into SEs suited to the needs of any geography/locale by applying the SE localization techniques.
Packaging and Distributing SEs
In a further aspect of the present invention, service elements may be packaged and distributed, in order to be implemented and/or delivered by another party. For example, either SE design, SE implementation or both, can be packaged on media (e.g., CD-ROM or floppy disk) or the Internet (e.g., a web site providing access to download the package or FTP site or e-mail distribution) and distributed.
One embodiment of the logic associated with packaging and distributing SE design and/or implementation is described with reference toFIG. 63. In one example, initially, a service element is designed,STEP6300, and then, implemented,STEP6302. The implemented SE is packaged for distribution,STEP6304. This includes, for instance, copying information associated with the SE (e.g., the entire data structure of the SE) from the SE database to media or the Internet. The packaged SE implementation is then distributed to a customer,STEP6306, such as, for instance, an IT (information technology)service provider6308 or anIT customer6310. It is then the customer that delivers the service,STEP6312.
In a further embodiment, the SE design is not implemented at this time, but instead, packaged for distribution,STEP6314. The packaging is performed similarly to that described above, in which design aspects of the data structure are copied. The packaged SE design is then distributed to a customer,STEP6316, such as anIT service provider6318 or anIT customer6320. The customer receives the packaged SE design, implements the SE,STEP6322, and delivers the service in the appropriate environment.
In a further example, the SE distribution is accomplished via an intermediary (e.g., a reseller or distributor), who then distributes the SE designs and/or implementation to the customer.
In a further embodiment, implementation (and not design) is packaged and distributed.
The above processing enables service elements to be purchased for delivery, instead of delivering the result of the service elements, i.e., the service.
Service Offerings
As described above, a service element that provides a complete function is also referred to as a service offering. There are various types of service offerings, including hosted service offerings, and application hosted service offerings.
A hosted service offering is a service offering based on a company's or customer's infrastructure, operated under the company's control. In one example, hosted service offerings are represented as a continuum of tier-based services offerings, ranging from infrastructure to a comprehensive set of application hosting services, and supporting a variety of billing models. For example, a hosted service offering includes a hosting infrastructure, such as physical hosting space (data center), security, Internet connectivity, disaster recovery functions, device provisioning and maintenance, etc. Upon the hosting infrastructure, custom hosting services may be built.
Hosting management includes local or remote management of devices, networks, and software. Upon the hosting management layer, managed services may be built.
An integration and data transformation layer includes electronic data interchange (EDI) functionality, functions that transform data among various formats, and integration protocols. Upon the integration and data transformation layer, EDI and data transformation services may be built.
The hosted applications layer draws upon functionality of all preceding layers and provides a set of application hosting services.
An application hosted service offering is, for instance, a hosted offering including at least one application. Application hosted offerings can be presented as a topological three-tier model classification, including a client tier, middle tier, and a back tier. These are conceptual (logical) tiers, which can be physically combined, depending on a variety of factors. Different combinations of these tiers yield a topological nomenclature of hosted application offerings.
As examples, the client can be static or factual (i.e., a program, packaged as a part of the application, permanently resident on the client computer(s)), dynamic (i.e., a program, packaged as a part of the application, not permanently resident on the client's computer—e.g., loaded from the middle tier at execution time; e.g., Java applet), or null (i.e., application is accessed via a browser without applets (“dumb” browser), terminal, or terminal emulator).
A summary of application hosted offerings nomenclature is presented in the table below:
OfferingClassificationDescription
ModelDiscreteCustomers use dedicated
configuration
Shared/SubscriptionCustomers use dedicated or shared
configuration, application support
is included (e.g., ASP)
UsageCustomers use the function(s)
provided by application(s) and are
not aware of the hosting platform
topology (e.g., utility or e-
sourcing)
ClientStaticFactual client, client software
installed on client computers
DynamicDynamically accessed client
client/server, client software
not installed on client computers
web browser with applet
NullNull client
terminal
web browser (no applets)
screen scraper or windows
terminal (e.g., Citrix) used for
static or dynamic client
SharingDedicatedHosting configuration is used by a
single customer
SharedHosting configuration is used by
one or more customers
concurrently
Topology(1) Remote managementHosting configuration on customer
premises, company remotely
manages the application
(2) Data managementCompany hosts back tier (usually,
data management)
(3) Partial hostingCompany hosts application, but
client code is installed on
customer computers
(4) Complete hostingCompany hosts application
completely, including client
It has been proven empirically, based on statistical information on problems associated with hosted applications, that most applications are not designed for and have problems when placed in a hosted environment. Development of hosted service offerings has been a time-consuming and costly procedure with a number of human, technical, and financial resources involved in the development process. The work spans different areas, including business, technical, and others, split in phases with multiple checkpoints, and usually takes multiple months even for a trivial function. Multiple solution elements are produced during different phases of the process.
The problems associated with hosted applications were being discovered late in the development cycle, and as a result, entailed significant project delays and development cost increases. To alleviate this, Application Hosting Competency (AHC) was created, in accordance with an aspect of the present invention.
AHC has a function of assessing and enabling software packages, including applications, middleware, etc., for hosting in a specific hosting environment. The AHC process includes a set of manual tasks, tailored to specific delivery environments and offering models. The outputs of AHC are quantified cost, risk, and enablement features for applications.
One embodiment of an overview of a development process that includes AHC is described with reference toFIG. 64. The input to the development process is a prioritized list ofcandidate applications6400. This list is processed by the Application Hosting Competency (AHC)6402 to ascertain feasibility of hosting each application and costs and risks associated therewith. In one example, this processing includes an information or knowledge gathering step that includes various phases, as well as the design and implementation of desired enablement elements. This processing includes, for instance, the following:
    • Determine preliminary candidates (e.g., possible vendors);
    • Preliminary independent software vendor (ISV) capabilities assessment (e.g., how long has application been offered, customer base);
    • Preliminary ISV application assessment (e.g., how does the application behave in the delivery environment—security, performance, etc.);
    • DCP (decision checkpoint, e.g., proceed or not);
    • Initial negotiations with ISV (e.g, informing ISV of evaluation and seeking commitment);
    • ISV capabilities assessment (probe further into capabilities, and development and support maturity);
    • Initial ISV application assessment (further assessment with ISV assistance);
    • DCP;
    • Detailed ISV application assessment (optional);
    • DCP;
    • Negotiate access to ISV application software for evaluation;
    • Hands-on ISV application assessment, document costs and risks;
    • Determine enablement activities;
    • DCP;
    • Negotiate terms & conditions with the ISV;
    • Work with ISV to pursue required application changes;
    • Design & implement required enablement elements using the techniques described herein;
    • Hands-on assessment of modified application with enablement elements;
    • DCP; and
    • Provide input to design and development.
The gathered knowledge is stored in aSE database6404 in the form of a partial design of one or more SES. If hosting of an application is not feasible at present, or cost or risk of hosting this application are deemed to be too high, knowledge about this application is recorded in the AHC knowledge base6406 for potential future use.
Moreover, anoffering development process6408 uses SDT to transform the partial SE designs into complete service elements.
This separation of the AHC, whose function is to discover the necessary pieces of information about applications to be hosted and produce a hosting capability, from “offering development”, whose function is to convert the available information and hosting capabilities into a hosted offering, permits creation of a pipeline of activities that would process multiple applications intended for hosting, thus making it possible to convert the existing “artisan”-level process of hosted offering development into a “factory”-like, mass-production process. A condition for this mass-production is an automated development process, based on a conveyer-like tool, referred to herein as the Service Development Tool.
In further detail, AHC performs a study of the application and determines the initial topology and operational characteristics of the hosted application environment. Combined with initial assumptions made by offering management (such as, e.g., customer volumes, response time requirements, etc.), this provides initial concept-level input to development. At each iteration of the development cycle (concept, plan, development), the SDT is used by a different type of user (offering manager, development team), and a set of deliverables is produced by SDT, defining the appropriate level of offering. This information is given to the offering management, which can then use it to refine its assumptions about the offering, provide refined assumptions to development, which can subsequently produce the next iteration, eventually resulting in the final offering.
One example of the flow associated with a development process is described with reference toFIGS. 65a-65b. Prioritized application candidate list entry andmaintenance6500 is performed by offering management, using the application candidate user interface (UI)6502; the prioritized list is stored in the prioritizedapplication candidates repository6504.AHC6506 processes the prioritized application candidate list and stores information learned in this process in theAHC knowledge base6508, and produces zero or more partial service elements, which are stored in aSE database6510. Architecture uses offering template UI6512 to create and maintainoffering templates6514, which are stored in the SE database6516 (FIG. 65b). (The SE database is depicted twice for clarity.)Development6518 uses hosting capabilities produced by AHC and templates produced by architecture to develop SEs (including offerings).
Component data feed6520 provides a mechanism for dynamic determination of SE costs based on (multiple)component cost sources6522. Offerings and SEs produced by development are deployed6524 into production and delivered6526 to customers. Lifecycle changes6528 may be initiated externally6530 (by offering management or development) or as a result of deployment or delivery activities, usinglifecycle UI6532. At each step of the process, appropriate measurements are collected6534 (FIG. 65a),6536,6538 (FIG. 65b),6540, and formatted into a variety ofreports6542,6544,6546,6548.
Described in detail above is a tool and capabilities for facilitating management of service elements and/or service offerings. Management of a service element may include obtaining (e.g., receiving, creating, constructing, having, providing) the service element, and performing one or more actions associated with the service element.
Although various steps are described herein as being performed by different units within the SDT, it is not necessary for those particular units to perform the logic. Other units may perform the logic or it can just be considered that the SDT, without referring to particular units, performs the logic.
The present invention can be included in an article of manufacture (e.g., one or more computer program products) having, for instance, computer usable media. The media has embodied therein, for instance, computer readable program code means for providing and facilitating the capabilities of the present invention. The article of manufacture can be included as a part of a computer system- or sold separately.
Additionally, at least one program storage device readable by a machine, tangibly embodying at least one program of instructions executable by the machine to perform the capabilities of the present invention can be provided.
The flow diagrams depicted herein are just examples. There may be many variations to these diagrams or the steps (or operations) described therein without departing from the spirit of the invention. For instance, the steps may be performed in a differing order, or steps may be added, deleted or modified. All of these variations are considered a part of the claimed invention.
Although preferred embodiments have been depicted and described in detail herein, it will be apparent to those skilled in the relevant art that various modifications, additions, substitutions and the like can be made without departing from the spirit of the invention and these are therefore considered to be within the scope of the invention as defined in the following claims.

Claims (46)

1. A memory for storing data to be accessed by a service development tool, said memory comprising:
a data structure stored in said memory, said data structure representing an in-house or outsourced service and defining a service element providing at least part of a design specification usable in constructing a service by a service provider and including:
a composition section comprising a list of components included in the service element and quantity of each component;
a cost case section comprising a cost case of the service element, said cost case including an indication of quantity of the one or more composition items of the service element and cost to the service provider of the one or more composition items;
a dependency section comprising one or more functional dependencies of the service element to at least one other service element required for the service element to function;
an integration property section comprising one or more integration properties of the service element, the integration properties defining a relationship between the service element and other service elements to be possibly integrated into the service element and each integration property being one of a compatible integration, a standard integration, a manual integration, or a prohibited integration, wherein compatible integration comprises a list of at least one other service element that the service element is compatible with, standard integration comprises a list of at least one other service element that the service element integrates with by parametric integration, manual integration comprises a list of at least one other service element that the service element integrates with by programmable integration, and prohibited integration comprises a list of at least one other service element with which the service element is mutually exclusive;
a customization section comprising one or more customization specifications of the service element;
a design section comprising one or more design characteristics of the service element;
a development plan section comprising a functional specification, design and test plan for the service element;
a deployment plan section comprising a specification for service element deployment; and
a cross-reference table representing relationship of the service element to one or more other service elements of a plurality of service elements being managed, wherein said cross-reference table includes reference to the at least one other service element required for the service element to function.
3. A system of facilitating management of service elements, said system comprising:
a data structure to define a service element usable in providing services to at least one of an in-house customer or an outsourcing customer, said data structure comprising a relational structured set of information associated with the service element, and said service element providing at least part of a design specification usable in constructing a service by a service provider, said service element comprising one or more composition items, a cost case, a list of functional prerequisites, integration properties and a customization specification for the service element, said cost case including an indication of quantity of the one or more composition items of the service element and cost to the service provider of the one or more composition items, the functional prerequisites comprising a list of other service elements required for the service element to function, the composition comprising a list of components included in the service element and quantity of each component, the integration properties defining a relationship between the service element and other service elements to be possibly integrated into the service element and each integration property being one of a compatible integration, a standard integration, a manual integration, or a prohibited integration, wherein compatible integration comprises a list of at least one other service element that the service element is compatible with, standard integration comprises a list of at least one other service element that the service element integrates with by parametric integration, manual integration comprises a list of at least one other service element that the service elements integrates with by programmable integration, and prohibited integration comprises a list of at least one other service element with which the service element is mutually exclusive; and
means for creating the service element, said means for creating comprising means for placing information of said service element in the data structure, wherein the data structure includes properties of the service element and comprises a relational structured set of information associated with the service element, said relational structured set of information comprising a cross-reference table representing relationship of the service element to one or more other service elements of a plurality of service elements being managed, wherein said cross-reference table includes reference to the at least one other service element required for the service element to function;
means for generating and saving a development plan for the service element in the data structure representation of the service element, the development plan comprising a functional specification, design and test plan for the service element;
means for generating a deployment plan for the service element using the development plan, wherein the deployment plan directs customization or integration of entities within the service element pursuant to the development plan;
means for saving the deployment plan for the service element in the data structure representation of the service element; and
means for constructing the service element to be developed by the service provider, the means for constructing including means for employing the relational structured set of information to identify and employ the other service elements required for the service element to be developed.
25. A system of facilitating management of service elements, said system comprising:
a service element providing at least a part of a design specification usable in constructing a service by a service provider, the service element representing an in-house or outsourced service and comprising multiple properties, the multiple properties including an amount of labor and materials to be used to construct or operate at least part of a service to be billed to a customer, said multiple properties further comprising:
one or more composition items, at least one composition item of the one or more composition items quantifying labor and materials not billed to the customer separately;
a cost case, said cost case specifically enumerating the one or more composition items of the service element, including the at least one composition item quantifying labor and materials not billed to the customer separately, providing a quantity for each of the one or more composition items, and providing the cost of the one or more composition items to the service provider;
an identification of one or more functional dependencies of the service element identifying at least one other service element required for the service element to function; and
the integration properties defining a relationship between the service element and other service elements to be possibly integrated into the service element and each integration property being one of a compatible integration, a standard integration, a manual integration, or a prohibited integration, wherein compatible integration comprises a list of at least one other service element that the service element is compatible with, standard integration comprises a list of at least one other service element that the service element integrates with by parametric integration, manual integration comprises a list of at least one other service element that the service element integrates with by programmable integration, and prohibited integration comprises a list of at least one other service element with which the service element is mutually exclusive;
wherein the service element is defined using a data structure which includes the multiple properties of the service element, the data structure comprising a relational structured set of information associated with the service element, said relational structured set of information comprising a cross-reference table representing relationship of the service element to one or more other service elements of a plurality of service elements being managed, wherein said cross-reference table includes reference to the at least one other service element required for the service element to function;
means for generating and saving a development plan for the service element in the data structure representation of the service element, the development plan comprising a functional specification, design and test plant for the service element;
means for generating a deployment plan for the service element using the development plan, wherein the deployment plan directs customization or integration of entities within the service element pursuant to the development plan;
means for saving the deployment plan for the service element in the data structure representation of the service element; and
means for constructing the service element to be developed by the service provider, the means for constructing including employing the relational structured set of information and the integration properties to identify and employ the one or more other service elements required for the service element to be developed.
27. At least one program storage device readable by a machine tangibly embodying at least one program of instructions executable by the machine to perform a method of facilitating management of service elements, said method comprising:
defining a service element usable in providing services to at least one of an in-house customer and an outsourcing customer, said service element providing at least part of a design specification usable in constructing a service by a service provider, said service element comprising one or more composition items and a cost case, a list of functional prerequisites, integration properties and a customization specification for the service element, said cost case including an indication of quantity of the one or more composition items of the service element and cost to the service provider of the one or more composition items, the functional prerecluisites comprising a list of other service elements required for the service element to function, the composition comprising a list of components included in the service element and quantity of each component, the integration properties defining a relationship between the service element and other service elements to be possibly integrated into the service element, each integration property being one of a compatible integration, a standard integration, a manual integration, or a prohibited integration, wherein compatible integration comprises a list of at least one other service element that the service element is compatible with, standard integration comprises a list of at least one other service element that the service element integrates with by parametric integration, manual integration comprises a list of at least one other service element that the service elements integrates with by programmable integration, and prohibited integration comprises a list of at least one other service element with which the service element is mutually exclusive;
wherein the defining comprises using a data structure which includes the multiple properties of the service element, said data structure comprising a relational structured set of information associated with the service element, said relational structured set of information comprising a cross-reference table representing relationship of the service element to one or more other service elements of a plurality of service elements being managed, wherein said cross-reference table includes reference to the at least one other service element required for the service element to function;
generating and saving a development plan for the service element in the data structure representation of the service element, the development plan comprising a functional specification, design and test plan;
generating a deployment plan for the service element using the development plan, wherein the deployment plan directs customization or integration of entities within the service element pursuant to the development plan;
saving the deployment plan for the service element in the data structure representation of the service element; and
constructing the service element to be developed by the service provider, the constructing including employing the relational structured set of information and the integration properties to identify and employ the one or more other service elements required for the service element to be developed.
US10/121,3072002-04-122002-04-12Facilitating management of service elements usable in providing information technology service offeringsExpired - Fee RelatedUS7533026B2 (en)

Priority Applications (3)

Application NumberPriority DateFiling DateTitle
US10/121,307US7533026B2 (en)2002-04-122002-04-12Facilitating management of service elements usable in providing information technology service offerings
US10/262,984US7739122B2 (en)2002-04-122002-10-01Collection and analysis of measurement data associated with service elements
US11/841,153US7941321B2 (en)2002-04-122007-08-20Facilitating management of service elements usable in providing information technology service offerings

Applications Claiming Priority (1)

Application NumberPriority DateFiling DateTitle
US10/121,307US7533026B2 (en)2002-04-122002-04-12Facilitating management of service elements usable in providing information technology service offerings

Related Child Applications (2)

Application NumberTitlePriority DateFiling Date
US10/262,984Continuation-In-PartUS7739122B2 (en)2002-04-122002-10-01Collection and analysis of measurement data associated with service elements
US11/841,153ContinuationUS7941321B2 (en)2002-04-122007-08-20Facilitating management of service elements usable in providing information technology service offerings

Publications (2)

Publication NumberPublication Date
US20030195756A1 US20030195756A1 (en)2003-10-16
US7533026B2true US7533026B2 (en)2009-05-12

Family

ID=28790291

Family Applications (2)

Application NumberTitlePriority DateFiling Date
US10/121,307Expired - Fee RelatedUS7533026B2 (en)2002-04-122002-04-12Facilitating management of service elements usable in providing information technology service offerings
US11/841,153Expired - Fee RelatedUS7941321B2 (en)2002-04-122007-08-20Facilitating management of service elements usable in providing information technology service offerings

Family Applications After (1)

Application NumberTitlePriority DateFiling Date
US11/841,153Expired - Fee RelatedUS7941321B2 (en)2002-04-122007-08-20Facilitating management of service elements usable in providing information technology service offerings

Country Status (1)

CountryLink
US (2)US7533026B2 (en)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US20070282627A1 (en)*2002-04-122007-12-06International Business Machines CorporationFacilitating management of service elements usable in providing information technology service offerings
US20080027780A1 (en)*2002-04-122008-01-31International Business Machines CorporationSystem and method for the development and deployment of service elements
US20080154631A1 (en)*2002-04-122008-06-26International Business Machines CorporationMethod of facilitating management of service elements
US20080243629A1 (en)*2007-03-262008-10-02International Business MachinesApparatus, system, and method for logically packaging and delivering a service offering
US20090012832A1 (en)*2002-04-122009-01-08International Business Machines CorporationPackaging and distributing service elements
US20100070447A1 (en)*2008-09-182010-03-18International Business Machines CorporationConfiguring data collection rules in a data monitoring system
US20110295643A1 (en)*2001-12-072011-12-01Accenture Global Service LimitedAccelerated process improvement framework

Families Citing this family (180)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US7562338B2 (en)*2003-11-242009-07-14Qwest Communications International Inc.System development planning tool
GB0419607D0 (en)*2004-09-032004-10-06Accenture Global Services GmbhDocumenting processes of an organisation
US9626161B2 (en)*2006-12-122017-04-18Ca, Inc.Computer readable medium and methods for filtering a dynamic comparison model
US20090254391A1 (en)*2008-04-082009-10-08International Business Machines CorporationUse of historical data in a computer-assisted technical solution design tool
US8984390B2 (en)2008-09-152015-03-17Palantir Technologies, Inc.One-click sharing for screenshots and related documents
US9104695B1 (en)2009-07-272015-08-11Palantir Technologies, Inc.Geotagging structured data
US9224119B2 (en)2010-02-022015-12-29International Business Machines CorporationArchitecting and defining extensible methods and processes to build hybrid solutions
JPWO2011099053A1 (en)*2010-02-102013-06-13株式会社日立製作所 Product line type development support equipment
US11410129B2 (en)2010-05-012022-08-09Monday.com Ltd.Digital processing systems and methods for two-way syncing with third party applications in collaborative work systems
WO2021161104A1 (en)2020-02-122021-08-19Monday.ComEnhanced display features in collaborative network systems, methods, and devices
WO2021144656A1 (en)2020-01-152021-07-22Monday.ComDigital processing systems and methods for graphical dynamic table gauges in collaborative work systems
US9275360B2 (en)2010-05-212016-03-01Hsbc Technology & Services (Usa) Inc.Account opening flow configuration computer system and process for implementing same
US8645248B2 (en)*2010-10-272014-02-04Hsbc Technology & Services (Usa) Inc.Integrated customer communications computer system and process for implementing same
EP2628091A4 (en)2010-10-112016-04-27Hsbc Technology & Services Usa IncComputer architecture and process for application processing engine
WO2012054572A2 (en)2010-10-212012-04-26Hsbc Technologies Inc.Computer metrics system and process for implementing same
US8972848B2 (en)2010-11-232015-03-03International Business Machines CorporationDocument renewal and translation
US20120131445A1 (en)*2010-11-232012-05-24International Business Machines CorporationTemplate-based content creation
US9092482B2 (en)2013-03-142015-07-28Palantir Technologies, Inc.Fair scheduling for mixed-query loads
US9547693B1 (en)2011-06-232017-01-17Palantir Technologies Inc.Periodic database search manager for multiple data sources
US9280532B2 (en)*2011-08-022016-03-08Palantir Technologies, Inc.System and method for accessing rich objects via spreadsheets
US8732574B2 (en)2011-08-252014-05-20Palantir Technologies, Inc.System and method for parameterizing documents for automatic workflow generation
US8504542B2 (en)2011-09-022013-08-06Palantir Technologies, Inc.Multi-row transactions
US9798768B2 (en)2012-09-102017-10-24Palantir Technologies, Inc.Search around visual queries
US9348677B2 (en)2012-10-222016-05-24Palantir Technologies Inc.System and method for batch evaluation programs
US9501507B1 (en)2012-12-272016-11-22Palantir Technologies Inc.Geo-temporal indexing and searching
US10140664B2 (en)2013-03-142018-11-27Palantir Technologies Inc.Resolving similar entities from a transaction database
US8909656B2 (en)2013-03-152014-12-09Palantir Technologies Inc.Filter chains with associated multipath views for exploring large data sets
US8917274B2 (en)2013-03-152014-12-23Palantir Technologies Inc.Event matrix based on integrated data
US8937619B2 (en)2013-03-152015-01-20Palantir Technologies Inc.Generating an object time series from data objects
US10275778B1 (en)2013-03-152019-04-30Palantir Technologies Inc.Systems and user interfaces for dynamic and interactive investigation based on automatic malfeasance clustering of related data in various data structures
US8924388B2 (en)2013-03-152014-12-30Palantir Technologies Inc.Computer-implemented systems and methods for comparing and associating objects
US8868486B2 (en)2013-03-152014-10-21Palantir Technologies Inc.Time-sensitive cube
US8799799B1 (en)2013-05-072014-08-05Palantir Technologies Inc.Interactive geospatial map
US9513885B2 (en)2013-08-222016-12-06Peter WarrenWeb application development platform with relationship modeling
US9785317B2 (en)2013-09-242017-10-10Palantir Technologies Inc.Presentation and analysis of user interaction data
US8938686B1 (en)2013-10-032015-01-20Palantir Technologies Inc.Systems and methods for analyzing performance of an entity
US8812960B1 (en)2013-10-072014-08-19Palantir Technologies Inc.Cohort-based presentation of user interaction data
US9116975B2 (en)2013-10-182015-08-25Palantir Technologies Inc.Systems and user interfaces for dynamic and interactive simultaneous querying of multiple data stores
US8786605B1 (en)2013-10-242014-07-22Palantir Technologies Inc.Systems and methods for distance and congestion-aware resource deployment
US9105000B1 (en)2013-12-102015-08-11Palantir Technologies Inc.Aggregating data from a plurality of data sources
US10579647B1 (en)2013-12-162020-03-03Palantir Technologies Inc.Methods and systems for analyzing entity performance
US10025834B2 (en)2013-12-162018-07-17Palantir Technologies Inc.Methods and systems for analyzing entity performance
US10356032B2 (en)2013-12-262019-07-16Palantir Technologies Inc.System and method for detecting confidential information emails
US8832832B1 (en)2014-01-032014-09-09Palantir Technologies Inc.IP reputation
US9483162B2 (en)2014-02-202016-11-01Palantir Technologies Inc.Relationship visualizations
US8924429B1 (en)2014-03-182014-12-30Palantir Technologies Inc.Determining and extracting changed data from a data source
US9836580B2 (en)2014-03-212017-12-05Palantir Technologies Inc.Provider portal
US9857958B2 (en)2014-04-282018-01-02Palantir Technologies Inc.Systems and user interfaces for dynamic and interactive access of, investigation of, and analysis of data objects stored in one or more databases
US9009171B1 (en)2014-05-022015-04-14Palantir Technologies Inc.Systems and methods for active column filtering
US9619557B2 (en)2014-06-302017-04-11Palantir Technologies, Inc.Systems and methods for key phrase characterization of documents
US9129219B1 (en)2014-06-302015-09-08Palantir Technologies, Inc.Crime risk forecasting
US9535974B1 (en)2014-06-302017-01-03Palantir Technologies Inc.Systems and methods for identifying key phrase clusters within documents
US9256664B2 (en)2014-07-032016-02-09Palantir Technologies Inc.System and method for news events detection and visualization
US20160026923A1 (en)2014-07-222016-01-28Palantir Technologies Inc.System and method for determining a propensity of entity to take a specified action
US9390086B2 (en)2014-09-112016-07-12Palantir Technologies Inc.Classification system with methodology for efficient verification
US9501851B2 (en)2014-10-032016-11-22Palantir Technologies Inc.Time-series analysis system
US9767172B2 (en)2014-10-032017-09-19Palantir Technologies Inc.Data aggregation and analysis system
US9785328B2 (en)2014-10-062017-10-10Palantir Technologies Inc.Presentation of multivariate data on a graphical user interface of a computing system
US9229952B1 (en)2014-11-052016-01-05Palantir Technologies, Inc.History preserving data pipeline system and method
US9043894B1 (en)2014-11-062015-05-26Palantir Technologies Inc.Malicious software detection in a computing system
US9483546B2 (en)2014-12-152016-11-01Palantir Technologies Inc.System and method for associating related records to common entities across multiple lists
US10362133B1 (en)2014-12-222019-07-23Palantir Technologies Inc.Communication data processing architecture
US9348920B1 (en)2014-12-222016-05-24Palantir Technologies Inc.Concept indexing among database of documents using machine learning techniques
US10552994B2 (en)2014-12-222020-02-04Palantir Technologies Inc.Systems and interactive user interfaces for dynamic retrieval, analysis, and triage of data items
US10452651B1 (en)2014-12-232019-10-22Palantir Technologies Inc.Searching charts
US9335911B1 (en)2014-12-292016-05-10Palantir Technologies Inc.Interactive user interface for dynamic data analysis exploration and query processing
US9817563B1 (en)2014-12-292017-11-14Palantir Technologies Inc.System and method of generating data points from one or more data stores of data items for chart creation and manipulation
US11302426B1 (en)2015-01-022022-04-12Palantir Technologies Inc.Unified data interface and system
US9727560B2 (en)2015-02-252017-08-08Palantir Technologies Inc.Systems and methods for organizing and identifying documents via hierarchies and dimensions of tags
EP3611632A1 (en)2015-03-162020-02-19Palantir Technologies Inc.Displaying attribute and event data along paths
US9886467B2 (en)2015-03-192018-02-06Plantir Technologies Inc.System and method for comparing and visualizing data entities and data entity series
US9348880B1 (en)2015-04-012016-05-24Palantir Technologies, Inc.Federated search of multiple sources with conflict resolution
US10103953B1 (en)2015-05-122018-10-16Palantir Technologies Inc.Methods and systems for analyzing entity performance
US11580472B2 (en)2015-05-142023-02-14Palantir Technologies Inc.Systems and methods for state machine management
US10628834B1 (en)2015-06-162020-04-21Palantir Technologies Inc.Fraud lead detection system for efficiently processing database-stored data and automatically generating natural language explanatory information of system results for display in interactive user interfaces
US9418337B1 (en)2015-07-212016-08-16Palantir Technologies Inc.Systems and models for data analytics
US9392008B1 (en)2015-07-232016-07-12Palantir Technologies Inc.Systems and methods for identifying information related to payment card breaches
US9996595B2 (en)2015-08-032018-06-12Palantir Technologies, Inc.Providing full data provenance visualization for versioned datasets
US9456000B1 (en)2015-08-062016-09-27Palantir Technologies Inc.Systems, methods, user interfaces, and computer-readable media for investigating potential malicious communications
US9600146B2 (en)2015-08-172017-03-21Palantir Technologies Inc.Interactive geospatial map
US9671776B1 (en)2015-08-202017-06-06Palantir Technologies Inc.Quantifying, tracking, and anticipating risk at a manufacturing facility, taking deviation type and staffing conditions into account
US10853378B1 (en)2015-08-252020-12-01Palantir Technologies Inc.Electronic note management via a connected entity graph
US11150917B2 (en)2015-08-262021-10-19Palantir Technologies Inc.System for data aggregation and analysis of data from a plurality of data sources
US9485265B1 (en)2015-08-282016-11-01Palantir Technologies Inc.Malicious activity detection system capable of efficiently processing data accessed from databases and generating alerts for display in interactive user interfaces
US10706434B1 (en)2015-09-012020-07-07Palantir Technologies Inc.Methods and systems for determining location information
US9984428B2 (en)2015-09-042018-05-29Palantir Technologies Inc.Systems and methods for structuring data from unstructured electronic data files
US9639580B1 (en)2015-09-042017-05-02Palantir Technologies, Inc.Computer-implemented systems and methods for data management and visualization
US9576015B1 (en)2015-09-092017-02-21Palantir Technologies, Inc.Domain-specific language for dataset transformations
US9424669B1 (en)2015-10-212016-08-23Palantir Technologies Inc.Generating graphical representations of event participation flow
US10613722B1 (en)2015-10-272020-04-07Palantir Technologies Inc.Distorting a graph on a computer display to improve the computer's ability to display the graph to, and interact with, a user
US10223429B2 (en)2015-12-012019-03-05Palantir Technologies Inc.Entity data attribution using disparate data sets
US10706056B1 (en)2015-12-022020-07-07Palantir Technologies Inc.Audit log report generator
US9798787B1 (en)2015-12-102017-10-24Palantir Technologies Inc.System and user interfaces for searching resources and related documents using data structures
US9760556B1 (en)2015-12-112017-09-12Palantir Technologies Inc.Systems and methods for annotating and linking electronic documents
US9514414B1 (en)2015-12-112016-12-06Palantir Technologies Inc.Systems and methods for identifying and categorizing electronic documents through machine learning
US10114884B1 (en)2015-12-162018-10-30Palantir Technologies Inc.Systems and methods for attribute analysis of one or more databases
US10373099B1 (en)2015-12-182019-08-06Palantir Technologies Inc.Misalignment detection system for efficiently processing database-stored data and automatically generating misalignment information for display in interactive user interfaces
US9823818B1 (en)2015-12-292017-11-21Palantir Technologies Inc.Systems and interactive user interfaces for automatic generation of temporal representation of data objects
US10871878B1 (en)2015-12-292020-12-22Palantir Technologies Inc.System log analysis and object user interaction correlation system
US10268735B1 (en)2015-12-292019-04-23Palantir Technologies Inc.Graph based resolution of matching items in data sources
US10726032B2 (en)2015-12-302020-07-28Palantir Technologies, Inc.Systems and methods for search template generation
US9792020B1 (en)2015-12-302017-10-17Palantir Technologies Inc.Systems for collecting, aggregating, and storing data, generating interactive user interfaces for analyzing data, and generating alerts based upon collected data
US10380522B1 (en)2015-12-312019-08-13Palantir Technologies Inc.Asset allocation evaluation system
US10698938B2 (en)2016-03-182020-06-30Palantir Technologies Inc.Systems and methods for organizing and identifying documents via hierarchies and dimensions of tags
US10650558B2 (en)2016-04-042020-05-12Palantir Technologies Inc.Techniques for displaying stack graphs
US10832218B1 (en)2016-04-052020-11-10Palantir Technologies Inc.User interface for visualization of an attrition value
US9652139B1 (en)2016-04-062017-05-16Palantir Technologies Inc.Graphical representation of an output
US10068199B1 (en)2016-05-132018-09-04Palantir Technologies Inc.System to catalogue tracking data
US10007674B2 (en)2016-06-132018-06-26Palantir Technologies Inc.Data revision control in large-scale data analytic systems
US10545975B1 (en)2016-06-222020-01-28Palantir Technologies Inc.Visual analysis of data using sequenced dataset reduction
US10909130B1 (en)2016-07-012021-02-02Palantir Technologies Inc.Graphical user interface for a database system
US10579956B1 (en)*2016-08-102020-03-03Amazon Technologies, Inc.Verifying user-provided data feeds
US9881066B1 (en)2016-08-312018-01-30Palantir Technologies, Inc.Systems, methods, user interfaces and algorithms for performing database analysis and search of information involving structured and/or semi-structured data
US10552002B1 (en)2016-09-272020-02-04Palantir Technologies Inc.User interface based variable machine modeling
US9805071B1 (en)2016-11-102017-10-31Palantir Technologies Inc.System and methods for live data migration
US10726507B1 (en)2016-11-112020-07-28Palantir Technologies Inc.Graphical representation of a complex task
US10318630B1 (en)2016-11-212019-06-11Palantir Technologies Inc.Analysis of large bodies of textual data
US9842338B1 (en)2016-11-212017-12-12Palantir Technologies Inc.System to identify vulnerable card readers
US11250425B1 (en)2016-11-302022-02-15Palantir Technologies Inc.Generating a statistic using electronic transaction data
GB201621434D0 (en)2016-12-162017-02-01Palantir Technologies IncProcessing sensor logs
US9886525B1 (en)2016-12-162018-02-06Palantir Technologies Inc.Data item aggregate probability analysis system
GB201621627D0 (en)2016-12-192017-02-01Palantir Technologies IncTask allocation
US10249033B1 (en)2016-12-202019-04-02Palantir Technologies Inc.User interface for managing defects
US10728262B1 (en)2016-12-212020-07-28Palantir Technologies Inc.Context-aware network-based malicious activity warning systems
US10360238B1 (en)2016-12-222019-07-23Palantir Technologies Inc.Database systems and user interfaces for interactive data association, analysis, and presentation
US11373752B2 (en)2016-12-222022-06-28Palantir Technologies Inc.Detection of misuse of a benefit system
US10552436B2 (en)2016-12-282020-02-04Palantir Technologies Inc.Systems and methods for retrieving and processing data for display
US10721262B2 (en)2016-12-282020-07-21Palantir Technologies Inc.Resource-centric network cyber attack warning system
US10762471B1 (en)2017-01-092020-09-01Palantir Technologies Inc.Automating management of integrated workflows based on disparate subsidiary data sources
US10133621B1 (en)2017-01-182018-11-20Palantir Technologies Inc.Data analysis system to facilitate investigative process
US10509844B1 (en)2017-01-192019-12-17Palantir Technologies Inc.Network graph parser
US10515109B2 (en)2017-02-152019-12-24Palantir Technologies Inc.Real-time auditing of industrial equipment condition
US10581954B2 (en)2017-03-292020-03-03Palantir Technologies Inc.Metric collection and aggregation for distributed software services
US10866936B1 (en)2017-03-292020-12-15Palantir Technologies Inc.Model object management and storage system
US10475219B1 (en)2017-03-302019-11-12Palantir Technologies Inc.Multidimensional arc chart for visual comparison
US10133783B2 (en)2017-04-112018-11-20Palantir Technologies Inc.Systems and methods for constraint driven database searching
US10563990B1 (en)2017-05-092020-02-18Palantir Technologies Inc.Event-based route planning
US10606872B1 (en)2017-05-222020-03-31Palantir Technologies Inc.Graphical user interface for a database system
US10795749B1 (en)2017-05-312020-10-06Palantir Technologies Inc.Systems and methods for providing fault analysis user interface
US10530642B1 (en)2017-06-072020-01-07Palantir Technologies Inc.Remote configuration of a machine
US10956406B2 (en)2017-06-122021-03-23Palantir Technologies Inc.Propagated deletion of database records and derived data
US10176217B1 (en)2017-07-062019-01-08Palantir Technologies, Inc.Dynamically performing data processing in a data pipeline system
US11216762B1 (en)2017-07-132022-01-04Palantir Technologies Inc.Automated risk visualization using customer-centric data analysis
US10839022B1 (en)2017-07-242020-11-17Palantir Technologies Inc.System to manage document workflows
US10430444B1 (en)2017-07-242019-10-01Palantir Technologies Inc.Interactive geospatial map and geospatial visualization systems
US10218574B1 (en)2017-07-262019-02-26Palantir Technologies Inc.Detecting software misconfiguration at a remote machine
US10324759B1 (en)2017-08-032019-06-18Palantir Technologies Inc.Apparatus and method of securely and efficiently interfacing with a cloud computing service
US11281726B2 (en)2017-12-012022-03-22Palantir Technologies Inc.System and methods for faster processor comparisons of visual graph features
US10783162B1 (en)2017-12-072020-09-22Palantir Technologies Inc.Workflow assistant
US11314721B1 (en)2017-12-072022-04-26Palantir Technologies Inc.User-interactive defect analysis for root cause
US10877984B1 (en)2017-12-072020-12-29Palantir Technologies Inc.Systems and methods for filtering and visualizing large scale datasets
US10769171B1 (en)2017-12-072020-09-08Palantir Technologies Inc.Relationship analysis and mapping for interrelated multi-layered datasets
US10929476B2 (en)2017-12-142021-02-23Palantir Technologies Inc.Systems and methods for visualizing and analyzing multi-dimensional data
US11263382B1 (en)2017-12-222022-03-01Palantir Technologies Inc.Data normalization and irregularity detection system
US10877654B1 (en)2018-04-032020-12-29Palantir Technologies Inc.Graphical user interfaces for optimizations
US10754822B1 (en)2018-04-182020-08-25Palantir Technologies Inc.Systems and methods for ontology migration
US10885021B1 (en)2018-05-022021-01-05Palantir Technologies Inc.Interactive interpreter and graphical user interface
US10754946B1 (en)2018-05-082020-08-25Palantir Technologies Inc.Systems and methods for implementing a machine learning approach to modeling entity behavior
US11119630B1 (en)2018-06-192021-09-14Palantir Technologies Inc.Artificial intelligence assisted evaluations and user interface for same
US11698890B2 (en)2018-07-042023-07-11Monday.com Ltd.System and method for generating a column-oriented data structure repository for columns of single data types
US11436359B2 (en)2018-07-042022-09-06Monday.com Ltd.System and method for managing permissions of users for a single data type column-oriented data structure
US12353419B2 (en)2018-07-232025-07-08Monday.com Ltd.System and method for generating a tagged column-oriented data structure
US11126638B1 (en)2018-09-132021-09-21Palantir Technologies Inc.Data visualization and parsing system
US11294928B1 (en)2018-10-122022-04-05Palantir Technologies Inc.System architecture for relating and linking data objects
US12353678B2 (en)2019-10-172025-07-08Palantir Technologies Inc.Object-centric data analysis system and associated graphical user interfaces
US11775890B2 (en)2019-11-182023-10-03Monday.ComDigital processing systems and methods for map-based data organization in collaborative work systems
EP4062313A1 (en)2019-11-182022-09-28Monday.com Ltd.Collaborative networking systems, methods, and devices
US11829953B1 (en)2020-05-012023-11-28Monday.com Ltd.Digital processing systems and methods for managing sprints using linked electronic boards
EP4143732A1 (en)2020-05-012023-03-08Monday.com Ltd.Digital processing systems and methods for enhanced collaborative workflow and networking systems, methods, and devices
US11277361B2 (en)2020-05-032022-03-15Monday.com Ltd.Digital processing systems and methods for variable hang-time for social layer messages in collaborative work systems
US11928315B2 (en)2021-01-142024-03-12Monday.com Ltd.Digital processing systems and methods for tagging extraction engine for generating new documents in collaborative work systems
CN112925583B (en)*2021-02-252023-10-27北京百度网讯科技有限公司Host application capability extension method, device, equipment and storage medium
US12056664B2 (en)2021-08-172024-08-06Monday.com Ltd.Digital processing systems and methods for external events trigger automatic text-based document alterations in collaborative work systems
US12105948B2 (en)2021-10-292024-10-01Monday.com Ltd.Digital processing systems and methods for display navigation mini maps
US11741071B1 (en)2022-12-282023-08-29Monday.com Ltd.Digital processing systems and methods for navigating and viewing displayed content
US11886683B1 (en)2022-12-302024-01-30Monday.com LtdDigital processing systems and methods for presenting board graphics
US11893381B1 (en)2023-02-212024-02-06Monday.com LtdDigital processing systems and methods for reducing file bundle sizes
WO2024257014A1 (en)2023-06-132024-12-19Monday.com Ltd.Digital processing systems and methods for enhanced data representation
WO2025114749A1 (en)2023-11-282025-06-05Monday.com Ltd.Digital processing systems and methods for facilitating the development and implementation of applications in conjunction with a serverless environment
WO2025114750A1 (en)2023-11-282025-06-05Monday.com Ltd.Digital processing systems and methods for managing workflows

Citations (19)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US5471636A (en)1994-06-061995-11-28Hauck; Lane T.Software development system and method of using same
US5646676A (en)1995-05-301997-07-08International Business Machines CorporationScalable interactive multimedia server system for providing on demand data
US5819092A (en)*1994-11-081998-10-06Vermeer Technologies, Inc.Online service development tool with fee setting capabilities
US5909581A (en)1995-12-301999-06-01Samsung Electronics Co., Ltd.Automatic software updating method
US5917485A (en)1997-05-071999-06-29Unisys CorporationUser assistance for data processing systems
US5933600A (en)1996-12-101999-08-03International Business Machines CorporationIncreased control for reduced delay in internet data transfers based on limitations established in a server system
US5949411A (en)1996-02-161999-09-07Cyber Marketing, Inc.Remote interactive multimedia preview and data collection kiosk system
US5966540A (en)1997-02-061999-10-12International Business Machines Corp.Hosted machine code installation
US6064813A (en)1996-10-312000-05-16Bull S.A.Tool for integrating applications for a data processing platform
US6108703A (en)1998-07-142000-08-22Massachusetts Institute Of TechnologyGlobal hosting system
US6128624A (en)1997-11-122000-10-03Ncr CorporationCollection and integration of internet and electronic commerce data in a database during web browsing
US6151601A (en)1997-11-122000-11-21Ncr CorporationComputer architecture and method for collecting, analyzing and/or transforming internet and/or electronic commerce data for storage into a data storage area
US6219654B1 (en)*1998-11-022001-04-17International Business Machines CorporationMethod, system and program product for performing cost analysis of an information technology implementation
US6226618B1 (en)1998-08-132001-05-01International Business Machines CorporationElectronic content delivery system
US6247020B1 (en)1997-12-172001-06-12Borland Software CorporationDevelopment system with application browser user interface
US6427230B1 (en)1998-11-092002-07-30Unisys CorporationSystem and method for defining and managing reusable groups software constructs within an object management system
US20030172145A1 (en)*2002-03-112003-09-11Nguyen John V.System and method for designing, developing and implementing internet service provider architectures
US20040024812A1 (en)*2000-11-082004-02-05Park Chong MokContent publication system for supporting real-time integration and processing of multimedia content including dynamic data, and method thereof
US7058588B2 (en)2000-03-072006-06-06International Business Machines CorporationDependency-based work flow integration and reduction

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US5574837A (en)1995-01-171996-11-12Lucent Technologies Inc.Method of generating a browser interface for representing similarities between segments of code
US5699507A (en)1995-01-171997-12-16Lucent Technologies Inc.Method of identifying similarities in code segments
JPH09212353A (en)1996-02-071997-08-15Hitachi Ltd Reuse design support method and design support apparatus
JPH09292985A (en)1996-04-261997-11-11Hitachi Ltd Program reuse parts generation method
JP3488019B2 (en)1996-06-172004-01-19株式会社山武 How to reuse parts of configuration tool for control design
US6778651B1 (en)1997-04-032004-08-17Southwestern Bell Telephone CompanyApparatus and method for facilitating service management of communications services in a communications network
US6209125B1 (en)1997-06-032001-03-27Sun Microsystems, Inc.Method and apparatus for software component analysis
US5970252A (en)1997-08-121999-10-19International Business Machines CorporationMethod and apparatus for loading components in a component system
US6195794B1 (en)1997-08-122001-02-27International Business Machines CorporationMethod and apparatus for distributing templates in a component system
US7117162B1 (en)1997-09-112006-10-03Bellsouth Intellectual Property Corp.System and Method for Facilitating Managing a Job
US6269473B1 (en)1998-03-232001-07-31Evolve Software, Inc.Method and apparatus for the development of dynamically configurable software systems
AU6049999A (en)1998-09-172000-04-03Nexchange CorporationAffiliate commerce system and method
US6981222B2 (en)1998-10-222005-12-27Made2Manage Systems, Inc.End-to-end transaction processing and statusing system and method
US20020178044A1 (en)1999-01-152002-11-28Bicknell Barbara A.Adaptable integrated-content product development system
US6536037B1 (en)1999-05-272003-03-18Accenture LlpIdentification of redundancies and omissions among components of a web based architecture
US6289513B1 (en)1999-06-012001-09-11Isaac BentwichInteractive application generation and text processing
US6460052B1 (en)1999-08-202002-10-01Oracle CorporationMethod and system for performing fine grain versioning
US6662357B1 (en)1999-08-312003-12-09Accenture LlpManaging information in an integrated development architecture framework
JP2001344105A (en)2000-03-312001-12-14Hitachi Software Eng Co LtdWeb application developing method, development support system, and memory medium storing program related to this method
US6934749B1 (en)2000-05-202005-08-23Ciena CorporationTracking distributed data retrieval in a network device
US6993743B2 (en)2000-06-032006-01-31Sun Microsystems, Inc.Method and apparatus for developing enterprise applications using design patterns
US6785805B1 (en)2000-08-082004-08-31Vi Technology, Inc.Network-based configuration method for systems integration in test, measurement, and automation environments
US6915253B1 (en)2000-09-132005-07-05Fujitsu LimitedMethod for facilitating product configuration using components from a set
US7047518B2 (en)2000-10-042006-05-16Bea Systems, Inc.System for software application development and modeling
CA2322594C (en)2000-10-062005-01-11Ibm Canada Limited-Ibm Canada LimiteeSystem and method for managing web page components
FR2816421A1 (en)2000-11-062002-05-10EvidianCoordinated management of telecommunication contracts and services, uses object models of service and contract keeping working and latent versions and uses state monitoring to automatically reflect changes
US7152224B1 (en)2000-11-212006-12-19Microsoft CorporationVersioned project associations
US6567729B2 (en)2001-03-282003-05-20Pt Holdings Ltd.System and method of analyzing aircraft removal data for preventative maintenance
US6859921B2 (en)2001-05-312005-02-22International Business Machines CorporationSystem, method, and computer program product for creating a hierarchy of software components based on the programming constructs therein
US20020198773A1 (en)2001-06-262002-12-26International Business Machines CorporationMethod and system for managing innovation by encouraging reusability and subsequent reuse of design components
JP3901475B2 (en)*2001-07-022007-04-04株式会社ケンウッド Signal coupling device, signal coupling method and program
US7149734B2 (en)2001-07-062006-12-12Logic Library, Inc.Managing reusable software assets
US7188335B1 (en)2001-12-282007-03-06Trilogy Development Group, Inc.Product configuration using configuration patterns
US7440902B2 (en)2002-04-122008-10-21International Business Machines CorporationService development tool and capabilities for facilitating management of service elements
US7058924B2 (en)2002-04-122006-06-06International Business Machines CorporationFacilitating hosting of applications
US7366678B2 (en)2002-04-122008-04-29International Business Machines CorporationFacilitating error checking of service elements
US7302400B2 (en)2002-04-122007-11-27International Business Machines CorporationSystem and method for the development and deployment of service elements
US7739122B2 (en)2002-04-122010-06-15International Business Machines CorporationCollection and analysis of measurement data associated with service elements
US7562022B2 (en)2002-04-122009-07-14International Business Machines CorporationPackaging and distributing service elements
US7533026B2 (en)2002-04-122009-05-12International Business Machines CorporationFacilitating management of service elements usable in providing information technology service offerings
US7320400B2 (en)2004-09-102008-01-22Mmdesign Studio International, Inc.Container and method of making a container

Patent Citations (20)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US5471636A (en)1994-06-061995-11-28Hauck; Lane T.Software development system and method of using same
US5819092A (en)*1994-11-081998-10-06Vermeer Technologies, Inc.Online service development tool with fee setting capabilities
US5646676A (en)1995-05-301997-07-08International Business Machines CorporationScalable interactive multimedia server system for providing on demand data
US5909581A (en)1995-12-301999-06-01Samsung Electronics Co., Ltd.Automatic software updating method
US5949411A (en)1996-02-161999-09-07Cyber Marketing, Inc.Remote interactive multimedia preview and data collection kiosk system
US6064813A (en)1996-10-312000-05-16Bull S.A.Tool for integrating applications for a data processing platform
US5933600A (en)1996-12-101999-08-03International Business Machines CorporationIncreased control for reduced delay in internet data transfers based on limitations established in a server system
US5966540A (en)1997-02-061999-10-12International Business Machines Corp.Hosted machine code installation
US5917485A (en)1997-05-071999-06-29Unisys CorporationUser assistance for data processing systems
US6128624A (en)1997-11-122000-10-03Ncr CorporationCollection and integration of internet and electronic commerce data in a database during web browsing
US6151601A (en)1997-11-122000-11-21Ncr CorporationComputer architecture and method for collecting, analyzing and/or transforming internet and/or electronic commerce data for storage into a data storage area
US6247020B1 (en)1997-12-172001-06-12Borland Software CorporationDevelopment system with application browser user interface
US6108703A (en)1998-07-142000-08-22Massachusetts Institute Of TechnologyGlobal hosting system
US6226618B1 (en)1998-08-132001-05-01International Business Machines CorporationElectronic content delivery system
US6219654B1 (en)*1998-11-022001-04-17International Business Machines CorporationMethod, system and program product for performing cost analysis of an information technology implementation
US6249769B1 (en)*1998-11-022001-06-19International Business Machines CorporationMethod, system and program product for evaluating the business requirements of an enterprise for generating business solution deliverables
US6427230B1 (en)1998-11-092002-07-30Unisys CorporationSystem and method for defining and managing reusable groups software constructs within an object management system
US7058588B2 (en)2000-03-072006-06-06International Business Machines CorporationDependency-based work flow integration and reduction
US20040024812A1 (en)*2000-11-082004-02-05Park Chong MokContent publication system for supporting real-time integration and processing of multimedia content including dynamic data, and method thereof
US20030172145A1 (en)*2002-03-112003-09-11Nguyen John V.System and method for designing, developing and implementing internet service provider architectures

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Everett, Cath, "HP uses espeak to reposition itself as an Internet company," Newswire, May 19, 1999.*

Cited By (14)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US20110295643A1 (en)*2001-12-072011-12-01Accenture Global Service LimitedAccelerated process improvement framework
US8504405B2 (en)*2001-12-072013-08-06Accenture Global Services LimitedAccelerated process improvement framework
US7941321B2 (en)2002-04-122011-05-10International Business Machines CorporationFacilitating management of service elements usable in providing information technology service offerings
US20090012832A1 (en)*2002-04-122009-01-08International Business Machines CorporationPackaging and distributing service elements
US7788122B2 (en)2002-04-122010-08-31International Business Machines CorporationSystem and method for the development and deployment of service elements
US7895050B2 (en)2002-04-122011-02-22International Business Machines CorporationPackaging and distributing service elements
US7904304B2 (en)2002-04-122011-03-08International Business Machines CorporationMethod of facilitating management of service elements
US20070282627A1 (en)*2002-04-122007-12-06International Business Machines CorporationFacilitating management of service elements usable in providing information technology service offerings
US20080154631A1 (en)*2002-04-122008-06-26International Business Machines CorporationMethod of facilitating management of service elements
US20080027780A1 (en)*2002-04-122008-01-31International Business Machines CorporationSystem and method for the development and deployment of service elements
US20080243629A1 (en)*2007-03-262008-10-02International Business MachinesApparatus, system, and method for logically packaging and delivering a service offering
US9626632B2 (en)*2007-03-262017-04-18International Business Machines CorporationApparatus, system, and method for logically packaging and delivering a service offering
US20100070447A1 (en)*2008-09-182010-03-18International Business Machines CorporationConfiguring data collection rules in a data monitoring system
US8346743B2 (en)*2008-09-182013-01-01International Business Machines CorporationConfiguring data collection rules in a data monitoring system

Also Published As

Publication numberPublication date
US7941321B2 (en)2011-05-10
US20030195756A1 (en)2003-10-16
US20070282627A1 (en)2007-12-06

Similar Documents

PublicationPublication DateTitle
US7533026B2 (en)Facilitating management of service elements usable in providing information technology service offerings
US7788122B2 (en)System and method for the development and deployment of service elements
US7904304B2 (en)Method of facilitating management of service elements
US7895050B2 (en)Packaging and distributing service elements
US7058924B2 (en)Facilitating hosting of applications
US7617118B2 (en)Facilitating error checking of service elements
US7240077B1 (en)Web site content change management
US7577934B2 (en)Framework for modeling and providing runtime behavior for business software applications
US7730446B2 (en)Software business process model
US6820118B1 (en)Method and system for providing a linkage between systems management systems and applications
US11126968B2 (en)Custom application builder for supply chain management
US20050257197A1 (en)Role-based object models
US20050021348A1 (en)Business solution management (BSM)
US8560576B2 (en)Mass change of master data via templates
EP1577754A2 (en)Structured approach to software specification
US10817811B2 (en)Methods and apparatus for exposing workflow process definitions as business objects
US20120179583A1 (en)Electronic Commerce Platform with Staging to Production and Bundles
Jansen et al.Software release and deployment at exact: a case study report
Senda et al.TransMigration services
Van WormerDocument management for design engineering, construction, and owner operators
Jansen et al.Report SEN-E0414 September 2004
Fraternali et al.Developing ebusiness solutions with a model driven approach
LangerWebsite design and architecture
EP1391816A1 (en)Method and system for registering aspect implementations

Legal Events

DateCodeTitleDescription
ASAssignment

Owner name:INTERNATIONAL BUSINESS MACHINES CORPORATION, NEW Y

Free format text:ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GREENSTEIN, PAUL G.;GRUNIN, GALINA;NGUYEN, LUU Q.;REEL/FRAME:013137/0101;SIGNING DATES FROM 20020628 TO 20020722

FEPPFee payment procedure

Free format text:PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

REMIMaintenance fee reminder mailed
LAPSLapse for failure to pay maintenance fees
STCHInformation on status: patent discontinuation

Free format text:PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362

FPLapsed due to failure to pay maintenance fee

Effective date:20130512


[8]ページ先頭

©2009-2025 Movatter.jp