Sto lavorando su un'applicazione che ha molte parti funzionali.
Quando un cliente acquista l'applicazione, acquista la funzionalità standard, ma può anche acquistare alcuni elementi aggiuntivi dell'applicazione per un prezzo aggiuntivo. Tutti gli elementi fanno parte dello stesso eseguibile dell'applicazione. Una chiave di licenza viene utilizzata per indicare quale degli elementi deve essere accessibile nell'applicazione.
Alcuni elementi possono essere facilmente disabilitati se l'utente non ha pagato per questo. Questi sono in genere i moduli a cui è possibile accedere tramite il menu dell'applicazione.
Tuttavia, alcuni elementi danno più problemi:
- Che cosa succede se una parte del modello dati è correlata a una parte facoltativa? Costruisco queste strutture dati nella mia applicazione in modo che il resto della mia applicazione possa semplicemente presumere che siano sempre lì? Oppure non li creo e aggiungo controlli nel resto dell'applicazione di maggio?
- Che cosa succede se alcune parti facoltative sono ancora utili per eseguire alcune attività interne, ma non voglio esporle esternamente all'utente?
- Cosa succede se il responsabile marketing desidera rendere una parte standard ora una parte facoltativa? In tutte le mie applicazioni presumo che quella parte sia presente, ma se diventa facoltativa, dovrei aggiungervi dei controlli ovunque nell'applicazione.
Ho alcune idee su come risolvere alcuni dei problemi (ad esempio interfacce con doppia implementazione: una implementazione funzionante e una che viene attivata se la parte opzionale non è attivata).
Conosci qualche schema che può essere usato per risolvere questo tipo di problema? O hai qualche suggerimento su come gestire questo problema di licenza?
Grazie.