38
Extracting Objects Extracting Objects From From Legacy Imperative Code Legacy Imperative Code Ricky E. “Ranger” Sward Ricky E. “Ranger” Sward Dept of Computer Science Dept of Computer Science USAF Academy USAF Academy [email protected] [email protected]

Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy [email protected]

  • View
    218

  • Download
    2

Embed Size (px)

Citation preview

Page 1: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Extracting ObjectsExtracting ObjectsFrom From

Legacy Imperative CodeLegacy Imperative Code

Ricky E. “Ranger” SwardRicky E. “Ranger” SwardDept of Computer ScienceDept of Computer Science

USAF AcademyUSAF [email protected]@usafa.edu

Page 2: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

OverviewOverview

• Background• Taxonomy of Imperative Subprograms• Parameter-Based Object Identification (PBOI)• Examples• Questions

Page 3: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

BackgroundBackground

• Re-Engineering• Previous Work• Functional Equivalence

Page 4: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Re-EngineeringRe-Engineering

Req

Design

Implementation Implementation

Design

Req

Re-specify

Re-Design

Re-Code

Reverse

Engineerin

g Forward Engineering

Re-Engineering = Reverse + Forward

Page 5: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Previous WorkPrevious Work

• Liu and Wilde [1] methodologies– Global-Based Object Identification (GBOI)

• objects grouped based on global variables

– Type-Based Object Identification (TBOI)• objects grouped based on data types

• Lividas and Johnson [2] methodology– Receiver-Based Object Identification (RBOI)

• objects grouped based on output data types

Page 6: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Functional EquivalenceFunctional Equivalence

• Prove mathematically that the extracted Object-Oriented Design is functionally equivalent to the Structured Design

F( SD ) = OOD where

SD = Tpsmain

( SD ) and

M SD and CatM( M ) and

OOD = ( , M)

Page 7: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

TaxonomyTaxonomy

• Category 0 – produce no data and call no other subprograms.• Category 1 – produce no data items but call other subprograms.• Category 2 – produce a single data item and call no subprograms.• Category 3 – produce a single data item and call other subprograms.• Category 4 – produce multiple data items and call no subprograms.• Category 5 – produce multiple data items and call other subprograms.

| Ppro | = 0 | Ppro | = 1 | Ppro | > 1

| Csub | = 0 0 2 4

| Csub | > 0 1 3 5

Page 8: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Parameter-Based Object Parameter-Based Object Identification (PBOI)Identification (PBOI)

• Overall rationale for PBOI– Object attributes occur as parameters passed

between subprograms.

• Objects are extracted from parameters

• Behavior built around the objects

• Functionally equivalent transformations

Page 9: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Category 4 SubprogramsCategory 4 Subprograms

• Category 4 subprograms produce multiple data items• Use program slicing

– extracts independent code that produces single data items– Cat 4 subprograms sliced into Cat 2 subprograms– identify based on how data is used, not organized

Page 10: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Program SlicingProgram Slicing

Category 4A

BC

E

D

foo

Category 2A

B

D

foo-D

Category 2A

CE

foo-E

Page 11: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Category 5 SubprogramsCategory 5 Subprograms

• Category 5 subprograms produce multiple data items and call other subprograms

• Also use program slicing– Cat 5 subprograms sliced into Cat 2 or Cat 3 subprograms

Page 12: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Slicing Category 5 SubprogramsSlicing Category 5 Subprograms

Category 5D

EF

C

B

bar

Category 2E

F

B

bar-B

Category 3D

E C

bar-C

Page 13: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Category 2 SubprogramsCategory 2 Subprograms

• Category 2 subprograms produce one data item and call no subprograms

• Implement derived attributes of objects, ala Rumbaugh [3]

• Transform each formal parameter into an attribute of a class

• Transform subprogram into method of the class

Page 14: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Category 2 ExampleCategory 2 Example

CAPTURE

BEAMRA

ANGFAC

REAL

Class-2

AttributesBEAMRAANGFAC

MethodsCAPTURE( C-2 : Class-2 ) : REAL

Page 15: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Category 0 SubprogramsCategory 0 Subprograms

• Category 0 subprograms produce no data and call no other subprograms

• They are treated as special cases of Category 2 subprograms

Page 16: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Category 3 SubprogramsCategory 3 Subprograms

• Category 3 subprograms produce a single data item and call other subprograms

• Transform called subprograms first

• Build class for subprogram with all parameters as attributes

• Filter attributes to refine object design

Page 17: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Category 3 FilteringCategory 3 Filtering• PBOI Case 1 – Attribute of both C1 and C2

BOUNCEANGFAC

PROJRAREAL

CAPTUREBEAMRA

ANGFAC

Class-4

Attributes: ANGFAC, PROJRA

Methods: BOUNCE( C-4 : Class-4 ) : REAL

Class-2

Attributes: BEAMRA, ANGFAC

Methods: CAPTURE( C-2 : Class-2 ) : REAL

REAL

Class-4

Attributes: PROJRA

Methods: BOUNCE( C-4 : Class-4,

C-5 : Class-2 ) : REAL

Page 18: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Category 3 FilteringCategory 3 Filtering• PBOI Case 2 – Attribute of C1, not C2

BOUNCEANGFAC

PROJRAREAL

CAPTUREBEAMRA

ANGFAC

Class-4

Attributes: ANGFAC, PROJRA

Methods: BOUNCE( C-4 : Class-4 ) : REAL

Class-2

Attributes: BEAMRA

Methods: CAPTURE( C-2 : Class-2,

ANGFAC ) : REAL

REAL

Class-4

Attributes: PROJRA

Methods: BOUNCE( C-4 : Class-4,

C-5 : Class-2,ANGFAC ) : REAL

Page 19: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Category 3 FilteringCategory 3 Filtering• PBOI Case 3 – Attribute of C2, not C1

BOUNCEANGFAC

PROJRAREAL

CAPTUREBEAMRA

ANGFAC

Class-2

Attributes: BEAMRA, ANGFAC

Methods: CAPTURE( C-2 : Class-2 ) : REAL

REAL

Class-4

Attributes: PROJRA

Methods: BOUNCE( C-4 : Class-4,

C-5 : Class-2 ) : REAL

Class-2

Attributes: ANGFAC

Methods: CAPTURE( C-2 : Class-2,

BEAMRA ) : REAL

Page 20: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Category 3 FilteringCategory 3 Filtering• PBOI Case 4 – Not attribute of C1 nor C2

BOUNCEANGFAC

PROJRAREAL

CAPTUREBEAMRA

ANGFAC

REAL

Class-4

Attributes: PROJRA

Methods: BOUNCE( C-4 : Class-4,

C-5 : Class-2 ) : REAL

Class-2

Attributes: ANGFAC

Methods: CAPTURE( C-2 : Class-2,

BEAMRA ) : REAL

Page 21: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Category 1 SubprogramsCategory 1 Subprograms

• Category 1 subprograms produce no data and call other subprograms

• All but Main program are transformed using Category 3 transformations

• Main program is treated differently

Page 22: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Main ProgramMain Program

• Main program is unique

• Provides opportunity to remove duplicates and merge overlapping classes

• In main program, objects that share attributes are parts of the same object

• Any/all global variables have already been transformed into parameters

Page 23: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Removing Duplicate Object Removing Duplicate Object InstancesInstances

Instance of Class 2

C-5

Instance of Class 2

C-6Instance of Class 2

C-7

Page 24: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Overlapping ClassesOverlapping ClassesClass-2

Attributes: BEAMRA, ANGFAC

Methods: CAPTURE( C-2 : Class-2 ) : REAL

Class-10

Attributes: BEAMRA, RHOSTD, ANGFAC

MethodsCAPTURE( C-2 : Class-10 ) : REALRHO( C-4 : Class-10 ) : REAL

Class-3

Attributes: RHOSTD, ANGFAC

Methods: RHO( C-3 : Class-3 ) : REAL

Page 25: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Student Scheduler ExampleStudent Scheduler Example

• Look at PBOI in terms of the S5 Student Scheduler...

Page 26: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Category 2 ExampleCategory 2 Example

Deschedule_Student

Period in

Scheduled in out

Class_1

type Class_1 is tagged recordPeriod : Integer;Name : String_Ten;Scheduled : Integer_Array;Length : Integer;

end record;

procedure Deschedule_Student ( C_1 : in out Class_1 ) isbegin

...End := C_1.Period + C_1.Length;...

end Deschedule_Student;

Length in

Name in

Page 27: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Category 3 FilteringCategory 3 Filtering• PBOI Case 1 – Attribute of both Class_1 and Class_2

Deschedule_Student

Period in

Scheduled in out

Length in

Name in

Deschedule_Student

Check_Minimum_Enrollment

Name in

Min_Enroll in

Scheduled in out

Length in

Enroll in

Page 28: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Category 3 FilteringCategory 3 Filtering• PBOI Case 1 – Attribute of both Class_1 and Class_2

Class_2

Attributes: Name, Scheduled,Length, Min_Enroll, Enroll

Check_Minimum_Enrollment ( C_2 : in out Class_2 );

Class_1

Attributes: Period, Name, Scheduled,Length

procedure Deschedule_Student ( C_1 : in out Class_1 );

Class_2

Attributes: Min_Enroll, Enroll

Check_Minimum_Enrollment ( C_2 : in out Class_2; C_3 : in out Class_1’Class );

Page 29: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Category 3 FilteringCategory 3 Filtering• PBOI Case 2 – Attribute of Class_2, not Class_1

Deschedule_Student

Period in

Scheduled in out

Length in

Name in

Deschedule_Student

Check_Minimum_Enrollment

Name in

Min_Enroll in

Scheduled in out

Length in

Enroll in

Page 30: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Category 3 FilteringCategory 3 Filtering• PBOI Case 2 – Attribute of Class_2, but not Class_1

Class_2

Attributes: Name, Scheduled,Length, Min_Enroll, Enroll

Check_Minimum_Enrollment ( C_2 : in out Class_2 );

Class_1

Attributes: Period, Name, Scheduled,

procedure Deschedule_Student ( C_1 : in out Class_1; Length : in Integer );

Class_2

Attributes: Min_Enroll, Enroll

Check_Minimum_Enrollment ( C_2 : in out Class_2; C_3 : in out Class_1’Class; Length : in Integer );

Page 31: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Category 3 FilteringCategory 3 Filtering• PBOI Case 3 – Attribute of Class_1, but not Class_2

Deschedule_Student

Period in

Scheduled in out

Length in

Name in

Deschedule_Student

Check_Minimum_Enrollment

Name in

Min_Enroll in

Scheduled in out

Length in

Enroll in

Page 32: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Category 3 FilteringCategory 3 Filtering• PBOI Case 3 – Attribute of Class_1, but not Class_2

Class_1

Attributes: Period, Name, Scheduled,Length

procedure Deschedule_Student ( C_1 : in out Class_1 );

Class_2

Attributes: Min_Enroll, Enroll

Check_Minimum_Enrollment ( C_2 : in out Class_2; C_3 : in out Class_1’Class );

Class_1

Attributes: Name, Scheduled,Length

procedure Deschedule_Student ( C_1 : in out Class_1; Period : in Integer );

Page 33: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Category 3 FilteringCategory 3 Filtering• PBOI Case 4 – Not Attribute of Class_1 or Class_2

Deschedule_Student

Period in

Scheduled in out

Length in

Name in

Deschedule_Student

Check_Minimum_Enrollment

Name in

Min_Enroll in

Scheduled in out

Length in

Enroll in

Page 34: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Category 3 FilteringCategory 3 Filtering• PBOI Case 4 – Not Attribute of Class_1 or Class_2

Class_2

Attributes: Min_Enroll, Enroll

Check_Minimum_Enrollment ( C_2 : in out Class_2; C_3 : in out Class_1’Class );

Class_1

Attributes: Name, Scheduled,Length

procedure Deschedule_Student ( C_1 : in out Class_1; Period : in Integer );

Page 35: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Removing Duplicate Object Removing Duplicate Object InstancesInstances

Instance of Class_2

C_5

Instance of Class_2

C_6Instance of Class_2

C_7

Page 36: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

Overlapping ClassesOverlapping ClassesClass_1

Attributes: Name, Scheduled,Length

procedure Deschedule_Student ( C_1 : in out Class_1; Period : in Integer );

Class_5

Attributes: Name, SSAN

procedure Assign_Student ( C_8 : in out Class_5 );

Class_12

Attributes: Name, Scheduled,Length, SSAN

procedure Deschedule_Student ( C_1 : in out Class_1; Period : in Integer );

procedure Assign_Student ( C_8 : in out Class_5 );

Page 37: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

ConclusionsConclusions

• PBOI is an improvement over GBOI, TBOI, and RBOI

• Maintains functional equivalence

• Prototype implemented

• Objects not mean to correlate to semantic objects from domain

• Computationally intensive

Page 38: Extracting Objects From Legacy Imperative Code Ricky E. “Ranger” Sward Dept of Computer Science USAF Academy ricky.sward@usafa.edu

ReferencesReferences

• [1] S.S. Liu and N. Wilde, Identifying objects in a conventional procedural language: An example of data design recovery. In Proceedings of the Conference on Software Maintenance, pages 266-271, IEEE, Nov 1990.

• [2] P.E. Lividas and T. Johnson, A new approach to finding objects in programs. Technical Report SERC-TC-63-F, University of Florida, Jun 1993.

• [3] J. Rumbaugh and M. Blaha, Object-Oriented Modeling and Design, Prentice-Hall, New Jersey, c1991.