Software Modernization Internships – June 2021

Software

Acism has offered student internships in the important area of software modernization. They are designed to run like a science experiment. The results will be of interest to software industry at large. We invite interested companies as observers as this experiment runs. Read below for details.

Background: Software Modernization and the Fears

Re-engineering software products is arguably a bigger game than developing a new product. The term modernization is same as re-engineering, but with a little sway as per the current architectural trends of cloud deployment and a microservices architecture. With the increased focus on digitization, the demand of modernization of existing legacy applications is on the rise.

A software product needs constant enhancements in response to changes in the marketplace or the environmental conditions. These enhancements become more and more difficult to make with time, as the product becomes patchy and the original set of developers move away. In other words, the effort to make incremental changes gets larger and larger. Once the product reaches a point that further enhancements are either not technically feasible or are very expensive, the management is forced to sanction the budget for re-engineering the product. There are many large legacy applications that befit the bill, and hence are up for modernization.

Because of the large size, and the modernization is a huge and complex effort. Some of the fears are:

  1. What if modernization project fails, even after a serious investment of effort?
  2. What if the resultant software does not become as easy to enhance / maintain as we want?
  3. What if the software again comes for re-engineering quickly, needing another massive investment soon?

These fears are not ill-founded, and they have been realized in some cases.

Xsemble as the Target Technology for Re-engineering

Xsemble is a great technical choice for the applications, because the applications are made of small reusable components which are individually easy to maintain / enhance, and the overall design is available in the form of a visual flow diagram.

Because of this, Xsemble based applications are orders of magnitude easier to maintain and enhance, and have a long life. As per our estimation, an Xsemble based application should save you 80% effort during the long maintenance phase.

Not only that, an Xsemble based application can be easily converted to microservices architecture. It is further flexible in the sense that functionality can be moved between microservices much more easily than in conventional ways.

For more details on the problem statement and the solution, please refer to our article on Legacy Application Re-engineering.

f your application is already on Xsemble, then it will enjoy these benefits. But can a legacy application be migrated to Xsemble? How much easy or difficult is it going to be? What can be the said about the reliability of the effort and certainty of achieving the end result? If it is going to be reliable and easy, then we have a good option for achieving the re-engineering of our legacy applications. The internships are intended to find answers to these questions.

June 2021 “Software Modernization” Internships

We would like to run the modernization internships pretty much like a science experiment. The activities done should be quick and verifiable, and intended to lead to unambiguous conclusion.

Here is the high level plan:

  1. Small teams of students choose the applications to re-engineer to Xsemble platform. We left it to students to search internet and find these applications whose source code is freely available. This is to simulate the situation where the legacy application source code is available to the modernization team.
  2. The teams run the existing applications and understand the functionality.
  3. They design the Xsemble flow diagram based on this understanding. They may refer to the code if needed. In the design step, the components that are needed for the application get defined.
  4. They implement the components, which involves adding source code behind these components. It should be possible to do it quickly by copy/pasting the code of the original application inside the component implementation templates generated by Xsemble. Xsemble supports Java based web applications — with PHP support coming soon, and therefore we asked the students to choose Java or PHP based applications in step 1 to make this copy/pasting possible.
  5. They burn the application (in Xsemble) to generate the target application source and deployable. It is possible to create incremental builds so that they can test it as they move along.
  6. The end point is that the target application works exactly as the original application.
  7. Through regular touchpoints, the student experiences are monitored.

Here are some extrapolations that we will be doing based on the results:

  • The chosen applications would relatively smaller than the expected giant legacy applications. However, the methodology to do would be the same, and the experiences would be applicable at any scale.
  • If students are able to perform the re-engineering, then it will be much easy and quick for teams of experienced programmers.
  • If this work can be done remotely, then it can definitely be done by co-located teams with much more ease and certainty.

Call for Industry Participation

We are shouting out to the software development companies to participate in this experiment as observers. Your inputs will also be welcome. Especially the ones who are looking at doing some re-engineering / software modernization work in the near future would find the experience highly relevant.

The internships are remote, and so the monitoring also can be done remotely. This places no geographical restrictions for one to participate.

Get in touch with us on contact@acism.com regarding this opportunity. Please hurry, as the internships have already started. The students doing these internships are from the MIT World Peace University, School of Management.