실전 폐기능 검사실전! 폐기능 검사 계명대학교 의과대학 내과학교실 최 원 일 임상강좌 -2014년 대한내과학회 제65차 추계학술대회--130
Software Reengineering 2003 년 12 월 2 일 최창익, 고광 원.
-
Upload
kathlyn-riley -
Category
Documents
-
view
217 -
download
0
Transcript of Software Reengineering 2003 년 12 월 2 일 최창익, 고광 원.
Software ReengineeringSoftware Reengineering
2003 년 12 월 2 일
최창익 , 고광원
ObjectivesObjectives
To explain why software re-engineering is a cost-effective option for system evolution
To describe the activities involved in the software re-engineering process
To distinguish between software and data re-engineering and to explain the problems of data re-engineering
Topics CoveredTopics Covered
Source code translation Reverse engineering Program structure improvement Program modularisation Data re-engineering
Software re-engineeringSoftware re-engineering
Reorganising and modifying existing software system (legacy system) to make them more maintainable
Re-structuring or re-writing part or all of a legacy system without changing its functionality
Applicable where some but not all sub-systems of a larger system require frequent maintenance
Re-engineering involves adding effort to make them easier to maintain. The system may be re-structured and re-documented
System ReengineeringSystem Reengineering
When system changes are mostly confined to part of the system then re-engineer that part
When hardware or software support becomes obsolete
When tools to support re-structuring are available
When to ReengineerWhen to Reengineer
Reengineering AdvantagesReengineering Advantages
Reduced risk– There is a high risk in new software
development. There may be development problems, staffing problems and specification problems
Reduced cost– The cost of re-engineering is often
significantly less than the costs of developing new software
Business Process ReengineeringBusiness Process Reengineering
Concerned with re-designing business processes to make them more responsive and more efficient
Often reliant on the introduction of new computer systems to support the revised processes
May force software re-engineering as the legacy systems are designed to support existing processes
Forward Engineering and Forward Engineering and ReengineeringReengineering
Understanding andtransformation
Existingsoftware system
Re-engineeredsystem
Design andimplementation
Systemspecification
Newsystem
Software re-engineering
Forward engineering
Software ReengineeringSoftware Reengineering Process Process
Reverseengineering
Programdocumentation
Datareengineering
Original data
Programstructure
improvement
Programmodularisation
Structuredprogram
Reengineereddata
Modularisedprogram
Originalprogram
Source codetranslation
Reengineering Cost FactorsReengineering Cost Factors
The quality of the software to be re-engineered
The tool support available for re-engineering
The extent of the data conversion which is required
The availability of expert staff for re-engineering
Reengineering ApproachesReengineering Approaches
Automated restructuringwith manual changes
Automated sourcecode conversion
Restructuring plusarchitectural changes
Automated programrestructuring
Program and datarestructuring
Increased cost
Disadvantages of Software Disadvantages of Software ReengineeringReengineering
Practical limits to the extent of reengineering
Major architectural changes or radical reorganizing of the system data management has to be done manually
Reengineered system is not likely to be as maintainable as a new system developed using modern software engineering methods
Source Code TranslationSource Code Translation
Involves converting the code from one language (or language version) to another e.g. FORTRAN to C
May be necessary because of:– Hardware platform update– Staff skill shortages– Organisational policy changes– Lack of software support
Only realistic if an automatic translator is available
The Program Translation ProcessThe Program Translation Process
Automaticallytransla te code
Design translatorinstructions
Identify sourcecode differences
Manuallytransla te code
System to bere-engineered
System to bere-engineered
Re-engineeredsystem
Reverse EngineeringReverse Engineering Analysing software with a view to
understanding its design and specification May be part of a re-engineering process but
may also be used to re-specify a system for re-implementation
Builds a program data base and generates information from this
Program understanding tools (browsers, cross-reference generators, etc.) may be used in this process
To derive design information at the highest level possible
Reverse EngineeringReverse Engineering Reverse engineering need not always be
followed by re-engineering but is sometimes worthwhile in its own right– The design and specification of a system
may be reverse engineered so that they can be an input to the requirements specification process for the system’s replacement
– The design and specification may be reverse engineered to support program maintenance
The Reverse Engineering ProcessThe Reverse Engineering Process
Data stucturediagrams
Program stucturediagrams
Traceabilitymatrices
Documentgeneration
Systeminformation
store
Automatedanalysis
Manualannotation
System to bere-engineered
Program Structure ImprovementProgram Structure Improvement
Maintenance tends to corrupt the structure of a program. It becomes harder and harder to understand
The program may be automatically restructured to remove unconditional branches
Conditions may be simplified to make them more readable
Spaghetti LogicSpaghetti Logic
Structured Control LogicStructured Control Logic
Condition SimplificationCondition Simplification
-- Complex conditionif not (A > B and (C < D or not ( E > F) ) )...
-- Simplified conditionif (A <= B and (C>= D or E > F)...
Automatic Program RestructuringAutomatic Program Restructuring
Graphrepresentation
Programgenerator
Restructuredprogram
Analyser andgraph builder
Program to berestructured
Restructuring BenefitsRestructuring Benefits
Improved program and documentation quality Makes programs easier to learn
– improves productivity– reduces developer frustration
Reduces effort required to maintain software Software is easier to test and debug
Restructuring ProblemsRestructuring Problems
Problems with re-structuring are:– Loss of comments– Loss of documentation– Heavy computational demands
Restructuring doesn’t help with poor modularisation where related components are dispersed throughout the code
The understandability of data-driven programs may not be improved by re-structuring
Program modularisationProgram modularisation
The process of re-organising a program so that related program parts are collected together in a single module
Usually a manual process that is carried out by program inspection and the code edit
Module typesModule types
Several different types of modules after the program modularisation process– Data abstractions
• Abstract data types where data structures and associated operations are grouped
– Hardware modules• All functions required to interface with a hardware
unit
– Functional modules• Modules containing functions that carry out related
tasks
– Process support modules• Modules where all of the functions and the specific
data items required to support a business process are grouped
Recovering data abstractionsRecovering data abstractions
Many legacy systems use shared tables and common data area– To save memory space– Causes problems because changes have a
wide impact across all uses of the data
Focus on the identification of data abstraction– Data abstraction
• Hide the data representation • Provide constructor and access functions
Data abstraction recoveryData abstraction recovery
Shared global data may be converted to objects or ADTs– Analyse common data areas to identify
logical abstractions– Create an abstract data type or object
class for each of these abstractions– Provide functions to access and update
each field of the data abstraction– Use a program browser to find calls to
these data abstractions and replace these with the new defined functions
Data re-engineeringData re-engineering
Analysing and reorganising the data structures (and sometimes the data values) in a system to make it more understandable
Clean up the data problems and inconsistencies, database migration
Unifying multiple, inconsistent representations
Restructure internal or external data– Example: Migration from RDBMS to
OODBMS
Data migrationData migration
Example of a legacy Application System
File 1 File 2 File 3 File 4 File 5 File 6
Program 2Program 1 Program 3
Program 4 Program 5 Program 6 Program 7
Data migrationData migration
After Re-engineering … Database-centred System
Program1
Program2
Program3
Program4
Databasemanagement
system
Logical andphysical
data models
describes
Data re-engineeringData re-engineering
Why have to modify the data as well as the programs in a legacy system?– Data degradation
• Data quality problem
– Inherent limits that are built into the program
• Invalid built-in constraints
– Architectural evolution• Evolution into its appropriate architecture
Approaches to data re-Approaches to data re-engineeringengineering
Data cleanup– The data records and values are analyzed to
improve their quality– Not require any associated program changes
Data extension– Data re-engineering to remove limits on the
data processing– Modify the limits on the data structures and
the tables Data migration
– Moved into the control of a modern DBMS
Data problemsData problems
The problems with data which can arise in legacy systems– Data naming problems
• Names may be hard to understand. The same data may have different names in different programs
– Field length problems• The same item may be assigned different lengths in
different programs• Field length may be short to represent current data
– Record organisation problems• Records representing the same entity may be
organised differently in different programs
– Hard-coded literals– No data dictionary
Data value inconsistenciesData value inconsistencies
Inconsistent default values Inconsistent units Inconsistent validation rules Inconsistent representation semantics Inconsistent handling of negative values
Data conversionData conversion
Data re-engineering may involve changing the data structure organisation without changing the data values
Data value conversion is very expensive. Special-purpose programs have to be written to carry out the conversion
The data re-engineering processThe data re-engineering process
Entity namemodification
Literalreplacement
Data definitionre-ordering
Datare-formattingDefault value
conversion
Validation rulemodification
Dataanalysis
Dataconversion
Dataanalysis
Modifieddata
Program to be re-engineered
Change summary tables
Stage 1 Stage 2 Stage 3
Key points (1/2)Key points (1/2)
The objective of re-engineering is to improve the system structure to make it easier to understand and maintain
The re-engineering process involves source code translation, reverse engineering, program structure improvement, program modularisation and data re-engineering
Source code translation is the automatic conversion of of program in one language to another
Key points (2/2)Key points (2/2)
Reverse engineering is the process of deriving the system design and specification from its source code
Program structure improvement replaces unstructured control constructs with while loops and simple conditionals
Program modularisation involves reorganisation to group related items
Data re-engineering may be necessary because of inconsistent data management