I may potentially have some work to implement new features to a client's existing web application. (I didn't write the original app).
I've never made an app that wasn't written from scratch, and I'm worried about integrating the new features without disrupting the service for too long (or at all).
I don't think the client has an existing code repository set up.
I was thinking that my development process should take the following path:
- Create an SVN repository and store all the current code in there, including (or making them if needed) SQL files that would be needed to create the current database structure.
- Get the client's app functioning as it is on a test server with mock-data in the test-server's database.
- Work as far as possible in cycles to write the code for one feature at a time and then migrate this across to the live app. This is the bit that I'm most unsure about. There will be a short period of time when I'll be uploading some new files and users will most likely experience usability problems (crashes). Should I just display a "working on the server" page while I'm doing this? How would I do that?
- Also, it seems to me that adding one feature at a time may cause problems, because some of them expect other features to be there to work properly. I suppose the answer to this is to only add a collection of features that can exsit as a stand alone module.
- Obviously I'd be testing the new code to the max before I migrated it across.
I'd be grateful for any pointers or gotchas, or comments on what I've written above. I really want this to run smoothly for my client (and for me!)