--- Video Title: Software Re engineering Description: Software Re engineering Watch more Videos at https://www.tutorialspoint.com/videotutorials/index.htm Lecture By: Mr. Arnab Chakraborty, Tutorials Point India Private Limited --- We are going to discuss a very interesting topic that is software re-engineering. So, when we need to update the software to keep it to the current market and without impacting its functionality, it is called software re-engineering. That means, we want to include some more features in the software, some extra functionality in the software, but without disturbing the software. Then we can go for the re-engineering of the software. And it is a thorough process where the design of software is changed and programs are going to get rewritten. So, this very diagram is depicting what is re-engineering. So, this is our existing software. So, here we are having this reverse engineering. From there, we are going for the re-structuring and then we are going for the forward engineering and then we are having this re-engineered software. So, let me repeat it once again. So, here we are having this existing software which is now running, but it is lacking some functionality, some features. So, they are to be included. They are to be integrated with this existing software. So, what we shall do? We shall go for the reverse And we shall go for the restructuring of the software. And then from this restructuring of the software, then the forward engineering will take place, and then we will be going for re-engineered software. So, now here you see, here you are having three different processes are required to get executed. So, we will be discussing three of them in this order in our current discussion. Legacy software cannot keep tuning with the latest technology available in the market. So, as the hardware become obsolete, updating of software become a headache. So, even if the software grows old with time, the functionality does not. And that is the reason for which we require the re-engineering. So, for example, initially Unix was developed in assembly language, but when language C came in the market into existence, then Unix was re-engineered in C language. And because working in assembly language was difficult. So, here you can see that the same Unix which was written in assembly language code, now it has got migrated to this C language and for which we require re-engineering. So, other than this, sometimes programmers notice that few parts of the software need more maintenance than the other and they also need re-engineering. So, these are the different causes for which we have mentioned that why this re-engineering is required. So, now let us go for the re-engineering process. Decide what to re-engineer. Is it the whole software or the part of it? Perform reverse engineering in order to obtain the specifications of the existing software. So, here we are doing for the reverse engineering, so that from the existing software we are going to get our specification list. So, restructure program if required and for example, changing functions-oriented programs into object-oriented program. So, if we require then you can go for some changing in the restructuring Re-engineering of the program. Then restructure data as required and apply forward engineering concepts in order to get the re-engineered software version. So, in this way, these are the different processes which are taking place in our re-engineering. So, there are few important terms used in software re-engineering. So, let us go for one by one. So, at first we are going for reverse engineering. So, it is a process to achieve system specification by thoroughly analyzing, understanding the existing system. So, we discussed earlier also. So, from the existing system, we are trying to do some understanding, we are trying to do enough and dedicated analysis. So, that we can get the specification list. So, this process can be used as reverse SDLC model. That is, we try to get higher abstraction level by analyzing the lower abstraction level. So, program specification from the reverse engineering. Now, the forward engineering will come and the re-engineered software version will be obtained. So, that is a part, that is a part of the diagram which you have shown earlier in this video. So, now we are going for the reverse engineering continued. And an existing system is previously implemented design, about which we know nothing. So, and existing system is previously implemented design, about which we do not have any documentation, all the documentation, we do not having any idea. So, that is why, this is a very challenging one for us. So, designers, The sentence, they do reverse engineering by looking at the code and try to get the respective design. While design in hand, they try to conclude the specifications also. Thus going in the reverse from the code to the system specification and that is the main purpose of this reverse engineering. Next one, the next phase whatever we discussed was program restructuring. So, it is a process to restructure and reconstruct the existing software. And it is all about rearranging the source code either in the same programming language from or from one programming language to another different one as we had the example of Unix where we had to migrate from the ASM language code programming version of the Unix to the new development was done in C language. So, restructuring can have either source code restructuring and data restructuring or both. So, restructuring does not impact the functionality of the software, but enhance the reliability and the maintainability of the software. And obviously, for which we are going for the program restructuring. And program components which cause errors very frequently can be changed or updated in the process of the process of restructuring. So, whatever the flaws we observed. So, they are to be restructured here. The dependability of software on obsolete hardware platform can also be removed through this process of restructuring. So, now we are having this one that is a forward engineering. So, forward engineering is a process of obtaining desired software from the specifications in hand which were brought down by means of reverse engineering. And it assumes that there was some software engineering already done in the past. And forward engineering is same as a software engineering process with only one difference. So, it is carried out always after reverse engineering. So, that is a very important one. You see, we are having the specifications. Now, we are going for the implementation and we are going to get the re-engineered version of the software. But here you see, this is the forward engineering is there. So, this forward engineering will be always will be executed after the reverse engineering process. So, in this way, in our discussion, we have discussed what is software re-engineering into details with some specific diagrams. Thanks for watching this video.