Reengineering implies changes of various types and depth to a system, from a slight renovation to a total overhaul. Some of the typical challenges our clients have:
- A system was developed for us, but we'd like to change several things, namely improve the system's functionality, usability, security, stability and performance; change the system's architecture or adjust it for another platform. Unfortunately, we don't have the detailed documentation on this system or a knowledgeable enough staff. How do we implement the desired changes?
- We have three systems with roughly the same functionality, which work on different platforms. As these systems supplement each other, users have to use all three of them. This makes their work more complicated (starting one system means first shutting down the other two) and adds a lot of extra work for the system administrators (when a new user is added, the data must be copied to all three systems). We want to have one system instead of three.
- We have a best-selling software solution and received an order from a major client to modify it. However, no company wants to undertake its maintenance. What shall we do?
- A software component was written by someone who is no longer with the company, and there is nobody capable of working on the system's maintenance. There is no documentation or comments in the program. What shall we do?
Codea's methodology and expertise allow for reengineering of complex systems even in situations when the documentation is scarce or lacking. Codea takes the following steps in approaching each task:
- Analyzing documentation (if documents are available)
- Determining the degree of conformity between the documentation and the existing solution
- Detecting weaknesses of the solution's architecture
- Eliminating the detected weaknesses
Mass Code Conversion
- We use both automated and manual code conversion methods. For most typical situations, such as converting VB6 to .NET, we have developed methodologies for a proprietary automated code conversion. For one of our clients we effectively used an automated Access to SQL conversion.
- Special attention is paid to the business logic, presentation and data access layers. The features' implementation in the most modern platforms is fundamentally different from older ones.
- Learning the client security requirements
- Analyzing requirements to determine the level of conformity between requirements and the current solution
- Offering solutions for the required security
- Testing performance of the system's parts separately
- Testing performance of the separate layers for multi-layered applications. For one of our recent clients, for example, we used the following technologies:
- Data Layer
- SQL profiling
- Execution plans analysis
- Business Layer
- MS ACT for Web applications
- AqTime for .Net Desktop profiling
This process improved the system performance by over 300%!
- Analyzing the existing source code and detecting potential bottlenecks
- Our expert knowledge of the .Net framework allows for performance fine tuning of critical application parts
Codea’s knowledge, expertise and technology allow analyzing the most complicated business processes with only the application itself and minimal documentation or even no documentation at all.
Detailed source code analysis at textual, syntactic, and semantic levels allows extracting maximum information from the system, understanding its structure and logic.
Source code analysis also allows to detect various system defects, such as un-initialized data, pointer errors, memory leaks, incomplete uses of record fields, similar code fragments, inefficient or high-complexity code, all of which result in a lower system performance and lowered efficiency.
- Testing the system for errors and making detailed descriptions
- Finding the cause of errors
- Error recovery
Codea's team of reengineering experts has successfully completed many reengineering projects with various levels of complexity.