Wednesday, June 28, 2017

Software change automation

Are you really thinking this as your research area? You want to live with this goal in your life? Obviously, you might change the area later, but you will be the doctor on this. Are you ready? Lets put the flash lights on this, and examine objectively. I was thinking of this idea for a while, but this is the first informal writing. Lets do brainstorming while the experiments are running.

Software development and maintenance are not easy jobs, and they cost lots of effort from the humans. I believe these tasks will also be delegated to the robots at some point in the future. In the SDLC, software change is the most time-consuming task since all software products are bound to change. You cannot stop it ever! People changes, so are their requirements, and so are their software products! Now, human developers cannot be and should not be stuck with room service and house cleaning stuffs. They got more creative things to do, like solving even more complex problems than the machines. So, software change tasks should be automated for effective usage of human intelligence. For example, upgrading the legacy systems is a machine job now. When did you convert VB code to VB.net by hand? Did anybody ever do that? I do not think so. So, yes, the maintenance tasks should be automated and will be automated. Now, the question is, will you be the part of it? Will you put your mark on it? Why not? Thus, it looks like a good and promising research area for the next 20 years! What do you say, pal?

OK, now the big picture. This automation is a more complex thing than developing some IDE plug-ins or standalone tools. From numerous conferences, I have experienced this--software developers do not value our efforts. They say that we, the researchers, develop craps which are not usable. Well, folks, you are using all the IDE features comfortably, and they are the output of hundreds of research works. I think companies possibly consume the research outcome without knowing that. Do they cite the tool ideas? Recently, I am watching a lot of IDE features in VS which are similar to various techniques proposed over the last decade. For example, "Developer Assistant" of Visual studio. Man, I have been doing those stuffs like local code search, auto-completion, exception handling support since 2012. But, I bet, you will not find paper cited by that damn corporate IDE. But I confess, I liked VS IDE as a developer! I just do not like attitude of MSFT, and their corporate greed.

So, developers! my goal is not just to develop some petty tools for you guys! My goal is to revolutionize the software change process that will eliminate the "maintenance developer" position from the company. This will involve natural language processing, AI, static analysis of source code, IDE feature improvement, regression testing and automated deployment. So, a software will basically take care of the feature upgrades and bug fixation of another software tools. Looks like a big deal, right now! Yes, it is. But, 10 years from now, I will come closer to this insha Allah. I will possibly have gray hair then if I live. My daughter, Anisha, will be a teenager then reading this blog probably. I love you, darling so much!

My current focus in PhD is-- automated support to software change tasks using effective information retrieval and crowd sourced knowledge from Stack Overflow. Lets see how it goes. I am soon planning for the depth exam of PhD. Lets go forward!

1 comment:

  1. I read your FSE2018 paper, and then know you. Bug localization is my PhD research area, and I just graduated. Your blog inspire me a lot. Since I encounter the similar situation as you, " software developers do not value our efforts. They say that we, the researchers, develop craps which are not usable." I was wondering if the related research is meaningful, but you give me a very good explanation, I was convinced and believe that my research, this area is useful. Although it may not be remembered, but it will be helpful for software engineering.

    ReplyDelete