Programming a ATMega328P with Arduino bootloader on a breadboard

So I have transitioned several ATMega328Ps from the Arduino Uno R3 to a breadboard and they work fine. Once I move the chip, I replace it on the Arduino with another chip with a preloaded bootloader (product: http://www.jameco.com/webapp/wcs/stores/servlet/Product_10001_10001_2129334_-1). This is my microcontroller programming methodology, probably not the best, but it works fine. It's really cool to see a project working perfectly with everything on the breadboard standalone.

Now if I want to update the software, I could move the microcontroller back to an Arduino. But it gets difficult because it requires removing wires. Is there a way to reprogram it in place on the breadboard (and also on a PCB when I get that far) using the Arduino IDE? Thanks for any pointers.

Yes. Atmel calls it "in circuit programming" or "ISP". This provides method and connections...

You will have to put some thought into what peripherals you connect to the SPI pins (MISO, MOSI, and SCK).

If the serial pins are free (or can be freed, eg. by a switch or two) then you could also use an FTDI cable, assuming your chip still has the bootloader on it.

Example photo:

Close-up:

I personally like to use these http://www.sparkfun.com/products/9716