WO2016153481A1 - Context-based feature management - Google Patents

Context-based feature management Download PDF

Info

Publication number
WO2016153481A1
WO2016153481A1 PCT/US2015/022111 US2015022111W WO2016153481A1 WO 2016153481 A1 WO2016153481 A1 WO 2016153481A1 US 2015022111 W US2015022111 W US 2015022111W WO 2016153481 A1 WO2016153481 A1 WO 2016153481A1
Authority
WO
WIPO (PCT)
Prior art keywords
feature
available
available features
context state
current context
Prior art date
Application number
PCT/US2015/022111
Other languages
French (fr)
Inventor
Hugh HAMILL
Original Assignee
Hewlett Packard Enterprise Development Lp
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 Hewlett Packard Enterprise Development Lp filed Critical Hewlett Packard Enterprise Development Lp
Priority to PCT/US2015/022111 priority Critical patent/WO2016153481A1/en
Publication of WO2016153481A1 publication Critical patent/WO2016153481A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting

Definitions

  • Feature management in an application allows for different functionality to be enabled and disabled in an application. This allows for the application, for example, to support different data architectures, to perform tests, and/or disable broken and/or incomplete features without necessarily needing to modify the application's user interface.
  • FIG. 1 is a block diagram of an example feature management device consistent with disclosed implementations
  • FIG. 2 is a flowchart of an embodiment of a method for feature management consistent with disclosed implementations.
  • FIG. 3 is a block diagram of a system for feature management consistent with disclosed implementations.
  • machine-readable storage medium refers to any electronic, magnetic, optical, or other physical storage device that stores executable instructions or other data (e.g., a hard disk drive, random access memory, flash memory, etc.).
  • FIG. 1 is a block diagram of an example feature management device 100 consistent with disclosed implementations.
  • Feature management device 100 may comprise a processor 1 10 and a non-transitory machine-readable storage medium 120.
  • Feature management device 100 may comprise a computing device such as a server computer, a desktop computer, a laptop computer, a handheld computing device, a mobile phone, or the like.
  • Processor 1 10 may comprise a central processing unit (CPU), a semiconductor-based microprocessor, or any other hardware device suitable for retrieval and execution of instructions stored in machine-readable storage medium 120.
  • processor 1 10 may fetch, decode, and execute a plurality of create feature map instructions 130, identify context state instructions 132, determine available feature instructions 134 and execute feature instructions 136 to implement the functionality described in detail below.
  • Executable instructions such as create feature map instructions 130, identify context state instructions 132, determine available feature instructions 134 and execute feature instructions 136 may be stored in any portion and/or component of machine-readable storage medium 120.
  • the machine-readable storage medium 120 may comprise both volatile and/or nonvolatile memory and data storage components. Volatile components are those that do not retain data values upon loss of power. Nonvolatile components are those that retain data upon a loss of power.
  • the machine-readable storage medium 120 may comprise, for example, random access memory (RAM), read-only memory (ROM), hard disk drives, solid- state drives, USB flash drives, memory cards accessed via a memory card reader, floppy disks accessed via an associated floppy disk drive, optical discs accessed via an optical disc drive, magnetic tapes accessed via an appropriate tape drive, and/or other memory components, and/or a combination of any two and/or more of these memory components.
  • the RAM may comprise, for example, static random access memory (SRAM), dynamic random access memory (DRAM), and/or magnetic random access memory (MRAM) and other such devices.
  • the ROM may comprise, for example, a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), and/or other like memory device.
  • PROM programmable read-only memory
  • EPROM erasable programmable read-only memory
  • EEPROM electrically erasable programmable read-only memory
  • Create feature map instructions 130 may create a feature map of a plurality of available features for an application, wherein each of the plurality of available features is associated with at least one context state.
  • An application may comprise a plurality of feature option points where one of several subroutines and/or algorithms may be available to perform a functionality. For example, an application may retrieve data from databases comprising different access credentials, schemas, and/or architectures. For another example, the application may use different algorithms to calculate a mathematical value, such as generating a checksum.
  • the different available features may also comprise incomplete, disabled, and/or malfunctioning subroutines and/or algorithms in the application.
  • the application features may each comprise a pre-compiled software class.
  • each application feature available at a feature option point may be provided in software code that is compiled at the same time as a main execution path of the application and/or that is linked into the application prior to and/or at execution time.
  • application features may be implemented in interpreted code that does not need to be compiled prior to execution.
  • the features may comprise instantiated objects of a software class and/or object.
  • a class may comprise an extensible program-code-template for creating objects.
  • the class may provide initial values for state (member variables) and implementations of behavior (e.g., functions and/or methods).
  • the resulting object may be referred to as an instance of the class.
  • Identify context state instructions 132 may identify a current context state associated with the application at a feature option point.
  • context states may comprise a user identifier, a session identifier, a user group, an environment variable, and/or an application mode.
  • User identifier and/or user group contexts may allow the application to execute a feature based on the identity of a user of the application and/or of a group associated with the user.
  • a user may comprise a developer or quality-assurance user.
  • Such a context may be associated with features that provide additional debugging information while executing.
  • a guest user may receive reduced functionality and/or lower priority for resources.
  • a user who is a member of an internal employee group may be granted access to corporate resources by the feature that a non-employee group user may not be permitted to access by the feature(s).
  • Session identifier contexts may comprise information about a current execution of the application.
  • the session identifier may be associated with a particular thread in a multi-threaded application and/or a particular network/communication session for the application.
  • the session identifier may allow the application, for example, to use a higher degree of encryption for communications associated with a public network and a lower degree and/or no encryption for communications associated with a corporate network.
  • Environment variable contexts may comprise information such as application version, operating system, hardware and/or other application/software availability, date, time, and/or location information.
  • a beta version of the application may enable new functionality by adding additional features to a feature option point compared to a previous versions.
  • a software availability context may enable additional features in a user interface of the application if an add-on to the application is installed.
  • An application mode context may comprise settings and/or configurations associated with the execution of the application. For example, different features may be associated with different display resolutions for a user interface for the application. For another example, different features may be used when an application has an Internet connection than when the application is executing in an offline mode.
  • the context types may be compared and/or ordered.
  • an offline version application mode context may take priority over a session identifier context that selects a feature associated with a degree of encryption for network communications.
  • a beta version environment variable context may be combined with a user identifier and/or user group context that grants only some users/groups access to new features associated with the beta version of the application.
  • Determine available feature instructions 134 may determine whether at least one of the plurality of available features is associated with the current context state.
  • the application may compare the context state to the feature map for the current feature option point.
  • the feature option point may comprise the application needing to connect to a database to retrieve some data.
  • Environment variable context states may identify each of a plurality of available databases that may be able to provide the data and may be enabled or disabled based on various context factors. Such factors may comprise, for example, a load on the database, latency in communication with the database, availability of login credentials for the database, compatibility with the type of database (e.g., Oracle, MySQL, PostgreSQL, etc.).
  • determining whether an available feature is associated with the current context state may comprise requesting a copy of an instantiated reference object of the pre-compiled software class associated with the current context state for the feature option point.
  • the application may create a copy of an already instantiated object that comprises variables for logging into a MySQL database based on an environment variable context indicating that the MySQL database is a preferred and available data source.
  • Execute feature instructions 136 may, in response to determining that at least one of the plurality of available features is associated with the current context state, execute the at least one of the plurality of available features.
  • the application may execute a method associated with the software class associated with an instantiated object of that class, such as by calling a "connect" method in a database connection class object.
  • FIG. 2 is a flowchart of an embodiment of a method 200 for feature management consistent with disclosed implementations. Although execution of method 200 is described below with reference to the components of feature management device 100, other suitable components for execution of method 200 may be used.
  • Method 200 may start in block 205 and proceed to block 210 where device 100 may create a feature map for an application comprising a plurality of available features for each of a plurality of feature option points wherein each of the plurality of available features is associated with at least one context state.
  • creating the feature map may comprise designating at least one of the plurality of available features as a default feature for the first feature option point.
  • creating the feature map may comprise instantiating a reference object of a pre-compiled software class for each of the plurality of available features.
  • create feature map instructions 130 may create a feature map of a plurality of available features for an application, wherein each of the plurality of available features is associated with at least one context state.
  • An application may comprise a plurality of feature option points where one of several subroutines and/or algorithms may be available to perform a functionality. For example, an application may retrieve data from databases comprising different access credentials, schemas, and/or architectures. For another example, the application may use different algorithms to calculate a mathematical value, such as generating a checksum.
  • the different available features may also comprise incomplete, disabled, and/or malfunctioning subroutines and/or algorithms in the application.
  • the application features may each comprise a pre-compiled software class.
  • each application feature available at a feature option point may be provided in software code that is compiled at the same time as a main execution path of the application and/or that is linked into the application prior to and/or at execution time.
  • application features may be implemented in interpreted code that does not need to be compiled prior to execution.
  • the features may comprise instantiated objects of a software class and/or object.
  • a class may comprise an extensible program-code-template for creating objects.
  • the class may provide initial values for state (member variables) and implementations of behavior (e.g., functions and/or methods).
  • the resulting object may be referred to as an instance of the class.
  • creating the feature map may comprise associating at least one second available feature of the plurality of available features with the current context state. For example, after an application has been running for a period of time, a new feature may be assigned to a context state at a feature option point. Such a new feature may comprise, for example, a memory clean up function.
  • Method 200 may proceed to block 215 where device 100 may identify a current context state at a feature option point.
  • identify context state instructions 132 may identify a current context state associated with the application at a feature option point.
  • context states may comprise a user identifier, a session identifier, a user group, an environment variable, and/or an application mode.
  • the context types may be compared and/or ordered.
  • an offline version application mode context may take priority over a session identifier context that selects a feature associated with a degree of encryption for network communications.
  • a beta version environment variable context may be combined with a user identifier and/or user group context that grants only some users/groups access to new features associated with the beta version of the application.
  • Method 200 may proceed to block 220 where device 100 may determine whether the current context state is associated with a first available feature of the plurality of available features for the first feature option point. For example, determine available feature instructions 134 may determine whether at least one of the plurality of available features is associated with the current context state.
  • the application may compare the context state to the feature map for the current feature option point.
  • the feature option point may comprise the application needing to connect to a database to retrieve some data.
  • Environment variable context states may identify each of a plurality of available databases that may be able to provide the data and may be enabled or disabled based on various context factors. Such factors may comprise, for example, a load on the database, latency in communication with the database, availability of login credentials for the database, compatibility with the type of database (e.g., Oracle, MySQL, PostgreSQL, etc.).
  • determining whether an available feature is associated with the current context state may comprise requesting a copy of an instantiated reference object of the pre-compiled software class associated with the current context state for the feature option point.
  • the application may create a copy of an already instantiated object that comprises variables for logging into a MySQL database based on an environment variable context indicating that the MySQL database is a preferred and available data source.
  • method 200 may proceed to block 225 where device 100 may execute the first available feature of the plurality of available features for the first feature option point.
  • execute feature instructions 136 may, in response to determining that at least one of the plurality of available features is associated with the current context state, execute the at least one of the plurality of available features.
  • the application may execute a method associated with the software class associated with an instantiated object of that class, such as by calling a "connect" method in a database connection class object.
  • method 200 may proceed to block 230 where device 100 may execute the default feature for the first feature option point.
  • execute feature instructions 136 may receive a copy of a reference object of a default feature and execute a method of the associated software class.
  • the default feature may, for example, be a log message and/or a debugging message to inform a developer that an unknown context state was encountered.
  • the default feature may comprise a feature associated with at least one of the other context states for which features have been designated.
  • Method 200 may then end at block 240.
  • FIG. 3 is a block diagram of a system 300 for feature management consistent with disclosed implementations.
  • System 300 may comprise a computing device 310 comprising a feature management engine 320 and an application engine 330.
  • feature management engine 320 and application engine 330 may be associated with multiple computing devices.
  • Computing device 310 may comprise, for example, a general and/or special purpose computer, server, mainframe, desktop, laptop, tablet, smart phone, game console, and/or any other system capable of providing computing capability consistent with providing the implementations described herein.
  • Feature management engine 320 and application engine 330 may each comprise, for example, instructions stored a machine readable medium executable by a processor, logic circuitry, and/or other implementations of hardware and/or software.
  • feature management engine 320 may create a feature map 325 for an application comprising a plurality of available features for each of a plurality of feature option points. Each of the plurality of available features may be associated with at least one context state associated with application engine 330. Creating the feature map may comprise, for example, instantiating a reference object of a pre-compiled software class for each of the each of the plurality of available features, and designating at least one of the plurality of available features as a default feature for each of the plurality of feature option points.
  • application engine 330 may determine whether the application has reached a first feature option point of the plurality of feature option points. In response to determining that the application has reached the first feature option point of the plurality of feature option points, application engine 330 may identify a current context state 335.
  • current context state 335 may comprise a user identifier, a session identifier, a user group, an environment variable, and/or an application mode.
  • Application engine 330 may determine whether current context state 335 is associated with a first available feature of the plurality of available features for the first feature option point. In some embodiments, determining whether the current context state is associated with the first available feature of the plurality of available features for the first feature option point may comprise requesting a copy of the reference object of the pre-compiled software class for the first available feature from feature map 325 of feature management engine 320. In response to determining that the current context state is associated with the first available feature of the plurality of available features for the first feature option point, application engine 330 may execute the first available feature of the plurality of available features for the first feature option point.
  • application engine 330 may execute the default feature for the first feature option point.
  • the disclosed examples may include systems, devices, computer- readable storage media, and methods for feature management. For purposes of explanation, certain examples are described with reference to the components illustrated in FIGs. 1 -3. The functionality of the illustrated components may overlap, however, and may be present in a fewer or greater number of elements and components. Further, all or part of the functionality of illustrated elements may coexist or be distributed among several geographically dispersed locations. Moreover, the disclosed examples may be implemented in various environments and are not limited to the illustrated examples.

Abstract

Examples disclosed herein comprise feature management instructions to create a feature map of a plurality of available features for an application, wherein each of the plurality of available features is associated with at least one context state, identify a current context state associated with the application at a feature option point, determine whether at least one of the plurality of available features is associated with the current context state, and in response to determining that at least one of the plurality of available features is associated with the current context state, execute the at least one of the plurality of available features.

Description

CONTEXT-BASED FEATURE MANAGEMENT
BACKGROUND
[0001 ] Feature management in an application allows for different functionality to be enabled and disabled in an application. This allows for the application, for example, to support different data architectures, to perform tests, and/or disable broken and/or incomplete features without necessarily needing to modify the application's user interface.
BRIEF DESCRIPTION OF THE DRAWINGS
[0002] In the accompanying drawings, like numerals refer to like components or blocks. The following detailed description references the drawings, wherein:
[0003] FIG. 1 is a block diagram of an example feature management device consistent with disclosed implementations;
[0004] FIG. 2 is a flowchart of an embodiment of a method for feature management consistent with disclosed implementations; and
[0005] FIG. 3 is a block diagram of a system for feature management consistent with disclosed implementations.
DETAILED DESCRIPTION
[0006] As described above, feature management enables an application developer to control which functional features are performed at different points in the application's execution. These feature option points may allow for different behaviors based on a current context for the application, the application's environment, and/or a user of the application. [0007] In the description that follows, reference is made to the term, "machine- readable storage medium." As used herein, the term "machine-readable storage medium" refers to any electronic, magnetic, optical, or other physical storage device that stores executable instructions or other data (e.g., a hard disk drive, random access memory, flash memory, etc.).
[0008] Referring now to the drawings, FIG. 1 is a block diagram of an example feature management device 100 consistent with disclosed implementations. Feature management device 100 may comprise a processor 1 10 and a non-transitory machine-readable storage medium 120. Feature management device 100 may comprise a computing device such as a server computer, a desktop computer, a laptop computer, a handheld computing device, a mobile phone, or the like.
[0009] Processor 1 10 may comprise a central processing unit (CPU), a semiconductor-based microprocessor, or any other hardware device suitable for retrieval and execution of instructions stored in machine-readable storage medium 120. In particular, processor 1 10 may fetch, decode, and execute a plurality of create feature map instructions 130, identify context state instructions 132, determine available feature instructions 134 and execute feature instructions 136 to implement the functionality described in detail below.
[0010] Executable instructions such as create feature map instructions 130, identify context state instructions 132, determine available feature instructions 134 and execute feature instructions 136 may be stored in any portion and/or component of machine-readable storage medium 120. The machine-readable storage medium 120 may comprise both volatile and/or nonvolatile memory and data storage components. Volatile components are those that do not retain data values upon loss of power. Nonvolatile components are those that retain data upon a loss of power.
[001 1 ] The machine-readable storage medium 120 may comprise, for example, random access memory (RAM), read-only memory (ROM), hard disk drives, solid- state drives, USB flash drives, memory cards accessed via a memory card reader, floppy disks accessed via an associated floppy disk drive, optical discs accessed via an optical disc drive, magnetic tapes accessed via an appropriate tape drive, and/or other memory components, and/or a combination of any two and/or more of these memory components. In addition, the RAM may comprise, for example, static random access memory (SRAM), dynamic random access memory (DRAM), and/or magnetic random access memory (MRAM) and other such devices. The ROM may comprise, for example, a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), and/or other like memory device.
[0012] Create feature map instructions 130 may create a feature map of a plurality of available features for an application, wherein each of the plurality of available features is associated with at least one context state. An application may comprise a plurality of feature option points where one of several subroutines and/or algorithms may be available to perform a functionality. For example, an application may retrieve data from databases comprising different access credentials, schemas, and/or architectures. For another example, the application may use different algorithms to calculate a mathematical value, such as generating a checksum. The different available features may also comprise incomplete, disabled, and/or malfunctioning subroutines and/or algorithms in the application.
[0013] The application features may each comprise a pre-compiled software class. For example, each application feature available at a feature option point may be provided in software code that is compiled at the same time as a main execution path of the application and/or that is linked into the application prior to and/or at execution time. In some embodiments, application features may be implemented in interpreted code that does not need to be compiled prior to execution.
[0014] In some embodiments, the features may comprise instantiated objects of a software class and/or object. In object-oriented programming, for example, a class may comprise an extensible program-code-template for creating objects. The class may provide initial values for state (member variables) and implementations of behavior (e.g., functions and/or methods). When an object is created for the class, the resulting object may be referred to as an instance of the class.
[0015] Identify context state instructions 132 may identify a current context state associated with the application at a feature option point. For example, context states may comprise a user identifier, a session identifier, a user group, an environment variable, and/or an application mode.
[0016] User identifier and/or user group contexts may allow the application to execute a feature based on the identity of a user of the application and/or of a group associated with the user. For example, a user may comprise a developer or quality-assurance user. Such a context may be associated with features that provide additional debugging information while executing. For another example, a guest user may receive reduced functionality and/or lower priority for resources. A user who is a member of an internal employee group may be granted access to corporate resources by the feature that a non-employee group user may not be permitted to access by the feature(s).
[0017] Session identifier contexts may comprise information about a current execution of the application. For example, the session identifier may be associated with a particular thread in a multi-threaded application and/or a particular network/communication session for the application. The session identifier may allow the application, for example, to use a higher degree of encryption for communications associated with a public network and a lower degree and/or no encryption for communications associated with a corporate network.
[0018] Environment variable contexts may comprise information such as application version, operating system, hardware and/or other application/software availability, date, time, and/or location information. For example, a beta version of the application may enable new functionality by adding additional features to a feature option point compared to a previous versions. For another example, a software availability context may enable additional features in a user interface of the application if an add-on to the application is installed. [0019] An application mode context may comprise settings and/or configurations associated with the execution of the application. For example, different features may be associated with different display resolutions for a user interface for the application. For another example, different features may be used when an application has an Internet connection than when the application is executing in an offline mode.
[0020] In some embodiments, the context types may be compared and/or ordered. For example, an offline version application mode context may take priority over a session identifier context that selects a feature associated with a degree of encryption for network communications. For another example, a beta version environment variable context may be combined with a user identifier and/or user group context that grants only some users/groups access to new features associated with the beta version of the application.
[0021 ] Determine available feature instructions 134 may determine whether at least one of the plurality of available features is associated with the current context state. The application may compare the context state to the feature map for the current feature option point. For example, the feature option point may comprise the application needing to connect to a database to retrieve some data. Environment variable context states may identify each of a plurality of available databases that may be able to provide the data and may be enabled or disabled based on various context factors. Such factors may comprise, for example, a load on the database, latency in communication with the database, availability of login credentials for the database, compatibility with the type of database (e.g., Oracle, MySQL, PostgreSQL, etc.).
[0022] In some embodiments, determining whether an available feature is associated with the current context state may comprise requesting a copy of an instantiated reference object of the pre-compiled software class associated with the current context state for the feature option point. For example, the application may create a copy of an already instantiated object that comprises variables for logging into a MySQL database based on an environment variable context indicating that the MySQL database is a preferred and available data source.
[0023] Execute feature instructions 136 may, in response to determining that at least one of the plurality of available features is associated with the current context state, execute the at least one of the plurality of available features. For example, the application may execute a method associated with the software class associated with an instantiated object of that class, such as by calling a "connect" method in a database connection class object.
[0024] FIG. 2 is a flowchart of an embodiment of a method 200 for feature management consistent with disclosed implementations. Although execution of method 200 is described below with reference to the components of feature management device 100, other suitable components for execution of method 200 may be used.
[0025] Method 200 may start in block 205 and proceed to block 210 where device 100 may create a feature map for an application comprising a plurality of available features for each of a plurality of feature option points wherein each of the plurality of available features is associated with at least one context state. In some embodiments, creating the feature map may comprise designating at least one of the plurality of available features as a default feature for the first feature option point. For example, creating the feature map may comprise instantiating a reference object of a pre-compiled software class for each of the plurality of available features.
[0026] In some embodiments, create feature map instructions 130 may create a feature map of a plurality of available features for an application, wherein each of the plurality of available features is associated with at least one context state. An application may comprise a plurality of feature option points where one of several subroutines and/or algorithms may be available to perform a functionality. For example, an application may retrieve data from databases comprising different access credentials, schemas, and/or architectures. For another example, the application may use different algorithms to calculate a mathematical value, such as generating a checksum. The different available features may also comprise incomplete, disabled, and/or malfunctioning subroutines and/or algorithms in the application.
[0027] The application features may each comprise a pre-compiled software class. For example, each application feature available at a feature option point may be provided in software code that is compiled at the same time as a main execution path of the application and/or that is linked into the application prior to and/or at execution time. In some embodiments, application features may be implemented in interpreted code that does not need to be compiled prior to execution.
[0028] In some embodiments, the features may comprise instantiated objects of a software class and/or object. In object-oriented programming, for example, a class may comprise an extensible program-code-template for creating objects. The class may provide initial values for state (member variables) and implementations of behavior (e.g., functions and/or methods). When an object is created for the class, the resulting object may be referred to as an instance of the class.
[0029] In some embodiments, creating the feature map may comprise associating at least one second available feature of the plurality of available features with the current context state. For example, after an application has been running for a period of time, a new feature may be assigned to a context state at a feature option point. Such a new feature may comprise, for example, a memory clean up function.
[0030] Method 200 may proceed to block 215 where device 100 may identify a current context state at a feature option point. For example, identify context state instructions 132 may identify a current context state associated with the application at a feature option point. For example, context states may comprise a user identifier, a session identifier, a user group, an environment variable, and/or an application mode.
[0031 ] In some embodiments, the context types may be compared and/or ordered. For example, an offline version application mode context may take priority over a session identifier context that selects a feature associated with a degree of encryption for network communications. For another example, a beta version environment variable context may be combined with a user identifier and/or user group context that grants only some users/groups access to new features associated with the beta version of the application.
[0032] Method 200 may proceed to block 220 where device 100 may determine whether the current context state is associated with a first available feature of the plurality of available features for the first feature option point. For example, determine available feature instructions 134 may determine whether at least one of the plurality of available features is associated with the current context state. The application may compare the context state to the feature map for the current feature option point. For example, the feature option point may comprise the application needing to connect to a database to retrieve some data. Environment variable context states may identify each of a plurality of available databases that may be able to provide the data and may be enabled or disabled based on various context factors. Such factors may comprise, for example, a load on the database, latency in communication with the database, availability of login credentials for the database, compatibility with the type of database (e.g., Oracle, MySQL, PostgreSQL, etc.).
[0033] In some embodiments, determining whether an available feature is associated with the current context state may comprise requesting a copy of an instantiated reference object of the pre-compiled software class associated with the current context state for the feature option point. For example, the application may create a copy of an already instantiated object that comprises variables for logging into a MySQL database based on an environment variable context indicating that the MySQL database is a preferred and available data source.
[0034] In response to determining that the current context state is associated with the first available feature of the plurality of available features for the first feature option point, method 200 may proceed to block 225 where device 100 may execute the first available feature of the plurality of available features for the first feature option point. For example, execute feature instructions 136 may, in response to determining that at least one of the plurality of available features is associated with the current context state, execute the at least one of the plurality of available features. For example, the application may execute a method associated with the software class associated with an instantiated object of that class, such as by calling a "connect" method in a database connection class object.
[0035] In response to determining that the current context state is not associated with the first available feature of the plurality of available features, method 200 may proceed to block 230 where device 100 may execute the default feature for the first feature option point. For example, execute feature instructions 136 may receive a copy of a reference object of a default feature and execute a method of the associated software class. The default feature may, for example, be a log message and/or a debugging message to inform a developer that an unknown context state was encountered. In some embodiments, the default feature may comprise a feature associated with at least one of the other context states for which features have been designated.
[0036] Method 200 may then end at block 240.
[0037] FIG. 3 is a block diagram of a system 300 for feature management consistent with disclosed implementations. System 300 may comprise a computing device 310 comprising a feature management engine 320 and an application engine 330. In some embodiments, feature management engine 320 and application engine 330 may be associated with multiple computing devices. Computing device 310 may comprise, for example, a general and/or special purpose computer, server, mainframe, desktop, laptop, tablet, smart phone, game console, and/or any other system capable of providing computing capability consistent with providing the implementations described herein. Feature management engine 320 and application engine 330 may each comprise, for example, instructions stored a machine readable medium executable by a processor, logic circuitry, and/or other implementations of hardware and/or software. [0038] In some embodiments, feature management engine 320 may create a feature map 325 for an application comprising a plurality of available features for each of a plurality of feature option points. Each of the plurality of available features may be associated with at least one context state associated with application engine 330. Creating the feature map may comprise, for example, instantiating a reference object of a pre-compiled software class for each of the each of the plurality of available features, and designating at least one of the plurality of available features as a default feature for each of the plurality of feature option points.
[0039] In some embodiments, application engine 330 may determine whether the application has reached a first feature option point of the plurality of feature option points. In response to determining that the application has reached the first feature option point of the plurality of feature option points, application engine 330 may identify a current context state 335. For example, current context state 335 may comprise a user identifier, a session identifier, a user group, an environment variable, and/or an application mode.
[0040] Application engine 330 may determine whether current context state 335 is associated with a first available feature of the plurality of available features for the first feature option point. In some embodiments, determining whether the current context state is associated with the first available feature of the plurality of available features for the first feature option point may comprise requesting a copy of the reference object of the pre-compiled software class for the first available feature from feature map 325 of feature management engine 320. In response to determining that the current context state is associated with the first available feature of the plurality of available features for the first feature option point, application engine 330 may execute the first available feature of the plurality of available features for the first feature option point. In response to determining that the current context state is not associated with the first available feature of the plurality of available features, application engine 330 may execute the default feature for the first feature option point. [0041 ] The disclosed examples may include systems, devices, computer- readable storage media, and methods for feature management. For purposes of explanation, certain examples are described with reference to the components illustrated in FIGs. 1 -3. The functionality of the illustrated components may overlap, however, and may be present in a fewer or greater number of elements and components. Further, all or part of the functionality of illustrated elements may coexist or be distributed among several geographically dispersed locations. Moreover, the disclosed examples may be implemented in various environments and are not limited to the illustrated examples.
[0042] Moreover, as used in the specification and the appended claims, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless the context indicates otherwise. Additionally, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. Instead, these terms are only used to distinguish one element from another.
[0043] Further, the sequence of operations described in connection with the Figures are examples and are not intended to be limiting. Additional or fewer operations or combinations of operations may be used or may vary without departing from the scope of the disclosed examples. Thus, the present disclosure merely sets forth possible examples of implementations, and many variations and modifications may be made to the described examples. All such modifications and variations are intended to be included within the scope of this disclosure and protected by the following claims.

Claims

CLAIMS We claim:
1 . A non-transitory machine-readable storage medium including instructions for feature management which, when executed by a processor, cause the processor to:
create a feature map of a plurality of available features for an application, wherein each of the plurality of available features is associated with at least one context state;
identify a current context state associated with the application at a feature option point;
determine whether at least one of the plurality of available features is associated with the current context state; and
in response to determining that at least one of the plurality of available features is associated with the current context state, execute the at least one of the plurality of available features.
2. The non-transitory machine-readable medium of claim 1 , wherein each of the plurality of available features comprises a pre-compiled software class.
3. The non-transitory machine-readable medium of claim 2, wherein the instructions to create the feature map cause the processor to instantiate a reference object of the pre-compiled software class for each of the plurality of available features.
4. The non-transitory machine-readable medium of claim 4, wherein to determine whether at least one of the plurality of available features is associated with the current context state, the instructions cause the processor to request a copy of the instantiated reference object of the pre-compiled software class associated with the current context state for the feature option point.
5. The non-transitory machine-readable medium of claim 1 , wherein the instructions, in response to determining that at least one of the plurality of available features is not associated with the current context, cause the processor to execute a default feature of the plurality of available features.
6. The non-transitory machine-readable medium of claim 1 , wherein the current context state comprises at least one of the following: a user identifier, a session identifier, a user group, an environment variable, and an application mode.
7. The non-transitory machine-readable medium of claim 1 , wherein the instructions further cause the processor to modify the feature map to associate a different available feature of the plurality of available features with the at least one context state.
8. The non-transitory machine-readable medium of claim 1 , wherein the instructions further cause the processor to identify the current context state associated with the application at each of a plurality of feature option points.
9. A computer-implemented method for feature management comprising:
creating a feature map for an application comprising a plurality of available features for each of a plurality of feature option points wherein each of the plurality of available features is associated with at least one context state;
identifying a current context state at a feature option point;
determining whether the current context state is associated with a first available feature of the plurality of available features for the first feature option point; and
in response to determining that the current context state is associated with the first available feature of the plurality of available features for the first feature option point, executing the first available feature of the plurality of available features for the first feature option point.
10. The computer-implemented method of claim 9, wherein creating the feature map comprises associating at least one second available feature of the plurality of available features with the current context state.
1 1 . The computer-implemented method of claim 9, wherein creating the feature map comprises designating at least one of the plurality of available features as a default feature for the first feature option point.
12. The computer-implemented method of claim 1 1 , in response to determining that the current context state is not associated with the first available feature of the plurality of available features, executing the default feature for the first feature option point.
13. The computer-implemented method of claim 9, wherein creating the feature map comprises instantiating a reference object of a pre-compiled software class for each of the each of the plurality of available features.
14. The computer-implemented method of claim 9, wherein the current context state comprises at least one of the following: a user identifier, a session identifier, a user group, an environment variable, and an application mode.
15. A system for feature management, comprising:
a feature management engine to:
create a feature map for an application comprising a plurality of available features for each of a plurality of feature option points wherein each of the plurality of available features is associated with at least one context state, wherein creating the feature map comprises instantiating a reference object of a pre-compiled software class for each of the each of the plurality of available features, and
designate at least one of the plurality of available features as a default feature; and
an application engine to:
determine whether the application has reached a first feature option point, and
in response to determining that the application has reached the first feature option point of the plurality of feature option points:
identify a current context state,
determine whether the current context state is associated with a first available feature of the plurality of available features for the first feature option point,
in response to determining that the current context state is associated with the first available feature of the plurality of available features for the first feature option point, executing the first available feature of the plurality of available features for the first feature option point, and
in response to determining that the current context state is not associated with the first available feature of the plurality of available features, executing the default feature for the first feature option point.
PCT/US2015/022111 2015-03-24 2015-03-24 Context-based feature management WO2016153481A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/US2015/022111 WO2016153481A1 (en) 2015-03-24 2015-03-24 Context-based feature management

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2015/022111 WO2016153481A1 (en) 2015-03-24 2015-03-24 Context-based feature management

Publications (1)

Publication Number Publication Date
WO2016153481A1 true WO2016153481A1 (en) 2016-09-29

Family

ID=56978577

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2015/022111 WO2016153481A1 (en) 2015-03-24 2015-03-24 Context-based feature management

Country Status (1)

Country Link
WO (1) WO2016153481A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649649A (en) * 2016-12-09 2017-05-10 国电南瑞南京控制系统有限公司 Automatic wind-power-generation-enterprise scheduling monitoring method based on offline map

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5943496A (en) * 1997-05-17 1999-08-24 Intertop Corporation Methods for developing and instantiating object classes using a java virtual machine extension
US20030023662A1 (en) * 2001-07-30 2003-01-30 International Business Machines Corporation Method, system, and program for enabling access to a plurality of services
US6964051B1 (en) * 2002-01-18 2005-11-08 Adobe Systems Incorporated Enabling and disabling remote features dynamically in software applications
US20060059458A1 (en) * 2002-10-29 2006-03-16 Koninklijke Philips Electronics, N.V. Creating software applications
US20120311531A1 (en) * 2011-05-30 2012-12-06 International Business Machines Corporation Optimizing an object-oriented program by transforming invocations of synthetic accessor methods

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5943496A (en) * 1997-05-17 1999-08-24 Intertop Corporation Methods for developing and instantiating object classes using a java virtual machine extension
US20030023662A1 (en) * 2001-07-30 2003-01-30 International Business Machines Corporation Method, system, and program for enabling access to a plurality of services
US6964051B1 (en) * 2002-01-18 2005-11-08 Adobe Systems Incorporated Enabling and disabling remote features dynamically in software applications
US20060059458A1 (en) * 2002-10-29 2006-03-16 Koninklijke Philips Electronics, N.V. Creating software applications
US20120311531A1 (en) * 2011-05-30 2012-12-06 International Business Machines Corporation Optimizing an object-oriented program by transforming invocations of synthetic accessor methods

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649649A (en) * 2016-12-09 2017-05-10 国电南瑞南京控制系统有限公司 Automatic wind-power-generation-enterprise scheduling monitoring method based on offline map

Similar Documents

Publication Publication Date Title
US10146657B2 (en) Initialization trace of a computing device
KR20170059451A (en) System and method for determination of partition identifiers in a multitenant application server environment
CN109871691A (en) Process management method, system, equipment and readable storage medium storing program for executing based on permission
US8024771B2 (en) Policy-based method for configuring an access control service
US9612942B2 (en) Verification of a computer program in respect to an unexpected response to an access request
US20170034697A1 (en) Pen Needle Outer Cover Concepts
EP2680138B1 (en) Dynamic rule management for kernel mode filter drivers
CN105045605A (en) Method and system for injecting DLL into target process
US11726896B2 (en) Application monitoring using workload metadata
US10540154B2 (en) Safe loading of dynamic user-defined code
CN109145621B (en) Document management method and device
US10606652B2 (en) Determining tenant priority based on resource utilization in separate time intervals and selecting requests from a particular tenant based on the priority
US10761817B2 (en) System and method for facilitating an instance-specific user interface
WO2016153481A1 (en) Context-based feature management
US11222036B1 (en) Data warehouse access reporting
WO2015016914A1 (en) Storing difference information in a backup system
US11809881B2 (en) Target process injection prior to execution of marker libraries
EP3227789A1 (en) Access to network-based storage resource based on hardware identifier
WO2018121027A1 (en) Method and device for performing shielding processing on customer data
US10303553B2 (en) Providing data backup
US10949559B1 (en) Repository-based privilege escalation for workflows
US20180253462A1 (en) Executing transactions based on success or failure of the transactions
CN107741872B (en) Auditing method and device for virtual machine identification and virtual machine identification system
US20180101683A1 (en) Randomized heap allocation
US9600508B1 (en) Data layer service availability

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15886639

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15886639

Country of ref document: EP

Kind code of ref document: A1