Data Restructuring
30.4.2 Data Restructuring
Before data restructuring can begin, a reverse engineering activity called analysis of source code must be conducted. All programming language statements that contain data definitions, file descriptions, I/O, and interface descriptions are evaluated. The intent is to extract data items and objects, to get information on data flow, and to understand the existing data structures that have been implemented. This activity is sometimes called data analysis [RIC89].
Once data analysis has been completed, data redesign commences. In its simplest form, a data record standardization step clarifies data definitions to achieve consis- tency among data item names or physical record formats within an existing data structure or file format. Another form of redesign, called data name rationalization, ensures that all data naming conventions conform to local standards and that aliases are eliminated as data flow through the system.
When restructuring moves beyond standardization and rationalization, physical modifications to existing data structures are made to make the data design more effective. This may mean a translation from one file format to another, or in some cases, translation from one type of database to another.
30.5 F O R WA R D E N G I N E E R I N G
A program with control flow that is the graphic equivalent of a bowl of spaghetti, with "modules" that are 2,000 statements long, with few meaningful comment lines in
5 It is sometimes difficult to make a distinction between extensive restructuring and redevelop- ment. Both are reengineering.
290,000 source statements and no other documentation must be modified to accom- modate changing user requirements. We have the following options:
? 1. We can struggle through modification after modification, fighting the implicit
What
options exist
design and source code to implement the necessary changes.
when we’re faced with a poorly
2. We can attempt to understand the broader inner workings of the program in
designed and
an effort to make modifications more effectively.
implemented program?
3. We can redesign, recode, and test those portions of the software that require modification, applying a software engineering approach to all revised seg- ments.
4. We can completely redesign, recode, and test the program, using CASE (reengineering) tools to assist us in understanding the current design.
There is no single "correct" option. Circumstances may dictate the first option even if the others are more desirable.
Rather than waiting until a maintenance request is received, the development or support organization uses the results of inventory analysis to select a program that (1) will remain in use for a preselected number of years, (2) is currently being used successfully, and (3) is likely to undergo major modification or enhancement in the near future. Then, option 2, 3, or 4 is applied.
This preventative maintenance approach was pioneered by Miller [MIL81] under the title structured retrofit. This concept is defined as "the application of today's method- ologies to yesterday's systems to support tomorrow's requirements."
At first glance, the suggestion that we redevelop a large program when a working version already exists may seem quite extravagant. Before passing judgment, con- sider the following points:
1. The cost to maintain one line of source code may be 20 to 40 times the cost of initial development of that line.
Reengineering is a lot like getting your teeth
2. Redesign of the software architecture (program and/or data structure), using cleaned. You can think
modern design concepts, can greatly facilitate future maintenance. of a thousand reasons
to delay it, and you’ll
3. Because a prototype of the software already exists, development productivity get away with
should be much higher than average. procrastinating for
4. The user now has experience with the software. Therefore, new require- quite a while. But
eventually, your ments and the direction of change can be ascertained with greater ease. delaying tactics will
5. CASE tools for reengineering will automate some parts of the job. come back to haunt
you.
6. A complete software configuration (documents, programs, and data) will exist upon completion of preventive maintenance.
When a software development organization sells software as a product, preven- tive maintenance is seen in "new releases" of a program. A large in-house software developer (e.g., a business systems software development group for a large consumer When a software development organization sells software as a product, preven- tive maintenance is seen in "new releases" of a program. A large in-house software developer (e.g., a business systems software development group for a large consumer
The forward engineering process applies software engineering principles, con- cepts, and methods to re-create an existing application. In most cases, forward engi- neering does not simply create a modern equivalent of an older program. Rather, new user and technology requirements are integrated into the reengineering effort. The redeveloped program extends the capabilities of the older application.
Parts
» The Concurrent Development Model
» SUMMARY Software engineering is a discipline that integrates process, methods, and tools for
» PEOPLE In a study published by the IEEE [CUR88], the engineering vice presidents of three
» THE PROCESS The generic phases that characterize the software process—definition, development,
» THE PROJECT In order to manage a successful software project, we must understand what can go
» METRICS IN THE PROCESS AND PROJECT DOMAINS
» Extended Function Point Metrics
» METRICS FOR SOFTWARE QUALITY
» INTEGRATING METRICS WITHIN THE SOFTWARE PROCESS
» METRICS FOR SMALL ORGANIZATIONS
» ESTABLISHING A SOFTWARE METRICS PROGRAM
» Obtaining Information Necessary for Scope
» An Example of LOC-Based Estimation
» QUALITY CONCEPTS 1 It has been said that no two snowflakes are alike. Certainly when we watch snow
» SUMMARY Software quality assurance is an umbrella activity that is applied at each step in the
» R diagram 1.4 <part-of> data model; data model <part-of> design specification;
» SYSTEM MODELING Every computer-based system can be modeled as an information transform using an
» Facilitated Application Specification Techniques
» Data Objects, Attributes, and Relationships
» Entity/Relationship Diagrams
» Hatley and Pirbhai Extensions
» Creating an Entity/Relationship Diagram
» SUMMARY Design is the technical kernel of software engineering. During design, progressive
» Data Modeling, Data Structures, Databases, and the Data Warehouse
» Data Design at the Component Level
» A Brief Taxonomy of Styles and Patterns
» Quantitative Guidance for Architectural Design
» Isolate the transform center by specifying incoming and outgoing
» SUMMARY Software architecture provides a holistic view of the system to be built. It depicts the
» The User Interface Design Process
» Defining Interface Objects and Actions
» D E S I G N E VA L U AT I O N
» Testing for Real-Time Systems
» Organizing for Software Testing
» Criteria for Completion of Testing
» The Transition to a Quantitative View
» The Attributes of Effective Software Metrics
» Architectural Design Metrics
» Component-Level Design Metrics
» SUMMARY Software metrics provide a quantitative way to assess the quality of internal product
» Encapsulation, Inheritance, and Polymorphism
» Identifying Classes and Objects
» The Common Process Framework for OO
» OO Project Metrics and Estimation
» Event Identification with Use-Cases
» SUMMARY Object-oriented analysis methods enable a software engineer to model a problem by
» Partitioning the Analysis Model
» Designing Algorithms and Data Structures
» Program Components and Interfaces
» SUMMARY Object-oriented design translates the OOA model of the real world into an
» Testing Surface Structure and Deep Structure
» Deficiencies of Less Formal Approaches 1
» What Makes Cleanroom Different?
» Design Refinement and Verification
» SUMMARY Cleanroom software engineering is a formal approach to software development that
» Structural Modeling and Structure Points
» Describing Reusable Components
» SUMMARY Component-based software engineering offers inherent benefits in software quality,
» Guidelines for Distributing Application Subsystems
» Middleware and Object Request Broker Architectures
» An Overview of a Design Approach
» Consider expert Web developer will create a complete design, but time and cost can be appropriate
» A Software Reengineering Process Model
» Reverse Engineering to Understand Data
» Forward Engineering for Client/Server Architectures
» SUMMARY Reengineering occurs at two different levels of abstraction. At the business level,
Show more