If Program Size is greater than Flash memory Size ,

Optimization is what you will need to do, post your code if you have problems and need help with it.

Yes you can add a memory shield, extra eproms and use SD cards to increase the data space available.