115

ISBN : 978-81-963532-2-3 (E-Book) becoming animportant area of work for many companies as the software products of yester years age, stillsoftware maintenance is mostly being carried out as fire-fighting operations, rather than throughsystematic and plannedactivities. Software maintenance has a very poor image in industry. Therefore, an organization often cannotemploy bright engineers to carry out maintenance work. Even though maintenance suffers from apoorimage,theworkinvolvedisoftenmorechallengingthandevelopmentwork.During maintenance it is necessary to thoroughly understand someone else’s work and then carry out therequiredmodifications and extensions. Another problem associated with maintenance work is that the majority of software productsneedingmaintenanceare legacyproducts. SoftwareReverseEngineering Softwarereverseengineeringistheprocessofrecoveringthedesignandtherequirementsspecification of a product from an analysis of its code. The purpose of reverse engineering is tofacilitate maintenance work by improving the understandability of a system and to produce thenecessary documents for a legacy system. Reverse engineering is becoming important, sincelegacy software products lack proper documentation, and are highly unstructured. Even welldesignedproductsbecomelegacysoftwareastheirstructuredegradesthroughaseriesofmaintenance efforts. The first stage of reverse engineering usually focuses on carrying out cosmetic changes to thecodetoimproveitsreadability,structure,andunderstandability,withoutchangingofitsfunctionalitie s. A process model for reverse engineering has been shown in fig. 24.1. A programcan be reformatted using any of the several available prettyprinter programs which layout theprogram neatly. Many legacy software products with complex control structure and unthoughtfulvariable names are difficult to comprehend. Assigning meaningful variable names is importantbecausemeaningfulvariablenamesarethemosthelpfulthingincodedocumentation.Allvaria bles, data structures, and functions should be assigned meaningful names wherever possible.Complexnestedconditionalsintheprogramcanbereplacedbysimplerconditionalstatementso rwhenever appropriatebycasestatements. 110 Software Engineering Keerthana P, Manasa KN, Ganga D Bengal

116 Publizr Home


You need flash player to view this online publication