Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you continue to develope large (long term) software systems with legacy and new code? [closed]

Tags:

legacy

I work on a large code base with a large install base of users. The code was originally written in vb6 with a few c++ COM modules for low level work.

It is completely infeasible to rewrite all of the code that is already written in vb6 and is being used by our customers every day, but we are also continuing to make improvements and customizations to the software (large and small).

My solution so far is to write most of the new code in c# (winforms and even wpf now) and then use COM interop to call the modules from vb6.

Does anyone out there have experience with long term software suites like this (10+ years) that can't be stopped for a complete rewrite, but need continual new development at the same time. Also, in mixed systems like this, what is the best way to interface the modules? I am using COM right now, but have considered IPC with separate processes as well.

like image 298
Alan Jackson Avatar asked Mar 25 '09 01:03

Alan Jackson


People also ask

How do you maintain legacy software?

For legacy software to be maintained, you need a developer conversant with its operations. However, most developers are future-proofing their applications with new technologies. So, getting someone who can work with an old system can be a challenge.


1 Answers

It's hard to give a single all encompassing answer but the high level approach is clear. At least, this is the approach I've used. Prioritize your goals and then try to identify the costs of reaching those goals. Your costs will essentially boil down to 'developer time'.

First, you want whatever is working to keep working. If you have something that is working, and there is no good reason to rewrite it, keep it.

If some of your existing code needs updating to do its job, then you are looking at maintenance costs. At this point you need to determine if a rewrite will improve maintenance costs enough to be worth it. Don't forget to subtract testing and debugging of new bugs because there will be new bugs. Don't dismiss working code just because it is old.

If your existing code is sufficiently modular, you can usually chip away at it one piece at a time. Rewrite the high maintenance components first.

If you will be doing new development in C# then you should be fine working with COM components until you have enough justification to replace them.

like image 127
Arnold Spence Avatar answered Jan 04 '23 12:01

Arnold Spence