Questo suona sospettosamente come il "modello interno" (anti).
L'idea di base è scrivere un software che incorpori in sé un mezzo a forma libera di configurazione e / o specifiche di comando. Questo metodo è solitamente, come altri hanno correttamente sottolineato, un "linguaggio specifico per il dominio" o DSL, interpretato dal tuo software in parti di codice più statiche che hai scritto. Ci sono molte di queste lingue già là fuori; VBA, SQL, lo scripting dietro i motori Quake e Source, ecc.
Tuttavia, il difetto in tale modello diventa evidente quando si guardano i DSL di esempio. Dubito che sul pianeta ci sia un DBA che si fiderebbe con chiunque in Contabilità abbastanza da dare loro una copia di SQL Management Studio e lasciare che eseguano le proprie query di segnalazione. D'altro canto, dubito che ci sia un ragioniere sul pianeta che pensa che sia una soluzione valida per il loro bisogno di rapporti personalizzati. Il 99% degli utenti non sa come scrivere uno script per automatizzare qualcosa in un gioco di Quake o Source-engine; quelli che continuano a trovare buchi in ciò che quei motori non ti permettono di fare, di fare qualcosa che dia un vantaggio ingiusto.
Mentre potremmo implementare la nostra DSL (grafica o basata su testo) che semplifica la creazione di query personalizzate e che non consente all'utente di rovinare nulla oltre la propria query, c'è una linea molto sottile da seguire durante la progettazione un DSL che consente all'utente di fare ciò di cui ha bisogno, in un modo che capiscono, senza impedire quindi di fare qualcosa di cui hanno legittimamente bisogno o di permettere loro di fare qualcosa di dannoso. Spesso, non esiste una tale soluzione, e anche se esiste, fornire una DSL che permetta loro di fare qualsiasi cosa che dovrebbe essere in grado di non proteggerti dal dover cambiare la DSL per permettere qualcosa di nuovo a cui nessuno ha mai pensato prima, questo è perfettamente accettabile e non dannoso. In quanto tale, la piattaforma interna non risolve realmente il problema a cui era destinata; permettendo agli utenti di fare la propria "programmazione", così i veri sviluppatori possono fare cose più interessanti della personalizzazione dell'interfaccia utente o del layout di report / contenuti. Gli sviluppatori saranno sempre chiamati a "spiegare" (cioè a tenere la mano dell'utente) il DSL che hanno dato all'utente ea rispondere al "bene perché non posso farlo solo in questo modo" domande che sono inevitabili.
Anche i programmatori si occupano di tutto questo tempo, nel trattare con le DSL progettate per l'interazione con software di terze parti. "Ehi, perché non posso fare X, sembra abbastanza semplice e ho davvero bisogno di fare questa cosa che il mio utente vuole" ... "Beh, se ti lasciamo fare questo allora un utente malintenzionato potrebbe fare qualcosa di simile e ti farà davvero impazzire su, e anche noi ". Come programmatori ci aspettiamo una certa quantità di ciò; gli utenti finali si aspettano un po 'più di facilità d'uso. Ecco perché siamo qui.