My company is developing software that has a lot of technical debt that has existed for more than 20 years. It's a mix of C++ and C and consists of about 2M LOC. I would like to make some suggestions how we can advance our project and get rid of technical debt while using modern design principles.

This application is heavily modularized and consists of more than 250 modules that can be viewed by the user. Those modules are designed with our own framework, an xml-file with all the layout, some business logic that is interpreted by the application and a c++ class with other logic.

For example to create a mask with single grid that displays some data, we need to create the generic class-files that register our new module to the application, open our application in designer-Mode, place a grid in our module and attach a sql-statement that fetches the data for it. If we would like to add some logic that is not possible with our designer, we need to add some callbacks to our class and add those to our grid in the designer. Now the xml-file is filled with all the information our application needs to generate that module (i.e. where exactly the grid is, the ID, the attached callbacks and the sql to fill it).

As you can see there is absolute no cut between design, business logic and the dependencies.

There are of course two main advantages:

  • many things can be done without recompiling the application
  • small errors can be fixed by non-developers (like wrong SQL statements, name of labels, placement of the elements

But I hope you agree with me, that this system could benefit a lot, but I'm not experienced to propose my own solutions. What steps can I take to solve that problem in a realistic way thats acceptable for both us developers and management?

  • 2
    Please update the question to make the question perfectly clear. The question looks like a long complaint. Don't add comments to the question. Update the question.
    – S.Lott
    Commented Sep 27, 2011 at 13:53
  • 3
    "last paragraph"? The "English not the best"? That's not helpful and should be deleted. The "I hope you agree"? That's not a question. That sounds like a complaint. It helps at actually ask a question in the form of a question. "How do I...?" "What steps should I...?" Those kind of phrases that look like questions really help people figure out what you need to know.
    – S.Lott
    Commented Sep 27, 2011 at 13:59
  • 1
    Same as S.Lott. Please make the question more precise. What is exactly the problem?
    – dagnelies
    Commented Sep 27, 2011 at 14:05
  • 2
    "acceptable for developers and management?" What's the problem? Yes, it's interlocked. What is the conflict (if any) between developers and management? What does management want that developers can't provide? What do developers want that management can't provide? Please clarify the conflict that we're supposed to resolve. Otherwise, we'll just give you random technical suggestions.
    – S.Lott
    Commented Sep 27, 2011 at 14:06
  • 1
    What are you trying to achieve that the current design fails? Commented Sep 27, 2011 at 14:18

1 Answer 1


Every now and then comes a point in the life of a programmer where he/she needs to jettison the 'anything goes' and 'newer is better' paradigms and conduct an exercise in decency.

This project looks like a splendid opportunity for that. It is most likely that there is no benefit in a redesign or recreation from scratch, at least not measurable by the management, no matter how olden and tiresome it may look to you: The domain knowledge (seemingly) has long ago become an essential part of the interlock and no feasible amount of all the kings mythical man-months can separate it again.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.