I’ve inherited 200K lines of spaghetti code — what now?
For my next project, I've been tasked with "overhauling" a large legacy web application with many parts. It is a JSP application written in 2004 and it is used heavily by my company.
This application was designed badly in that there is no separation of concerns; no service layer, no DAO layer, no MVC structure. Just a bunch of JSP files loaded with scriptlets containing logic and database queries mixed in with HTML. It's a mess.
My boss has defined "overhaul" as basically rewriting the entire thing using the technologies we use for our more recent applications, which are:
- JPA (w/Hibernate)
AND add a bunch of new features.
My question is: How do I go about this? What should be my strategy for completely redoing a large application that is currently in use AND add a bunch of features?
Should I rewrite the existing application first and get it working with the updated technologies and THEN worry about adding new features afterward? Or should I go about it like I'm creating a whole new application and implement the new features WITH the old features?
Has anyone done this successfully? If so, what strategies were instrumental to your success?
Edit: More info from comments:
How bad does the design have to be to justify a rewrite? This design is pretty bad. There is tons of business logic hiding in the application. No specs, no logs of requirements changes, no list of bug fixes, no list of open bugs, no test suite, no documentation. And the guy who originally wrote it is now in upper management.