The Challenge of Enhancing Software through Reengineering

Reengineering of software can involve modifications that come in all shapes and sizes, from minor interface renovations to complete architectural overhauls. We've helped our clients overcome a variety of these challenges. The following is a list of common scenarios that require software reengineering:

  • A software-development company created a solution for us, but we aren't completely satisfied with its performance, security, functionality, reliability, and user-friendliness. The solution requires architectural changes because we also need it to run on another platform. We lack the expertise, experience, and technical documentation that would be needed to make these kinds of changes in-house.
  • At our company, three different software solutions are comparable in terms of their functionality, but they each run on their own platform. The three solutions are related to each other and complement on another, so we can't eliminate any of them. This increases complexity and down-time for users, and administrators' work is tripled when a new user is added. We want one solution that fulfills all of our business needs.
  • An important client has just placed a large order for a modified version of our top-selling key software product. We need to deliver on this order, but we cannot maintain two major versions at the same time.
  • The developer who wrote a crucial component of our software recently left out company, and we don't have the resources, documentation or knowledge to maintain the component.

Oceannet Software's Method

At Oceannet Software, all we need to reengineer a complex software solution is your application and our experts' proven methodology. Even with little-to-no documentation, our engineers will build a solution you can use – not one you're stuck with.

We extract information from the current solution using detailed, multi-level source code analysis to form an understanding of its structure and logic. We then use this information to rebuild the application with a solid, maintainable foundation.

We approach each project using these steps:

Documentation Analysis

When documentation is available, we thoroughly review it to ensure that we are well-versed in the architecture of the existing solution before we begin. As part of this process, we determine the accuracy of the documentation to avoid complications caused by faulty documentation.

Architectural Analysis

We evaluate the solution's architecture to detect weaknesses and devise ways to eliminate those weaknesses and to strengthen the foundation of the solution.

Mass Code Conversion

Every reengineering project is different, so we apply the code conversion method that works best for your solution. Some projects require manual conversion, but for some common situations, such as converting VB6 to .NET, we use an automated conversion developed here at Oceannet Software. We can also automate custom conversions, as we did for one client who required code conversion from Access to SQL.

Modern software implementations are fundamentally different from older ones, so we pay special attention to the business logic, presentation and data access layers to ensure that your solution maintains its functional integrity.

Security Analysis

We will analyze your security requirements, determine how the security of the current solution fits those requirements and present improvements.

Performance Tuning

When the solution has been built, we will conduct rigorous performance testing of each of the solution's parts. We'll also analyze the existing source code to detect and eliminate potential bottlenecks.

With our in-depth knowledge of the .Net framework, we can perform fine-tuning of critical application components.

For multi-layered applications, we can test the performance of the separate layers. For the data layer we use SQL profiling and execution plan analysis. For business layer, we will use a profiling tool of choice.

Error Handling

As part of our detailed testing plans, we check the solution for errors and find the causes of the errors so they can be eliminated. We optimize the solution to recover from errors more efficiently.