US20120284687A1 - Developing configurable software systems in a large software development community - Google Patents

Developing configurable software systems in a large software development community Download PDF

Info

Publication number
US20120284687A1
US20120284687A1 US13/553,435 US201213553435A US2012284687A1 US 20120284687 A1 US20120284687 A1 US 20120284687A1 US 201213553435 A US201213553435 A US 201213553435A US 2012284687 A1 US2012284687 A1 US 2012284687A1
Authority
US
United States
Prior art keywords
under development
questions
system under
software system
input
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.)
Abandoned
Application number
US13/553,435
Inventor
Thomas Michael Guyette
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to US13/553,435 priority Critical patent/US20120284687A1/en
Publication of US20120284687A1 publication Critical patent/US20120284687A1/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design

Definitions

  • the present invention relates generally to software development systems, and more specifically to increasing decision-making efficiency in large-scale software development projects.
  • POV data points of variability
  • Guidance on where and how to store POV data (and the “where-and-how” of other project standards) can be difficult to find, and when the system under development is relatively complex, there are often many different places to store such POV data.
  • the design and development process gradually reveals what the POV for a component should be, making the right decision about where to store POV data is not always obvious.
  • a system and method that provide an automated software process for acquiring, representing, and distributing information to software developers regarding software system architectural decisions.
  • a development team follows a series of well-defined steps to establish standards for implementation of components in the system.
  • Information about project standards flows from the architects, who determine overall system characteristics and general component needs, into a profiling system that can later be used by developers to assist in making implementation decisions.
  • the disclosed system can be used to facilitate developer decisions regarding storage of operational characteristics, such as POV data, by a component under development, using consistent, deterministic project guidelines.
  • operational characteristics such as POV data
  • the POV needs of the component under development are “profiled” by obtaining answers to a series of questions relevant to the high level system design.
  • the flowchart of questions for a given POV data value may be presented to a developer within a graphical user interface (GUI) presented by the disclosed system.
  • GUI graphical user interface
  • the collected answers to the questions lead the developer to a “node” that can be represented as an element in a category array having dimensions equal in number to the number of questions.
  • a decision tree with two questions, each having two possible answers translates into a two-dimensional category array with four array elements; a decision tree with three questions, each having two possible answers, translates into a three-dimensional category array with eight array elements, etc.
  • Each element of the category array represents a category of POV data, and contains one or more associated design guidelines.
  • a developer obtains the design guidelines appropriate for a given piece of POV data when the answers entered by the developer with regard to that POV data value are used to identify one of the elements in the category array.
  • a design guideline for one of the array elements in the category array may indicate that POV data with that element's characteristics should be stored in a text file on the local hard drive, while another array element may indicate the POV data should be stored using a reusable user preference storage component developed by the system team.
  • the technical leadership team for the project establishes high-level system design requirements.
  • the technical leadership determines questions leading to design guidelines for categories of POV data of the system.
  • the design guidelines may then be accessed by the developer, or automatically associated with a program component under development as indicated by the answers provided by a developer.
  • a new system for software system development that provides a convenient way for developers to access information reflecting architectural decisions about a program.
  • the disclosed system enables a developer to obtain design guidelines based on the system design when such information is needed during the development process.
  • the disclosed system would further be applicable to providing convenient developer access to information relevant to determining storage locations for POV data of the system under development, such as configuration values.
  • FIG. 1 is a block diagram illustrating a topology for a software system under development, shown as a distributed software application;
  • FIG. 2 is a flow chart diagram illustrating questions provided during operation of an embodiment of the disclosed system to obtain a profile for a POV of a system under development;
  • FIG. 3 is an illustration of a category array in an embodiment of the disclosed system.
  • FIG. 4 is a flow chart diagram illustrating steps performed during operation of an embodiment of the disclosed system to determine an appropriate data store for a POV data value
  • FIG. 5 is a flow chart illustrating steps performed to use an embodiment of the disclosed system during the software system development process.
  • FIG. 1 illustrates the execution environment of a client-server enterprise application program, for the purpose of describing how the disclosed system can be used to facilitate good software developer design decisions, in particular during development of such distributed software systems.
  • a software program under development may, for example, consist of an enterprise application program that can be accessed from, or executed on, multiple computer systems in a networked computer environment.
  • an enterprise 10 includes a site A 50 having a server system 30 and associated client systems 32 , 34 , 36 , 38 and 40 , some of which may be shared among multiple users.
  • a site B 52 is shown having a server system 12 and associated client systems 14 , 16 , 18 and 20 , and a server system 22 and associated client systems 24 , 26 and 28 .
  • the server and client systems in FIG. 1 are connected through a communications network.
  • a distributed software program may include components distributed among and executing on some or all of the server and client systems shown in the enterprise 10 . Accordingly, operational characteristics, such as, for example, POV data of a software program distributed across the server and client systems of the enterprise 10 , might similarly be distributed across such multiple, separate computer systems.
  • individual POV data values may be user-related values relevant to some or all users, or system-related values relevant to some or all systems.
  • a given user POV data value may be relevant to all users, only users associated with one or more designated server or client systems, or relevant only to an individual user.
  • a system configuration value may be relevant to all server and client systems, only certain designated server or client systems, or only an to an individual client or server system. Accordingly, the data store for a POV should be selected in a way that is consistent with the attributes of that piece of POV data.
  • the software system under development is a distributed software application capable of having components executing on distributed server and client systems, such as those client and server systems shown in the enterprise 10 of FIG.
  • multiple data stores may be defined for storage of configuration values.
  • Such configuration value data stores may each be designed for storage of certain types or categories of configuration values within the system under development.
  • the number of different data stores used for storing configuration values in a distributed software program operating across multiple client and server systems may be relatively large. Accordingly, a developer of a software component for a complex, distributed software program often faces a difficult task when determining the appropriate data store to be used for storing a given configuration value.
  • the disclosed system may be embodied to determine a data store in which a given POV data value should be stored for use by a distributed software component under development.
  • the disclosed system issues a number of questions to a software developer regarding a specific piece of POV data that the developer is interested in determining a data store for.
  • the answers provided by the developer to these questions result in a profile for the piece of POV data.
  • the profile is used by the disclosed system to determine one or more design guidelines for the profiled piece of POV data. For example, in the case of a POV data value consisting of a configuration value, an embodiment of the disclosed system may be used to determine a design guideline consisting of an appropriate data store for the configuration value.
  • the data store determined for the configuration value may include any specific type of data storage or data storage location for the configuration value, including but not limited to, any specific type or location of one or more data structures, such as files, databases, text documents, etc.
  • an embodiment of the disclosed system may operate to provide design guidelines for storing configuration values in different categories within a shared data store by associating meta-data tags with the configuration values.
  • meta-data is used to refer to any specific type of data used to describe the properties of other data. In this case, the meta-data is used to describe and distinguish one or more categories of configuration values sharing a common data store.
  • FIG. 2 illustrates a flow of questions provided by an embodiment of the disclosed system to determine a profile for an POV data value consisting of a configuration value.
  • the questions described by the FIG. 2 flow may be provided through any appropriate graphical user interface (GUI) on a user computer system.
  • GUI graphical user interface
  • the answers to the questions described by the FIG. 2 flow may be obtained through any appropriate graphical user interface.
  • FIG. 2 is for purposes of explanation only, and that any question order may used. Similarly, the specific questions in FIG. 2 are also given only for purposes of explanation, and the specific questions provided in different embodiments may vary, depending on the overall requirements and system design of the system under development.
  • the disclosed system displays a question to the user as to whether the configuration value is to be maintained as the same value for all users of the system under development, or as a different value for each user.
  • the disclosed system captures the answer provided by the user to the question of step 70 , and at step 72 displays a question to the user as to whether the configuration value is to be maintained as the same value for all locations over which the system under development is deployed, or is to be maintained separately in each location.
  • the disclosed system displays a question at step 73 to determine who is to be allowed to read the configuration value.
  • the disclosed system displays a question at step 74 to determine who is to be permitted to read the configuration value, and captures the answer to that question.
  • the disclosed system then operates to display a question to determine whether the configuration value is to be editable at step 75 , and captures the answer to that question.
  • the disclosed system may be embodied to determine whether a given POV data value is the same for all users or different for each user, whether the POV data value is the same in all locations or different for different locations, which users are permitted to read and/or edit the POV data value, and whether the POV data value should be modifiable at development time, installation time, and/or runtime. Questions provided by the disclosed system, such as those shown for purposes of explanation in FIG. 2 , are system-specific, and determined by technical leadership.
  • the disclosed system accesses an entry in a category array determined by those answers.
  • the category array has a number of dimensions dependent on the number of possible answers to the set of profiling questions. For example, the number of entries in the category array may equal the set of possible answer combinations to the profiling questions. In a case where the set of profiling questions for an implementation includes two questions, each of which may be answered by “True” or “False,” the number of entries in the category array would be four.
  • Such a category array 80 is shown for purposes of explanation in FIG. 3 .
  • the two questions in the set of profiling questions for the category array 80 of FIG. 3 are the questions associated with steps 70 and 72 of FIG. 2 .
  • the category array 80 includes a first entry 82 associated with a category of configuration values that are the same for all users, and the same for all locations in the system under development.
  • a second entry 84 is associated with a category of configuration values that are different for each user, but are the same for each location.
  • the entry 86 is associated with a category of configuration values that are the same for each user, but are different for each location, and the entry 88 is associated with a category of configuration values that are the different for each user and different for each location.
  • Each of the entries in the category array 80 of FIG. 3 are associated with one or more design guidelines to be provided to a user with regard to a POV data value that maps to that entry.
  • each of the entries in the category array 80 may be associated with a separate data store for storing configuration values, or with meta-data to identify different categories of configuration values stored within a shared data store.
  • the four entry category array 80 of FIG. 3 is shown for purposes of illustration only, and an embodiment of the disclosed system may have a category array having any appropriate number of entries to reflect the specific set of profiling questions for that embodiment.
  • the POV data value in question is associated by the disclosed system with one and only one of the entries in the category array.
  • FIG. 4 is a flow chart illustrating steps performed by an embodiment of the disclosed system to process the answers to profiling questions.
  • the flow of FIG. 4 is responsive to answers input to the disclosed system for the profiling questions 70 and 72 of FIG. 2 .
  • the disclosed system operates at step 92 to determine whether the POV data value is the same for all users of the system under development. If not, step 92 is followed by step 96 , in which the disclosed system operates to determine whether the POV data value is the same for all locations at which the system is deployed. If not, then a branch of the flow terminates with a display of design guideline 104 , consisting of an indication of a Data Store D: User-specific local store. If at step 96 the disclosed system determines that the POV data value is the same at all locations, then the branch of the flow terminates with a display of design guideline 102 , consisting of an indication of Data Store C: User-specific replicated store.
  • step 92 determines at step 92 that the POV data value is the same for all users, then step 92 is followed by step 94 , in which the disclosed system operates to determine whether the POV data value is the same for all locations in which the system under development may be deployed. If not, then the flow terminates with a display of the design guideline 100 , shown as an indication of the Data Store B: Shared local store. If at step 94 the disclosed system determines that the POV data value is the same for all locations, then the flow terminates with a display of the design guideline 98 , shown as an indication of the Data Store A: Shared replicated store.
  • each design guideline associated with one of the terminating nodes of the flow chart in FIG. 4 may include either: 1) meta-data that is used to tag the POV data value, such as, for example an access control list, 2) an indication or name for a separate data store, and/or 3) code that may be output for use by the programmer.
  • FIG. 5 is a flow chart showing steps of a method for using an embodiment of the disclosed system in the process of developing a distributed software system.
  • the process shown in FIG. 5 illustrates a preferred order of steps to be performed, and requires the users of the disclosed system to give explicit thought to the profiling questions, category array, and profiling flow, in order to insure maximum efficiency of designing and developing a configurable distributed system.
  • a technical leadership team for a software development project establishes high-level system design requirements for security, location distributivity, etc.
  • the technical leadership team uses the system design determined at step 120 to determine needs for different types of configuration data storage.
  • the technical leadership team defines the list of dimensions for the category array, and at step 126 , re-tools the category array into a code flow representation.
  • the technical leadership team “caps” the end of each code flow branch in the flow determined at step 126 with a node containing a design guideline, such as a description of where and how a configuration value matching the profile question answers represented by that flow branch should be stored.
  • a configuration system development team then creates components at step 130 representing the data store indications in the design guidelines defined at step 128 . These components created at step 130 are then usable by other developers to store configuration data in an appropriate place.
  • developers develop their software components using temporary data storage locations for the necessary POV data values, in this case configuration values, such as text files, as “rough drafts” of such components, until the configuration system team finishes developing the configuration subsystem having the data stores associated with the design guidelines in the entries of the category array.
  • developers When the developers are ready to integrate their components into the overall system being developed, they use the disclosed system to traverse the flow for each temporarily stored POV data value at step 134 , and the displayed results of using the disclosed system for such a traversal informs them where and how to store the configuration value of interest at step 136 .
  • Developers may also have a need for further division of configuration value storage, (i.e., for adding another dimension to the category array). In these cases, the developer approaches the configuration subsystem team to re-work the configuration design to meet their needs. Developers use the configuration systems provided to store their configuration data, and remove their “rough draft” storage code. The disclosed system, as illustrated in FIG. 5 , thus assists developers in making important design decisions.
  • FIGS. 2 , 4 and 5 are flowchart illustrations of methods, apparatus (systems) and computer program products according to an embodiment of the invention. It will be understood that each block of the flowchart illustrations, and combinations of blocks in the flowchart illustrations, can be implemented by computer program instructions. These computer program instructions may be loaded onto a computer or other programmable data processing apparatus to produce a machine, such that the instructions which execute on the computer or other programmable data processing apparatus create means for implementing the functions specified in the flowchart block or blocks.
  • These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the flowchart block or blocks.
  • the computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart block or blocks.
  • programs defining the functions of the present invention can be delivered to a computer in many forms; including, but not limited to: (a) information permanently stored on non-writable storage media (e.g. read only memory devices within a computer such as ROM or CD-ROM disks readable by a computer I/O attachment); (b) information alterably stored on writable storage media (e.g. floppy disks and hard drives); or (c) information conveyed to a computer through communication media for example using baseband signaling or broadband signaling techniques, including carrier wave signaling techniques, such as over computer or telephone networks via a modem.
  • non-writable storage media e.g. read only memory devices within a computer such as ROM or CD-ROM disks readable by a computer I/O attachment
  • information alterably stored on writable storage media e.g. floppy disks and hard drives
  • information conveyed to a computer through communication media for example using baseband signaling or broadband signaling techniques, including carrier wave signaling

Abstract

An automated software process for acquiring and distributing information regarding design guidelines relevant to developers of a software system. The system supports developer decisions regarding design guidelines for operational characteristics, such as “points of variability” (POV), of a system under development. Operational characteristics of the system under development are “profiled” through answers to questions reflecting the high level system design. The collected answers indicate a category of operational characteristics associated with a design guideline. A developer obtains the design guidelines appropriate for a given operational characteristic when the answers entered by the developer with regard to that operational characteristic are used to determine one of the elements in the category array. Technical leadership establishes a high-level system design, and determines questions leading to design guidelines for categories of operational characteristics of the system. The design guidelines may then be conveniently accessed by the developer.

Description

    CROSS-REFERENCE TO RELATED APPLICATIONS
  • The present application is a Continuation application under 35 U.S.C. 120 of commonly owned prior application Ser. No. 12/049,335, filed on Mar. 16, 2008 in the name of Thomas Michael Guyette, which is a Continuation of commonly owned prior application Ser. No. 10/736,065, filed Dec. 15, 2003, also in the name of Thomas Michael Guyette, issued May 13, 2008 as U.S. Pat. No. 7,373,635.
  • FIELD OF THE INVENTION
  • The present invention relates generally to software development systems, and more specifically to increasing decision-making efficiency in large-scale software development projects.
  • BACKGROUND OF THE INVENTION
  • In software development communities made up of large numbers of software developers, it is frequently difficult to communicate relevant architectural decisions to developers at times when such information is needed. Specifically, when a developer is ready to develop or significantly modify a program code component, he or she needs immediate assistance in making myriad design decisions according to standards established for the project. Such assistance must either be sought by searching through a potentially large, unwieldy, and potentially out-of-date body of project documents, or from team leadership, who can be bottlenecks to getting an answer quickly. Existing systems for code management in the development process have not addressed this problem adequately.
  • A common example is the developer faced with choosing where to store persistent settings for “points of variability” (“POV data”), such as configuration values, application assembly values, and the like, for a component s/he is developing. Guidance on where and how to store POV data (and the “where-and-how” of other project standards) can be difficult to find, and when the system under development is relatively complex, there are often many different places to store such POV data. Although the design and development process gradually reveals what the POV for a component should be, making the right decision about where to store POV data is not always obvious.
  • Several undesirable consequences may result from this situation. First, different developers may each independently make their own determinations as to where POV data should be stored. This likely leads to a proliferation of disparate, disconnected data stores (e.g., separate text files, relational data stores, etc.) across the system. Second, developers may choose to use existing data stores that have inappropriate characteristics for the specific data to be stored. For example, a poorly chosen store might not be available to the component in certain use cases, or may not be translatable to all supported languages, etc. Developers could spend large amounts of development time learning the characteristics of all data stores just so they can make an informed decision about where to store the POV data for the components they develop.
  • None of these consequences are desirable, and each may result in bad design decisions that must be fixed and re-written, and, in the case where the product has already been shipped and installed in live production, migrated from one POV data store to another as storage decisions are re-made in newer versions of the product.
  • For the above reasons and others, it would be desirable to have a new system for software system development that provides a convenient way for developers to access “development guide” information reflecting architectural decisions about a system under development in a just-in-time fashion—that is, when they need such information to make specific design decisions about their component. Such a system would be applicable to providing convenient, clear, on-demand guidance in determining storage locations for storing POV data, and to making other component design decisions not related to POV data value storage.
  • SUMMARY OF THE INVENTION
  • To address the problems described above and others, a system and method are disclosed that provide an automated software process for acquiring, representing, and distributing information to software developers regarding software system architectural decisions. Using the disclosed system, a development team follows a series of well-defined steps to establish standards for implementation of components in the system. Information about project standards flows from the architects, who determine overall system characteristics and general component needs, into a profiling system that can later be used by developers to assist in making implementation decisions.
  • The disclosed system can be used to facilitate developer decisions regarding storage of operational characteristics, such as POV data, by a component under development, using consistent, deterministic project guidelines. During operation of the disclosed system, the POV needs of the component under development are “profiled” by obtaining answers to a series of questions relevant to the high level system design. For example, the flowchart of questions for a given POV data value may be presented to a developer within a graphical user interface (GUI) presented by the disclosed system. The collected answers to the questions lead the developer to a “node” that can be represented as an element in a category array having dimensions equal in number to the number of questions. For example, a decision tree with two questions, each having two possible answers, translates into a two-dimensional category array with four array elements; a decision tree with three questions, each having two possible answers, translates into a three-dimensional category array with eight array elements, etc. Each element of the category array represents a category of POV data, and contains one or more associated design guidelines. During operation of the disclosed system, a developer obtains the design guidelines appropriate for a given piece of POV data when the answers entered by the developer with regard to that POV data value are used to identify one of the elements in the category array. For example, a design guideline for one of the array elements in the category array may indicate that POV data with that element's characteristics should be stored in a text file on the local hard drive, while another array element may indicate the POV data should be stored using a reusable user preference storage component developed by the system team.
  • In order to set up and use the disclosed system in the context of developing a specific software system, a series of steps is followed. First, the technical leadership team for the project establishes high-level system design requirements. Next, based on these requirements, the technical leadership determines questions leading to design guidelines for categories of POV data of the system. The design guidelines may then be accessed by the developer, or automatically associated with a program component under development as indicated by the answers provided by a developer.
  • Thus there is disclosed a new system for software system development that provides a convenient way for developers to access information reflecting architectural decisions about a program. The disclosed system enables a developer to obtain design guidelines based on the system design when such information is needed during the development process. The disclosed system would further be applicable to providing convenient developer access to information relevant to determining storage locations for POV data of the system under development, such as configuration values.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • In order to facilitate a fuller understanding of the present invention, reference is now made to the appended drawings. These drawings should not be construed as limiting the present invention, but are intended to be exemplary only.
  • FIG. 1 is a block diagram illustrating a topology for a software system under development, shown as a distributed software application;
  • FIG. 2 is a flow chart diagram illustrating questions provided during operation of an embodiment of the disclosed system to obtain a profile for a POV of a system under development;
  • FIG. 3 is an illustration of a category array in an embodiment of the disclosed system; and
  • FIG. 4 is a flow chart diagram illustrating steps performed during operation of an embodiment of the disclosed system to determine an appropriate data store for a POV data value; and
  • FIG. 5 is a flow chart illustrating steps performed to use an embodiment of the disclosed system during the software system development process.
  • DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS
  • Many software programs are designed for coordinated operation across multiple computer systems, and are sometimes described as “distributed” or “enterprise” programs or applications. FIG. 1 illustrates the execution environment of a client-server enterprise application program, for the purpose of describing how the disclosed system can be used to facilitate good software developer design decisions, in particular during development of such distributed software systems.
  • As shown in FIG. 1, a software program under development may, for example, consist of an enterprise application program that can be accessed from, or executed on, multiple computer systems in a networked computer environment. As shown in FIG. 1, an enterprise 10 includes a site A 50 having a server system 30 and associated client systems 32, 34, 36, 38 and 40, some of which may be shared among multiple users. A site B 52 is shown having a server system 12 and associated client systems 14, 16, 18 and 20, and a server system 22 and associated client systems 24, 26 and 28. The server and client systems in FIG. 1 are connected through a communications network. The server and client systems of FIG. 1 may each, for example, include one or more processors and associated program code storage, such as program memory, as well as various input/output (I/O) devices or interfaces. A distributed software program may include components distributed among and executing on some or all of the server and client systems shown in the enterprise 10. Accordingly, operational characteristics, such as, for example, POV data of a software program distributed across the server and client systems of the enterprise 10, might similarly be distributed across such multiple, separate computer systems.
  • During development of a distributed software application operable across the systems shown in the enterprise 10 of FIG. 1, software developers are faced with a variety of decisions regarding POV data of the software components they develop. For example, a developer may be faced with deciding where and/or how certain POV data, such as configuration values, application assembly values, and the like should be stored. Examples of configuration values in distributed programs include user buddy lists for chat applications, various user settings for word processing applications, individual user and shared lists or groups for electronic mail systems, and system configuration values defining security policies, resource allocation, and/or many other system configuration parameters.
  • As will be evident to those skilled in the art, individual POV data values may be user-related values relevant to some or all users, or system-related values relevant to some or all systems. For example, a given user POV data value may be relevant to all users, only users associated with one or more designated server or client systems, or relevant only to an individual user. Similarly, a system configuration value may be relevant to all server and client systems, only certain designated server or client systems, or only an to an individual client or server system. Accordingly, the data store for a POV should be selected in a way that is consistent with the attributes of that piece of POV data. When the software system under development is a distributed software application capable of having components executing on distributed server and client systems, such as those client and server systems shown in the enterprise 10 of FIG. 1, multiple data stores may be defined for storage of configuration values. Such configuration value data stores may each be designed for storage of certain types or categories of configuration values within the system under development. The number of different data stores used for storing configuration values in a distributed software program operating across multiple client and server systems may be relatively large. Accordingly, a developer of a software component for a complex, distributed software program often faces a difficult task when determining the appropriate data store to be used for storing a given configuration value.
  • The disclosed system may be embodied to determine a data store in which a given POV data value should be stored for use by a distributed software component under development. The disclosed system issues a number of questions to a software developer regarding a specific piece of POV data that the developer is interested in determining a data store for. The answers provided by the developer to these questions result in a profile for the piece of POV data. The profile is used by the disclosed system to determine one or more design guidelines for the profiled piece of POV data. For example, in the case of a POV data value consisting of a configuration value, an embodiment of the disclosed system may be used to determine a design guideline consisting of an appropriate data store for the configuration value. In such an embodiment, the data store determined for the configuration value may include any specific type of data storage or data storage location for the configuration value, including but not limited to, any specific type or location of one or more data structures, such as files, databases, text documents, etc. Moreover, an embodiment of the disclosed system may operate to provide design guidelines for storing configuration values in different categories within a shared data store by associating meta-data tags with the configuration values. In this context, the term “meta-data” is used to refer to any specific type of data used to describe the properties of other data. In this case, the meta-data is used to describe and distinguish one or more categories of configuration values sharing a common data store.
  • FIG. 2 illustrates a flow of questions provided by an embodiment of the disclosed system to determine a profile for an POV data value consisting of a configuration value. The questions described by the FIG. 2 flow may be provided through any appropriate graphical user interface (GUI) on a user computer system. Similarly, the answers to the questions described by the FIG. 2 flow may be obtained through any appropriate graphical user interface. Those skilled in the art will recognize that the order of the questions in
  • FIG. 2 is for purposes of explanation only, and that any question order may used. Similarly, the specific questions in FIG. 2 are also given only for purposes of explanation, and the specific questions provided in different embodiments may vary, depending on the overall requirements and system design of the system under development.
  • At step 70 of the embodiment shown in FIG. 2, the disclosed system displays a question to the user as to whether the configuration value is to be maintained as the same value for all users of the system under development, or as a different value for each user. The disclosed system captures the answer provided by the user to the question of step 70, and at step 72 displays a question to the user as to whether the configuration value is to be maintained as the same value for all locations over which the system under development is deployed, or is to be maintained separately in each location. After capturing the answer to the question of step 72, the disclosed system displays a question at step 73 to determine who is to be allowed to read the configuration value. The answer to the question of step 73 is then captured, and the disclosed system displays a question at step 74 to determine who is to be permitted to read the configuration value, and captures the answer to that question. The disclosed system then operates to display a question to determine whether the configuration value is to be editable at step 75, and captures the answer to that question. Thus, as shown for purposes of explanation in FIG. 2, the disclosed system may be embodied to determine whether a given POV data value is the same for all users or different for each user, whether the POV data value is the same in all locations or different for different locations, which users are permitted to read and/or edit the POV data value, and whether the POV data value should be modifiable at development time, installation time, and/or runtime. Questions provided by the disclosed system, such as those shown for purposes of explanation in FIG. 2, are system-specific, and determined by technical leadership.
  • After capturing the user's answers to a set of profiling questions relating to a POV data value of the system under development, such as the questions shown in the flow of FIG. 2, the disclosed system accesses an entry in a category array determined by those answers. The category array has a number of dimensions dependent on the number of possible answers to the set of profiling questions. For example, the number of entries in the category array may equal the set of possible answer combinations to the profiling questions. In a case where the set of profiling questions for an implementation includes two questions, each of which may be answered by “True” or “False,” the number of entries in the category array would be four. Such a category array 80 is shown for purposes of explanation in FIG. 3. The two questions in the set of profiling questions for the category array 80 of FIG. 3 are the questions associated with steps 70 and 72 of FIG. 2.
  • The category array 80 includes a first entry 82 associated with a category of configuration values that are the same for all users, and the same for all locations in the system under development. A second entry 84 is associated with a category of configuration values that are different for each user, but are the same for each location. The entry 86 is associated with a category of configuration values that are the same for each user, but are different for each location, and the entry 88 is associated with a category of configuration values that are the different for each user and different for each location. Each of the entries in the category array 80 of FIG. 3 are associated with one or more design guidelines to be provided to a user with regard to a POV data value that maps to that entry. For example, in the case where the POV data value is a configuration value, each of the entries in the category array 80 may be associated with a separate data store for storing configuration values, or with meta-data to identify different categories of configuration values stored within a shared data store. The four entry category array 80 of FIG. 3 is shown for purposes of illustration only, and an embodiment of the disclosed system may have a category array having any appropriate number of entries to reflect the specific set of profiling questions for that embodiment. In any event, after the user has answered the set of profiling questions, the POV data value in question is associated by the disclosed system with one and only one of the entries in the category array.
  • FIG. 4 is a flow chart illustrating steps performed by an embodiment of the disclosed system to process the answers to profiling questions. The flow of FIG. 4 is responsive to answers input to the disclosed system for the profiling questions 70 and 72 of FIG. 2. After starting at step 90, the disclosed system operates at step 92 to determine whether the POV data value is the same for all users of the system under development. If not, step 92 is followed by step 96, in which the disclosed system operates to determine whether the POV data value is the same for all locations at which the system is deployed. If not, then a branch of the flow terminates with a display of design guideline 104, consisting of an indication of a Data Store D: User-specific local store. If at step 96 the disclosed system determines that the POV data value is the same at all locations, then the branch of the flow terminates with a display of design guideline 102, consisting of an indication of Data Store C: User-specific replicated store.
  • If the disclosed system determines at step 92 that the POV data value is the same for all users, then step 92 is followed by step 94, in which the disclosed system operates to determine whether the POV data value is the same for all locations in which the system under development may be deployed. If not, then the flow terminates with a display of the design guideline 100, shown as an indication of the Data Store B: Shared local store. If at step 94 the disclosed system determines that the POV data value is the same for all locations, then the flow terminates with a display of the design guideline 98, shown as an indication of the Data Store A: Shared replicated store.
  • Thus the flow chart of FIG. 4 represents a flow of answers to the profiling questions of an embodiment of the disclosed system, and the terminating nodes of the flow chart in FIG. 4 represent respective entries within the category array. The disclosed system may operate to display the design guideline associated with the appropriate entry for an POV data value, or may operate to automatically associate the POV data value with the selected design guideline. Accordingly, in the illustrative embodiment, each design guideline associated with one of the terminating nodes of the flow chart in FIG. 4 may include either: 1) meta-data that is used to tag the POV data value, such as, for example an access control list, 2) an indication or name for a separate data store, and/or 3) code that may be output for use by the programmer.
  • FIG. 5 is a flow chart showing steps of a method for using an embodiment of the disclosed system in the process of developing a distributed software system. The process shown in FIG. 5 illustrates a preferred order of steps to be performed, and requires the users of the disclosed system to give explicit thought to the profiling questions, category array, and profiling flow, in order to insure maximum efficiency of designing and developing a configurable distributed system.
  • As shown in FIG. 5, at step 120, a technical leadership team for a software development project establishes high-level system design requirements for security, location distributivity, etc. At step 122, the technical leadership team uses the system design determined at step 120 to determine needs for different types of configuration data storage. At step 124, the technical leadership team defines the list of dimensions for the category array, and at step 126, re-tools the category array into a code flow representation. Next, at step 128, the technical leadership team “caps” the end of each code flow branch in the flow determined at step 126 with a node containing a design guideline, such as a description of where and how a configuration value matching the profile question answers represented by that flow branch should be stored. A configuration system development team then creates components at step 130 representing the data store indications in the design guidelines defined at step 128. These components created at step 130 are then usable by other developers to store configuration data in an appropriate place.
  • At step 132 developers develop their software components using temporary data storage locations for the necessary POV data values, in this case configuration values, such as text files, as “rough drafts” of such components, until the configuration system team finishes developing the configuration subsystem having the data stores associated with the design guidelines in the entries of the category array. When the developers are ready to integrate their components into the overall system being developed, they use the disclosed system to traverse the flow for each temporarily stored POV data value at step 134, and the displayed results of using the disclosed system for such a traversal informs them where and how to store the configuration value of interest at step 136.
  • Developers may also have a need for further division of configuration value storage, (i.e., for adding another dimension to the category array). In these cases, the developer approaches the configuration subsystem team to re-work the configuration design to meet their needs. Developers use the configuration systems provided to store their configuration data, and remove their “rough draft” storage code. The disclosed system, as illustrated in FIG. 5, thus assists developers in making important design decisions.
  • FIGS. 2, 4 and 5 are flowchart illustrations of methods, apparatus (systems) and computer program products according to an embodiment of the invention. It will be understood that each block of the flowchart illustrations, and combinations of blocks in the flowchart illustrations, can be implemented by computer program instructions. These computer program instructions may be loaded onto a computer or other programmable data processing apparatus to produce a machine, such that the instructions which execute on the computer or other programmable data processing apparatus create means for implementing the functions specified in the flowchart block or blocks. These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the flowchart block or blocks. The computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart block or blocks.
  • Those skilled in the art should readily appreciate that programs defining the functions of the present invention can be delivered to a computer in many forms; including, but not limited to: (a) information permanently stored on non-writable storage media (e.g. read only memory devices within a computer such as ROM or CD-ROM disks readable by a computer I/O attachment); (b) information alterably stored on writable storage media (e.g. floppy disks and hard drives); or (c) information conveyed to a computer through communication media for example using baseband signaling or broadband signaling techniques, including carrier wave signaling techniques, such as over computer or telephone networks via a modem.
  • While the invention is described through the above exemplary embodiments, it will be understood by those of ordinary skill in the art that modification to and variation of the illustrated embodiments may be made without departing from the inventive concepts herein disclosed. Moreover, while the preferred embodiments are described in connection with various illustrative program command structures, one skilled in the art will recognize that the system may be embodied using a variety of specific command structures. Accordingly, the invention should not be viewed as limited except by the scope and spirit of the appended claims.

Claims (15)

1. A method, embodied in at least one computer, comprising:
generating, by said at least one computer responsive to a plurality of questions, a category array containing elements, wherein each element in said category array corresponds to a unique set of answers to said plurality of questions regarding an input one of a plurality of configuration values of a software system under development, wherein each element in said category array contains a corresponding one of a plurality of design guidelines, and wherein each of said plurality of design guidelines indicates a name of a corresponding one of a plurality of data stores for storing said plurality of configuration values of said software system under development;
inputting one of said plurality of configuration values of said software system under development;
inputting answers to said plurality of questions, wherein said answers are with regard to said input one of said plurality of configuration values of said software system under development; and
locating, responsive to said input answers and said category array, one of said plurality of design guidelines indicating a name of one of said plurality of data stores for storing said input one of said plurality of configuration values of said software system under development.
2. The method of claim 1, further comprising inputting said plurality of questions.
3. The method of claim 1, wherein said plurality of questions reflect a system design of said software system under development.
4. The method of claim 1, further comprising:
displaying, by said at least one computer, said plurality of questions to at least one developer of said software system under development.
5. The method of claim 1, further comprising:
displaying, by said at least one computer, said name of one of said plurality of data stores for storing said input one of said plurality of configuration values of said software system under development indicated by said located one of said plurality of design guidelines.
6. A system comprising:
a computer readable memory and at least one processor, wherein said computer readable memory has program code stored thereon, and wherein said program code configured to, when executed on said at least one processor:
generate, responsive to a plurality of questions, a category array containing elements, wherein each element in said category array corresponds to a unique set of answers to said plurality of questions regarding an input one of a plurality of configuration values of a software system under development, wherein each element in said category array contains a corresponding one of a plurality of design guidelines, and wherein each of said plurality of design guidelines indicates a name of a corresponding one of a plurality of data stores for storing said plurality of configuration values of said software system under development,
input one of said plurality of configuration values of said software system under development,
input answers to said plurality of questions, wherein said answers are with regard to said input one of said plurality of configuration values of said software system under development, and
locate, responsive to said input answers and said category array, one of said plurality of design guidelines indicating a name of one of said plurality of data stores for storing said input one of said plurality of configuration values of said software system under development.
7. The system of claim 6, wherein said program code is further configured to input said plurality of questions.
8. The system of claim 6, wherein said plurality of questions reflect a system design of said software system under development.
9. The system of claim 6, wherein said program code is further configured to display said plurality of questions to at least one developer of said software system under development.
10. The system of claim 6, wherein said program code is further configured to display said name of one of said plurality of data stores for storing said input one of said plurality of configuration values of said software system under development indicated by said located one of said plurality of design guidelines.
11. A computer program product including a non-signal computer readable medium, wherein said non-signal computer readable medium has program code stored thereon, and wherein said program code is configured to:
generate, responsive to a plurality of questions, a category array containing elements, wherein each element in said category array corresponds to a unique set of answers to said plurality of questions regarding an input one of a plurality of configuration values of a software system under development, wherein each element in said category array contains a corresponding one of a plurality of design guidelines, and wherein each of said plurality of design guidelines indicates a name of a corresponding one of a plurality of data stores for storing said plurality of configuration values of said software system under development;
input one of said plurality of configuration values of said software system under development;
input answers to said plurality of questions, wherein said answers are with regard to said input one of said plurality of configuration values of said software system under development; and
locate, responsive to said input answers and said category array, one of said plurality of design guidelines indicating a name of one of said plurality of data stores for storing said input one of said plurality of configuration values of said software system under development.
12. The computer program product of claim 11, wherein said program code is further configured to input said plurality of questions.
13. The computer program product of claim 11, wherein said plurality of questions reflect a system design of said software system under development.
14. The computer program product of claim 11, wherein said program code is further configured to display said plurality of questions to at least one developer of said software system under development.
15. The computer program product of claim 11, wherein said program code is further configured to display said name of one of said plurality of data stores for storing said input one of said plurality of configuration values of said software system under development indicated by said located one of said plurality of design guidelines.
US13/553,435 2003-12-15 2012-07-19 Developing configurable software systems in a large software development community Abandoned US20120284687A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/553,435 US20120284687A1 (en) 2003-12-15 2012-07-19 Developing configurable software systems in a large software development community

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/736,065 US7373635B2 (en) 2003-12-15 2003-12-15 System and method for efficient development of configurable software systems in a large software development community
US12/049,335 US8250532B2 (en) 2003-12-15 2008-03-16 Efficient development of configurable software systems in a large software development community
US13/553,435 US20120284687A1 (en) 2003-12-15 2012-07-19 Developing configurable software systems in a large software development community

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US12/049,335 Continuation US8250532B2 (en) 2003-12-15 2008-03-16 Efficient development of configurable software systems in a large software development community

Publications (1)

Publication Number Publication Date
US20120284687A1 true US20120284687A1 (en) 2012-11-08

Family

ID=34653772

Family Applications (3)

Application Number Title Priority Date Filing Date
US10/736,065 Active 2025-12-03 US7373635B2 (en) 2003-12-15 2003-12-15 System and method for efficient development of configurable software systems in a large software development community
US12/049,335 Expired - Fee Related US8250532B2 (en) 2003-12-15 2008-03-16 Efficient development of configurable software systems in a large software development community
US13/553,435 Abandoned US20120284687A1 (en) 2003-12-15 2012-07-19 Developing configurable software systems in a large software development community

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US10/736,065 Active 2025-12-03 US7373635B2 (en) 2003-12-15 2003-12-15 System and method for efficient development of configurable software systems in a large software development community
US12/049,335 Expired - Fee Related US8250532B2 (en) 2003-12-15 2008-03-16 Efficient development of configurable software systems in a large software development community

Country Status (1)

Country Link
US (3) US7373635B2 (en)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7617296B2 (en) * 2005-04-22 2009-11-10 Realnetworks, Inc. Data compilation system and method
US7930727B1 (en) * 2006-03-30 2011-04-19 Emc Corporation System and method for measuring and enforcing security policy compliance for software during the development process of the software
US7899694B1 (en) 2006-06-30 2011-03-01 Amazon Technologies, Inc. Generating solutions to problems via interactions with human responders
US8234706B2 (en) * 2006-09-08 2012-07-31 Microsoft Corporation Enabling access to aggregated software security information
US8010936B2 (en) * 2007-06-14 2011-08-30 International Business Machines Corporation System and method for describing method process using guided architectural decisions
KR100911324B1 (en) * 2007-06-22 2009-08-07 삼성전자주식회사 Method for managing variability point and appratus therefor
US9009585B1 (en) * 2008-03-18 2015-04-14 Avaya Technology Llc Software wizard interface
US7996347B2 (en) * 2008-04-04 2011-08-09 International Business Machines Corporation Adaptive information technology solution design and deployment
US8386418B2 (en) * 2009-11-30 2013-02-26 International Business Machines Corporation System and method for an intelligent storage service catalog
US8595685B2 (en) * 2010-04-07 2013-11-26 Accenture Global Services Limited Method and system for software developer guidance based on analyzing project events
US9934002B2 (en) 2013-10-30 2018-04-03 Entit Software Llc Technology recommendation for software environment
US11379188B2 (en) * 2019-11-15 2022-07-05 Foresight Data Systems LLC Plugin-oriented functional programming system configured with software components
CN113220291A (en) * 2021-04-30 2021-08-06 上海适享文化传播有限公司 High-multiplexing code implementation method called through abstract program

Citations (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5063522A (en) * 1988-03-15 1991-11-05 Intellisystems, Inc. Multi-user, artificial intelligent expert system
US5644686A (en) * 1994-04-29 1997-07-01 International Business Machines Corporation Expert system and method employing hierarchical knowledge base, and interactive multimedia/hypermedia applications
US5960419A (en) * 1992-10-05 1999-09-28 Expert Systems Publishing Co. Authoring tool for computer implemented decision management system
US6018627A (en) * 1997-09-22 2000-01-25 Unisys Corp. Tool-independent system for application building in an object oriented development environment with data stored in repository in OMG compliant UML representation
US6236994B1 (en) * 1997-10-21 2001-05-22 Xerox Corporation Method and apparatus for the integration of information and knowledge
US6279155B1 (en) * 1998-04-08 2001-08-21 Dell Usa, L.P. Method of installing software on and/or testing a computer system
US20020046394A1 (en) * 1999-12-06 2002-04-18 Sung-Hee Do Method and apparatus for producing software
US6405364B1 (en) * 1999-08-31 2002-06-11 Accenture Llp Building techniques in a development architecture framework
US20020078337A1 (en) * 2000-08-29 2002-06-20 Jean-Jacques Moreau Method and device for configuring an electronic document processing peripheral in a communication network
US20030154121A1 (en) * 1996-04-10 2003-08-14 Paul M. Konnersman Computer-based system for work processes that consist of interdependent decisions involving one or more participants
US6615258B1 (en) * 1997-09-26 2003-09-02 Worldcom, Inc. Integrated customer interface for web based data management
US20030177047A1 (en) * 2002-02-04 2003-09-18 Buckley Michael E. Method and system for decision oriented systems engineering
US20030182403A1 (en) * 2002-01-15 2003-09-25 De Bonet Jeremy S. System and method for program configuration
US6631361B1 (en) * 1998-10-02 2003-10-07 Ncr Corporation Method and apparatus for providing explanations of automated decisions applied to user data
US6643660B1 (en) * 2000-10-30 2003-11-04 Toxweb, Inc. Technique for specifying the parameters of complex technical studies by using a decision tree
US20030225555A1 (en) * 2002-05-31 2003-12-04 Lalitha Gurumoorthy Component system design method and apparatus
US6725447B1 (en) * 1996-05-31 2004-04-20 Nellcor Puritan Bennett Incorporated System and method for graphic creation of a medical logical module in the arden syntax file format
US20040117765A1 (en) * 2002-12-16 2004-06-17 Ming Chan System and method for evaluating and executing hierarchies of rules
US6871340B1 (en) * 1999-05-21 2005-03-22 Lucent Technologies Inc. System and method for generating software tools
US20050132253A1 (en) * 2003-11-26 2005-06-16 International Business Machines Corporation Diagnosing faults and errors from a data repository using directed graphs
US20060117294A1 (en) * 2002-08-29 2006-06-01 Crossmarx B.V. System and method for executing and building a software application

Patent Citations (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5063522A (en) * 1988-03-15 1991-11-05 Intellisystems, Inc. Multi-user, artificial intelligent expert system
US5960419A (en) * 1992-10-05 1999-09-28 Expert Systems Publishing Co. Authoring tool for computer implemented decision management system
US5644686A (en) * 1994-04-29 1997-07-01 International Business Machines Corporation Expert system and method employing hierarchical knowledge base, and interactive multimedia/hypermedia applications
US20030154121A1 (en) * 1996-04-10 2003-08-14 Paul M. Konnersman Computer-based system for work processes that consist of interdependent decisions involving one or more participants
US6877153B2 (en) * 1996-04-10 2005-04-05 Paul M. Konnersman Computer-based system for work processes that consist of interdependent decisions involving one or more participants
US6725447B1 (en) * 1996-05-31 2004-04-20 Nellcor Puritan Bennett Incorporated System and method for graphic creation of a medical logical module in the arden syntax file format
US6018627A (en) * 1997-09-22 2000-01-25 Unisys Corp. Tool-independent system for application building in an object oriented development environment with data stored in repository in OMG compliant UML representation
US6615258B1 (en) * 1997-09-26 2003-09-02 Worldcom, Inc. Integrated customer interface for web based data management
US6236994B1 (en) * 1997-10-21 2001-05-22 Xerox Corporation Method and apparatus for the integration of information and knowledge
US6279155B1 (en) * 1998-04-08 2001-08-21 Dell Usa, L.P. Method of installing software on and/or testing a computer system
US6631361B1 (en) * 1998-10-02 2003-10-07 Ncr Corporation Method and apparatus for providing explanations of automated decisions applied to user data
US6871340B1 (en) * 1999-05-21 2005-03-22 Lucent Technologies Inc. System and method for generating software tools
US6405364B1 (en) * 1999-08-31 2002-06-11 Accenture Llp Building techniques in a development architecture framework
US20020046394A1 (en) * 1999-12-06 2002-04-18 Sung-Hee Do Method and apparatus for producing software
US7546577B2 (en) * 1999-12-06 2009-06-09 Axiomatic Design Software, Inc. Method and apparatus for producing software
US20020078337A1 (en) * 2000-08-29 2002-06-20 Jean-Jacques Moreau Method and device for configuring an electronic document processing peripheral in a communication network
US6643660B1 (en) * 2000-10-30 2003-11-04 Toxweb, Inc. Technique for specifying the parameters of complex technical studies by using a decision tree
US20030182403A1 (en) * 2002-01-15 2003-09-25 De Bonet Jeremy S. System and method for program configuration
US20030177047A1 (en) * 2002-02-04 2003-09-18 Buckley Michael E. Method and system for decision oriented systems engineering
US20030225555A1 (en) * 2002-05-31 2003-12-04 Lalitha Gurumoorthy Component system design method and apparatus
US20060117294A1 (en) * 2002-08-29 2006-06-01 Crossmarx B.V. System and method for executing and building a software application
US20040117765A1 (en) * 2002-12-16 2004-06-17 Ming Chan System and method for evaluating and executing hierarchies of rules
US7065745B2 (en) * 2002-12-16 2006-06-20 Sun Microsystems, Inc. System and method for evaluating and executing hierarchies of rules
US20050132253A1 (en) * 2003-11-26 2005-06-16 International Business Machines Corporation Diagnosing faults and errors from a data repository using directed graphs
US7171585B2 (en) * 2003-11-26 2007-01-30 International Business Machines Corporation Diagnosing faults and errors from a data repository using directed graphs

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
Ran et al., "Design Decision Trees," 1996, IEEE, pg. 172-175. *
Walz et al., "Inside a software design team: knowledge acquisition, sharing, and integration," 1993, ACM, pg. 63-77. *
Whitley, Edgar A., "Expert Systems: True support for the process of decision making," 1990, ACM, pg. 123-140. *

Also Published As

Publication number Publication date
US20050132324A1 (en) 2005-06-16
US7373635B2 (en) 2008-05-13
US8250532B2 (en) 2012-08-21
US20080163158A1 (en) 2008-07-03

Similar Documents

Publication Publication Date Title
US8250532B2 (en) Efficient development of configurable software systems in a large software development community
US20230359595A1 (en) Managing and classifying assets in an information technology environment using tags
US10860548B2 (en) Generating and reusing transformations for evolving schema mapping
US20230409818A1 (en) Database model which provides management of custom fields and methods and apparatus therfor
CN109121436B (en) Method for augmenting, exploring, and maintaining a hierarchy of projects
US5721911A (en) Mechanism for metadata for an information catalog system
US7440978B2 (en) Method and system for synchronizing multiple user revisions, updating other strategy maps in the databases that are associated with the balanced scorecard
US8726236B2 (en) Determining context specific content
JP4571746B2 (en) System and method for selectively defining access to application functions
CN100580675C (en) Method and apparatus to access heterogeneous configuration management database repositories
US8725760B2 (en) Semantic terminology importer
WO2008134203A1 (en) Enterprise-wide information management system
US20130018848A1 (en) Determining and presenting provenance and lineage for content in a content management system
CN111427865A (en) Method and device for managing objects of database
JP2005523515A (en) Method and system for managing a computer system
US6907434B2 (en) Message analysis tool
Moore Performance Measures for Knowledge
GB2463545A (en) Rule creation for an apparatus including a Configuration Management Database (CMDB)
US20140280385A1 (en) Hierarchical intersections
US8949787B2 (en) Locating isolation points in an application under multi-tenant environment
EP1304640A2 (en) System and method for using web based wizards and tools
US11809398B1 (en) Methods and systems for connecting data with non-standardized schemas in connected graph data exchanges
US10762090B2 (en) Software discovery based on metadata analysis
CN114491195A (en) Feature data identification method and device, electronic equipment and storage medium
CN116643830A (en) Role display method and device and computer readable storage medium

Legal Events

Date Code Title Description
STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION