Software Reengineering SEII - Lecture 27

Restructuring Code restructuring, data restructuring Forward engineering Client-server architectures, object-oriented architectures Economics of reengineering Cost benefit analysis Software reuse Benefits of reuse

pptx21 trang | Chia sẻ: dntpro1256 | Lượt xem: 634 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Software Reengineering SEII - Lecture 27, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Software Reengineering SEII-Lecture 27Dr. Muzafar KhanAssistant ProfessorDepartment of Computer ScienceCIIT, Islamabad.RecapUnified theory of software evolutionReengineeringBusiness process reengineering and software reengineeringBPR modelBusiness definition, process identification, Process evaluation, process specification and design, prototyping, refinement and instantiationSoftware reengineering process modelInventory analysis, document restructuring, reverse engineering, code restructuring, data restructuring, forward engineeringReverse engineering2RestructuringModification of source code and/or dataIn general, no modification of all program architectureFocus on design details of individual modules and local data structureIf it involves program architecture, it becomes forward engineeringRestructuring occurs when the basic architecture is solid3Code RestructuringBetter design to perform the same functionDifferent techniquesWarnier’s logical simplification techniquesBoolean algebraConversion of “spaghetti-bowl” code into structured programReengineering toolsResource exchange diagram maps program module and resourcesProgram architecture is restructured to minimize coupling4Data RestructuringAnalysis of source code prior to data restructuringData definitions, file descriptions, I/O, and interface descriptions are evaluatedObjective is to extract data related informationIt is also called data analysisData redesignData record standardizationData name rationalizationPhysical modifications to existing data structures5Forward Engineering [1/4]Consider an example“spaghetti bowl” codeModules are 2000 statements longFew meaningful comment lines290,000 statementsNo other documentationModification optionsContinue the ad hoc designTry to understand inner workings of the programRedesign, recode, and test the relevant portionsComplete redesign, recode, and testNo single “correct” choice6Forward Engineering [2/4]Do not wait for maintenance requestSelect a program thatWill remain in use for preselected number of yearsIs currently being used successfullyIs likely to undergo major modificationsOption 2, 3, and 4 should be appliedWhy we redevelop The cost to maintain one line of source code may be 20 to 40 times the cost of initial development of that line7Forward Engineering [3/4]Redesign of the software architecture (program and/or data structure), using modern design concepts, can greatly facilitate future maintenanceBecause a prototype of the software already exists, development productivity should be much higher than averageThe user now has experience with the software. Therefore, new requirements and the direction of change can be ascertained with greater easeAutomated tools for reengineering will facilitate some parts of the jobA complete software configuration (documents, programs, and data) will exist upon completion of preventive maintenance8Forward Engineering [4/4]Consider a large organization500-2000 production programsRanked based on the importanceReviewed for the possible candidatesForward engineering process applies SE principles, concepts, and methodsIt does not simply re-create a modern equivalent program of an older versionIf focuses on the use of new user and technology requirements9Forward Engineering for Client-Server Architectures [1/2]Many mainframe applications are reengineered to accommodate client-server architecturesApplication functionality migrates to each client computerNew GUI interfaces are implemented at the client sitesDatabase functions are allocated to the serverSpecialized functionality (e.g. compute-intensive analysis) may remain at the server siteNew communications, security, archiving, and control requirements must be established at both the client and server sitesIt requires business reengineering, software reengineering, and enterprise network infrastructure10Forward Engineering for Client-Server Architectures [2/2]It starts with thorough analysis of the business environmentThree layers of abstraction can be identifiedDatabase layerBusiness rules layerClient applications layer11Forward Engineering for Object-Oriented ArchitecturesChoice of many organizationsSome applications remain “as is” but some reengineeredAppropriate data, functional, and behavioral models are created by reverse engineeringIf extended functionality/behavior is required, use cases are also createdClass hierarchies, object-relationship models, object-behavior models, and subsystems are definedComponent library can be used if exists for that domainOtherwise algorithms and data structures may be reused12Economics of Reengineering [1/3]Reengineering needs resourcesResources are limited that may be used for other business purposesCost-benefit analysisNine parameters are proposedP1 = current annual maintenance cost for an applicationP2 = current annual operations cost for an applicationP3 = current annual business value of an applicationP4 = predicted annual maintenance cost after reengineeringP5 = predicted annual operations cost after reengineering13Economics of Reengineering [2/3]P6 = predicted annual business value after reengineeringP7 = estimated reengineering costsP8 = estimated reengineering calendar timeP9 = reengineering risk factorL = expected life of the systemCost associated with continuing maintenanceCmaint = [P3 – (P1 + P2)] * L14Economics of Reengineering [3/3]Cost associated with reengineeringCreeng = P6 + (P4 + P5) * (L – P8) – (P7 * P9)Overall benefit of reengineeringCost benefit = Creeng – CmaintIt should be for high-priority applicationsHighest cost-benefit applications can be targetedOthers can be postponed until resources are available15Software Reuse [1/3]Reuse-based software engineering is a strategyOriginally, it was started as development strategyFactorsLower software production and maintenance costsFaster delivery of systemsImproved software qualitySoftware is a valuable asset for an organizationReuse to increase return on investmentAvailability of reuse software is also dramatically increasedOpen source movementOrganizations provide reusable componentsStandards help to develop reusable general services16Software Reuse [2/3]Application system reuseThe whole application may be reusedApplication families with a common architectureComponent reuseSubsystems to single objectsExample: pattern matching system (text-process system) may be used in a database management systemObject and function reuseComponent for a single function / an object classStandard librariesConcept reuse17Software Reuse [3/3]Software development processes should be adapted for reuse strategyRequirements refinement stageDesign and implementation stages may include explicit activitiesSoftware reuse is more effective when planned as an organization-wide reuse programCreation of reusable assetsAdaptation of development processesJapanese industry is quite mature in reuse18Benefits of Software Reuse [1/2]Increased dependabilityTested softwareMore reliableReduced process riskCost of existing software is already knownMargin of error is reduced in cost estimationEffective use of specialistsNo reinvent the wheelDomain specialist can encapsulate their knowledge 19Benefits of Software Reuse [2/2]Standard complianceUser interface standardsFewer mistakesAccelerated developmentTime to marketSpeed up system production20SummaryRestructuringCode restructuring, data restructuringForward engineeringClient-server architectures, object-oriented architecturesEconomics of reengineeringCost benefit analysisSoftware reuseBenefits of reuse21

Các file đính kèm theo tài liệu này:

  • pptxlecture_27_csc392_dr_muzafar_khan_6166_2027037.pptx
Tài liệu liên quan