Application migration is the process of migrating older applications (often referred to as legacy) to application that have more of less similar functionality, but are developed in newer technology. Application migration has proven to be a crucial but very hard part of software development over the years. Key to such projects is:
- Automated migration is hardly ever possible. It is hard for tools to migrate towards new development models, such as from Windows to web, because underlying different platforms have totally different programming models.
- Business logic is scattered. In most legacy applications, the business logic is scattered all over the place, from user interface to the database. New architectures and platforms often serve best when applying domain driven design and development to centralize such logic. Migrating business logic is often hard.
- Process logic is in the user interface‘. While current platforms and architectures offer to build software around business processes, this wasn’t always the case. Previously, lots of software was built around maintaining the database. Process logic is therefore either not present, or entwined in the user interface, which makes it hard to unlock.
- Using our Accelerated Delivery Platform (ADP) we have done some successful application migration projects. The ADP holds a number of accelerators that contribute in lowering your workload in such projects to a great extend.For instance, we model requirements using smart use cases and domain models. Smart use cases are an excellent unit of work to estimate, plan, and reuse functionality. See the example model below. Moreover, we generate a lot of code from both models using our generator Tobago MDA, but instead you might use other code generators, such as Velocity or CodeSmith.
- This code runs under (our) proven .Net frameworks. But, smart use cases also serve as a great unit of requirements when remodeling existing applications.
Strategy for application migration
Using these accelerators a clear strategy for solving re-engineering assignments such as yours is defined as follows:
- Re-model in smart use cases. Examine the existing applications and model smart use cases from that.
- Model the domain. Create a model the domain, for instance from existing data models.
- Generate the new application. Generate the larger part of the new application using our model driven approach and Tobago MDA.
- Examine business logic. Examine the old code for business logic and extend the generated application with this logic (in the domain layer).
- Round up user interface. Finish of the newly generated user interface by examining the old user interface.
Of course, this approach does not solve all of your problems, and still leaves manual work discovering the business and user interface logic. But this approach reduces a lot of work. Even better, since the new application was modeled and generated, it is possible to migrate the model to several different platforms, such as mobile and web, or to migrate to a new platform much more easily in the future.
We have applied the accelerators in this platform in many projects and at many customers. Currently we support generating both Windows applications and ASP.NET web applications, and we have started to support Silverlight front ends and (even) Java applications.
Generated code is plain C# (or VB.NET or Java) and can be read and extended at any time. As the platform is shared with our customers in a open source-like manner, all accelerators in our platform come free of cost (also for our customers). There are 8 different training courses available to come up to speed with the platform.
This presentation will explain this approach to application migration into more detail.