NOTE: To use the advanced features of this site you need javascript turned on.

Home Services Success Stories

Success Stories

A large German-based corporation had an internal application that they wanted not only converted into Java, but refactored to a proper N-tier architecture. The application was of small-to-medium size and used a mixture of PHP 4 and 5. A few dynamic constructs were present (includes, method invocations, variable variables).

The migration process took very little time, since our nTile PHP runtime already supported the necessary library functions. In less than a week, 95% of the automated test cases were passing. The remaining ones necessitated a bit of fancy coding, but posed no real obstacles. The first milestone was met ahead of schedule and impressed the customer.

At this stage, the application looked and behaved like the original. The code base was fully object-oriented, with most of the types (variables, fields, parameters, methods) inferred. All code comments were propagated. The Spring output flavor was used: controllers, models and JSP page views were produced by the migration process.

The ground was thus set for the refactoring phase. Since the migration team had become familiar with the architecture of the application, they made the following proposals which were accepted by the client:

  • clean-up existing code, with help from the Eclipse IDE:
    • break long methods into smaller ones
    • reduce usage of global variables, elliminate global constants
    • remove dead code
    • find better object-oriented alternatives to some parts of the code
    • use specialized detection tools, like PMD or FindBugs, to identify and fix other potential issues
  • convert the data access layer from PHP Data Objects to Hibernate (the PHP application already had this layer separated)
  • improve the separation of business logic from presentation, by placing business objects in model and enhancing the JSP pages produced by the automated conversion

The refactoring phase took a few man-weeks. Since the client already had a thorough suite of automated test-cases, regression testing was greatly sped up. Each time a bug not covered by the automated tests was found, a new test case was added for it. We highly recommend such an approach and will try to make it part of our migration proposal for future customers.

Overall, the migration of this internal application was regarded as a complete success by both customer and Numiton migration team, and we hope to do more business together in the future.