Assuming you are talking about the ST32X series MCU's and using a serial connection from your IDE/PC then read this first, then the bootloader (over serial) document.
If you want to use other transfer Phy's then you need to do more research:
Application Notes:
– AN3154: CAN protocol used in the STM32 bootloader
– AN3155: USART protocol used in the STM32 bootloader
– AN3156: USB DFU protocol used in the STM32 bootloader
– AN4221: I2C protocol used in the STM32 bootloader
– AN4286: SPI protocol used in the STM32 bootloader
The "Flash Programmer" is just a piece of code in the client that offers a protocol over your selected Phy interface. Though this is simple stuff to look up, you really have no excuse for not being able to find it on your own.