Subscribe by Email


Showing posts with label Inventory Analysis. Show all posts
Showing posts with label Inventory Analysis. Show all posts

Monday, June 18, 2012

How is data understood through reverse engineering?


Reverse engineering forms an internal part of the whole software re- engineering process. To implement the reverse engineering properly in the re- engineering process one needs to understand the data through the reverse engineering.
In this article we have taken up the same topic i.e., “how is data understood through reverse engineering?” 
- When the reverse engineering is carried out, the main objective is always to recover the designs and specifications of the software system or application.
- With reverse engineering, the development is only understood and no changes are made to the software system or application. 
- For the reverse engineering process, the source of the software system or application is fed as the input. 
- If you go through the history of the reverse engineering, you will find some cases where the executable code is given as input for the reverse engineering process. 
- The reverse engineering though being in a great contrast with the re- engineering forms an internal part of it. 
- Reverse engineering serves the purpose of recovering system design and specifications in the software re- engineering process model. 
- These recovered designs and specifications are used by the engineers to understand the software system or application before they start re- organizing the whole structure.
- However, there have been cases in which the reverse engineering is not always followed by the re- engineering process. 
- There are three stages in reverse engineering process.
 1. System to be re- engineered is subjected to automated analysis.
 2. Then it is manually annotated.
 3. With the system information obtained, a whole set of new documentation is generated containing:
(a)  Program structure diagrams
(b)  Data structure diagrams and
(c)   Traceability matrices.

Activities in Reverse engineering


In reverse engineering the data is understood by the 3 basic activities that involved intense understanding efforts:
1. Understanding process: In order to understand the procedural abstractions as well as functionality analyze the source code on the level:
(a)  System
(b)  Program
(c)   Component
(d)  Statement and
(e)  Pattern

2. Understanding data: It analyzes the internal data structures and data base structure.
3. User interfaces: It analyzes the basic actions processed by the interface, system’s behavioral response to those actions and equivalency of the interfaces.

More about reverse engineering....
- The beginning of the reverse engineering process is marked with an analysis phase in which the analyzation is carried out with the help of automated tools in order to discover the structure of the software system or application. 
- But this stage itself does not suffice the purpose of recovering the whole structure. 
- Engineers then have to work on the program code and model and add the recovered information to this.
- The recovered information is maintained in form of a directed graph. 
- The engineers always make it a point to link the directed graph to the source code. 
- The directed graphs are compared with the code with the help of the information browser stores. 
- This graph helps in generating trace ability matrices and the data structures. 
- Tools that are used make it easy to navigate through the code. 
- After the complete generation of the design documentation, the information store is supplied with the additional information as a measure to re create the specifications systems. 


What is meant by Software Reengineering Process Model?


Software re- engineering process model is based up on the principles of the software re- engineering that was proposed by Chifosky in the year of 1990.  Before we discuss about the software re- engineering process model let us see what software re- engineering is.

What is Software Re-engineering?


- The software re- engineering is considered to be a process that alters a software system and thus reconstituting it in to a new form that is better than its previous form.
- The process of the re- engineering usually occurs after the software system or application has been reverse engineered. 
- The re- engineering is also carried out for the addition of the new functionalities or to correct the discovered faults and errors. 
- Sometimes this whole process is often collectively called as reverse engineering. 
But there is a subtle difference between the two! 
- The former process i.e., the reverse engineering is like an initial examination of the software system and the latter is like the subsequent modification. 
- Re- engineering of the software systems often comes in to play where there is an involvement of a legacy system. 
- In such cases the re- engineering can be considered to be a process that re- structures a legacy system in to a new system that is constituted of much better features and functionality and maintain the quality constraint.

Re- engineering is not a thing that can be achieved in an instant rather it takes a lot of time since there is a utilization of many information technological resources over the years. Therefore every organization requires a well defined strategy for carrying out the software re-engineering. 

Steps in Software re-engineering process model


The software engineering process model consists of the following steps:
1.Inventory analysis: Analysis of all the active applications listed in the inventory of an organization.
2.Document reconstruction: The software systems that are business critical are re- documented.
3. Reverse engineering
4. Code restructuring: It involves the analyzation of the source code and reviewed again.
5. Data restructuring: It begins with reverse engineering and ends with the review of all the data structures.

Scenario behind software re-engineering process
- Software re- engineering process serves the purpose of bringing up the poorly documented and poorly structured code to a standard that is maintainable and acceptable. 
- Let us see the scenario behind the need of re- engineering. 
- In a code that is poorly controlled and maintained, lies either a large number of files spread over a number of locations or consists of only a single file consisting of a very lengthy code.
- Observing these files, one could notice that the comments do not appear to have any relationship with the code itself and the associated documentation has become outdated or refers to the previous versions of that software system or application that has underwent many modifications since then which were left undocumented. 
- To say, an executable file does exists but many decisions have to be taken to run it. 
- At this point the identification of the actual objectives of the software re- engineering process becomes important. 
- There might be so many problems underlying those decisions that now can be easily addressed. 
- It is very important that before beginning with the re- engineering of the whole code that you check its correctness otherwise you will suffer a major set back if you would have been re- engineering the wrong code all the time. 
- At the end of the process the final code needs to be base-lined with the associated project log and the documentation.
- The re- engineered software system or application is brought to a well defined stage at which it can be considered to be ready for the release and also its future maintenance will be less arduous.


Friday, June 15, 2012

Inventory Analysis - an activity involved in software re-engineering process model.


The software re- engineering process model over the years has proved to be a very effective process in bringing the poorly maintained and controlled code to an acceptable standard. This model consists of the below mentioned 5 steps:
  1. Inventory analysis
  2. Document reconstruction
  3. Reverse engineering
  4. Code re- structuring
  5. Data re- structuring
  6. Forward Engineering
In this article we have discussed about the first step of the process i.e., inventory analysis in detail. 

Characteristics of Inventory Analysis


- It is obvious for every organization to maintain an inventory of all the software systems or applications it has developed whether they are active or not.
- An inventory is like a spreadsheet containing details of the software system or application against its name. 
- In inventory analysis, the software systems and applications are sorted out on the basis of the following criteria:
  1. Business criticality
  2. Longevity
  3. Current maintainability and
  4. Local criteria
- This step of the software re engineering process model helps the team to identify what all the software systems or applications require to be re- engineered.  
- Firstly, a table is build that lists all the software applications.
- After this a list of criteria is established on the basis of the criteria like few of which have been mentioned below:
  1. Name of the software system or application.
  2. Year of its creation.
  3. Number of changes or modifications it had gone through since its creation.
  4. Effort applied in making those modifications.
  5. Effort applied in making the last of the modifications.
  6. Date on which the last modification was made.
  7. The systems in which the application now resides.
  8. Other applications with which this application shares the interface.
- The primary purposes of this step is prioritizing all of them and analyze them so as to select the candidates for re- engineering. 
- The steps for the creation of an effective inventory are:
  1. Preparing for data collection
  2. Collecting the data
  3. Deciding the criteria
  4. Allocation
- It has not been wrongly said that “well begun is half done” since the organization may have to suffer a huge set back if it chose wrong candidates for re- engineering. 
- So selecting the candidates for re- engineering during the stage of inventory analysis holds importance. 
- The inventory analysis is a very generic process.
- The inventory analysis looks up with the details of all small and big aspects of the software systems and applications and therefore it becomes easy to select which candidates really need re- engineering.
- Usually the software systems or applications which have not been updated since a long time and are no more accepted and are undocumented are given the first priority.
- Such software systems and applications often have documentation associated with them that is either not updated or relates to the previous versions of the particular software system or application. 
- Problems with the selected candidates are identified and they are carried forward to the next step of the software re- engineering process model. 
- Before you start the restructuring of the code it is necessary that the objectives of the re- engineering are defined. 
- Re- engineering actually consists of 11 steps but they are shortened down to 5 major steps. - The detailed steps are:
  1. Identifying the existing documentation
  2. Verifying the identified code
  3. Familiarising with the existing software
  4. Identifying the re- engineering requirements
  5. Drawing up the re- engineering plan
  6. Producing a test plan, test script and test data.
  7. Producing test results for original software and the ported version.
  8. Restructuring the code
  9. Testing the code
  10. Updating the documentation



Facebook activity