La programmazione intenzionale (IP), chiamata anche software intenzionale, è il rendering delle intenzioni dell'applicazione in una forma che può essere elaborata da un computer. In questo contesto, le intenzioni consistono in dati che definiscono le funzioni e gli scopi che i programmatori hanno in mente quando concepiscono e sviluppano un'applicazione. Il termine è associato a Intentional Software Corporation, con sede a Bellevue, Washington. Il concetto di IP è nato dall'ingegnere Charles Simonyi quando lavorava per Microsoft.
Il processo IP inizia quando un programmatore definisce le funzioni e gli scopi previsti di un'applicazione proposta nel formato WYSIWYG (ciò che vedi è ciò che ottieni). Quindi un sistema automatizzato utilizza queste informazioni per generare il prodotto finale. Le modifiche successive vengono eseguite a livello WYSIWYG utilizzando un sistema denominato workbench di dominio.
La maggior parte dei linguaggi di programmazione rappresenta il codice sorgente come testo e assegna nomi simbolici a oggetti, variabili so attività. In un programma complesso può essere difficile tenere traccia di quale nome si riferisce a quale entità. In IP, a tutte le entità vengono assegnati identificatori privati univoci e nomi simbolici. Ogni volta che il programma fa riferimento a un oggetto, una variabile o un'attività, l'identificatore genera automaticamente un collegamento all'entità originale. Se il programmatore rinomina un'entità, tutti i riferimenti ad essa vengono aggiornati in quel momento. Ciò riduce il rischio di errori che possono essere causati dalla supervisione umana o dall'uso manuale della funzione di ricerca e sostituzione globale in un editor di testo. Inoltre semplifica il processo di controllo delle versioni.