How to control a device that need to be updated over internet?

I know, the question is very vague, but I'll try to explain better.

I'm working in a school project and I got interested in continuing this project after school. It's a automatic aquarium. I want to control everything that happens in a aquarium, so I used an Arduino Uno connected to some sensors and some activators - sorry, I don´t know the right terms.

Everything works ok.

But... I got the idea to control this system remotely, connecting it to the internet through a wifi connection using an wifi shield. Ok, seems possible to do, but I also want to change all "program" remotely. I mean, the user, by a site or app, would be able to select a fish and the Arduino would change all the environment to better grow that specie. And I imagine it requires a "reprogramming" of Arduino and its seems impossible to be done by wifi connection.

So... The question is:

1. Can I achieve it using an Arduino? What version of Arduino? And How?
2. If its impossible to achieve it with an Arduino, how could I achieve it?
• Why reprogram the arduino for each new fish? If you get an arduino with enough space you can write an 'if' statement for each fish and then send a command via wifi to run that section of code. – Doodle Oct 17 '16 at 15:14
• @Hayman I know, but I also think in use this approach to keep the Arduino updated with new features. I'm sure that I will want to change something in the software in the future. – robsonrosa Oct 17 '16 at 15:37

• The remote reflashing is also for update the software with new features. Thanks for the answer, I will research about you bootloader approach. :) – robsonrosa Oct 17 '16 at 15:39