In base a come si sviluppa il software di configurazione (motore di regole) si può distinguere tra software dichiarativi o procedurali.
A seconda del tipo utilizzato si possono avere o meno certe funzionalità.
I procedurali arrivano al risultato in modo sequenziale, eseguendo una serie di operazioni in ordine preciso con poca flessibilità.
Le soluzioni sono implicite nella strutttura.
Il software si comporta come un “selettore” muovendosi sui rami della struttura prodotto seguendo una serie di step per arrivare alla soluzione.
Questo tipo di approccio tuttavia crea delle ridondanze con le parti comuni (es. l’elemento “ruota” può appartenere sia ad “auto” sia a “sospensione”).
La logica è mescolata al codice: input → logica → eseguzione del processo
I dichiarativi consentono una maggiore flessibilità agendo in modo similare ad un foglio Excel: non conta l’ordine, la sequenza di inserimento delle variabili o le operazioni.
Inserendo i dati si otterà comunque un risultato.
Per chi lavora a commessa con macchine impianti complessi, con molte iterazioni di calcolo e che deve gestire le “dipendenze” ( es. alcune grandezze che dipendono da altre e ricalcolare il modello ), i configuratori dichiarativi riducono di molto il tempo di personalizzazione del software e offrono funzionalità di elaborazione ineguagliate rispetto ai procedurali.
Si dichiarano le esigenze e il software sceglie la soluzione in base alle condizioni definite (es. si vuole un auto che viaggi a 250 Km/h, 5 porte climatizzata, bianca, ecc).
Nell’albero di prodotto si governano le soluzioni. Si separa la logica (più vicina al progettista) dall’eseguzione.
Tuttavia lo sviluppo di un Configuratore dichiarativo richiede molta competenza ed è possibile solo per applicazioni specifiche verticali.
Va bene quando i dati sono completi.