In-application programming (IAP)
Firmware rewriting its own flash memory while it runs, with no programmer or debug probe attached.
ISP lets an external programmer write the chip while it's on the board; IAP removes even that. The running program receives a new image over UART, USB or radio, erases sectors and writes them itself. That's how every bootloader and every OTA update actually works. NXP's LPC family went as far as shipping ready-made IAP routines in boot ROM, so the application just had to call a function pointer.
The catch is that flash generally can't be read while it's being erased. If code runs from the same bank, the CPU stalls for milliseconds, interrupts included, so critical routines get copied to RAM first. Dual-bank flash sidesteps the problem by reading from one bank while writing the other. A power cut in the middle of an erase remains the time-honoured way to turn a product into a brick.