views:

40

answers:

3

Currently I am on a team developing a new stand alone application in C#. The eventual goal is to roll this stand alone app into a previously developed larger application that pertains to the same processes.

My question is this: I am looking for information on methodologies or processes that help with A) Design of said newer code, esspecialy when the older code isn't the best most maintainable system, and B) integration of said newer application.

Obviously there will be nothing specific out there, our applications are unique in design and thus will have specifics no methodology can help with. I am interested in getting some good general knowledge on the topic however.

EDIT: The suggestions so far, Refactor the old code, build the new code as a container for the modules, and cover the old and new code in unit tests, are all good practices in general and are things I practice when possible. It seems to me though that these would be individual parts of an over-all methodology.

A: 

I'm not sure if this is the answer you are looking for as it pertains not to methodology but rather application architecture.

That said, if you design your stand-alone as a light-weight container hosting the application components, you are in effect allowing for the migration of the components to a larger context at a later point.

A: 

Fowler recommends to refactor old code. It'll take some time but:

A) it'll be easier to integrate this code with your new code;

B) you and your team will better understand old code.

In your case I would also think about covering your code and maybe old code with unit tests.

Roman
+1  A: 

First of all, you need some understanding how the old application works internally. How does it manage workflow, sessions, user privileges etc.

When you design your new code, you should take extra care to build small, reusable components in a layered approach. Of course, that is nothing special, good programmers will always attempt to do that, but it's more crucial in the given scenario. At some point, to make it a stand-alone application, you will have to replicate some parts already existent in the old application, e.g. login screen, workflow management etc. Make sure you either reuse those parts from the old system or make the new parts API compatible and separate from the main business logic. By doing that, it will be much easier to integrate the new application into the old one.

ammoQ