How to limit function functionality

Are there any standard or “best practices” for limiting the functionality of functions for a particular application?

Example. We have a product with many functions, and our customers can choose which functions they would like to use, and the cost of the product depends on what functions they actually use.

In the past, we distributed, together with our software installer, an encrypted license file containing information about the client, as well as a set of features that they turned on. In the code, we read from the license file and enable the functionality in accordance with the license file.

This seems to work fine, except for a few drawbacks:

  • Upgrading users with new functionality can be a kind of pain
  • If a certain function is displayed in different places of the application, the developer may not understand that this function should be licensed, and forget to check the license file before giving the user the opportunity
  • If the license file is damaged, deleted, moved, renamed, etc., the application will not start

We are getting ready to deploy a new set of features, and I was just curious what others in the community did to solve this problem?

+4
source share
2 answers

Usually there are 3 general approaches to this:

  • using fixed versions of programs (each version simply adds functions, you cannot configure which functions you want or not). You can also use "subversion", for example, basic and pro edition for Software x.0. Windows takes this approach.
  • The presence of modules of functionality that are a product of their own. Matlab takes this approach.
  • The presence of software with basic functions, and then the presence of plug-ins or additional applications for sale. Eclipse uses this approach (although it is free).

You can combine these approaches for better customization.

0
source

Why not break the product into modules like Matlab? Then charge for each module. Licensing can be stored on the network, and the end user just needs to download the module to enable this feature.

+1
source

Source: https://habr.com/ru/post/1306719/


All Articles